Erzeugung von CodeDOM-Syntaxbäumen aus C#-Quellcode

Dieses Projekt ist als Bakkalaureatsprojekt (Studienkennzahl 521) gedacht (mit zusätzlicher Erfolgsprämie!).


Im Rahmen eines Projektes [1] mit der Shared Source Implementierung der Common Language Infrastructure (CLI) (Codename Rotor) [2] wurde der Compilergenerator Coco/R [3] dahingehend erweitert, dass er nun nicht mehr nur LL(1)-Grammatiken verwenden, sondern auch Schritte zur Auflösung von LL(1)-Konflikten setzen kann.

Für diese Version von Coco/R wurde auch eine attributierte Grammatik (ATG) für die Programmiersprache C# [4] entwickelt, aus der Coco/R einen vollständigen Top-Down-Parser für C#-Programme erzeugt. Durch Einfügen zusätzlicher semantischer Aktionen in diese Vorlage können nun beliebige Analyse- bzw. Compilerwerkzeuge für C#-Quellcode erzeugt werden.

CodeDOM

CodeDOM (Code Document Object Model) [6][7][8] ist eine Technologie von Microsoft, die dazu dient, die Struktur von Quellcodeprogrammen im Speicher darzustellen. In der Klassenbibliothek des Microsoft .NET Frameworks [5] gibt es eigene Namensräume, die CodeDOM unterstützen (System.CodeDom, System.CodeDom.Compiler, siehe Online-Dokumentation).

Ziel

Das Ziel dieser Arbeit ist es, die C#-Grammatik-Vorlage so zu attributieren und mit semantischen Aktion zu versehen, dass der daraus generierte Parser aus C#-Programmen eine CodeDOM-Repräsentation erzeugt (Der Parser soll das Interface System.CodeDom.Compiler.ICodeParser implementieren). Als Testapplikation soll der CodeDOM-Baum aus dem Speicher mit bereits in der .NET-Klassenbibliothek vorhandenen Codegeneratoren als VB-Quellcode ausgegeben und in einer Datei gespeichert werden.

Außerdem soll in der schriftlichen Arbeit CodeDOM genau beschrieben und eventuell mit ähnlichen Technologien verglichen werden.

Referenzen

[1] SSCLI-Project: Compiler Generation Tools for C#
[2] .NET Rotor (SSCLI)
[3] Compiler Generator Coco/R
[4] C# Language Specification
[5] Microsoft .NET Development
[6] Steinert, A.: Bring the Power of Templates to Your .NET Applications with CodeDOM NamespaceCodeDOM
[7] Korzeniowski, B.J.: Microsoft .NET CodeDom Technology – Part 1, 2, 3.
[8] Perry, N.: A Definition of the CodeDOM Abstract Language

Betreuer: Dipl.-Ing. Albrecht Wöß
Beginn der Arbeit: 17. März 2003
Abgabe: 1. Juli 2003
Bearbeiter: Peter Niederwieser

Weil dieses Projekt eine Demoapplikation unseres SSCLI-Projektes [1] ist, können wir für die erfolgreiche und termingerechte Abwicklung auch eine Prämie auszahlen!!!