logo of the SSW institute ;)
Computer Science
System Software

Home

General
Staff
Contact
Partners
Alumni

Research
Areas
Projects
Papers
Books
Reports
Awards

Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad

Misc
Talks
Library
Gallery
Links
Search

Webmaster


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