Institut für Programmiermethodik
und Compilerbau
- 1:
Lehre.- 1.1:
Sommersemester 2012. - 1.2:
Wintersemester 2011/2012.- 1.2.1:
Constraint-Programmierung. - 1.2.2:
Embedded Softwareengineering im Bereich Automotive. - 1.2.3:
Funktionale Programmierung. - 1.2.4:
Grundlagen des Übersetzerbaus. - 1.2.5:
Management von Softwareprojekten. - 1.2.6:
Softwaretechnik I. - 1.2.7:
Algebraische Strukturen als Grundlage der Informatik. - 1.2.8:
Formale Spezifikationssprachen und ihre Semantik. - 1.2.9:
Techniken der formalen Programmentwicklung an Hand von Beispielen. - 1.2.10:
Fortgeschrittene Anwendungstechniken für typische Informatiksysteme. - 1.2.11:
Logikbasierte Programmiersprachen. - 1.2.12:
Constraint-Programmierung Praxis. - 1.2.13:
Entwicklung konkreter Anwendungen nach ausgewählten Prinzipien des Software Engineering. - 1.2.14:
Experimentelles Softwareengineering. - 1.2.15:
Softwaregrundprojekt (Sopra).
- 1.2.1:
- 1.3:
Regelmäßig angebotene Lehrveranstaltungen. - 1.4:
Frühere Lehrveranstaltungen. - 1.5:
Themen für Diplomarbeiten, Masterarbeiten und Individualpraktika.
- 1.1:
- 2:
Forschung. - 3:
Mitarbeiter. - 4:
Kontakt.
Flex
Für die lexikalische Analyse verwenden wir den Scanner-Generator Flex. Die Dokumentation ist auch im Linux-Pool mit info flex einsehbar. Flex ist eine weitgehend abwärtskompatible Erweiterung des klassischen Generators Lex.
Einige Beispiele von Flex-Programmen sind verfügbar. Eine Vorlage für ein Flex-Programm erkennt Identifier. Ein weiteres Programm simuliert die Funktionalität von wc, das Zeilen, Wörter und Zeichen der Eingabe zählt. Das Verzeichnis enthält auch Vorschläge für die Aufgaben vom entsprechenden Übungsblatt.
Das Erzeugen eines Scanners aus einer Spezifikation scanner.l erfolgt in zwei Schritten. Mit flex scanner.l wird ein C-Programm lex.yy.c erzeugt, das den Scanner implementiert. Mit gcc lex.yy.c wird eine ausführbare Datei a.out erzeugt. Sie enthält den Scanner, der von der Standard-Eingabe liest.
Recursive-Descent Parser
Ein detailliert ausgeführtes Beispiel eines Recursive-Descent RLL(1)-Parsers mit Fehlerbehandlung ist verfügbar.
Das Verzeichnis enthält Vorschläge für die Aufgaben vom entsprechenden Übungsblatt. Unter anderem ist ein Recursive-Descent Parser in der Programmiersprache C++ zu der in Aufgabe 21 gegebenen RLL(1)-Grammatik einsehbar. Das Programm erwartet das zu erkennende Wort ohne terminierendes # oder Zeilenende-Zeichen an der Standard-Eingabe. Solche Eingaben können beispielsweise mit echo -n erzeugt werden.
