New Features of Eli Version 4.3
Predefined Identifiers
The name analysis modules establish bindings of
type Bind , which are triples of an identifier code,
a definition table key, and an environment.
The modules used for predefinitions PreDefine and
PreDefId now provide three additional macros
which allow to introduce and initialize Bind variables
for predefined entities:
PreDefSymKeyBind , PreDefKeyBind , and PreDefBind .
A C module PreDefMod is separated from the two predefinition
modules. It provides the two function PreDefine and
PreDefineSym . They now can be used directly
e.g. in order to predefine entities in other
environments than the outermost one.
In that case PreDefMod.specs is used instead
of instances of the modules Predefine and PreDefId .
Existing uses of the Predefine and PreDefId are
not affected by this modification.
Environment Module
Most of the macros that access components of structured values
via pointers, e.g. IdnOf , KeyOf , EnvOf ,
are changed into functions to avoid
multiple execution of side-effects caused by arguments of the
macro calls.
Lists in LIDO Specifications
In the module LidoList three alternative symbol roles
are provided for tree nodes
that carry list elements in construction or distribution
of lists. They have different effects in cases where the
element node can occur recursively in the tree.
They handle the association between list elements and
attribute of tree nodes in pre-order, post-order, or
ignore recursive occurrences.
A condition attribute is introduced which decides at an
element node whether it is considered for the list.
By overriding its computation skipping of list elements
can be controlled by non-trivial conditions.
Hence, the existing symbol role for that purpose,
FilterListElem , is now outdated.
It may be removed in a future version.
Linear Lists of Any Type
A function AddToOrderedSet has been added to be used
for ordered lists without duplicates, which may implement sets.
A macro SingleList has been added especially to
be used as the unary function of a CONSTITUENTS WITH clause.
The above facilities are added to both modules
List and PtrList
Bit Sets of Arbitrary Length
A macro ElemToBitSet has been added especially to
be used as the unary function of a CONSTITUENTS WITH clause.
Map Objects to Integers
In the module ObjCnt the start value and the increment of
the mapping can be modified by overriding of attributes.
Counting Symbol Occurrences
In the module Counter the start value and the increment of
the mapping can be modified by overriding of attributes.
|