ExtendJ Extensions

Here are some examples of extensions to ExtendJ. More will be added ...

Intraprocedural Flow Analysis

Adds intra-procedural control flow, dataflow, and dead assignment analysis on top of the abstract syntax tree provided by ExtendJ. This approach is described in more detail in the following paper:

Extensible Intraprocedural Flow Analysis at the Abstract Syntax Tree Level
Emma Söderberg, Torbjörn Ekman, Görel Hedin, Eva Magnusson
Science of Computer Programming, Elsevier Science B. V. 78(10):1809-1827 (2013)

The module is available at https://bitbucket.org/jastadd/jastaddj-intraflow

Type Annotations (JSR308)

JSR308 suggests extending Java with the possibility to put annotations in more locations. The JastAdd implementation covers most of it, but is not fully complete. In particular, annotations on multidimensional arrays are missing. Note also that the JSR is not finalized yet.

The module is available at https://bitbucket.org/jastadd/jastaddj-jsr308

Non-null Types

Fähndrich and Leino showed how an object-oriented language such as Java or C# could be extended with non-null types. (See their OOPSLA'03 paper Declaring and Checking Non-Null Types in an Object-Oriented Language.) Based on this approach, we have developed a non-null checker and inferencer for Java, as an extension to ExtendJ. Our tools are described in the following paper:

Pluggable checking and inferencing of nonnull types for Java
Torbjörn Ekman, Görel Hedin
Journal of Object Technology 6(9): 455-475 (2007)

The modules are available at