1.2. Topics

  1. Overview of compilers. The compilation process and the anatomy of a compiler.

  2. Lexical analysis. The role of the lexical analyzer. Finite state machines. Regular expressions. Lexical analysis tools and lexer generators.

  3. Context-free grammars. Writing grammars for programming languages.

  4. Parsing. Top-down predictive parsing and LL(1) grammars. Table-driven parsers. Transformations on grammars. Bottom-up parsing, SLR(1), LR(1) and LALR(1) parsers. Parser generators.

  5. Syntax-directed translation. Attribute grammars. Construction of abstract syntax trees. Translation based on abstract syntax trees.

  6. Table management. The symbol table.

  7. Direct evaluation of syntax trees by an interpreter.

  8. Additional topics might include: Target languages. Intermediate code and abstract machines. Semantic analysis. Code optimization.