ableJ - an Extensible Compiler for Java 1.4
[ Info
| Downloads
| User Manual
| Publications
| Bugzilla site
]
We have used Silver to develop an attribute-grammar based extensible
compiler framework for Java 1.4, called ableJ. ableJ includes
specifications of Java 1.4's concrete syntax and abstract syntax as
well as some limited semantic analyses such as type-checking.
ableJ also includes a collection of extensions to Java 1.4 that
make use of the facilities provided in Silver to extend Java 1.4's
syntax with various new constructs, both domain-specific and general
purpose. Silver allows semantic analyses to be specified on these new
construct. Please see below for the extensions currently included in
ableJ.
For a more detailed description of ableJ and its extensible
features, please see our ECOOP 2007 paper "Attribute grammar based
language extensions for Java" available here.
An "alpha-release" of our extensible Java framework is available
for download, along with
installation instructions. The complete implementation is not yet
available - we're putting the finishing touches on it and doing more
rigorous testing than was done on this alpha-release version. We
anticipate a stable version of Java 1.4 to be available in July
2007.
The current implementation covers nearly all of Java 1.4. It
covers all of its syntax. The parser is a slightly modified version of
the public domain Java 1.4 grammar released with the Antlr 2.7.7 distribution.
The implementation includes semantic analyses for statements,
classes, interfaces and certain expressions.
The download also contains extensions to our Java grammar including,
among others, extensions to
- add Java 1.5's extended-for construct that allows for interations over
Collection objects and arrays,
- add constructs to add syntax for "condition tables", a convenient way to specify
complicated conditional statements, used in synchronous languages,
- constructs to specify and execute SQL queries directly within Java, with
compile time syntax and type checking, and
- a computational geometry extension that implements
randomized linear perturbation.
We also include preliminary version of extensions to perform
autoboxing and add complex number types to java 1.4. These extensions
will be updated and newer ones added. Thus, any language extensions
designed to extend this specification of Java may not work with future
specifications.
For more information on adding extensions, please see our ECOOP
2007 paper and our LCSD 2006 paper "Adding
Syntax and Static Analysis to Libraries via Extensible Compilers and
Language Extensions" which describes in more detail the language
extension that embeds SQL into our extensible specification of Java.
This extension statically type-checks SQL queries.
|