Defining ocurrence that is referrred to by this applied occurrence, if there is one.
The defenv is the environment that extends envin with the bindings
(if any) that are defined at this node.
The program entity referred to by a non-terminal occurrence.
The program entity referred to by a non-terminal occurrence. We just look in the environment. If it's not there, then it's unknown.
The env contains all of the entities that are visible at a node.
The env contains all of the entities that are visible at a node. In
this language, there is only one scope and all defining occurrences
are visible anywhere.
The envin contains the bindings that are defined "before" the given
node.
The envin contains the bindings that are defined "before" the given
node. There are none at the top of the tree and at the first rule.
Each other rule gets the defenv of the preceding rule.
The semantic error messages for a given tree.
FIRST set (i.
FIRST set (i.e., which terminals can appear at the start of a sentence derived from a non-terminal.
FOLLOW set (i.
FOLLOW set (i.e., which terminals can follow this non-terminal in a sentential form).
The grammar that contains a node.
Non-terminal applied occurrences in a tree.
Nullability (i.
Nullability (i.e., can derive the empty sequence).
The rule that contains a node.
Non-terminal uses that are applied occurrences of a given defining occurrence.
Perform name analysis checks for the grammar language. Also, define auxiliary properties nullability, first and follow for grammar symbols. The latter are based on definitions found in the paper "Circular Reference Attributed Grammars - their Evaluation and Applications", by Magnusson and Hedin from LDTA 2003.