8.5.1 Symbolic or Direct

First, let us define two terms, symbolic variable name and direct
variable name, which are used in connection with the variable
pool.

A symbolic variable name is the name of a variable, but it needs
normalization and tail substitution before it names the real
variable. The name foo.bar is a symbolic variable name, and it is
transformed by normalization, to FOO.BAR, and then by tail
substitution to FOO.42 (assuming that the current value of  BAR is
42).

Normalization is the process of uppercasing all characters in the
symbolic name; and tail substitution is the process of
substituting each distinct simple symbol in the tail for its
value.

On the other hand, a direct variable refers directly to the name
of the variable. In a sense, it is a symbolic variable that has
already been normalized and tail substituted. For instance,
foo.bar is not a valid direct variable name, since lower case
letters are not allowed in the variable stem. The direct variable
FOO.42 is the same as the variable above. For simple variables,
the only difference between direct and symbolic variable names is
that lower case letters are allowed in symbolic names

Note that the two direct variable names FOO.bar and FOO.BAR refer
to different variables, since upper and lower case letters differ
in the tail. In fact, the tail of a compound direct variable may
contain any character, including ASCII NUL. The stem part of a
variable, and all simple variables can not contain any lower case
letters.

As a remark, what would the direct variable FOO. refer to: the
stem FOO. or the compound variable having stem FOO. and a
nullstring as tail? Well, I suppose the former, since it is the
more useful. Thus, the latter is inaccessible as a direct
variable.



PREV NEXT