The Java Syntactic Extender

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. JSE is 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.

[The latest version of the JSE documentation may be found at]

Download, jse-0.20.tar.gz - version 0.20.
jse-0-14.tar.gz - the first release (by Jonathan Bachrach and Keith Playford).

Summary of changes


JSE is currently distributed as a gzipped tar file and as a zip file. Unpack the distribution in a directory on your filesystem. This will create the following hierarchy:

    LICENSE  the license terms
    build.xml  the ant build file used to build the whole distribution
    index.html  this page
    doc/  documentation
    examples/  example macros
    lib/  library jars needed to build and use JSE
    src/  source code

See the JSE Ant task documentation for how to install JSE for use with Ant.

Getting Started

The best place to start is by looking at the examples.


The original paper by Jonathan Bachrach and Keith Playford.
JSE Ant task
TO DO (features not yet implemented)
Javadoc (for JSE developers)

Get Involved

Volunteers are always welcome. JSE is developed on sourceforge, so please use use the tools provided. Logo