252-0210-00L Compiler Design
|Periodizität||jährlich wiederkehrende Veranstaltung|
|Kurzbeschreibung||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.