For the majority of the semantic routines it is necessary to
pass some data (called semantic attributes) to other semantic
routines. For example, the semantic routine
#process_coordinates needs to pass the GPS
coordinates recognized by the lexical analyzer to the semantic
routines #process_move or #process_destroy. This
task can be accomplished using a semantic stack [13]. A
semantic stack is a second stack maintained by the parser
which contains semantic records associated with the terminals
and variables of productions being parsed. Each semantic
record can contain arbitrary information (semantic attributes)
that needs to be passed between individual semantic routines.
The semantic records associated with the variables of
individual productions are depicted in the pseudocode of
semantic routines in the same way as the corresponding
, but using the Courier font. Next follows
the description of semantic routines: