ability to extend a programming language with new constructs is a valuable
tool. With it, system designers can grow a language towards their problem
domain, enhance productivity and ease maintenance. We present an extension
to the Java language that allows Java programmers to define new syntactic
constructs. The design is based on the Dylan macro system (e.g., rule-based
pattern matching and hygiene), but exploits Java's compilation model to
offer a full procedural macro engine. In other words, syntax expanders may
be implemented in, and so use all the facilities of, the full Java language.
This talk will include motivating examples, an implementation overview,
and future challenges. The described system is implemented and working as
a Java preprocessor.