我想知道是否可以为方便起见实现一些新功能。
这是不可能的,什么时候出来?
C#5.0:编译器即服务:
http://www.matthewlefevre.com/blog/entry.php/c-40-and-c-50/368
答案 0 :(得分:11)
Anders Hejlsberg说:
这是我们正在考虑的未来版本的方向之一 C#。实际上,我认为元编程是我们更大的“编译器”的一部分 作为服务“我们正在为将来的版本工作的主题。我们 想要打开我们的编译器,使它成为你可以调用的API 编译一段代码并获取表达式树和/或IL。这个 支持一系列场景,例如应用程序 可编程性,交互式提示,用户编写的重构,以及 特定领域的语言,其中嵌入了很少的C#岛 它们。
Source
他还在其他地方(在Channel9采访中)说,他们正在将C#编译器的核心移植到托管代码,以实现此目的。
最后一个PDC提供了demo个。 C#编译器确实是托管代码。
答案 1 :(得分:5)
这真的取决于很多不同的事情。包括但不限于......
现在关于这些问题的答案是什么,我不知道。我也不相信对基本问题#1有一个明确的答案。所以整体答案是一个很大的“不知道”
答案 2 :(得分:3)
严重。没有。这将成为微软支持的噩梦。 “引导”编译器,即编译它们所编写的语言的编译器至少在70年代就已存在(并且很常见)。这与让客户改变源代码鳕鱼没有任何关系,可支持性就是整个问题。所以现在,VS-IDE加载项就像你能得到的一样接近。
答案 3 :(得分:3)
如果我正确理解你的问题,那么我认为答案是部分肯定的:在C#中构建一个C#编译器(或者实际上,在.NET中)将使得在编译过程中公开钩子非常容易,用户将会能够在语言本身内使用。
作为使用.NET编译器的.NET语言的示例,请查看Boo。由于Boo的编译器是用.NET编写的(主要是在C#和一点Boo中,确切地说),因此很容易通过编译宏和元编程等方式挂钩编译过程。
我认为当C#编译器本身是用C#编写的时候,元编程C#会变得更容易,也很不可避免。但是我怀疑微软是否会使整个编译器“用户可修改”,因为正如其他答案所述,这将意味着支持噩梦。然而,其他open source C# compilers存在,并且可能在他们的方法中更加自由。
答案 4 :(得分:2)
是的,编译器的C#版本将是“官方Microsoft C#”,您可以使用它创建“自己的C#语言”。然后你可以创建一个用你自己的“C#语言”编写的编译器来编译自己或其他程序