Java-Grammatik für Coco/R

Coco/R ist ein Compilergenerator, der eine attributierte EBNF-Grammatik in einen Scanner und einen Parser übersetzt. Die in der Java-Sprachspezifikation angegebene Grammatik [1] ist nicht im EBNF-Format und weist auch zahlreiche LL(1)-Konflikte auf. Ziel dieser Bakkalaureatsarbeit ist es, die Java-Grammatik nach EBNF zu transformieren und so viele LL(1)-Konflikte wie möglich durch Faktorisierung und Beseitigung von Linksrekursion zu eliminieren. Jene LL(1)-Konflikte, die sich nicht beseitigen lassen, sollen mittels der Konfliktlöser-Technik von Coco/R eliminiert werden [2]. Als Vorlage kann die an der Abteilung SSW erstellte C#-Grammatik verwendet werden.

Die transformierte Java-Grammatik soll so gestaltet sein, daß Coco/R daraus einen vollständigen Scanner und Parser für Java erzeugen kann. Diese Teile stellen dann ein Java-Frontend dar, aus dem mittels semantischer Aktionen diverse Werkzeuge wie Pretty Printer oder Komplexitätsanalysatoren erstellt werden können. Um die Java-Grammatik zu testen, soll ein Komplexitätsanalysator implementiert werden, der Komplexitätsmaße nach der von Rechenberg beschriebenen Methode [3] berechnet.

Die Arbeit ist in 14-tägigen Abständen mit dem Betreuer zu besprechen. Dabei ist jedesmal ein etwa halbseitiger Bericht über die Fortschritte der letzte 14 Tage abzuliefern.

Am Ende des Semesters ist eine schriftliche Bakkalaureatsarbeit von etwa 40 Seiten Umfang in gebundener Form abzuliefern. In dieser Arbeit sind die Problemstellung, der Lösungsweg und die Ergebnisse zu beschreiben. Die Note setzt sich aus der Qualität des erstellten Codes sowie aus der Vollständigkeit und Lesbarkeit der schriftlichen Arbeit zusammen.

Betreuer: Prof. Dr. H. Mössenböck

Bearbeiter: Adalbert Michelic

Matrikelnr.: 9856146

Abgabetermin:

[1] http://java.sun.com/docs/books/jls/first_edition/html/19.doc.html

[2] Mössenböck H., Wöß A., Löberbauer M.: Der Compilergenerator Coco/R, 2003

[3] Rechenberg P.: Ein neues Maß für die softwaretechnische Komplexität von Programmen. Informatik Forschung und Entwicklung (1986)1: 26-37