Vorlesung Syntaxbasierte Programmierwerkzeuge
und
Praktikum Übersetzerbau

Dr. Lothar Schmitz
Wintertrimester 2002

 
=> Organisatorische Hinweise   => Quellen und Links   => Zur Vorlesung   => Zum Praktikum

Worum geht es?

Die von Compilerbauern entwickelten Techniken und Werkzeuge lassen sich nutzbringend in vielen anderen Bereichen einsetzen, z.B.

  • Steuerung von Programmen durch Kommandos mit flexibler Syntax.
  • Systematische Konvertierung von Dateiformaten, u.a. Datenbankinhalte zwischen verschiedenen Systemen sowie Konversion zwischen verschiedenen Textsystemen.
  • Übersetzung von Nicht-Programmiersprachen, z.B. von TeX nach Postscript.

Neben Compiler-Compilern beruhen viele Werkzeuge aus dem Unix-Umfeld auf diesen Techniken, darunter lex und yacc (Scanner- und Parsergeneratoren), grep (Informationssuche), sed (einfacher, programmierbarer Editor), awk, perl, python (Textmanipulationssprachen) sowie der bekannte emacs-Editor.

Weitere Inhalte der Vorlesung sind:

  • Wiederholung und Vertiefung der Grundlagen aus dem Bereich "Formale Sprachen".
  • "Grammar Engineering": Wie geht man beim Aufstellen von Syntax- beschreibungen und -transformationen systematisch vor?
  • Abarbeitungsmechanismen: Generierung von Analysatoren und Attributauswertern. Leistungsumfang und Unterschiede zwischen den angebotenen Werkzeugen.
  • Beispiel Dokumentenbearbeitung: Ein Werkzeugkasten zur Bearbeitung von LaTeX-Dokumenten.

In der in die Vorlesung integrierten Übungszeit wird Gelegenheit gegeben, die vorgestellten Techniken gleich zu erproben und zu vertiefen.
Die Vorlesung beginnt am 7. Januar 2002.

 


Im Praktikum soll mit konventionellen Techniken ein Compiler entwickelt werden, der eine Teilsprache von Ada (vgl. Einführung in die Informatik IIIb) nach MI überträgt. Der Compiler selbst wird auch in Ada abgefasst.
Da für das Praktikum Grundlagen aus der Vorlesung nützlich sind, findet in der ersten Woche anstelle des Praktikums eine Vorlesung statt, in der der visuelle Compiler-Compiler SIC und die Programmiersprache Smalltalk kurz vorgestellt werden.
Das Praktikum beginnt am 18. Januar 2002.


Organisatorische Hinweise:

Zeiten und Orte:

  • Die Vorlesung findet montags ab 8.30 Uhr im Geb 33 / HS 1415 statt,
    die Übung dienstags ab 18.00 Uhr im Geb 33 / HS 0101,
    (Ausweichhörsäle 0131 bzw 1101, wenn in 0101 wieder Ringvorlesung abgehalten wird)
    das Praktikum freitags ab 12.30 Uhr im "Electronic Classroom" der Fakultät.

 


Zum Scheinerwerb dient bei der Vorlesung eine ca. einstündige Klausur (voraussichtlich in der Übungsstunde am 19. März 2002).

Zum Scheinerwerb im Praktikum sind Compilerteile zu entwickeln, vorzuführen und geeignet zu dokumentieren. Die Ergebnisse werden auf dieser Seite eingelinkt. Zum "Lieferumfang" gehören:

  • die Aufgabenbeschreibung,
  • eine kurze technische Beschreibung
  • eine noch kürzere Beschreibung der Handhabung
  • ein paar Anwendungsbeispiele (mit Ausdruck)
  • Programmtext und kompilierte Fassung in einem zip-File

 



Quellen und Links:

 
 
Hier gibt es VisualWorks non-commercial zum kostenlosen Download (nur Registrierung erforderlich)
 
Dazu die SIC-Pakete und -Beispiele in einem zip-File
 
Informationen zu Smalltalk vom Smalltalk Industry Council
 
Warum überhaupt Smalltalk?
 
Viele nützliche OO-Links
 
GRASP, der etwas andere Programmier-Editor mit Graphischer Repräsentation von Algorithmen, Strukturen und Prozessen.
Gleichzeitig sind einige Compiler (unter anderen auch GNAT) integriert.
 
