Course Schedule and Lecture Notes

Lectures come in units which may or may not begin or end on a class boundary. The schedule is tentative and may subject to change without prior notice.

Topic 1: Introduction

Introduction to compiler construction, why compilers matter.

Slides

Topic 2: Lexical Analysis

regular expressions, automata, DFA, NFA, RE-NFA-DFA conversion, DFA minimization, scanner generation.

Slides

Scribbler overview

ANTLR lexer construction

Topic 3: Parsing and Parser Design

Context-free Grammar, derivation, grammar ambiguity, left-recursion, left-factoring, first, follow set, recursive descent parsing, LL(1) and LR(1) Parsing, parser generation.

Parsing introduction slides

LL(1) and LR(1) Parsing slides

Topic 4: Semantics Analysis

Context-Sensitive Analysis, Attribute Grammar, symbol table, syntax-directed analysis

Slides

Topic 5: Intermediate Representation, Procedure Abstraction

Slides

Topic 6: Code Shape and LIR Code Generation

Slides

ChirpIL Slides

Topic 7: Scribbler code generation from ChirpIL

Slides

Sample code

Topic 8: Compiler Analysis and Optimization

Remaining schedule

Slides

Topic 9: Register allocation

Slides

Final Week Schedule

Topic 10: Instruction Selection and Instruction scheduling

Slides

Topic 11: Summary

Slides

Acknowledgements

The syllabus and teaching materials used in this course are based on Prof. Keith Cooper, Prof. Ken Kennedy and Dr. Linda Torczon’s teaching materials at Rice University. All rights reserved.