News

      • 13.10.2009: written exam scheduled for Wed February 3, 10:00-11:30 (in place of exercise class)
      • 30.09.2009: start of lecture moved to Oct. 15 (from Oct. 13)
      • 11.09.2009: page set up


      Schedule

      Type

      Day

      Time

      Place

      Start

      Lecturer

      V3/4

      Tue

      14:00-15:30

      AH 2

      Oct 20

      Thu

      13:30-15:00

      AH 1

      Oct 15

      Ü2

      Wed

      10:00-11:30

      AH 2

      Oct 28


      Contents

      The goal of this course is to introduce foundational methods and techniques for implementing compilers for high-level (procedural) programming languages. The following issues will be discussed:

      • Lexical analysis of programs (Scanner)
      • Syntactic analysis of programs (Parser)
      • Semantic analysis of programs
      • Code generation
      • Tools for compiler construction (lex, yacc)


      Prerequisites

      Basic knowledge of the relevant undergraduate courses of the first two years (Vordiplom/Bachelor) is required:

      • Programming (essential concepts of imperative and object-oriented programming languages and elementary programming techniques)
      • Data structures and algorithms (lists, stacks, queues, trees and associated algorithms)
      • Formal languages and automata theory (regular and context-free languages, finite and pushdown automata)


      Slides

      (also have a look at http://videoag.fsmpi.rwth-aachen.de/ for live video recordings)

       

      Lecture

      Date

      BSc/MSc/Diplom

      Subject

      Slides

      Handout

      1

      Thu Oct 15

      B/M/D

      Introduction

      2

      Tue Oct 20

      B/M/D

      Lexical Analysis I

      (Simple Matching Problem)

      3

      Thu Oct 22

      B/M/D

      Lexical Analysis II

      (First-Longest-Match Analysis)

      4

      Tue Oct 27

      B/M/D

      Lexical Analysis III

      (Practical Aspects)

      5

      Thu Oct 29

      B/M/D

      Syntactic Analysis I

      (Introduction)

      6

      Tue Nov 3

      B/M/D

      Syntactic Anlysis II

      (LL(k) Grammars)

      7

      Thu Nov 5

      B/M/D

      Syntactic Analysis III

      (LL(1) Grammars)

      8

      Tue Nov 10

      B/M/D

      Syntactic Analysis IV

      (LL(1) Parsing)

      9

      Thu Nov 12

      B/M/D

      Syntactic Analysis V

      (LR(k) Grammars)

      10

      Tue Nov 17

      B/M/D

      Syntactic Analysis VI

      (LR(0) Parsing)

      11

      Thu Nov 19

      B/M/D

      Syntactic Analysis VII

      ([S]LR(1) Parsing)

      12

      Tue Nov 24

      13

      Thu Nov 26

      14

      Tue Dec 1

      15

      Thu Dec 3

      16

      Tue Dec 8

      17

      Thu Dec 10

      18

      Tue Dec 15

      19

      Thu Dec 17

      20

      Thu Jan 7

      21

      Tue Jan 12

      22

      Thu Jan 14

      23

      Tue Jan 19

      24

      Thu Jan 21

      25

      Tue Jan 26

      26

      Thu Jan 28

      27

      Tue Feb 2


      Exercise sheets

      (to follow)

      • Exercise 1
      • Exercise 2
      • Exercise 3
      • Exercise 4
      • Exercise 5

      See www.infostudium.de for a discussion forum for computer science students of the RWTH.

       

       


      Further information

      • The course will be entirely given in German. The slides and other course material will be in English. There are no lecture notes (yet); the course material will consist of slides.
      • The form of the exam (oral/written) will be announce in the beginning of the course.


      Additional background literature

      • A. Aho, M.S. Lam, R. Sethi, J.D. Ullman: Compilers – Principles, Techniques, and Tools; 2nd ed. Addison-Wesley, 2007.

      • A.W. Appel, J. Palsberg: Modern Compiler Implementation in Java. Cambridge University Press, 2002.

      • D. Grune, H.E. Bal, C.J.H. Jacobs, K.G. Langendoen: Modern Compiler Design. Wiley & Sons, 2000.

      • R. Wilhelm, D. Maurer: Übersetzerbau, 2. Auflage. Springer, 1997.