Portable syntax-case

Abdulaziz Ghuloum, R. Kent Dybvig

The portable syntax-case macro system implements the restricted high-level syntax-rules and equally high-level but general-purpose syntax-case macros of the Revised6 Report on Scheme (R6RS). It also implements R6RS libraries and all built-in R6RS syntactic forms.

The system is documented in the R6RS and also described, with numerous examples, in Section 3.1 and Chapter 8 of The Scheme Programming Language, 4th edition.

Aspects of the macro system and its implementation are described in Syntactic abstraction in Scheme. Additional examples of its use are given in Writing hygienic macros in Scheme with syntax-case. Aspects of the library system and its implementation are described in Implicit phasing for R6RS libraries.

The portable system is designed to be adaptable with minimal effort to any R6RS or R5RS implementation of Scheme, with the provision of a small set of implementation-dependent hooks. Along with a reader, the system forms a complete front-end for Scheme. If the reader and evaluator support source annotations (e.g., file and line number information), these are handled as well to provide source-object correlation.

More information on the psyntax system and links to the implementation can be found at Aziz Ghuloum's psyntax page, a backup copy of which is here. The system was created by Abdulaziz Ghuloum and Kent Dybvig based on an earlier implementation by Kent Dybvig, Oscar Waddell, Bob Hieb, and Carl Bruggeman.