Symboltabelle für .Net-Assemblies in C#
Im Rahmen des Mono-Projekts wurden die Sourcen eines C#-Compiler öffentlich zugänglich gemacht.
Ziel dieser Bakkalaureatsarbeit ist es, die Symbollistenverwaltung in diesen Quellprogrammen zu studieren und so weit vom C#-Compiler
zu isolieren, daß man sie für eigene Compiler-Frontends verwenden kann.
In diesem Projekt sollen die Sysmbolinformationen aus .Net-Assemblies herausgezogen und in einem geeigneten Format (XML) abgelegt werden.
Folgende Aufgaben sind zu erledigen
- Studieren Sie die Quellprogramme des C#-Compilers, finden Sie diejenigen Teile, die für die Symbollistenverwaltung zuständig sind und kommentieren Sie sie nötigenfalls im Quellcode ausführlicher.
- Erstellen Sie eine kommentierte Liste aller Typen und Methoden der Symbollistenverwaltung.
- Zeichnen Sie ein oder mehrere UML-Diagramme aller beteiligten Klassen.
- Zeichnen Sie Schnappschüsse der Datenstrukturen der Symbolliste für einige typische Deklarationen (Klassen mit Oberklasse und Interfaces, Structs, Arrays, Enumerationen, Delegates, ...).
- Isolieren sie die beteiligten Klassen so weit, daß man sie für Coco unabhängig vom Rest des C#-Compilers verwenden kann.
- Eventuell kann die Symbolliste dabei vereinfacht werden.
Versuchen Sie unter anderem, Antworten auf folgende Fragen zu finden
- Wie werden Objekte und Typen gespeichert?
- Wie werden Sichtbarkeitsattribute verwaltet?
- Welche Methoden werden verwendet, um Namen einzutragen und zu suchen
- Wie wird das Überladen von Namen gelöst?
- Wie werden verschiedene Scopes (Namespaces, Klassen, Interfaces, Structs, Methoden, Enumerationen, Delegates, Blöcke) verwaltet?
- Wie werden geschachtelte Typen behandelt?
- Wie werden Informationen aus externen Assemblies importiert?
- Wie erfolgt die Suche in unterschiedlichen Scopes? Bei Methoden muß die Suche eines nicht gefundenen Namens im Klassenscope fortgesetzt werden, bei Klassen auch im Scope der Oberklasse.
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: David Lösch
|