|
These
pages written, maintained, and © by Atze
Dijkstra.
|
Small(er) projects/problems
- The default chaining policy is left-to-right. Allow different chaining
strategies, e.g. right-to-left. Allow explicit turning on/off the copy
rules.
- Naming a leftmost/rightmost occurence of a child attribute anonymously,
that is, whithout knowing the specific leftmost/rightmost child.
- Pretty printing of AG code.
- Overriding an existing attribute definition and/or allowing reuse
of an existing definition inside a new definition.
- An attribute may have a default value for a certain scope (everything,
view, node, ...)
- Usage of 'self' as mechanism to refer (from an attribute definition)
to a node (where the definition takes place) itself.
- Wrappers around a AG tree allowing the inherited attributes to be
passed as a (extendable) record, and, vice-versa, the synthesized attributes
to be returned.
- FFI (Foreign function interface), allowing the semantic function be
bound to a Haskell function.
Larger projects/problems
- Plugin architecture for extending AG functionality. An example of
this is the specific usage of a chained unique counter (for creating
unique identifiers). The plugin should cater for inclusion of special
generated (Haskell) code taking care of this counter.
- Grouping attribute definitions, called a view. Actually this covers
more/less tightly coupled issues.
- Explicit hiding/exporting/importing attributes
- Group has a name used for (e.g.) importing, redefinition
- Parameterizing the name of generated code (Haskell semantic) functions
in order to avoid name clashes
- Spreading AG code over different files, combining by importing
(logically as a view) and/or including (textually) them.
- A mechanism for choosing between different sets of attribute definitions.
For example, pretty printing may have different attribute definitions
yes/no including error messages. The attributes have the same name.
In other words, given an attribute interface allow different realisations/implementations.
This may or may not also be done runtime.
- Usage of AG combinators (Oege de Moor), generic policies, rule based.
- Incorporation of a typechecked language for attribute definitions
(SL, ...)
|