Official Course Description
The course aims to teach the fundamental aspects of analyzing computer languages and mapping them into executable form. At the end of the course, the student should
- be able to define the formal syntax of computer languages,
- be able to define the meaning of computer languages through interpreters,
- know the internal structure and implementation of simple compilers
- be able to write a compiler that maps a simple programming language into the code of a virtual machine,
- know common frameworks and design patterns used in compiler construction,
- know run-time representations of important programming constructs.
Some less tangible, but nevertheless important goals are:
- Improving the understanding of programming languages,
- Understanding trade-offs between expressiveness, simplicity, and performance of programming languages,
- Experience the design and implementation of a sizable software
project where theory is essential for success.
CONTENTS
1. Overview, source languages and run-time models
2. Review of formal languages
3. Lexical analysis
4. Syntactic analysis
5. Abstract syntax
6. Semantic analysis
7. Run-time organisation
8. Code generation
9. Garbage collection