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:

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:

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:

  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 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

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

Abgabetermin: Dienstag, 9. Dezember 2003 16:00