Technische Universität München
Fakultät für Informatik
Prof. Dr. Helmut Seidl
Riitta Höllerer
Praktikum des Übersetzerbaus WS 2003/04:
Generierung von Benutzungsoberflächen
Aufgabenblatt 5
26. November 2003
11. Aufgabe (Organisatorisches)
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-2003&title=Praktikum Generierung von Benutzungsoberflächen Wintersemester 2003
12. Aufgabe (Scanner und Parser für die Formularsprache)
In dieser Aufgabe realisien wir den Scanner und Parser für die
Formularsprache von der Aufgabe 10.
Zwei Arbeitsschritte sind notwendig:
- In der Aufgabe 10 vom Aufgabenblatt 4 haben wir für die Formularsprache
einen Scanner erzeugt, der allein arbeitet und die erkannten Symbole ausdruckt.
Nun benötigen wir einen Scanner, der mit einem Parser zusammenarbeitet, d.h.
die erkannten Symbole in geeigneter Form dem Parser übergibt.
Parser, die mit CUP generiert werden, erwarten diese Information
als Objekte vom Typ Symbol. (Hier zu finden:
Symbol.java)
Ändern Sie Ihre Scannerspezifikation, so dass der Scanner Objekte vom
Typ Symbol liefert.
Hinweise zu JFlex sind im Merkblatt 1 zusammengefaßt.
- Erstellen Sie eine Parser-Spezifikation für die Formularsprache.
Ergänzen sie die CUP-Eingabe um einen Testrahmen (als Main-Methode der
generierten Parserklasse), das eine in der Kommandozeile übergebene Datei
öffnet und ihren Inhalt parst und gegebenenfalls mit einer geeigneten
Fehlermeldung abbricht.
Hinweise zu CUP sind im Merkblatt 2 zusammengefaßt.
Geben Sie als Lösung der Aufgabe
- eine mit Code2Html erzeugte Datei,
die Ihre Eingabedateien (*.jflex, *.cup), ein korrektes und
eine fehlerhaftes Beispiel und die Ausgaben für die Beispiele enthält
- ein Archiv aufg12.jar mit Ihren *.class Dateien.
Der in der Besprechung behandelte Ausdruck-Compiler ist hier:
Bsp-vomBlatt5.jar
Hinweise:
-
Sind die Quell-Dateien des Ihres Compilers
formulare.jflex
formulare.cup
und die Eingaben
memo.txt
fax.txt
im aktuellen Verzeichnis
und das CompilerConstructionKit installiert
und somit CCK_HOME besetzt, kann der Compiler
mit folgenden Kommandos erstellt und getestet
werden:
jflex formulare.jflex
cup -parser Parser formulare.cup
javac -classpath .:$CCK_HOME/lib/java-cup-10k-b2-runtime-TUM.jar *.java
java -classpath .:$CCK_HOME/lib/java-cup-10k-b2-runtime-TUM.jar Parser memo.txt
java -classpath .:$CCK_HOME/lib/java-cup-10k-b2-runtime-TUM.jar Parser fax.txt
Das Arhiv aufg12.jar erstellen Sie mit:
mkdir classes
cp *.class classes
jar -cvf aufg12.jar -C classes/ .
- Für die Erstellung und Testen des Compilers sowie das Archiv erstellen
können Sie auch das vorgegebene
ant-file:
build.xml
verwenden.
Abgabetermin: Dienstag, 2. Dezember 2003 16:00