Riassunto
The Synthesizer Generator is a system for automating the construction of customized editors for particular languages. The unique feature of the Synthesizer Generator is its use of an immediate-computation paradigm to perform analysis, translation, and error reporting while an object is being edited. With the Synthesizer Generator one can create programming language environments that incrementally parse, type-check, and compile a program as it is interactively developed. The use of the system is not restricted to programming languages; editors for logics, specification languages, and verification languages can be created as well. The specification language of the Synthesizer Generator is based on the attribute-grammar concept, which plays a major role in the way compiler construction is taught today. For this reason, the Synthesizer Generator is ideal for use in course projects and should be of particular interest to those involved in compiler construction. The Synthesizer Generator Reference Manual is the defining document of the Synthesizer Generator system. Written by the Synthesizer Generator's creators, this volume provides complete documentation on all aspects of specifying, generating, debugging, and running editors.
Contenuti
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.
Le informazioni nella sezione "Su questo libro" possono far riferimento a edizioni diverse di questo titolo.