| Abstract | The 
      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. |