JBurg also supports complex transformational rules, which are more like
grammar rules that manipulate nonterminals than iburg's transitive closures.

The distribution contains JBurg's regression test, a very simple compiler
that compiles a toy language (TL/1) to bytecode; TL/1 is a parser, an AST,
and a code generator.

I wrote JBurg to fill a hole in the Java compiler tools chain: there are
good parse generators, and good instruction-level code emitters, but there
was a lack of tools to drive the emitter in the manner that lburg generates
assembly code for lcc.
--
Tom Harwood zucco@world.std.com http://world.std.com/~zucco