Compilers (Spring 2017)


Summary

The interaction person-machine is often performed by using programming languages. Behind each language there are translation and interpretation tools that enable the program execution. The most known examples of this type of tools are the compilers and interpreters. This course will study the structure of these tools to learn how to analyse the language, translate the statements into instructions of the target machine and optimize the code for a more efficient execution. The course will also cover language translators beyond the world of compilers. A significant part of the course will be devoted to a project designing a language translator or interpreter. The students will be allowed to propose its own project: a command interpreter to control a robot, a language to describe musical partitures, a language to visualise animations, a language to describe logic circuits, etc. The project will be carried out by teams with two persons. The project may also be combined with the project of another course if there is a suitable synergy.

Syllabus

  1. Introduction
  2. Lexical analysis
  3. Syntax analysis
  4. Syntax trees
  5. Semantic Analysis
  6. Interpreters and Virtual machines
  7. Code generation
  8. Code optimization

See the material for the Lab classes and projects.

Presentation of Lab projects.

Bibliography