通过代码生成为c#添加关键字

本文关键字:添加 关键字 代码生成 | 更新日期: 2023-09-27 18:18:35

我有一个领域特定的语言,我想通过添加新的关键字(或一些类似关键字的语法)与c#进行交互。使用属性是不够的(我不能在方法体中使用它们),并且将其硬塞进"有效的"c#符号中,然后编译成其他东西,这将是丑陋的,并且破坏了与DSL的类比(从类似DSL的符号到c#的转换是很重要的,所以每次只写c#是不可能的)。

我已经有一种方法来解析。cs文件,并将其转换为合法的,重要的,可以编译的c#代码。

问题是,即使我可以做所有的工作,定义DSL,解析它,并把它翻译成有效的c#, Visual Studio不会让我使用它不理解的符号;它只是添加了红色的波浪,发出一个错误"cannot resolve symbol",然后经常无法正确解析后面的内容。

是否有一种方法可以强制visual studio忽略其分析中的特定字符串?我看过visual studio插件,但它看起来像,虽然我可以做语法高亮和其他东西,我不能强迫它忽略它不知道如何解析的东西(除非我错过了一些方法在扩展API中做到这一点,这当然是可能的)。

我已经浏览了Roslyn的东西,也没有立即看到在那里做这件事的方法。(同样,可能遗漏了什么,它似乎没有很好的文档。)

通过代码生成为c#添加关键字

看看PowerLanguages。艾凡:http://visualstudiogallery.msdn.microsoft.com/a512e0d0 f4f3 - 4435 bad4 - 8 d5efbb1db4a

还没有英文文档,抱歉