使用Roslyn进行新的语言实现

use*_*611 8 .net parsing roslyn

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

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

SLa*_*aks 7

罗斯林不是这个意思.

Roslyn能够做的最好的事情就是在手工解析语言后生成C#(或VB)语法树和编译,让Roslyn处理类型系统和代码.

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


Mem*_*zer 3

罗斯林不允许这样做。

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

  • “今天”似乎不那么活跃;最近的更新是在两年前做出此回复时。 (4认同)
  • 只是一些背景:Roslyn 有意无意成为构建编译器的通用框架。虽然那会很酷,但我们还必须实际上交付一些东西。:-) (2认同)