New Features of Eli Version 4.1
Many library modules provide some symbol role, e.g. RootScope ,
that has to be inherited to a tree grammar symbol which is usually the root of
the tree grammar. These moduls are modified such that those
root roles are automatically associated to ROOTCLASS ,
which stands for the tree grammar root.
See Grammar Root Symbol.
All name analysis modules have been adapted to the modifications
of the environment module. These changes should not invalidate
existing uses of the modules.
See Name Analysis Library of Specification Module Library: Name Analysis.
The environment module envmod.[ch] has been augmented by
functions and macros that further support name analysis for object-oriented
languages, i.e. name analysis with scopes that inherit from other scopes.
The module was also augmented by functions that return a binding
instead of a definition table key. A binding is a triple
(int idn, Environment sc, DefTableKey key) , for an identifier
idn that is bound to key in the scope sc .
A full description of the interface of the module is given in
the name analysis part of the module library documentation.
(It has been moved there from its previous place in the documentation
of Eli library routines.).
See Environment Module of Specification Module Library: Name Analysis.
Existing uses of the module should not be invalidated by these
changes.
A module is provided which augments the specified processor such that it
produces output that makes the results of name analysis visible.
For each identifier occurrence that has one of the identifier
roles of the name analysis modules a line of the form
m in line 23 bound in line 4 of scope in line 3
is written to the standard output file.
In general it is sufficient just to instantiate the module
ShowBinding with the same instance parameter as used for the
basic name analysis module.
See Name Analysis Test of Specification Module Library: Name Analysis.
Module ChainPtg was obsolete with Version 3.6 of the Eli-System.
This module has now been removed without replacement.
To collect PTG-Nodes for output, use CONSTITUENTS -Construct in
Combination with the Pattern Seq of the new Module PtgCommon .
See Using LIDO CONSTITUENTS of Pattern-Based Text Generator,
for details.
A generic sorting module has been added to the library.
This module can be instantiated for any data type, and sorts an array whose
elements are of that data type.
A user-supplied function defines the collating sequence, so that any
arbitrary ordering is possible.
The sort is done in place, so that the array after the sort is a
permutation of the array before the sort.
See Sorting Elements of an Array of Specification Module Library: Common Problems, for details.
This is a new PTG output module that allows separators to be inserted
into the output stream depending on the last string printed and the next
string to be printed.
See Introduce Separators in PTG Output of Specification Module Library: Generating Output, for details.
To instanciate modules, that require filenames as their arguments from
within a .fw -files previously required specification of the
.fw -file generating it. This is now no longer required.
For example, to instanciate the PreDefId -Module with a
filename predef.d , the following example now works within and
outside from a .fw specification:
$/Name/PreDefId.gnrc +referto=(Predef.d) :inst
See Predefined Identifiers of Name analysis according to scope rules,
and Language-defined operators of Type Analysis Reference Manual, for more information.
|