VisualBasic.NET-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 VB-Sprachspezifikation angegebene Grammatik [1] ist nicht im EBNF-Format und weist auch zahlreiche LL(1)-Konflikte auf. Ziel dieser Bakkalaureatsarbeit ist es, die VB-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 VB-Grammatik soll so gestaltet sein, daß Coco/R daraus einen vollständigen Scanner und Parser für VB.NET erzeugen kann. Diese Teile stellen dann ein VB-Frontend dar, aus dem mittels semantischer Aktionen diverse Werkzeuge wie Pretty Printer oder Komplexitätsanalysatoren erstellt werden können. Um die VB-Grammatik zu testen, soll ein Komplexitätsanalysator implementiert werden, der Komplexitätsmaße nach der von Rechenberg beschriebenen Methode [3] berechnet.

Hinweise: Das Projekt soll in einzelnen Stufen bearbeitet werden:

  • Die Problemanalyse soll mit einem kurzen Pflichtenheft (2-4 Seiten) abgeschlossen werden.
  • An die Analyse soll sich die Implementierung anschließen.
  • Als Abschluss des Bakkalaureatsprojekts ist ein schriftlicher Bericht von 30-40 Seiten abzugeben, der zumindest die folgenden Kapitel enthalten soll: Beschreibung der Aufgabe und ihres Umfeldes (d.h. wichtige Begriffe, bestehende Lösungen, etc.), Benutzerdokumentation, Implementierungsbeschreibung, Kritische Beurteilung und Ausblick.

Betreuung: Nach der intensiveren Anfangsphase (kurze Besprechungen im Wochenabstand), die zur Absteckung des Problemfeldes und zur Klärung von Problemen dient, sollen im Zweiwochen-Rhythmus kurze Besprechungen stattfinden, um einen zügigen Fortgang des Projekts zu gewährleisten.

Programmiersprache: C#
Betreuer: Prof. Dr. H. Mössenböck / Dipl.-Ing. Markus Löberbauer
Bearbeiter: Peter Zehetner (0355200)