我正在探索如何为.NET平台实现通用/DSL语言。从我所看到的,有几种工具使语言实现(解析源代码)相对容易。 讽刺 , Yacc公司 , 安特尔 这些项目的问题是,有些项目没有发展,有些项目生成的解析器速度慢,有些项目无法在.NETCoreCLR上运行等等。
所以我想知道 是否可以编写自己的解析器并将其与Roslyn连接/集成? 是否有任何书籍、教程或示例可以完成?
罗斯林不适合这样。
使用Roslyn所能做的最好的事情就是生成一个C#(或VB)SyntaxTree&手工解析语言后进行编译,让Roslyn负责类型系统&代码生成。
只有当您的语言可以完全转换为C#(或VB)语法时,这才有效。
罗斯林不允许这样做。
看看这个项目: Nitra . 它正在积极开发中。
我知道这是一个旧线程,但你最好的选择(至少在visual studio中)是创建一个IVsSingleFileGenerator,将代码转换为c#或其他Roslyn语言。