Study guide for the Compiler Comprehensive Examination
Topics:
- The role of a compiler and how it is similar/different from an interpreter/assembler
- The phases of a compiler including input/output and description of each phase
- Lexical analysis (Scanning)
- Finite-State-Automata
- Regular Expressions
- Grammars (CFG, BNF, derivations, ambiguity, hierarchy, ...)
- Parsing: Top-down vs. Bottom-up and parse-trees
- Top-down Parsing
- Recursive Descent Parsers
- Table-driven Parsers
- LL (1) Grammars and Parsers
- LL (k) Parsing
- Bottom-up Parsing
- Shift-Reduce parsers
- Operator-precedence parser
- LR parsers
- Syntax-Directed translation
- Intermediate representations and Code generation
- Symbol tables, variable access, displays, lambda-lifting
- Storage management
- Semantic processing: declaration, variables, types, expressions, simple control structures
- Semantic processing: procedures
- Optimization
- Code generation
- Compiler generator tools--Lex, Yacc, .. etc.
- Dataflow analysis
- Register allocation: Sethi-Ullman
References:
- Appel. Modern Compiler Implementation in Java
- Fischer and LeBlanc (1991). Crafting a Compiler with C
- Fischer and LeBlanc (1988). Crafting a Compiler
- Aho, Sethi, and Ullman (1988) Compilers Principles, Techniques, and Tools
- Parsons (1992) Intro to Compiler Construction