Modern Compiler Design
David Galles, University of San Francisco

ISBN-10: 1576761053
ISBN-13: 9781576761052

Publisher: Addison-Wesley
Copyright: 2005
Format: Paper
Published: 08/15/2004

Suggested retail price: $95.00
Buy from myPearsonStore



A practical overview of all important theoretical topics mixed with many examples. This book includes an integrated Java project that leads to a rich understanding of the issues involved in compiler design.

 

Student support files for Galles can be found here: http://www.aw-bc.com/cssupport/Galles.html.

 

A list of Errata and more project suggestions can be found here: http://www.cs.usfca.edu/galles/compilerdesign/.

1 Introduction
   Why Study Compilers?
   Basic Compiler Design
   Phases of Compilation

2 Lexical Analysis
   File Processing and Tokens
   Deterministic Finite Automata
   Regular Expressions
   JavaCC -- A Lexical Analyzer and Parser Generator
   Creating a Lexical Analyzer for simpleJav using JavaCC
   Lex - A Lexical Analyzer Generator
   Exercises 

3 Context-Free Grammars

   Context-Free Grammar Defintion
   Derivations
   CFG Shorthand
   Parse Trees
   Ambiguous Grammars
   Extended Bakus Naur Form
   Exercisees

4 Top-Down Parsing

   Recursive Descent Parsers
   Grammars That Are Not LL(1)
   LL(k) Parsers
   JavaCC -- A LL(k) Parser Generator
   Writing a Parser for simpleJava Using JavaCC
   Exercises

5 Bottom-up Parsing
   Rightmost Parsers
   Creating LR Parse Tables
   Yacc - Yet ANother Compiler Compiler
   Exercises

6 Abstract Syntax Trees

   Abstract Syntax Tree Definition
   Implementing Trees in Java
   JavaCC Actions
   Creating an Abstract Syntax Tree for simpleJava using JavaCC
   Working with Abstract Syntax Trees in C
   Exercises

7 Semantic Analysis
   Semantic Errors
   Environments
   Type Checking
   Semantic Analyzer Overview
   Implementing a Semantic Analyzer for simpleJava in Java
   Semantic Analyzer Project in Java
   Implementing a Semantic Analyzer for simpleJava in C
   Exercises

8 Creating Assembly Trees

   Implementing Variables
   Abstract Assembly
   Creating Abstract Assembly
   Creating Abstract Assembly Trees in Java
   Building Assembly Trees for simpleJava in Java
   Creating Abstract Assembly Trees in C
   Exercises

9 Code Genearation
   Target Assembly Code
   Simple Tiling
   More Sophisticated Tiling
   Extended Example
   Code Generation in Java
   Code Generation in C
   Code Generation For x86
   Exercises

10 Memory Management
      Static Storage
      Heap-Based Storage
      Programmer-Controlled Deallocation
      Automatic Deallocation -- Garbage Collection
     Creating a Programmer-Controlled Memory Manager For simpleJava
     Creating a Garbage Collector for simpleJava
     Exercises

11Object-Oriented Extensions

     Methods in Classes
     Inheritance
     Access Control
     Function and Method Overloading
     Recursive Classes
     Virtual Methods

Appedix A  simpleJava Reference Manual
   Tokens
   Comments
   Program Structure
   Expressions
   Statements
   Built-in Functions
   Sample simpleJava Programs

Appendix B How Lexical Analyzer Generators Work
   Non-Deterministic Finite Automata
   Converting a Regular Expression into a NFA
   Converting a NFA Into a DFA
   State Minimization of Deterministic Finte Automata
   Multiple Types of Final States
   Converting a DFA unto Code
   Extended Example
   Exercises

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students, contact your Pearson Higher Education representative for pricing and ordering information.

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.


Copyright ©2009 Pearson Education. All rights reserved. Legal Notice | Privacy Policy | Permissions