maintained by Kevin Atkinson

ZL is a C compatible and C++ like programming language that focuses on extensiblilty and giving the programmer control over how high-level constructs (such as classes) are implemented. ZL archives the first goal by means of a customizable grammar and a powerful Scheme-like macro system. ZL archives the second goal by using the macro system to define high-level constructs from a C-like core language in a similar in spirit to Scheme.

Quick Links


Details ZL and its application are given in my dissertation. The version of ZL corresponding the dissertation is 0.03. Since version 0.03 there has been a few API changes. The most notable one is that match_args is now match_f and match is now match_parts_f.

There has also been numerous enhancements to ZL since the dissertation was published. I have partly addressed enhancements to error messages and debugging support outlined in Section 11.2; implemented the ideas of Section 11.5.1 (Always Reparsing); and added basic support for extending the parser without having to modify the grammar as mentioned in Section 11.6. In addition I have added a high-level syntax for procedural macros, which included support for quasi and anti-quotes.

The more up-to-date ZL Manual includes many parts of my dissertation and if you are interested in ZL itself it best to consult it instead. What the documentation leaves out is how ZL can be used to mitigate ABI compatibility issues, which is the topic of my dissertation.

Parts of ZL and its applications are also described in the GPCE'10 paper (uses version 0.02) and details on parsing and the macro system is described in the Scheme'11 paper (uses version 0.03). The examples for both papers can be found in the test/ directory.