Introduction to compiler construction
By: Thomas W. Parsons.
Publisher: Computer Science Press
Published: 1992
Place of publication: New York
Language: eng
Number of pages: 359
Subjects: Compilers (Computer programs)
Other titles: Compiler construction.
Notes: Includes bibliographical references (p. 339-342) and index.
Table of contents: title: Foreword
pagenum: xi; title: Preface
pagenum: xiii; label: 1
title: Introduction
pagenum: 1; label: 1.1
title: Machine Language, Assembly Language, High-Level Languages
pagenum: 1; label: 1.2
title: Terminology
pagenum: 3; label: 1.3
title: Compilers and Interpreters
pagenum: 3; label: 1.4
title: The Environment of the Compiler
pagenum: 4; label: 1.5
title: Phases of a Compiler
pagenum: 6; label: 1.6
title: Passes, Front End, Back End
pagenum: 10; label: 1.7
title: System Support
pagenum: 10; label: 1.8
title: Writing a Compiler
pagenum: 11; label: 1.9
title: Retargetable Compilers
pagenum: 14; label: 1.10
title: Summary
pagenum: 15; label: 2
title: Lexical Analysis
pagenum: 16; label: 2.1
title: Tokens and Lexemes
pagenum: 17; label: 2.2
title: Buffering
pagenum: 19; label: 2.3
title: Finite-State Automata
pagenum: 20; label: 2.3.1
title: State Diagrams and State Tables
pagenum: 20; label: 2.3.2
title: Formal Definition
pagenum: 23; label: 2.3.3
title: Acceptance
pagenum: 25; label: 2.4
title: Nondeterministic Finite-State Automata
pagenum: 27; label: 2.4.1
title: ε-Transitions
pagenum: 30; label: 2.4.2
title: Equivalence
pagenum: 32; label: 2.5
title: The Subset Construction
pagenum: 33; label: 2.6
title: Regular Expressions
pagenum: 39; label: 2.7
title: Regular Expressions and Finite-State Machines
pagenum: 43; label: 2.8
title: The Pumping Lemma
pagenum: 46; label: 2.9
title: Application to Lexical Analysis
pagenum: 49; label: 2.9.1
title: Recognizing Tokens
pagenum: 52; label: 2.9.2
title: A Stripped-Down Lexical Analyzer for Pascal
pagenum: 54; label: 2.9.3
title: Coding a Finite-State Machine
pagenum: 58; label: 2.9.4
title: The Lookahead Problem
pagenum: 60; label: 2.10
title: Summary
pagenum: 61; label: 3
title: Syntactic Analysis I
pagenum: 64; label: 3.1
title: Grammars
pagenum: 64; label: 3.1.1
title: Syntax and Semantics
pagenum: 68; label: 3.1.2
title: Grammars: Formal Definition
pagenum: 70; label: 3.1.3
title: Parse Trees and Derivations
pagenum: 72; label: 3.1.4
title: Rightmost and Leftmost Derivations
pagenum: 74; label: 3.1.5
title: Ambiguous Grammars
pagenum: 75; label: 3.1.6
title: The Chomsky Hierarchy
pagenum: 76; label: 3.1.7
title: Some Context-Free and Non-Context-Free Languages
pagenum: 78; label: 3.1.8
title: More About the Chomsky Hierarchy
pagenum: 80; label: 3.2
title: Top-Down Parsers
pagenum: 82; label: 3.2.1
title: Left Recursions
pagenum: 83; label: 3.2.2
title: Backtracking
pagenum: 89; label: 3.3
title: Recursive-Descent Parsing
pagenum: 91; label: 3.4
title: Predictive Parsers
pagenum: 93; label: 3.4.1
title: A Predictive Recursive-Descent Parser
pagenum: 101; label: 3.4.2
title: Table-Driven Predictive Parsers
pagenum: 106; label: 3.4.3
title: Constructing the Predictive Parser Table
pagenum: 110; label: 3.4.4
title: Conflicts
pagenum: 112; label: 3.5
title: Summary
pagenum: 114; label: 4
title: Syntactic Analysis II
pagenum: 119; label: 4.1
title: Introduction to Bottom-Up Parsing
pagenum: 119; label: 4.1.1
title: Parsing with a Stack
pagenum: 121; label: 4.1.2
title: More About Handles
pagenum: 124; label: 4.2
title: The Operator-Precedence Parser
pagenum: 126; label: 4.2.1
title: A Simple Operator-Precedence Parser
pagenum: 126; label: 4.2.2
title: Forming the Table
pagenum: 130; label: 4.3
title: The LR Parser
pagenum: 132; label: 4.3.1
title: Construction of LR Parsing Tables
pagenum: 137; label: 4.3.2
title: Error Handling
pagenum: 148; label: 4.3.3
title: Conflicts
pagenum: 150; label: 4.3.4
title: Canonical LR Parsers
pagenum: 151; label: 4.3.5
title: Lookahead LR (LALR) Parsers
pagenum: 156; label: 4.3.6
title: Compiler-Compilers
pagenum: 160; label: 4.4
title: Summary: Which Parser Should I Use?
pagenum: 160; label: 5
title: Intermediate Code Generation
pagenum: 164; label: 5.1
title: Semantic Actions and Syntax-Directed Translation
pagenum: 165; label: 5.2
title: Intermediate Representations
pagenum: 168; label: 5.2.1
title: Syntax Trees
pagenum: 168; label: 5.2.2
title: Directed Acyclic Graphs
pagenum: 169; label: 5.2.3
title: Postfix Notation
pagenum: 170; label: 5.2.4
title: Three-Address Code
pagenum: 171; label: 5.2.5
title: Intermediate Languages
pagenum: 172; label: 5.3
title: Bottom-Up Translation
pagenum: 173; label: 5.3.1
title: Trees
pagenum: 174; label: 5.3.2
title: Postfix Notation
pagenum: 181; label: 5.3.3
title: Three-Address Code
pagenum: 183; label: 5.4
title: Top-Down Translation
pagenum: 188; label: 5.4.1
title: Synthesized and Inherited Attributes
pagenum: 189; label: 5.4.2
title: Attributes in a Top-Down Parse
pagenum: 191; label: 5.4.3
title: Removal of Left Recursions
pagenum: 198; label: 5.5
title: More About Bottom-Up Translation
pagenum: 201; label: 5.5.1
title: Embedded Semantic Actions
pagenum: 201; label: 5.5.2
title: Inherited Attributes
pagenum: 202; label: 5.6
title: Pascal-Type Declarations
pagenum: 205; label: 5.7
title: Type Checking and Coercion
pagenum: 206; label: 5.8
title: Summary
pagenum: 208; label: 6
title: Optimization
pagenum: 213; label: 6.1
title: Machine-Independent Optimization
pagenum: 214; label: 6.1.1
title: Basic Blocks
pagenum: 214; label: 6.1.2
title: Local Optimization
pagenum: 218; label: 6.1.3
title: Loop Optimization
pagenum: 221; label: 6.1.4
title: Global Optimization
pagenum: 224; label: 6.2
title: DAGs Again
pagenum: 227; label: 6.2.1
title: Generating DAGs from 3AC
pagenum: 227; label: 6.2.2
title: Generating 3AC from DAGs
pagenum: 231; label: 6.3
title: Data-Flow Analysis
pagenum: 233; label: 6.3.1
title: Flow Graphs
pagenum: 233; label: 6.3.2
title: Data-Flow Equations
pagenum: 235; label: 6.3.3
title: Solving Data-Flow Equations
pagenum: 239; label: 6.4
title: Optimization Techniques Revisited
pagenum: 245; label: 6.4.1
title: Loop Optimizations
pagenum: 245; label: 6.4.2
title: Other Optimizations
pagenum: 247; label: 6.5
title: Other Optimization Issues
pagenum: 248; label: 6.6
title: Machine-Dependent Optimization
pagenum: 250; label: 6.6.1
title: Registers and Instructions
pagenum: 250; label: 6.6.2
title: Peephole Optimization
pagenum: 253; label: 6.7
title: Summary: How Much Optimization?
pagenum: 256; label: 7
title: Object Code Generation
pagenum: 259; label: 7.1
title: Generating Machine Language from 3AC
pagenum: 259; label: 7.1.1
title: Blind Generation
pagenum: 260; label: 7.1.2
title: Special Considerations
pagenum: 261; label: 7.2
title: Context-Sensitive Translation and Register Use
pagenum: 263; label: 7.2.1
title: Liveness and Next Use
pagenum: 263; label: 7.2.2
title: Descriptor Tables
pagenum: 268; label: 7.2.3
title: Assigning Registers
pagenum: 268; label: 7.2.4
title: Generating Code
pagenum: 269; label: 7.2.5
title: Instruction Sequencing
pagenum: 274; label: 7.3
title: Special Architectural Features
pagenum: 278; label: 7.4
title: Summary
pagenum: 279; label: 8
title: Memory Use
pagenum: 281; label: 8.1
title: The Symbol Table
pagenum: 281; label: 8.1.1
title: Organization
pagenum: 281; label: 8.1.2
title: Storing Identifiers
pagenum: 282; label: 8.1.3
title: Record Formats
pagenum: 283; label: 8.1.4
title: Special Problems
pagenum: 284; label: 8.2
title: Run-Time Memory Management
pagenum: 287; label: 8.2.1
title: Static Memory Management
pagenum: 287; label: 8.2.2
title: Dynamic Memory Management: Recursion
pagenum: 288; label: 8.2.3
title: Dynamic Memory Management: Run-Time Allocation
pagenum: 298; label: 8.3
title: Summary
pagenum: 304; label: Appendix A
title: Minimizing the Number of States in a DFA
pagenum: 307; label: Appendix B
title: Lex and Yacc
pagenum: 317; label: B.1
title: Lex
pagenum: 317; label: B.1.1
title: Token Definitions
pagenum: 318; label: B.1.2
title: Definitions
pagenum: 321; label: B.1.3
title: Tokens and Actions
pagenum: 323; label: B.1.4
title: User-Written Code
pagenum: 325; label: B.1.5
title: A Sample Lex Specification
pagenum: 326; label: B.2
title: Yacc
pagenum: 328; label: B.2.1
title: Grammar
pagenum: 329; label: B.2.2
title: Declarations and Definitions
pagenum: 331; label: B.2.3
title: User-Written Code
pagenum: 332; label: B.2.4
title: A Sample Yacc Specification
pagenum: 333; title: References
pagenum: 339; title: Index
pagenum: 343