Leiden University LIACS

Compilerconstructie, Fall 2011


Lecturer : Dr. Hristo Nikolov | E-Mail
Phone: +31 (0)71 – 5275775 | Office: 122

Assistants : Sven van Haastregt | E-Mail
Phone: +31 (0)71 – 5275775 | Office: 122

Teddy Zhai | E-Mail
Phone: +31 (0)71 – 5275775 | Office: 122


ECTS : 6
Level : 300
Language : English

Description

The purpose of the course is to become familiar with the functionality of the different phases in the construction of a compiler and to gain insight of how these phases are related to each other. Topics that are discussed during the lectures cover the process of the construction of a compiler, e.g., lexical analysis, syntax analysis, semantic analysis, intermediate code generation, code generation, and code optimization.
 

Organization of the course

Class lectures with a written exam. The lectures will be given as oral presentations supported by PowerPoint slides. The slides will be made available on this web page after each lecture. There will be a written exam scheduled after the course.

Programming assignment. In the programming assignment the theoretical material presented during the lectures will be applied in the construction of a simple compiler. The compiler will be constructed in 4 steps; each step is a separate programming task. All programming tasks have to be fulfilled. For each task, there will be 2 (academic) hours of Lab-session. In addition, a period of 3 weeks will be available for completing the task (except for the first one).
 

Literature

A.V. Aho, R. Sethi, en J.D. Ullman, "Compilers: Principles, Techniques, and Tools", Addison-Wesley, 1986, ISBN: 0-201-10088-6.

Note: The second edition of the book can be used as well.
 

Exams and grading

The final grade is a combination of the grades from the written exam and the programming assignment. Note that a grade for the programming assignment is given only if all 4 tasks are fulfilled.
 

Duration of the course and location

Period : 07 September 2011 – 07 December 2011
Day : Every Wednesday
Time : 11:15 – 13:00
Rooms : 403 (Lectures)
  306 (Lab sessions)

Lecture slides and programming tasks

07 September 2011 : Overview
14 September 2011 : Lexical Analysis
21 September 2011 : Syntax Analysis 1
28 September 2011 : Syntax Analysis 2

05 October 2011 : Programming Task 1
12 October 2011 : Static Type Checking + Programming Tasks 2
26 October 2011 : Intermediate Code Generation

02 November 2011 : Programming Task 3
09 November 2011 : Code Generation
16 November 2011 : Code Optimization
23 November 2011 : Programming Tasks 4 + Introduction slides
30 November 2011 : The Daedalus design flow

07 December 2011 : Lab Session