Technische Universität München
Fakultät für Informatik
Prof. Dr. Helmut Seidl
Riitta Höllerer


Praktikum des Übersetzerbaus WS 2004:

Generierung von Benutzungsoberflächen


Aufgabenblatt 5

26. Mai 2004

8. Aufgabe  (Eintragen der Scheindaten)

Tragen Sie die Daten, die zum Anfertigen des Praktikumscheins erforderlich sind, in das Formular mit folgender url ein: http://wwwseidl.in.tum.de/cgi-bin/form.cgi?file=pdue-2004&title=Praktikum Generierung von Benutzungsoberflächen Sommersemester 2004

9. Aufgabe  (Erweiterung des Demo-Compilers um if- und while-Anweisung)

Erweitern Sie den Demo-Compiler so, dass er if- und while-Anweisungen erkennt und den abstrakten Syntaxbaum dafür aufbaut. Codeerzeugung für if- und while-Anweisung machen wir nächstes Mal.

Drei Arbeitsschritte sind notwendig:

  1. Ändern Sie die Scannerspezifikation   Scanner.jflex so, dass der Scanner die neuen Wortsymbole erkennt und dem Parser die notwendige Information weitergibt.

  2. Erweitern Sie die Spezifikation des abstrakten Syntaxbaumes  ast.cl um die neuen Baumteile.

  3. Erweitern Sie die Parserspezifikation Parser.cup um die Produktionen für  if_anw und   while_anw und ergänzen Sie die Produktion anw um diese neuen Alternativen für Anweisungen. Eine Anweisung kann somit ein Ausdruck, eine if-Anweisung oder eine while-Anweisung sein. Als Bedingungen realisieren Sie einfach nur true und false .
    Geben Sie auch in diesen neuen Produktionen bzw. in den Alternativen für Anweisung die notwendgen Parseraktionen an, so dass die neuen Baumteile für den abstrakten Syntaxbaum aufgebaut werden.

Testen Sie Ihren Compiler mit folgendem Beispiel:

program P{

int a, b, c
a + b * c -111

while true do a+b*222 od

if false then b+333 fi

if true
then while true  do a+b*444 od
else if false then a+b*555 fi
fi

}
Geben Sie als Lösung der Aufgabe

Der Demo-Compiler ist hier: demo.zip

10. Aufgabe  (Aufbau des abstrakten Syntaxbaumes für die EMUGEN-Eingabesprache)

In dieser Aufgabe realisieren wir den Aufbau des abstrakten Syntaxbaumes für die EMUGEN-Eingabesprache, für die wir den Scanner und Parser in der Aufgabe 7 realisiert haben.

Zwei Arbeitsschritte sind notwendig:

  1. Erstellen einer Classgen-Eingabe, aus der die Java-Klassen für die Knotentypen des abstrakten Syntaxbaumes generiert werden.

  2. Ergänzen der Parserspezifikation um Aktionen, in denen der abstrakte Syntaxbaum aufgebaut wird.

In dieser Aufgabe realisieren noch keine Code-Ausgabe für die EMUGEN-Eingabesprache. Es reicht, dass Sie den abstrakten Syntaxbaum mit Hilfe der Methode toString() ausgeben. Dafür müssen Sie den toString() - Aufruf in die main-Methode des Parsers hinzufügen. Die toString -Methoden werden von Classgen automatisch für jede generierte Klasse erzeugt.

Geben Sie als Lösung der Aufgabe

Hinweise zu Classgen sind im merkblatt3.pdf zusammengefaßt.

Abgabetermin: Mittwoch, 2. Juni 2004 9:00