... und der passende Ada-Compiler GNAT

Die Terminplanung zur Vorlesung mit den vorgesehenen Themen entnehmen Sie bitte der folgenden Terminliste.

Vorlesungsthemen:






  1. Motivation und Einführung mit Vorführung des Demonstrations-Compiler-Compilers SIC (7./8./11. Januar)
  2. "Grammar Engineering und Recursive-Descent-Analyse (14./15. Januar)
  3. "Attribute Engineering" und Verfahren von Jourdan (21./22. Januar)
  4. Grundlagen der lexikalischen Analyse (28./29. Januar)
  5. Grundlagen der syntaktischen Analyse, speziell das LR-Verfahren (4./5. Februar)
  6. Weitere Syntaxanalyseverfahren: LL und Earley (18./19. Februar)
  7. Attributierte Grammatiken I: Theorie, Zyklenfreiheit, einfache Auswerter (25./26. Februar)
  8. Attributierte Grammatiken II: OAG, inkrementelle Auswerter (4./5. März)
  9. Beispiel Dokumentenbearbeitung: LaTeX nach Postscript (11./12. März)
  10. Klausur (19. März)
  11. Klausurbesprechung (26. März)

Die vorläufige (!) Terminplanung zum Praktikum und die jeweils vorgesehenen Themen entnehmen Sie bitte der folgenden Terminliste.

Praktikumsthemen:



    1. Einarbeitung in vorhandenes Material (18. Januar)

 

    1. Syntax und Ausdrücke => Hans-Peter Morbach (25. Januar)
      [Aufgabenbeschreibung]
      [MiniAda-Grammatik im SIC-Format]
      [Beschreibung der Grammatik]
      [Beschreibung zum Analysator]
      [Beschreibung zum Auswerter]
    2. Scanner, Parsergenerator modifizieren, Anweisungen => Daniel Volk (1. Februar)
      [Aufgabenbeschreibung]
      [Vortragsfolien]
      Technische Beschreibungen: [modifizierter Parsergenerator][Scanner zu Mini-Ada][Anweisungen auswerten]
      [Beschreibung der Handhabung]
      [Anwendungsbeispiele]
      [Alles von Morbach und Volk gepackt]
    3. Symboltabelle, Typprüfung, Unterprogramme => Thomas Triebsees (8. Februar)
      [Aufgabenbeschreibung]
      [Technische Beschreibung der Symboltabelle]
      [Beschreibung der Handhabung der Symboltabelle]
      Anwendungsbeispiele [kommt]
      [Alles von Triebsees gepackt]

 

    1. Syntax; Access- und Record-Typen => Dan Leisner und Ralf Slopianka (15. Februar)
      Aufgabenbeschreibung [kommt]
      Technische Beschreibung [kommt]
      Beschreibung der Handhabung [kommt]
      Anwendungsbeispiele [kommt]
      Alles gepackt [Alles von Leisner und Slopianka gepackt]
    2. Reihungen und Hornerzugriff => Robert Koch und Patrick Roiss (22. Februar)
      Aufgabenbeschreibung [kommt]
      Technische Beschreibung [kommt]
      Beschreibung der Handhabung [kommt]
      Anwendungsbeispiele [kommt]
      Alles gepackt [kommt]
    3. Lineare Adreßfortschaltung => Alexander Koenen (1. März)
      Aufgabenbeschreibung [kommt]
      Technische Beschreibung [kommt]
      Beschreibung der Handhabung [kommt]
      Anwendungsbeispiele [kommt]
      Alles gepackt [Alles von Koch, Koenen und Roiss gepackt]
    4. Volldynamische Speicherverwaltung => Volker Flohr und Matthias Frank (8./15. März)
      Aufgabenbeschreibung [kommt]
      Technische Beschreibung [kommt]
      Beschreibung der Handhabung [kommt]
      Anwendungsbeispiele [kommt]
      Alles gepackt [Alles von Flohr und Frank gepackt]

 

  1. Ergebnisse integrieren, dokumentieren und präsentieren => alle gemeinsam (18./22./25. März)
    Aufgabenbeschreibung [kommt]
    Technische Beschreibung [kommt]
    Beschreibung der Handhabung [kommt]
    Anwendungsbeispiele [kommt]
    Alles gepackt [kommt]
email an Teilnehmer
email an Lothar Schmitz

Zuletzt geändert am 26.07.2002