Advanced Compilers : Spring 2005

This course assumes that you have taken a prior compiler course. You should
be familiar with the following:
	Structure of a typical compiler (Front end, back end)
	Regular Expressions
	Finite Automata
	Context-Free Languages
	Push-Down Automata
	LR(k) bottom-up parsing of Context-Free Languages
In addition, you should know how to use the tools
	lex - lexical analyzer generator
	yacc - LR(1) parser generator
(or equivalents such as flex and bison).

The course will focus on source code analysis and optimization, and
the generation of intermediate and executable code.

There will be one takehome final (40%), class assignments (30%) and a term
project (30%).

Course meets: T-Th 2-3:50 PM, JB 146

(1) Compilers - Principles, Techniqus and Tools 
    Aho, Sethi and Ullman, Addison Wesley 1988
(2) Compiling with Continuations
    Appel, Cambridge 1992

References (compilers, languages, parallel computing) | pdf

Tentative schedule: W1- Aho+Ullman Ch. 7-8 : Runtime environments, intermediate representation Control flow graph | pdf
notes 1 | pdf Lambda calculus Formal Syntax and Semantics of Prgramming Languages K. Slonneger (U. Iowa) and B. L. Kurz (Louisiana Tech. U.)
Weeks 2-4 Intermediate representation and analysis Aho+Ullman 9 + notes + papers Notes on intermediate representations
Weeks 5-7 Code generation and optimization Aho+Ullman 10 + notes + papers Weeks 8-10- Selected topics.

updated 04/11/2005