Next:
Contents
Contents
CSE 5317/4305: Design and Construction of Compilers
Leonidas Fegaras
University of Texas at Arlington, CSE
Copyright ©1999-2014 by Leonidas Fegaras
email: fegaras@cse.uta.edu
web: http://lambda.uta.edu/
Contents
1 Introduction
1.1 What is a Compiler?
1.2 What is the Challenge?
1.3 Compiler Architecture
2 Lexical Analysis
2.1 Regular Expressions (REs)
2.2 Deterministic Finite Automata (DFAs)
2.3 Converting a Regular Expression into a Deterministic Finite Automaton
2.4 Case Study: The Calculator Scanner
3 Parsing
3.1 Context-free Grammars
3.2 Predictive Parsing
3.2.1 Recursive Descent Parsing
3.2.2 Predictive Parsing Using Tables
3.3 Bottom-up Parsing
3.3.1 Bottom-up Parsing
3.3.2 Shift-Reduce Parsing Using the ACTION/GOTO Tables
3.3.3 Table Construction
3.3.4 SLR(1), LR(1), and LALR(1) Grammars
3.3.5 Practical Considerations for LALR(1) Grammars
3.4 Case Study: The Calculator Parser
4 Abstract Syntax
4.1 Building Abstract Syntax Trees in Java
4.2 Building Abstract Syntax Trees in Scala
4.3 Building Abstract Syntax Trees in C
5 Semantic Actions
6 Semantic Analysis
6.1 Symbol Tables
6.2 Types and Type Checking
6.3 Case Study: The Calculator Interpreter
7 Activation Records
7.1 Run-Time Storage Organization
7.2 Case Study: Activation Records for the MIPS Architecture
8 Intermediate Code
8.1 Translating Variables, Records, Arrays, and Strings
8.2 Control Statements
9 Basic Blocks and Traces
10 Instruction Selection
11 Liveness Analysis
12 Register Allocation
12.1 Register Allocation Using the Interference Graph
12.2 Code Generation for Trees
13 Garbage Collection
13.1 Storage Allocation
13.2 Automatic Garbage Collection
13.2.1 Mark-and-Sweep Garbage Collection
13.2.2 Copying Garbage Collection
About this document ...
2015-01-20