This course uses compilers as examples to expose students to modern software development techniques. Tentative topics include: compiler organization; lexical analysis; top-down and bottom-up parsing; symbol tables; semantic analysis; code generation; local and global optimization; register allocation; automatic memory management.
Lernziel
Learn principles of compiler design; gain practical experience designing and implementing a medium-scale software system.
Inhalt
This course uses compilers as example to expose modern software development techniques. The course introduces the students to the fundamentals of compiler construction. Students will implement a simple yet complete compiler for an object-oriented programming language for a realistic target machine. Students will learn the use of appropriate tools. Throughout the course, students learn to apply their knowledge of theory (automata, grammars, stack machines, program transformation) and well-known programming techniques (module definitions, design patterns, frameworks, software reuse) in a software project.
A tentative list of topics: compiler organization; lexical analysis; top-down and bottom-up parsing; symbol tables; semantic analysis; code generation; local and global optimization; register allocation; automatic memory management; optional advanced topics if/when time permits.
Literatur
Aho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition)
Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997
Voraussetzungen / Besonderes
Prerequisites: Prior exposure to modern techniques for program construction, knowledge of at least one processor architecture at the assembly language level.
Leistungskontrolle
Information zur Leistungskontrolle (gültig bis die Lerneinheit neu gelesen wird)