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 6
3. Dezember 2003
13. Aufgabe (Scanner und Parser für die Box-Sprache)
In dieser Aufgabe sind Scanner und Parser für eine einfache Layout-Sprache
vorgegeben. Sie sollen diese Sprache erweitern und die notwendigen Änderungen
an der Scanner- und Parserspezifikation vornehmen.
Die Layoutsprache ist eine einfache textuelle Sprache
zur Beschreibung von Boxen, deren Inhalt horizontal oder vertikal angeordnet
wird (HBox oder VBox). Diese Boxen bestehen aus einem Identifikator oder sind
rekursiv aus weiteren Boxen aufgebaut.
Folgende Eingabe beschreibt einen vertikalen Box, der aus drei
Komponenten besteht, nämlich aus einem Identifikator (Hallo),
aus einem horizontalen Box und einem Identifikator (danke).
Die Box-Komponeten werden mit Kommas getrennt, eine Box-Beschreibung wird mit
einem Strichpunkt abgeschlossen.
VBox
Hallo,
HBox bitte,kaufe,Boxen ; ,
danke
;
Eine Graphische Darstellung für obige Eingabe könnte folgendermaßen aussehen:
Die Scanner- und Parserspezifikation der Box-Sprache und das ensprechende
ant-file zur Compilergenerierung ist hier:
aufg13.jar
Wir werden später eine graphische Ausgabe für diese Sprache definieren. In dieser Aufgabe sollen Sie die Box-Sprache so erweitern, dass der Benutzer für die Boxenumrandung eine Farbe angeben kann.
Ändern Sie dafür die Scanner- und Parserspezifikation und erzeugen Sie einen neuen Box-Compiler.
Ergänzen Sie die obige Eingabe um die Farbenangabe und testen Sie Ihren Compiler mit dieser Eingabe.
Geben Sie als Lösung der Aufgabe:
- eine mit Code2Html erzeugte Datei,
die Ihre Eingabedateien (box.jflex, box.cup), ein korrektes und
eine fehlerhaftes Beispiel und die Ausgaben für die Beispiele enthält.
-
Zusätzlich geben Sie noch Ihre Quelldateien und das erzeugte Compiler.jar
aus dem Verzeicnis dist ab.
14. Aufgabe (Aufbau des abstrakten Syntaxbaumes für die Box-Sprache)
In dieser Aufgabe sind Scanner- und Parserspezifikation sowie die Spezifikation für des abstrakten Syntaxbaumes für die Box-Srache vorgeben. Der vorgegebene Compiler erstellt für
Box-Sprachen-Texte den entsprechenden abstrakten Syntaxbaum.
Die Quellen des Compilers
sind hier:
aufg14.jar
Ergänzen Sie die Spezifikation des Scanners, des Parsers und des abstrakten Syntaxbaumes so, dass der Benutzer für die Boxenumrandung eine Farbe angeben kann, und diese Angabe auch im abstrakten Syntaxbaum erscheint. Erzeugen Sie einen neuen Compiler aus Ihren Quellen und testen Sie den Compiler
mit geeigneten Beispielen.
Geben Sie als Lösung der Aufgabe:
- eine mit Code2Html erzeugte Datei,
die Ihre Eingabedateien (box.jflex, box.cup, box.cl) und
ein Beispiel und die Ausgabe für das Beispiele enthält.
-
Zusätzlich geben Sie noch Ihre Quelldateien und das erzeugte Compiler.jar
aus dem Verzeicnis dist ab.
15. Aufgabe (Aufbau des abstrakten Syntaxbaumes für die Formularsprache)
In dieser Aufgabe realisien wir den Aufbau des abstrakten Syntaxbaumes für die
Formularsprache von der Aufgabe 10.
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 graphische Ausgabe für die Formulare.
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 (formulare.jflex, formulare.cup, formulare.cl), ein korrektes und
eine fehlerhaftes Beispiel und die Ausgaben für die Beispiele enthält
-
Zusätzlich geben Sie noch Ihre Quelldateien und das erzeugte Compiler.jar
aus dem Verzeicnis dist ab.
Hinweise zu Classgen sind im
merkblatt3.pdf
zusammengefaßt.
Abgabetermin: Dienstag, 9. Dezember 2003 16:00