使用Roslyn进行新的语言实现

时间:2016-01-13 20:13:36

标签: .net parsing roslyn

我正在探索如何为.NET平台实现通用/ DSL语言的方法。从我看到的,有几个工具使语言实现(解析源代码)相对容易。 反讽 Yacc ANTLR ......这些项目的问题是有些没有进化,有些生成缓慢的解析器,有些无法在.NET上运行核心CLR等总是存在一些阻碍我解决“编写自己的解析器”的障碍。

所以我想知道...... 是否可以编写自己的解析器并将其与Roslyn连接/集成?是否有任何书籍,教程或示例如何完成?

3 个答案:

答案 0 :(得分:7)

罗斯林不适合这个。

你能用Roslyn做的最好的事情是生成一个C#(或VB)语法树&在您手动解析语言后编译,让Roslyn处理类型系统&代码生成。

如果您的语言可以完全转换为C#(或VB)语法,那么这只会起作用。

答案 1 :(得分:4)

罗斯林不允许这样做。

看看这个项目:Nitra。 它正在积极发展中。

答案 2 :(得分:0)

我知道这是一个旧线程,但是最好的选择(至少在Visual Studio中是)创建一个IVsSingleFileGenerator,将您的代码转换为c#或其他Roslyn语言。