Front cover image for Engineering a Compiler

Engineering a Compiler

This entirely revised second edition of Engineering a Compiler is full of technical updates and new material covering the latest developments in compiler technology. In this comprehensive text you will learn important techniques for constructing a modern compiler. Leading educators and researchers Keith Cooper and Linda Torczon combine basic principles with pragmatic insights from their experience building state-of-the-art compilers. They will help you fully understand important techniques such as compilation of imperative and object-oriented languages, construction of static single assignment
eBook, English, 2011
Elsevier Science, Burlington, 2011
1 online resource (825 pages)
9780080916613, 0080916619
728767409
Print version:
Front Cover
About the Authors
Engineering a Compiler
Copyright
Dedication
About the Cover
Table of Contents
Preface to the Second Edition
Changes in the Second Edition
Organization
The Art and Science of Compilation
Approach
Philosophy
A Word About Programming Exercises
Additional Materials
Acknowledgments
Chapter 1. Overview of Compilation
1.1 Introduction
Conceptual Roadmap
Overview
Why Study Compiler Construction
The Fundamental Principles of Compilation
1.2 Compiler Structure
May You Study in Interesting Times
1.3 Overview of Translation
Notation
1.3.1 The Front End
Checking Syntax
Intermediate Representations
Terminology
1.3.2 The Optimizer
Analysis
Transformation
1.3.3 The Back End
About ILOC
Instruction Selection
Register Allocation
Instruction Scheduling
Compiler Construction is Engineering
Interactions Among Code-Generation Components
1.4 Summary and Perspective
Chapter Notes
Exercises
Chapter 2. Scanners
2.1 Introduction
Conceptual Roadmap
Overview
2.2 Recognizing Words
2.2.1 A Formalism for Recognizers
2.2.2 Recognizing More Complex Words
Section Review
2.3 Regular Expressions
2.3.1 Formalizing the Notation
Regular Expressions in Virtual Life
2.3.2 Examples
2.3.3 Closure Properties of REs
Programming Languages Versus Natural Languages
2.4 From Regular Expression to Scanner
2.4.1 Nondeterministic Finite Automata
Equivalence of NFAs and DFAs
2.4.2 Regular Expression to NFA: Thompson's Construction
2.4.3 NFA to DFA: The Subset Construction
Representing the Precedence of Operators
From Q to D
Example
Fixed-Point Computations
Computing closure Offline
2.4.4 DFA to Minimal DFA: Hopcroft's Algorithm
Examples. Front Cover; About the Authors; Engineering a Compiler; Copyright; Dedication; About the Cover; Table of Contents; Preface; Chapter 1. Overview of Compilation; Chapter 2. Scanners; Chapter 3. Parsers; Chapter 4. Context-Sensitive Analysis; Chapter 5. Intermediate Representations; Chapter 6. The Procedure Abstraction; Chapter 7. Code Shape; Chapter 8. Introduction to Optimization; Chapter 9. Data-Flow Analysis; Chapter 10. Scalar Optimizations; Chapter 11. Instruction Selection; Chapter 12. Instruction Scheduling; Chapter 13. Register Allocation; Appendix A. ILOC; Appendix B. Data Structures