JBurg: a Bottom-Up Rewrite Machine Generator for Java

A bottom-up rewrite machine is a compiler construction tool that is often used in the compiler's back end to convert a tree-structured representation of a program into machine code -- or, in Java's case, bytecode.

JBurg can also be used as a general-purpose dynamic programming engine. JBurg is descended from iburg-class BURGs, described in Fraser, Hanson, and Proebsting's paper, "Engineering a Simple, Efficient Code Generator Generator."

JBurg brings similar O(N) minimum-cost tree rewriting capabilities to Java, and also allows the programmer to specify transitions between non-terminal states, that are significantly more powerful than iburg's transitive closures: JBurg transformation rules allow the transformation to inject additional program logic, which makes a JBurg specification more like a grammar than like a list of pattern-matching rules.