Ich wundere mich darüber, ob man aus Bequemlichkeit eine neue Funktionalität implementieren kann.
Wird das möglich sein, wenn es draußen ist?
C # 5.0: Compiler als Service:
Anders Hejlsberg sagte:
Es ist eine der Richtungen, die wir für zukünftige Versionen von C #. Tatsächlich sehe ich Meta-Programmierung als Teil unseres größeren "Compilers" als Service-Thema, an dem wir für eine zukünftige Version arbeiten. Wir Wir möchten unseren Compiler öffnen, damit er zu einer API wird, die Sie aufrufen können kompilieren Sie ein Stück Code und erhalten Sie Expressionsbäume und / oder IL zurück. Dies ermöglicht eine ganze Reihe von Szenarien, z. B. die Anwendung Programmierbarkeit, eine interaktive Eingabeaufforderung, benutzerdefinierte Refactorings und domänenspezifische Sprachen, in die kleine Inseln von C # eingebettet sind sie.
Quelle
Er sagte auch woanders (in Kanal9 Interview), dass sie den Kern des C # -Compilers auf verwalteten Code portierten, um dies zu ermöglichen.
Es gibt eine Demo , die vom letzten PDC verfügbar ist. Der C # -Compiler ist in der Tat verwalteten Code.
Das hängt wirklich von vielen verschiedenen Dingen ab. Einschließlich, aber nicht beschränkt auch ...
Was nun die Antworten auf diese Fragen sind, ich habe keine Ahnung. Ich glaube auch nicht, dass es auf die eine oder andere Art eine Antwort auf die grundlegende Frage Nr. 1 gibt. Die Gesamtantwort ist also ein großes "Weiß nicht"
Ernsthaft. NEIN. Dies wäre ein Support-Albtraum für Microsoft. "Bootstrapping" -Compiler, dh Compiler, die die Sprache kompilieren, in der sie geschrieben sind, gibt es seit mindestens den 70ern. Das hat nichts damit zu tun, den Kunden den Quellcode ändern zu lassen, Supportfähigkeit ist das ganze Thema. Fürs Erste sind VS-IDE-Add-Ins ungefähr so nah wie möglich.
Wenn ich Ihre Frage richtig verstehe, dann denke ich, dass die Antwort ein partielles Ja ist: Der Aufbau eines C # -Compilers in C # (oder eigentlich in .NET) würde es sehr einfach machen, Hooks im Kompilierungsprozess zu entdecken, die Benutzer wären in der Lage, innerhalb der Sprache selbst zu verwenden.
Als Beispiel für eine .NET-Sprache mit einem .NET-Compiler lesen Sie Boo . Da Boo's Compiler in .NET geschrieben ist (meistens in C # und einem kleinen Boo, um genau zu sein), ist es sehr einfach, sich mit Kompilierungsmakros und Meta-Programmierung in den Kompilierungsprozess einzuklinken.
Ich stelle mir vor, dass, wenn der C # -Compiler selbst in C # geschrieben wird, die Meta-Programmierung von C # viel einfacher und ziemlich unvermeidbar wird. Ich bezweifle jedoch, dass Microsoft den gesamten Compiler "vom Benutzer modifizierbar" machen würde, da dies, wie in anderen Antworten angegeben, einen Support-Albtraum bedeuten würde. Andere quelloffene C # -Compiler existieren jedoch und könnten in ihrer Vorgehensweise liberaler sein.
Ja, die C # -Version des Compilers wäre die "offizielle Microsoft C #", und Sie könnten damit Ihre "eigene C # -Sprache" erstellen. Dann könnten Sie einen Compiler erstellen, der in Ihrer "eigenen C # -Sprache" geschrieben wurde, um sich selbst oder andere Programme zu kompilieren
Tags und Links .net c# compiler-construction