The theory, design and implementation of a practical compiler. Finite automata, LL and LR parsing, attribute grammars, syntax-directed translation, symbol tables and scopes, type systems and representations, abstract syntax trees, intermediate representation, basic blocks, data and control flow optimizations, assembly language generation including register and instruction selection. Students apply tools such as Flex and Bison to writing a functional compiler for a subset of a real programming language such as C.
3 credits. Prerequisites: ECE 151 and ECE 165
Course Code: ECE 466