We will cover:
-
Lexing and parsing; LALR parser generators.
-
Abstract syntax trees; operations on trees; compiler as
sequence of phases operating on abstract syntax trees.
-
Data flow and control flow analyses; type checking.
-
Code generation; x86 assembly language.
The homework assignments will require you to implement parts
of a compiler (written in Java) for a non-trivial C-like
programming language.