HPlogo System Debug Reference Manual > Chapter 7 Symbolic Formatting Symbolic Access

The Path Specification

MPE documents

Complete PDF
Table of Contents
Index

E0201 Edition 4 ♥
E0300 Edition 3
E0692 Edition 3

Path specifications are used to qualify data structure references to some desired level of granularity.

Syntax



  [ symname : ] typename [ selector... ][, variantinfo ]

Parameters


symname

A symbolic name assigned to a symbolic data type file in the SYMOPEN command. This parameter specifies the file in which typename is to be found. If omitted, the last symbolic file referenced is used.

typename

The name of the data structure to be formatted.

selector...

The selectors used to dereference particular components of the data structure identified by typename. Multiple selectors are permitted.

The following selectors, based on Pascal syntax, are recognized:

[index]

Array selector specifies a component of an array.

.field

Record selector specifies a field within a record.

^

Pointer selector specifies pointer dereferencing.

variantinfo

A list of variant tag values to be used when formatting tagless variants, or to override the stored tag field if alternate variants are to be displayed. Multiple tag values are specified as a simple list:


   vartagvalue [ ,... ]

For each variant after the typename [selector] specification, a vartagvalue can be given to specify the desired variant. Multiple tag values may be given, separated by commas, to specify tags for nested variants. The order of the tags should match the order of the variants in the type declaration. If tag value(s) are omitted and the tag is not stored as part of the data structure, data are formatted according to the first declared variant.

The variant descriptor can also be used to override stored tag values for variant records. Normally, the symbolic formatter uses stored tags to select the variants to be formatted. However, if the stored tags are corrupt or the user wishes to have the data interpreted according to different variants, vartagvalues may be used to specify the desired variants.

Variable Substitution


System Debug variables may be used within a path specification. Since the path specification is itself composed of a string, any variable substitution must be performed with string variables. In order for a System Debug variable to be recognized in a path specification, it must be preceded by an exclamation mark. For example:

   $nmdebug > VAR field "ID"
   $nmdebug > FT "StudentRecord.!field"

   INTEGER

The other area where System Debug variables may be used is in array subscripts. In fact, array subscripts may consist of any valid System Debug expression. Exclamation marks are not required to dereference variables in this case.

   $nmdebug > VAR type  "StudentRecord"
   $nmdebug > VAR field "Grades"
   $nmdebug > VAR index 5

   $nmdebug > FV data "!type.!field[ index - 1 ]"

   42

   $nmdebug >

Case Sensitivity


System Debug normally upshifts all characters in a path specification before searching for names in a symbol file. This is desirable for languages such as Pascal, which emit upshifted symbols. But for languages such as C, which emit symbols with lower-case characters, this automatic upshifting must be disabled. The environmental variable SYMPATH_UPSHIFT controls whether or not pathspec upshifting occurs. If your symbol file contains lower-case symbols, set this environmental variable to FALSE as follows:

   $nmdebug > ENV SYMPATH_UPSHIFT FALSE

The next two sections contain a variety of examples illustrating the use of path specifications.




Creating and Accessing Symbol Definitions


Using the Symbolic Formatter