|
Week 1 |
overview, compiler phases, infix to postfix expression translator |
|
|
Lab: install environment, type in program on p. 55, compile and
execute. |
|
Week 2 |
regular expressions and flex, RE to NFA (Thompson’s
construction); |
|
|
Lab: lexer for C- using flex |
|
Week 3 |
symbol tables and their implementation, NFA to DFA (subset
construction), minimizing states in a DFA |
|
|
Lab: Add symbol table to lexer,
and print symbol table. |
|
Week 4 |
grammars, derivations, parse trees, ambiguity, synthesized
attributes, post-order tree walks, yacc,
non-context free languages |
|
|
Lab: Integration of existing lexer
and write parser to evaluate expressions. |
|
Week 5 |
Shift-reduce parsing overview, creation of syntax trees |
|
|
Lab: emit syntax trees for C- expressions. |
|
Week 6 |
Parsing using LR tables, LR(0) sets of items, constructing
SLR parse tables, semantic attributes |
|
|
Lab: Semantic checking |
|
Week 7 |
pp. 396-397, 463-471, 478-481: stack-based memory
organization, 3-address code, assignment |
|
|
Lab: Generate code for assignment and arithmetic operators
for TM |
|
Week 8 |
pp. 488-497: Boolean expressions and flow of control |
|
|
Lab: Generate code for if-then-else statements |
|
Week 9 |
pp. 389-396, 398-400, 404-408: activation records |
|
|
Lab: Code generator for function calls |
|
Week 10 |
pp. 585-598: Code optimization topics |