Principles of Compiler Design
Publisher: Narosa Publishing House
Published: 2002
Format: Paperback
Number of pages: 612
ISBN-13: 9788185015613
Table of contents: label: Chapter 1
title: Introduction to Compilers; label: 1.1
title: Compilers and Translators
pagenum: 1; label: 1.2
title: Why Do We Need Translators?
pagenum: 3; label: 1.3
title: The Structure of a Compiler
pagenum: 5; label: 1.4
title: Lexical Analysis
pagenum: 10; label: 1.5
title: Syntax Analysis
pagenum: 12; label: 1.6
title: Intermediate Code Generation
pagenum: 13; label: 1.7
title: Optimization
pagenum: 17; label: 1.8
title: Code Generation
pagenum: 19; label: 1.9
title: Bookkeeping
pagenum: 20; label: 1.10
title: Error Handling
pagenum: 21; label: 1.11
title: Compiler-Writing Tools
pagenum: 21; label: 1.12
title: Getting Started
pagenum: 23; label: Chapter 2
title: Programming Languages; label: 2.1
title: High-Level Programming Languages
pagenum: 26; label: 2.2
title: Definitions of Programming Languages
pagenum: 28; label: 2.3
title: The Lexical and Syntactic Structure of a Language
pagenum: 32; label: 2.4
title: Data Elements
pagenum: 34; label: 2.5
title: Data Structures
pagenum: 38; label: 2.6
title: Operators
pagenum: 45; label: 2.7
title: Assignment
pagenum: 50; label: 2.8
title: Statements
pagenum: 53; label: 2.9
title: Program Units
pagenum: 55; label: 2.10
title: Data Environments
pagenum: 57; label: 2.11
title: Parameter Transmission
pagenum: 59; label: 2.12
title: Storage Management
pagenum: 63; label: Chapter 3
title: Finite Automata and Lexical Analysis; label: 3.1
title: The Role of the Lexical Analyzer
pagenum: 74; label: 3.2
title: A Simple Approach to the Design of Lexical Analyzers
pagenum: 76; label: 3.3
title: Regular Expressions
pagenum: 82; label: 3.4
title: Finite Automata
pagenum: 88; label: 3.5
title: From Regular Expressions to Finite Automata
pagenum: 95; label: 3.6
title: Minimizing the Number of States of a DFA
pagenum: 99; label: 3.7
title: A Language for Specifying Lexical Analyzers
pagenum: 103; label: 3.8
title: Implementation of a Lexical Analyzer
pagenum: 109; label: 3.9
title: The Scanner Generator as Swiss Army Knife
pagenum: 118; label: Chapter 4
title: The Syntactic Specification of Programming Languages; label: 4.1
title: Context-free Grammars
pagenum: 126; label: 4.2
title: Derivations and Parse Trees
pagenum: 129; label: 4.3
title: Capabilities of Context-free Grammars
pagenum: 136; label: Chapter 5
title: Basic Parsing Techniques; label: 5.1
title: Parsers
pagenum: 146; label: 5.2
title: Shift-reduce Parsing
pagenum: 150; label: 5.3
title: Operator-precedence Parsing
pagenum: 158; label: 5.4
title: Top-down Parsing
pagenum: 174; label: 5.5
title: Predictive Parsers
pagenum: 184; label: Chapter 6
title: Automatic Construction of Efficient Parsers; label: 6.1
title: LR Parsers
pagenum: 198; label: 6.2
title: The Canonical Collection of LR (0) Items
pagenum: 204; label: 6.3
title: Constructing SLR Parsing Tables
pagenum: 211; label: 6.4
title: Constructing Canonical LR Parsing Tables
pagenum: 214; label: 6.5
title: Constructing LALR Parsing Tables
pagenum: 219; label: 6.6
title: Using Ambiguous Grammars
pagenum: 225; label: 6.7
title: An Automatic Parser Generator
pagenum: 229; label: 6.8
title: Implementation of LR Parsing Tables
pagenum: 233; label: 6.9
title: Constructing LALR Sets of Items
pagenum: 236; label: Chapter 7
title: Syntax-Directed Translation; label: 7.1
title: Syntax-directed Translation Schemes
pagenum: 246; label: 7.2
title: Implementation of Syntax-directed Translators
pagenum: 249; label: 7.3
title: Intermediate Code
pagenum: 254; label: 7.4
title: Postfix Notation
pagenum: 254; label: 7.5
title: Parse Trees and Syntax Trees
pagenum: 258; label: 7.6
title: Three-address Code, Quadruples, and Triples
pagenum: 259; label: 7.7
title: Translation of Assignment Statements
pagenum: 265; label: 7.8
title: Boolean Expressions
pagenum: 271; label: 7.9
title: Statements that Alter the Flow of Control
pagenum: 281; label: 7.10
title: Postfix Translations
pagenum: 286; label: 7.11
title: Translation with a Top-down Parser
pagenum: 290; label: Chapter 8
title: More About Translation; label: 8.1
title: Array References in Arithmetic Expressions
pagenum: 296; label: 8.2
title: Procedure Calls
pagenum: 303; label: 8.3
title: Declarations
pagenum: 307; label: 8.4
title: Case Statements
pagenum: 308; label: 8.5
title: Record Structures
pagenum: 312; label: 8.6
title: PL/I-style Structures
pagenum: 317; label: Chapter 9
title: Symbol Tables; label: 9.1
title: The Contents of a Symbol Table
pagenum: 328; label: 9.2
title: Data Structures for Symbol Tables
pagenum: 336; label: 9.3
title: Representing Scope Information
pagenum: 340; label: Chapter 10
title: Run-time Storage Administration; label: 10.1
title: Implementation of a Simple Stack Allocation Scheme
pagenum: 351; label: 10.2
title: Implementation of Block-structured Languages
pagenum: 356; label: 10.3
title: Storage Allocation in FORTRAN
pagenum: 364; label: 10.4
title: Storage Allocation in Block-structured Languages
pagenum: 377; label: Chapter 11
title: Error Detection and Recovery; label: 11.1
title: Errors
pagenum: 382; label: 11.2
title: Lexical-phase Errors
pagenum: 388; label: 11.3
title: Syntactic-phase Errors
pagenum: 391; label: 11.4
title: Semantic Errors
pagenum: 402; label: Chapter 12
title: Introduction to Code Optimization; label: 12.1
title: The Principal Sources of Optimization
pagenum: 408; label: 12.2
title: Loop Optimization
pagenum: 410; label: 12.3
title: The DAG Representation of Basic Blocks
pagenum: 418; label: 12.4
title: Value Numbers and Algebraic Laws
pagenum: 427; label: 12.5
title: Global Data-flow Analysis
pagenum: 429; label: Chapter 13
title: More About Loop Optimization; label: 13.1
title: Dominators
pagenum: 442; label: 13.2
title: Reducible Flow Graphs
pagenum: 447; label: 13.3
title: Depth-first Search
pagenum: 449; label: 13.4
title: Loop-invariant Computations
pagenum: 454; label: 13.5
title: Induction Variable Elimination
pagenum: 466; label: 13.6
title: Some Other Loop Optimizations
pagenum: 471; label: Chapter 14
title: More About Data-flow Analysis; label: 14.1
title: Reaching Definitions Again
pagenum: 478; label: 14.2
title: Available Expressions
pagenum: 482; label: 14.3
title: Copy Propagation
pagenum: 487; label: 14.4
title: Backward Flow Problems
pagenum: 489; label: 14.5
title: Very Busy Expressions and Code Hoisting
pagenum: 491; label: 14.6
title: The Four Kinds of Data-flow Analysis Problems
pagenum: 497; label: 14.7
title: Handling Pointers
pagenum: 499; label: 14.8
title: Interprocedural Data-flow Analysis
pagenum: 504; label: 14.9
title: Putting It All Together
pagenum: 511; label: Chapter 15
title: Code Generation; label: 15.1
title: Object Programs
pagenum: 518; label: 15.2
title: Problems in Code Generation
pagenum: 521; label: 15.3
title: A Machine Model
pagenum: 520; label: 15.4
title: A Simple Code Generator
pagenum: 525; label: 15.5
title: Register Allocation and Assignment
pagenum: 533; label: 15.6
title: Code Generation from DAG's
pagenum: 537; label: 15.7
title: Peephole Optimization
pagenum: 548; label: Appendix A
title: A Look at Some Compilers; label: A.1
title: The C Compilers
pagenum: 557; label: A.2
title: The FORTRAN H Compiler
pagenum: 559; label: A.3
title: The BLISS/11 Compiler
pagenum: 561; label: Appendix B
title: A Compiler Project; label: B.1
title: Introduction
pagenum: 563; label: B.2
title: A PASCAL Subset
pagenum: 563; label: B.3
title: Program Structure
pagenum: 566; label: B.4
title: Lexical Conventions
pagenum: 566; label: B.5
title: Suggested Exercises
pagenum: 567; label: B.6
title: Some Extensions
pagenum: 569; title: Bibliography
pagenum: 570; title: Suggested Exercises
pagenum: 591; title: Index
pagenum: 601