Compilers (Spring 2022)
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 compiler from a simple language to the assembly language
of a virtual machine.
Syllabus
- Introduction
- Lexical analysis
- Syntax analysis
- Syntax trees
- Semantic Analysis
- Code generation
- Code optimization
On-line lectures
For on-line lectures join with Google Meet (link only available for UPC students).
Lab
Bibliography
-
Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman,
Compilers: Principles, Techniques, & Tools,
Second edition, Addison-Wesley, 2007
-
Michael L. Scott,
Programming Language Pragmatics,
Second edition, Morgan Kaufmann, 2006.