Compiler Design Principles

The course provides the student with an overview of the issues in the design and construction of translators. The course emphasizes techniques with direct application to construction of compilers; many of the same concepts find application in interpreters.

  • Automata Theory: regular expressions, finite automata, context free grammars, NFA and DFAs. Deterministic parsing: LL, LR parsers and the lex/yacc (flex/bison) like tools (Jflex, javacc, etc)
  • Semantic analysis: abstract syntax trees, symbol tables, type checking, resource allocation.
  • Virtual machines and run-time environments: stacks, heaps, objects.
  • Code generation: resources, templates, and optimizations.