ZL: A C/C++ Compatible Language with Hygienic Macros

AppId is over the quota

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.

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.

View the original article here

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s