The Synthesizer Generator Reference Manual
The Synthesizer Generator is a system for automating the implementation of language-based editing environments. The editor designer prepares a specification that includes rules defining a language's context-free abstract syn tax, context-sensitive relationships, display format, and concrete input syntax. From this specification, the Synthesizer Generator creates a display editor for manipulating objects according to these rules [Reps84]. This volume, The Synthesizer Generator Reference Manual, is intended as the defining document of the system. A companion volume, The Synthesizer Gen erator: A System for Constructing Language-Based Editors [Reps88], provides a more tutorial description of the system; it contains numerous examples that illustrate the specification and use of generated editors, as well as chapters that explain important algorithms of the implementation. The Synthesizer Generator is a generalization of our earlier system, the Cor nell Program Synthesizer [Teitelbaum81], which was a programming environ ment for a specific small dialect of PL/I. It featured a display-oriented, syntax directed editor, an incremental compiler, an execution supervisor supporting source-level debugging, and a file system containing syntactically typed pro gram fragments. Whereas PL/I was built into the Cornell Program Synthesizer, the Synthesizer Generator accepts a formal language definition as input. Although originally conceived as a tool for creating Synthesizer-like environments for arbitrary pro gramming languages, the Synthesizer Generator is more broadly useful. Any textual language with a hierarchical phrase structure grammar is a candidate. vi Preface Interactive theorem proving for formal mathematics and logic, for example, has emerged as a particularly suitable application.