Options introduced by "Optimopt" control the strategy for attribute
optimization applied by Optim.
OptimOpt ::= 'OFF' / 'INFO' / 'MORE_GLOBALS' /
'NO_VARIABLES' / 'NO_STACKS' / /
'NO_GROUPING' / 'GROUPING VARIABLE'
'ATTRSPEZ' Type ( symbname '[' ( ident ) + ']' ) *
symbname ::= ident / 'ANYSYMBOL'
Type ::= 'GLOBAL VAR' / 'GLOBAL STACK' / 'TREE_NODE' /
'GROUP VAR' / 'GROUP STACK'
This option supresses the optimization entirely.
This option produces a listing of the results of the optimization that gives
all attribute storage decisions and the visit-sequences
as modified by stack operations. Attribute evaluations that are
omitted due to optimization are marked by the string
This option can be included automatically in Eli by using the derivation
If this option is set, a second optimization algorithm is started. This
algorithm takes the attributes which are classified as tree nodes by the
first optimization algorithm and tries to globalize them too.
No attributes are implemented as global variable. Instead
all attributes which can be globalized are implemented as global stack.
No attributes are implemented as global stack. Instead all attributes which
could be implemented by global stack are allocated in the tree.
If this option is set, all grouping of variables is supressed, including
the grouping requested by system internal grouping directives for CHAIN
This option usually leads to increased memory and time requirements
of the generated processor. It is only recommended during the development
of language processors for large specifications, since it may decrease
the time required for processor generation.
If this option is set, different attributes which can be implemented by a
global variable each are possibly grouped to one global variable.
'ATTRSPEZ' Type ( symbname '[' ( ident )+ ']' )*
This option requires a particular storage decision for the specified
'GLOBAL VAR' requires global variables.
'GLOBAL STACK' requires global stacks.
'TREE_NODE' requires allocation in the tree.
'GROUP VAR' requires allocation to a single global variable.
'GROUP STACK' requires allocation to a single global stack.
symbname specifies a symbolname and ident an attributname.
'ANY_SYMBOL' is used instead, all attributes with
corresponding attribute name are taken.
Optim will try to fulfill the above given specifications. It
will ignore those that would result in incorrect computation.
A specified group will not be enlarged by an attribute not
belonging to this specification; an attribute specified but
not in a group will not be put in any group; and a group
specification consisting of n attributes will result
in a set of groups within these n attributes, which is
the best found by the algorithm.
Any attributes which are not appearing in any
specification will be optimized as usual.
To specify the
ATTRSPEZ-specifications, the tool Gorto can be
used, see Top of Graphical Dependancy Analyzer.