【发布时间】:2012-07-31 21:24:14
【问题描述】:
我对此感到困惑有一段时间了,我环顾四周,找不到任何关于这个主题的讨论。
假设我想实现一个简单的例子,比如一个新的循环结构:do..until
写得很像 do..while
do {
//Things happen here
} until (i == 15)
这样做可以将其转换为有效的 csharp:
do {
//Things happen here
} while (!(i == 15))
这显然是一个简单的例子,但有没有办法添加这种性质的东西?理想情况下作为 Visual Studio 扩展来启用语法突出显示等。
【问题讨论】:
-
一个更简单的解决方案是不将它们添加到 C# 本身,而是在运行 C# 编译器之前创建一种 DSL 或子语言,可以嵌入并预处理/预编译到 C#(或 MSIL)中。更多的步骤,但也更强大。
-
这正是我想要做的。您是否有任何链接或书籍可以向我指出如何按照您的建议连接到构建管道?
-
您可能想查看更适合定义您自己的控件结构的其他语言。 IE。 LISP/Scheme 系列以此而闻名,并有一些 .Net 实现 (stackoverflow.com/questions/110433/…)。
-
Nemerle 是一种从 C# 派生的语言,它具有允许您在其中定义自己的语法的结构。但它不是 C# 的超级集,因为它无法在不修改的情况下编译现有的 C# 代码。
标签: c# syntactic-sugar language-construct