Research overview
The JastAdd project builds on an extension of attribute grammars called ReCRAGs: Rewritable Circular Reference Attributed Grammars. Very briefly:
- Attribute grammars (AGs) were introduced by Knuth in 1968. They include inherited and synthesized attributes on abstract syntax trees (ASTs). This allows information to be propagated downwards and upwards along the AST structure.
- Reference Attributed Grammars (RAGs) add reference attributes to AGs. This allows distant parts of an AST to be connected, e.g. variables to their declarations, classes to their superclasses, etc.
- Circular RAGs (CRAGs) add circular attributes to RAGs. This allows attributes to be circularly defined and evaluated using fixed-point iteration.
- Rewritable RAGs (ReRAGs) add conditional rewrites to RAGs. This allows the AST to be changed (rewritten) depending on the values of attributes.
- ReCRAGs is simply the combination of ReRAGs and CRAGs.
Some current research topics within ReCRAGs
- Further development of circular attributes. Improved evaluation techniques. Applications in static analysis problems.
- Optimized evaluation techniques for rewriting.
- Large application extensions, including extending Java 1.4 to Java 5 and to AspectJ dialects.
- Further tool development for ReCRAGs based on Eclipse.
- Improved bootstrapping of the JastAdd system itself, by refactoring it to extend the Java 1.4 front end.
- Development of design methodology for ReCRAGs, based on pattern descriptions.