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