The Java syntactic extender (JSE)

The ability to extend a language with new syntactic forms is a powerful tool. A sufficiently flexible macro system allows programmers to build from a common base towards a language designed specifically for their problem domain. However, macro facilities that are integrated, capable, and at the same time simple enough to be widely used have been limited to the Lisp family of languages to date. In this paper we introduce a macro facility, called the Java Syntactic Extender (JSE), with the superior power and ease of use of Lisp macro sytems, but for Java, a language with a more conventional algebraic syntax. The design is based on the Dylan macro system, 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

[1]  Guy L. Steele,et al.  Growing a Language , 1999, High. Order Symb. Comput..

[2]  Daniel Weise,et al.  Programmable syntax macros , 1993, PLDI '93.

[3]  Mitsuhisa Sato,et al.  Design and Implementation of Metalevel Architecture in C++ -- MPC++ Approach -- , 1998 .

[4]  Peter Norvig,et al.  Deftable: a macro for implementing tables , 1992, LIPO.

[5]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[6]  Robert Hieb,et al.  Syntactic abstraction in scheme , 1992, LISP Symb. Comput..

[7]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[8]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[9]  Claus Brabrand,et al.  Growing languages with metamorphic syntax macros , 2000, PEPM '02.

[10]  Walid Taha,et al.  Multi-stage programming with explicit annotations , 1997 .

[11]  Alan Bawden,et al.  Quasiquotation in Lisp , 1999, PEPM.

[12]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[13]  William Clinger Hygienic macros through explicit renaming , 1991, LIPO.

[14]  Dawson R. Engler,et al.  C: a language for high-level, efficient, and machine-independent dynamic code generation , 1995, POPL '96.

[15]  Christian Queinnec Lisp in small pieces , 1994 .

[16]  Andrew Shalit,et al.  The Dylan Reference Manual , 1996 .

[17]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.