CSc 453 Compilers and Systems Software covers the design and
implementation of translator-oriented systems programs, especially
compilers. Topics covered include lexical analysis, top down and
bottom up parsing, syntax-directed code generation, and code
generation. In particular, we learn how compilers are constructed,
how programming languages are designed, how to compile procedural
and object-oriented languages, and how interpreters, garbage
collectors, and debuggers work.
The class page for 2009 is here.
Lecture notes can be found here.
Topics
- lexing:
The Chomsky hierarchy,
regular expressions,
DFAs,
scanner implementation.
- parsing:
Context-free grammars, BNF,
parse trees,
abstract syntax trees,
Recursive Descent parsing.
- semantic analysis:
Attribute grammars,
environments,
type-checking.
- intermediate representations:
stacks,
tuples,
trees,
intermediate-code generation from
abstract syntax trees.
- code generation:
control-flow graphs,
code generation for arithmetic expressions,
data-structure access, control-flow, and
procedure calls.
- code optimization:
survey of techniques,
peephole optimization.
- code optimization:
data-flow analysis,
common sub-expression elimination,
inlining.
- object-orientation:
compiling Java-like languages,
run-time class templates,
inheritance.
- garbage collection:
reference counting,
pointer-maps,
mark-and-sweep.
- systems software:
debuggers,
profilers.