LIDO - Reference Manual
In previous versions of LIDO terminal symbols could have attributes, at most one synthesized and several inherited. They were associated explicitly by specifications of the form
Attributes of terminals could be used in attribute notations
Identifier.Sym CONSTITUENT Identifier.SymIf the above constructs occur in a specification a new nonterminal symbol that has the specified attributes is introduced by LIGA, as well as a production that derives to the terminal.
Terminal symbols could be element of a
Idents LISTOF IdentifierThis facility is NOT allowed anymore. It is indicated by an error message, and has to be transformed explicitly.
The key word
The key word
NONTERM Stmt: code: PTGNode; NONTERM Stmt COMPUTE ... END;
The pragma notations are substituted by simpler notations:
Calling a function the name of which is composed from a string and the rule name, e.g.
LIGAPragma (RuleFct, "PTG", ...)is now achieved by
RuleFct ("PTG", ...)See see Predefined Entities.
A pattern for the sequence of right-hand side attributes, e.g
LIGAPragma (RhsAttrs, Ptg)is now written
RHS.PtgHence a combination of both features above, like
SYMBOL Reproduce COMPUTE SYNT.Ptg = LIGAPragma (RuleFct, "PTG", LIGAPragma (RhsAttrs, Ptg)); END;is now written
SYMBOL Reproduce COMPUTE SYNT.Ptg = RuleFct ("PTG", RHS.Ptg); END:See see Attributes.
Computations were specified to be executed while the input is being read and the tree is being built using a pragma
LIGAPragma (BottomUp, printf("early output\n"));Now the keyword
printf("early output\n") BOTTOMUP;See see Computations.