The Synthesizer Generator A System for Constructing Language-Based Editors /

This book is a detailed account of the Synthesizer Generator, a system for creat­ ing specialized editors that are customized for editing particular languages. The book is intended for those with an interest in software tools and in methods for building interactive systems. It is a must for people w...

Full description

Main Authors: Reps, Thomas W. (Author), Teitelbaum, Tim. (Author)
Corporate Author: SpringerLink (Online service)
Format: SpringerLink eBooks
Language:English
Published: New York, NY : Springer New York, 1989.
Series:Texts and Monographs in Computer Science,
Subjects:
Online Access:http://dx.doi.org/10.1007/978-1-4613-9623-9
LEADER 06352nam a22004935i 4500
001 978-1-4613-9623-9
003 DE-He213
005 20151204182842.0
007 cr nn 008mamaa
008 121227s1989 xxu| s |||| 0|eng d
020 |a 9781461396239  |9 978-1-4613-9623-9 
024 7 |a 10.1007/978-1-4613-9623-9  |2 doi 
050 4 |a QA76.758 
072 7 |a UMZ  |2 bicssc 
072 7 |a UL  |2 bicssc 
072 7 |a COM051230  |2 bisacsh 
082 0 4 |a 005.1  |2 23 
100 1 |a Reps, Thomas W.  |e author. 
245 1 4 |a The Synthesizer Generator  |h [electronic resource] :  |b A System for Constructing Language-Based Editors /  |c by Thomas W. Reps, Tim Teitelbaum. 
264 1 |a New York, NY :  |b Springer New York,  |c 1989. 
300 |a XIII, 317 p.  |b online resource. 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
347 |a text file  |b PDF  |2 rda 
490 1 |a Texts and Monographs in Computer Science,  |x 0172-603X 
505 0 |a 1 Introduction -- 1.1 Using Structure Editing to Ensure that Programs Are Syntactically Correct -- 1.2 Using Immediate Computation to Locate Errors in Programs -- 1.3 Using Incremental Code Generation to Support Program Testing -- 1.4 Supporting Program-Development Methodologies -- 1.5 The Need for Incremental Algorithms -- 1.6 Adapting Specifications for Immediate Computation -- 1.7 Generating Language-Based Programming Environments -- 1.8 The Synthesizer Generator -- 2 Demonstration of a Sample Editor -- 3 The Attribute-Grammar Model of Editing -- 4 Specification of a Sample Editor -- 4.1 Abstract Syntax -- 4.2 Attributes and Attribute Equations -- 4.3 Unparsing Schemes -- 4.4 Input Interfaces -- 4.5 Templates and Transformations -- 5 Lists, Optional Elements, and Placeholders -- 5.1 Transient Placeholders -- 5.2 Specifying Lists and Optional Elements in SSL -- 5.3 Sublist Manipulations -- 5.4 Selections of Singleton Sublists Versus Selections of List Elements -- 5.5 Parsing Lists -- 5.6 Attribution Rules for a List’s Completing Term and Placeholder Term -- 6 Defining Hybrid Editors with the Synthesizer Generator -- 6.1 Defining a Language’s Underlying Abstract Syntax -- 6.2 Integration of Text Editing and Structure Editing -- 6.3 Defining Computed Display Representations -- 6.4 Context-Sensitive Translations and Transformations -- 7 Performing Static Inferences with Attributes -- 7.1 Aggregation and Information-Passing Strategies -- 7.2 Using the Attribution Mechanism to Perform Type Inference -- 8 Practical Advice -- 8.1 How to Begin Developing an Editor -- 8.2 Modular Construction of Editor Specifications -- 8.3 Problems That Frequently Arise -- 9 Generating Code Using Attributes -- 9.1 Approaches to Incremental Recompilation -- 9.2 Incremental Recompilation Using Attributes -- 10 Interactive Program Verification -- 10.1 An Introductory Example -- 10.2 Generating Verification Conditions -- 10.3 Checking Proofs of Verification Conditions -- 10.4 Automatic Deductive Capabilities -- 11 The Implementation -- 11.1 Basic Organization of the Implementation -- 11.2 Finiteness of Completing Terms -- 11.3 Generating Copy Rules for Upward Remote Attribute Sets -- 11.4 Deferred Reference Counting -- 12 Incremental Attribute Evaluation for Ordered Attribute Grammars -- 12.1 Greedy Evaluation -- 12.2 Distributed-Control Evaluation -- 12.3 Evaluation of Ordered Attribute Grammars by Visit-Sequence Evaluators -- 12.4 Construction of a Visit-Sequence Evaluator -- 12.5 Incremental Updating by Visit-Sequence-Driven Change Propagation -- 12.6 Optimizations for One-to-One Functions -- 12.7 What to Do When a Grammar Fails the Orderedness Test -- Appendix A Syntax of SSL -- Appendix B Invoking the Synthesizer Generator -- Appendix C Abbreviated List of Editor Commands -- C.1 Getting Into and Out of an Editor -- C.2 Changing the Structural Selection by Traversal of the Abstract Syntax Tree -- C.3 Executing Commands -- C.4 Structural Editing -- C.5 Moving the Object with Respect to the Window -- C.6 Using the Locator -- C.7 Textual Editing -- C.8 Changing the Character Selection by Textual Traversal of the Text Buffer -- C.9 Buffers, Selections, and Files -- C.10 Creating and Deleting Windows -- Appendix D Keyboards, Displays, Window Systems, and Mice -- D.1 Keyboards -- D.2 Displays and Window Systems -- D.3 Mice. 
520 |a This book is a detailed account of the Synthesizer Generator, a system for creat­ ing specialized editors that are customized for editing particular languages. The book is intended for those with an interest in software tools and in methods for building interactive systems. It is a must for people who are using the Syn­ thesizer Generator to build editors because it provides extensive discussions of how to write editor specifications. The book should also be valuable for people who are building specialized editors "by hand," without using an editor­ generating tool. The need to manage the development of large software systems is one of the most pressing problems faced by computer programmers. An important aspect of this problem is the design of new tools to aid interactive program develop­ ment. The Synthesizer Generator permits one to create specialized editors that are tailored for editing a particular language. In program editors built with the Synthesizer Generator, knowledge about the language is used to continuously assess whether a program contains errors and to determine where such errors occur. The information is then displayed on the terminal screen to provide feed­ back to the programmer as the program is developed and modified. 
650 0 |a Computer science. 
650 0 |a Software engineering. 
650 0 |a Programming languages (Electronic computers). 
650 1 4 |a Computer Science. 
650 2 4 |a Software Engineering/Programming and Operating Systems. 
650 2 4 |a Programming Languages, Compilers, Interpreters. 
650 2 4 |a Software Engineering. 
700 1 |a Teitelbaum, Tim.  |e author. 
710 2 |a SpringerLink (Online service) 
773 0 |t Springer eBooks 
776 0 8 |i Printed edition:  |z 9781461396253 
830 0 |a Texts and Monographs in Computer Science,  |x 0172-603X 
856 4 0 |u http://dx.doi.org/10.1007/978-1-4613-9623-9 
912 |a ZDB-2-SCS 
912 |a ZDB-2-BAE 
950 |a Computer Science (Springer-11645)