Compiler Construction Winter 2020

This page contains the materials for the recitations and the home assignments. The main course webpage is here.

General Information

TA: Yotam Feldman
yotamfe1 AT mail.tau.ac.il (not tauex)
Office hour: Sundays 14-15 (via Zoom). Email me in advance.

Recitations take place on Thursdays 16-17 and 17-18 via Zoom; the link appears in the course's Moodle page.

The course's forum for questions about the material or home assignments is on Moodle.

Recitations

We plan to cover the following topics (tentative - will be updated throughout the semester):

  1. MiniJava; Abstract Syntax Trees. [slides]
    Example Java program and its XML representation.
    AST XML schema. I use XMLPad for its visualization.
  2. Visitor design pattern; resolving method names. [slides]
    visitor interface; visitor for AST XML -> Java.
    ex1 announced; due 19/11/2020.
  3. Symbol tables and name resolution. [slides]
  4. LLVM. [slides]
    demos.
  5. LLVM code generation. [slides]
    demos.
    Arrays will be covered next week.
    ex2 announced; due 10/12/2020.
  6. LLVM arrays + object-oriented code generation. [slides]
    demos.
  7. Semantic analysis; type checking. [slides]
  8. Definite initialization: static analysis. [slides]
    ex3 announced; due 30/12/2020.
  9. Lexical Analysis. [slides]
    demo.
  10. Parsing & CUP. [slides]
    demo.
  11. LR parsing conflicts. [slides] (updated)
    demo (new).
    ex4 announced; due 14/1/2021.
  12. x86 code generation; activation records. [slides]
  13. Exam rehearsal. [slides]
    LR question (new).

Home Assignments

There will be 4 programming assignments (aka "compiler project").

In the project, you will develop a compiler for MiniJava, a subset of Java, that will generate LLVM IR.
See the project page.