Compiler technology is fundamental to computer science since it provides the means to implement many other tools. It is interesting that, in fact, many tools have a compiler framework - they accept input in a particular format, perform some processing and present output in another format. Such tools support the abstraction process and are crucial to productive systems development.
The focus of Compiler Technology: Tools, Translators and Language Implementation is to enable quick development of analysis tools. Both lexical scanner and parser generator tools are provided as supplements to this book, since a hands-on approach to experimentation with a toy implementation aids in understanding abstract topics such as parse-trees and parse conflicts. Furthermore, it is through hands-on exercises that one discovers the particular intricacies of language implementation.
Compiler Technology: Tools, Translators and Language Implementation is suitable as a textbook for an undergraduate or graduate level course on compiler technology, and as a reference for researchers and practitioners interested in compilers and language implementation.
Inhaltsverzeichnis
1. Introduction to Language Implementation. - 1. 1 Translator Strategies. - 1. 2 Translator Components. - 1. 3 Implementation of Translator Phases. - 1. 4 Summary. - 1. 5 Questions. - 2. Language Definition. - 2. 1 BNF Notations. - 2. 2 Construction of Recursive Descent Parsers. - 2. 3 Grammar Restrictions. - 2. 4 Summary. - 2. 5 Questions. - 3. Lexical Scanners. - 3. 1 Scanner Framework. - 3. 2 Formalisms. - 3. 3 Constructing Scanners from Specifications. - 3. 4 Constructing a Finite State Machine from a Regular Grammar. - 3. 5 Constructing a Finite State Machine from a Regular Expression. - 3. 6 Deterministic State Transition. - 3. 7 Optimizing a Finite State Machine. - 3. 8 Implementation of a Finite State Machine. - 3. 9 Considerations for Scanner Implementation. - 3. 10 Summary. - 3. 11 Questions. - 4. Syntactic Analysis. - 4. 1 Recursive Descent Parsing and Top-down Analysis. - 4. 2 Bottom-up Analysis. - 4. 3 Tree Construction. - 4. 4 Generating Parse Configurations. - 4. 5 Generating LR(0) Parse Tables. - 4. 6 Parsing Conflicts. - 4. 7 Extending LR(0) Tables for LR(1) Parsing. - 4. 8 Parse Table Optimization: SLR(1) and LALR(1) Methods. - 4. 9 Parsing With non-LL(1) or non-LR(1) Grammars. - 4. 10 Summary. - 4. 11 Questions. - 5. Incorporating Semantic Analysis. - 5. 1 Syntax-Directed Analysis. - 5. 2 Semantic Analysis in a Recursive Descent Parser. - 5. 3 Specifying Action Routines in Generated Parsers. - 5. 4 Attribute Propagation within Parser Drivers. - 5. 5 yacc Example. - 5. 6 Inherited and Synthesized Attribute Propagation. - 5. 7 Summary. - 5. 8 Questions. - 6. Semantic Processing. - 6. 1 General Structure of Programming Languages. - 6. 2 Symbol Tables. - 6. 3 Type Definitions. - 6. 4 Processing Summary. - 6. 5 Formal Specifications via Attribute Grammars. - 6. 6 Example Specification of a Block Structured Language. - 6. 7 Attribute Evaluation Strategies. - 6. 8 Summary. - 6. 9 Questions. - 7. The Program Run-Time Environment. - 7. 1 Program Representations. - 7. 2 Storage Allocations. - 7. 3 Dynamic Variables. - 7. 4 Summary. - 7. 5 Questions. - 8. Intermediate Code and Interpreters. - 8. 1 Intermediate Representation. - 8. 2 Syntax-Directed Translation. - 8. 3 Representing a Nested Block-Structured Language. - 8. 4 Interpreter Implementation. - 8. 5 Efficiency Improvements. - 8. 6 Summary. - 8. 7 Questions. - 9. Code Generation. - 9. 1 Macro Expansion. - 9. 2 Register Allocation. - 9. 3 Instruction Sequencing. - 9. 4 Instruction and Addressing Mode Selection. - 9. 5 Summary. - 9. 6 Questions.