Polyglot is a highly extensible compiler front end for the Java programming
language. It is implemented as a Java class framework using design patterns to
promote extensibility. Using Polyglot, language extensions can be implemented
without duplicating code from the framework itself. Polyglot has been used to
implement domain-specific languages, to explore language design ideas, to
simplify Java for pedagogical purposes, and for various code transformations
such as optimization and fault injection. Polyglot has been used for both major
and minor language extensions; our experience suggests that the cost of
implementing an extension scales well with the degree to which it modifies
Java.
