This course follows the strategy of applying theory to practice:
Ad-hoc implementations of compiler tasks often contain subtle errors.
The erroneous behavior is usually triggered by unforeseen combinations of
This problem was recognized early on, and a large body of theory has been
developed for (or adapted to) design of correct compilation algorithms.
- applying theory to practical problems
- theoretical model strengths and weaknesses
- ability to appropriately select and apply theory to real problems
- formal languages
- attribute grammars
- tree automata
- hand simulation of analysis algorithms
- use tools to generate analysis modules
- apply generated modules to real problems
- scanner and parser generators
- attribute grammar analyzer
- tree parser generator
Theory derives its power from its ability to construct a consistent model
of a domain, and to make guarantees about the correctness of operations in
Unfortunately, languages used by humans are often not particularly
We usually introduce inconsistencies for brevity,
to avoid having to specify ``obvious'' things, in order
to make problem statements easier for us to understand.
The combination of a need for theory and a need to escape from it
makes compiler construction an excellent medium to explore
the uses and limitations of theory in Computer Science.
In a curriculum that emphasizes theory, it provides a way to both validate
the material in other courses and show how adjustments must be made in
Waite, W. M. and Gerhard Goos.
Springer-Verlag, New York, 1984.