----------------------------------------------------------- -*- outline -*- This is a portable implementation of the syntax-case macro expander invented by R. Kent Dybvig, Robert Hieb and Carl Bruggeman and described in their paper "Syntactic Abstraction in Scheme", extended with some features borrowed from other implementations (for details, see below) and combined with an implementation of the module system for scheme invented by Matthew Flatt and described in his paper "Composable and Compilable Macros". See the doc/reference directory. Copyright (C) 2004, 2005 Tony Garnock-Jones Copyright (C) 2004, 2005 LShift Ltd Permission to copy this software, in whole or in part, to use this software for any lawful purpose, and to redistribute this software is granted subject to the restriction that all copies made of this software must include this copyright notice in full. This software is provided AS IS, with NO WARRANTY, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES OF ANY NATURE WHATSOEVER. (That's the same licence as used for the "psyntax" portable syntax-case implementation by Dybvig, Waddell, Hieb and Bruggeman.) --------------------------------------------------------------------------- * Overview * Installation ** Prerequisites - define-macro (for datatype.scm) - srfi-1 - srfi-9 - srfi-13 (small dependency in datatype.scm) - srfi-23 (for an n-arguments "error" procedure) tested with chicken, mzscheme, sisc. ** Standalone usage ** Frontend for a compiler * Core language * Implemented extensions, and differences from psyntax ** Source tracking based on the sws paper, of course ** Identifier macros from psyntax ** Syntax-manipulation API inspired by and sometimes lifted directly from mzscheme ** Circular data not supported * Implementation notes