Principles of compiler design

by Alfred V. Aho

Other authorsJeffrey D. Ullman (Author)
Hardcover, 1977

Status

Available

Call number

001.6425

Library's review

Indeholder "Preface", "Chapter 1 Introduction to Compilers", " 1.1 Compilers and translators", " 1.2 Why do we need translators?", " 1.3 The structure of a compiler", " 1.4 Lexical analysis", " 1.5 Syntax analysis", " 1.6 Intermediate code generation", " 1.7 Optimization", " 1.8 Code generation", " 1.9 Bookkeeping", " 1.10 Error handling", " 1.11 Compiler-writing tools", " 1.12 Getting started", "Chapter 2 Programming Languages", " 2.1 High-level programming languages", " 2.2 Definitions of programming languages", " 2.3 The lexical and syntactic structure of a language", " 2.4 Data elements", " 2.5 Data structures", " 2.6 Operators", " 2.7 Assignment", " 2.8 Statements", " 2.9 Program units", " 2.10 Data environments", " 2.11 Parameter transmission", " 2.12 Storage management", "Chapter 3 Finite Automata and Lexical Analysis", " 3.1 The role of the lexical analyzer", " 3.2 A simple approach to the design of lexical analyzers", " 3.3 Regular expressions", " 3.4 Finite automata", " 3.5 From regular expressions to finite automata", " 3.6 Minimizing the number of states of a DFA", " 3.7 A language for specifying lexical analyzers", " 3.8 Implementation of a lexical analyzer", " 3.9 The scanner generator as Swiss army knife", "Chapter 4 The Syntactic Specification of Programming Languages", " 4.1 Context-free grammars", " 4.2 Derivations and parse trees", " 4.3 Capabilities of context-free grammars", "Chapter 5 Basic Parsing Techniques", " 5.1 Parsers", " 5.2 Shift-reduce parsing", " 5.3 Operator-precedence parsing", " 5.4 Top-down parsing", " 5.5 Predictive parsers", "Chapter 6 Automatic Construction of Efficient Parsers", " 6.1 LR parsers", " 6.2 The canonical collection of LR(0) items", " 6.3 Constructing SLR parsing tables", " 6.4 Constructing canonical LR parsing tables", " 6.5 Constructing LALR parsing tables", " 6.6 Using ambiguous grammars", " 6.7 An automatic parser generator", " 6.8 Implementation of LR parsing tables", " 6.9 Constructing LALR sets of items", "Chapter 7 Syntax-Directed Translation", " 7.1 Syntax-directed translation schemes", " 7.2 Implementation of syntax-directed translators", " 7.3 Intermediate code", " 7.4 Postfix notation", " 7.5 Parse trees and syntax trees", " 7.6 Three-address code, quadruples, and triples", " 7.7 Translation of assignment statements", " 7.8 Boolean expressions", " 7.9 Statements that alter the flow of control", " 7.10 Postfix translations", " 7.11 Translation with a top-down parser", "Chapter 8 More About Translation", " 8.1 Array, references in arithmetic expressions", " 8.2 Procedure calls", " 8.3 Declarations", " 8.4 Case statements", " 8.5 Record structures", " 8.6 PL/I-style structures", "Chapter 9 Symbol Tables", " 9.1 The contents of a symbol table", " 9.2 Data structures for symbol tables", " 9.3 Representing scope information", "Chapter 10 Run-time Storage Administration", " 10.1 Implementation of a simple stack allocation scheme", " 10.2 Implementation of block-structured languages", " 10.3 Storage allocation in FORTRAN", " 10.4 Storage allocation in block-structured languages", "Chapter 11 Error Detection and Recovery", " 11.1 Errors", " 11.2 Lexical-phase errors", " 11.3 Syntactic-phase errors", " 11.4 Semantic errors", "Chapter 12 Introduction to Code Optimization", " 12.1 The principal sources of optimization", " 12.2 Loop optimization", " 12.3 The DAG representation of basic blocks", " 12.4 Value numbers and algebraic laws", " 12.5 Global data-flow analysis", "Chapter 13 More About Loop Optimization", " 13.1 Dominators", " 13.2 Reducible flow graphs", " 13.3 Depth-first search", " 13.4 Loop-invariant computations", " 13.5 Induction variable elimination", " 13.6 Some other loop optimizations", "Chapter 14 More About Data-Flow Analysis", " 14.1 Reaching definitions again", " 14.2 Available expressions", " 14.3 Copy propagation", " 14.4 Backward flow problems", " 14.5 Very busy expressions and code hoisting", " 14.6 The four kinds of data-flow analysis problems", " 14.7 Handling pointers", " 14.8 Interprocedural data-flow analysis", " 14.9 Putting it all together", "Chapter 15 Code Generation", " 15.1 Object programs", " 15.2 Problems in code generation", " 15.3 A machine model", " 15.4 A simple code generator", " 15.5 Register allocation and assignment", " 15.6 Code generation from DAG's", " 15.7 Peephole optimization", "Appendix A A Look at Some Compilers", " A.1 The C compilers", " A.2 The FORTRAN H compiler", " A.3 The BLISS/11 compiler", "Appendix B A Compiler Project", " B.1 Introduction", " B.2 A PASCAL Subset", " B.3 Program structure", " B.4 Lexical conventions", " B.5 Suggested exercises", " B.6 Some extensions", "Bibliography", "Index".
Standardlærebogen i compilerdesign, dvs hvordan man skriver en oversætter til et højniveausprog.

I 1981 skrev Michael Schwartzbach en oversætter fra Aka til Pascal og jeg skrev runtimebiblioteket. I 1982 skrev Michael en oversætter til mellemkode og jeg skrev fortolkeren af A-kode. Michael var på vej til USA, så han skrev compileren først. Så skrev jeg fortolkeren og en seddel med underligheder i oversætteren, så da han kom tilbage fra USA gik der et par dage med at rette og så virkede systemet ellers fint i flere år. En af superbrugerne var instruktoren Per Frederik Vilhelm Hasle Harlung, som blandt andet fandt en memory leak. Gad vide om ikke vi kiggede lidt i den her bog undervejs?
… (more)

Publication

Reading, Mass. : Addison-Wesley, 1977.

Language

Original language

English

Original publication date

1977

Physical description

x, 604 p.; 24.1 cm

ISBN

0201000229 / 9780201000221

Local notes

Omslag: Ikke angivet
Omslaget viser en drage "Complexity of compiler design", der bliver angrebet af en ridder på "Dataflow analysis" med skjoldet "Syntax directed translation" og lansen "LALR parser generators"
Indskannet omslag - N650U - 150 dpi
På indersiden af omslaget står K. Podlaska Christiansen
Page: 0.1978 seconds