Symbollistenverwaltung in Java

Sun Microsystems stellt im Rahmen des Sun Community Source Licence Programm die Sourcen des Java-Compiler zur Verfügung (http://wwws.sun.com/software/java2/download.html). Ziel dieser Bakkalaureatsarbeit ist es, die Symbollistenverwaltung in diesen Quellprogrammen zu studieren und so weit vom Java-Compiler zu isolieren, daß man sie für eigene Compiler-Frontends verwenden kann, die mit Coco/R implementiert sind.

 

Im einzelnen sind folgende Aufgaben zu erledigen:

§    Studieren Sie die Quellprogramme des Java-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, ...).

§    Isolieren sie die beteiligten Klassen so weit, daß man sie für Coco unabhängig vom Rest des Java-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 (Pakete, Klassen, Interfaces, Methoden, Blöcke) verwaltet?

§    Wie werden geschachtelte Typen behandelt?

§    Wie werden Informationen aus *.class-Dateien 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.

 

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:

Matrikelnr.:

Abgabetermin: