是否可以在C#或VB.NET中添加关键字?

时间:2013-03-13 14:41:39

标签: c# .net vb.net visual-studio language-design

我知道它可能不值得,但仅仅出于教育目的,我想知道是否有办法将自己的关键字注入.NET语言。

例如,我认为在C#中使用C ++ asm关键字是很好的 请记住,我不是在讨论如何实现asm关键字,而是将关键字添加到C#的一般方法。

我想象的代码:

asm{
    mov ax,1
    add ax,4
}

有没有办法实现这个目标?
涵盖实施keyword{ }的答案足以满足这个问题。

4 个答案:

答案 0 :(得分:4)

目前无法做到这一点。但是,有一个名为Roslyn的开发中的Microsoft项目可以概括为“编译器即服务”。除其他外,它允许您通过API扩展或修改编译器的行为。

当Roslyn可用时,我相信这应该是(谨慎!)非常可行。

答案 1 :(得分:2)

不幸的是,这是不可能的。您无法以任何方式扩展或更改语言。

您可以以一种模糊的方式使用PostSharp来读取和解析字符串,并在编译时将它们转换为自定义代码(预处理器)。但是你不会对此感到非常满意,因为它非常容易出错,你不会为你的魔法字符串获得任何智能感知或代码完成。

答案 2 :(得分:2)

在将代码发送到C#编译器之前,您可以使用任何预先处理代码的工具。例如,您可以使用VS宏进行预处理,将您发明的给定语法映射到 编译成C#代码的内容,如果出现问题可能会生成错误。如果VS宏不够强大,那么你可以随时使用你自己的IDE来做任何你编码的文本,然后再将它发送给编译器。

编译器中没有内置支持来指定您自己的关键字/语法;你需要完全独立于编译器来处理它。

答案 3 :(得分:0)

根据MSDN关键字是预定义的,不能更改。所以你不能添加任何东西,因为你需要告诉编译器如何处理它们。就此而言,不,你不能。