AG projects

Wed, 24 April, 2002
atze@cs.uu.nl

Home

Home CS
Courses & Education

Software

Research, Publications & Projects

Links & References

Personal
Educational portfolio
 
 

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, ...)