Erweiterung des Mono C # -Compilers: Gibt es eine Dokumentation oder einen Präzedenzfall?

Ich bin derzeit an einigen interessanten Forschungen zu Programmiersprachen beteiligt, bei denen es bisher darum ging, den kommenden Java 7.0-Compiler mit einigen sehr leistungsfähigen, auf Programmiererproduktivität basierenden Funktionen zu erweitern. Die Arbeit sollte gleichermaßen auf verwandte Programmiersprachen wie C # anwendbar sein.

Ich suche derzeit nach Optionen für das Prototyping eines C # -Ports für die Funktionalität. Ich würde Open-Source-Optionen bevorzugen, damit die Früchte dieser Arbeit einem möglichst breiten Publikum zugänglich gemacht werden. Daher scheint der Mono C # -Compiler der naheliegendste Ausgangspunkt zu sein. Ich bin ein erfahrener C # -Entwickler, daher ist das Schreiben des Codes nicht das Problem. Es geht mir hauptsächlich darum, den Compiler auf eine wartbare und unterstützte Weise zu erweitern. In den Mono-FAQ zum Thema Verknüpfun) Es wird angegeben, dass "Mono bereits als Grundlage für das Ausprobieren neuer Ideen für die C # -Sprache verwendet wurde (es gibt drei oder vier Compiler, die vom C # -Compiler von Mono abgeleitet wurden)". Leider gibt es keine weiteren Hinweise und die Google-Suche hat bisher nichts ergeben.

Ich frage mich, ob jemand da draußen irgendwelche Informationen dazu hat. Tunmcs/gmcs/dmcs Haben Sie ein Standard-Erweiterungsmodell? Insbesondere werde ich einige interessante Transformationen am abstrakten Syntaxbaum eines Programms durchführen. Gibt es einen Standardmechanismus zum Einfügen von Funktionen in die Compilerkette zwischen der Generierung des abstrakten Syntaxbaums und der Typprüfung und der anschließenden Codegenerierung?

Bis jetzt habe ich einige Ad-hoc-Erweiterungen für den Code geschrieben (hauptsächlich im Codegenerator), aber dies scheint keine wartbare Lösung zu sein, insbesondere da ich beabsichtige, meine Erweiterungen mit dem Git-Trunk auf dem neuesten Stand zu halten von Mono so viel wie möglich. Außerdem wäre es schön, wenn ich meine Erweiterungen aktualisieren könnte, ohne den gesamten Compiler jedes Mal neu kompilieren zu müssen, wenn ich eine Änderung vornehme. Ich möchte in der Lage sein, alle meine AST-Manipulationen in eine einzige .NET-Assembly zu packen, die von @ dynamisch geladen werden kanmcs/gmcs/dmcs ohne den Core-Compiler-Code direkt hacken zu müssen.

Irgendwelche Gedanken oder Hinweise zur Erweiterung des Mono C # -Compilers wären dankbar!

UPDATES (23. Oktober 2010)

Als Antwort auf die Antworten auf meine Frage habe ich beschlossen, mit der Arbeit an einem Zweig von Mono zu beginnen, um ein einfaches Erweiterungsmodell für den Compiler zu erstellen. Es ist in einem sehr frühen Stadium, aber hier ist es bei GitHub:

http: //github.com/rcook/mono-extensibilit

Und das Haupt-Commit lautet:http: //github.com/rcook/mono-extensibility/commit/a0456c852e48f6822e6bdad7b4d12a357ade0d0

Wenn jemand Interesse an einer Mitarbeit an diesem Projekt hat, lass es mich bitte wissen!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage