---

Institut für Informatik und Praktische Mathematik
Christian-Albrechts-Universität zu Kiel

Übungen zu Implementierung objektorientierter Sprachen
Priv.-Doz. Dr. Wolfgang Goerigk

Serie 5    [PostScript]

---

Am Mittwoch, 24. Januar 2001 findet die Übung im Rechnerraum 709 im 7. Obergeschoss des Hochhauses statt, wo wir uns die Lösungen zur Serie 4 gemeinsam anschauen wollen.

---


In der Vorlesung haben wir eine (abstrakte) Syntax für Mini-Java-Programme definiert. Mit diesen Übungsaufgaben wollen wir für diese Sprache die nötigen Datenstrukturen, eine konkrete Syntax und einen Scanner und Parser bereitstellen. Dazu findet sich hier ein Archiv mit einem ausführlich dokumentierten Beispiel zur Benutzung des Java-Scanner-Generators JLex und des Parser-Generators Java_CUP.

---

 
Aufgabe 13 ( Abstrakte Syntax, Praktische Hausaufgabe 8 Pkt.)

Schreiben Sie Klassendefinitionen für die in der Vorlesung angegebene abstrakte Syntax von Mini-Java. Ergänzen Sie Ihre Klassendefinitionen um die Komponenten, die wir gemäß Vorlesung zum Durchführen der Vererbung, d.h. zum Finalisieren von Klassen benötigen.

Hinweis:  Orientieren Sie sich an den Lösungen zu den Aufgaben 7 und 8 und auch an den im kommentierten Beispiel (Main.java) angegebenen Definitionen.
 

Abgabetermin: Mittwoch, 7.2.2001
 
 

---


Aufgabe 14 ( Konkrete Syntax 1, Hausaufgabe 6 Pkt. )

Schreiben Sie eine konkrete Syntax für Mini-Java in Form einer kontextfrei-artigen Grammatik

Hinweis:  Sie müssen nicht notwendigerweise genau die Java-Syntax treffen, jedoch macht es Sinn, sich daran zu orientieren. Beachten Sie die Dokumentation zu Java_CUP, damit Sie nicht zuviel Änderungen vornehmen müssen, wenn Sie später einen Mini-Java-Parser generieren wollen.
 
 

Abgabetermin: Mittwoch, 7.2.2001
 
 

---


Aufgabe 15 (Konkrete Syntax 2, Praktische Hausaufgabe 10 Pkt. )

Generieren Sie gemäß der von Ihnen in Aufgabe 14 definierten konkreten Syntax einen Scanner und einen Parser für Mini-Java. Der Parser soll den abstrakten Syntaxbaum in Form von Instanzen der in Aufgabe 13 definierten Klassen für die abstrakte Syntax abliefern.

Hinweis:  Orientieren Sie sich an dem oben erwähnten Beispiel für arithmetische Ausdrücke. Um den Scanner zu spezifizieren, schauen Sie auch in die Dokumentation zu JLex, insbesondere hinsichtlich der Syntax für reguläre Ausdrücke, die die Token-Klassen spezifizieren. Das Generieren des abstraken Syntaxbaums geschieht in den Parser-Aktionen, die als Annotationen in {: ... :} an den einzelnen Produktionen stehen.

Abgabetermin: Mittwoch, 7.2.2001
 

---


Aufgabe 16 (Finalisieren von Klassen, Praktische Hausaufgabe 8 Pkt. )

Programmieren Sie gemäß dem in der Vorlesung angegebenen Algorithmus die Finalisierung von Klassen. Testen Sie Ihre Anwendung, indem Sie konkrete Mini-Java-Programme syntaktisch analysieren und alle in der generierten abstrakten Syntax vorkommenden Klassen finalisieren.

Hinweis:  Beachten Sie auch Ihre Lösung zu Aufgabe 4.

Abgabetermin: Mittwoch, 7.2.2001
 
 
 

---