Bibliographic Information

The synthesizer generator reference manual

Thomas W. Reps, Tim Teitelbaum

(Texts and monographs in computer science)

Springer-Verlag, c1989

3rd ed

  • : New York
  • : Berlin

Available at  / 14 libraries

Search this Book/Journal

Note

Bibliography: p. [159]-160

Includes index

Description and Table of Contents

Description

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.

Table of Contents

1 Introduction.- 2 Specifying an Editor.- 2.1 Lexical Matters.- 2.2 Phyla, Operators, and Terms.- 2.2.1 Primitive phyla.- 2.2.2 User-defined phyla and operators.- 2.2.3 List phyla, optional phyla, and placeholder terms.- 2.2.4 Predefined non-primitive phyla.- 2.2.5 Root declaration.- 2.3 Attribute Declarations and Attribute Equations.- 2.3.1 Attribute declarations.- 2.3.2 Attribute equations.- 2.3.3 Attribute evaluation schemes.- 2.4 Function Declarations.- 2.5 Expressions.- 2.5.1 Variables.- 2.5.2 Application of functions, operators, and maps.- 2.5.3 Operations on primitive phyla.- 2.5.4 List operations.- 2.5.5 Relational operations.- 2.5.6 Conditional and binding expressions.- 2.5.7 Grouping, sequencing, and precedence.- 2.5.8 Conversion of terms to and from strings.- 2.5.9 Attribution expressions.- 2.6 View and Unparsing Declarations.- 2.6.1 Editing modes.- 2.6.2 Resting places.- 2.6.3 Formatting the display representation.- 2.6.4 Unparsing lists.- 2.6.5 Sparse views.- 2.7 Concrete Input Syntax.- 2.7.1 The text-entry paradigm.- 2.7.2 Entry declarations.- 2.7.3 Parsing declarations.- 2.7.4 Ambiguity and precedence declarations.- 2.7.5 Lexical analysis.- 2.7.6 Examples.- 2.8 Transformation Declarations.- 2.9 Support for Modular Specifications.- 2.10 Option Declarations.- 2.11 Quantified Declarations.- 3 Using an Editor.- 3.1 Getting Into and Out of an Editor.- 3.2 Executing Commands and Transformations.- 3.3 Buffers, Selections, and Files.- 3.4 Creating, Deleting, and Resizing Windows and Panes.- 3.5 Entering and Editing an Object.- 3.6 Changing the Structural Selection by Traversal of the Edited Term.- 3.7 Changing the Character Selection by Traversal of the Text Buffer.- 3.8 Moving the Object With Respect to the Window.- 3.9 Moving the Locator on the Screen.- 3.10 Changing the Selection with the Locator.- 3.11 Structural Editing.- 3.12 Textual Editing.- 3.13 Access to Computed Attributes.- 3.14 Searching.- 3.15 Alternating Unparsing Schemes.- 4 The SSL Debugger.- 5 Interface to C.- 5.1 Foreign and Exported Functions.- 5.2 Base-Type and Primitive-Phylum Definitions.- 5.3 External Stores and External Computers.- 5.4 Defining Additional Commands.- 5.4.1 Defining commands that have no parameters.- 5.4.2 Defining commands that have parameters.- Appendix A A Sample Specification.- Appendix B Invoking the Synthesizer Generator.- Appendix C List of Editor Commands.- Appendix D Keyboards, Displays, Window Systems, and Mice.- D.1 Keyboards.- D.2 Displays and Window Systems.- D.3 Mice.- Appendix E Demonstration Editors.- E.1 Simple Tutorial Editors.- E.2 Editors for Programming Languages.- E.3 Document Editor.- E.4 Graphics Editor.- E.5 Pedagogical Editors.- E.6 Logic and Program-Verification Editors.- Appendix F Syntax of SSL.

by "Nielsen BookData"

Related Books: 1-1 of 1

Details

Page Top