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:
- Ändern Sie die Scannerspezifikation Scanner.jflex so, dass der Scanner die neuen Wortsymbole erkennt und dem Parser die notwendige Information weitergibt.
- Erweitern Sie die Spezifikation des abstrakten Syntaxbaumes ast.cl
um die neuen Baumteile.
- 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:
- Erstellen einer Classgen-Eingabe, aus der die Java-Klassen für die
Knotentypen des abstrakten Syntaxbaumes generiert werden.
- 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
- eine mit Code2Html erzeugte Datei,
die Ihre Eingabedateien (*.jflex, *.cup, *.cl), ein Beispiel und die Ausgabe für das Beispiel enthält.
-
Zusätzlich geben Sie noch Ihre Quelldateien und den lauffähigen Compiler ab.
Hinweise zu Classgen sind im
merkblatt3.pdf
zusammengefaßt.
Abgabetermin: Mittwoch, 2. Juni 2004 9:00