【发布时间】:2016-01-13 20:13:35
【问题描述】:
我正在探索如何为 .NET 平台实现通用/DSL 语言。据我所见,有几种工具可以使语言实现(解析源代码)相对容易。 Irony、Yacc、ANTLR……这些项目的问题是有些没有发展,有些生成缓慢的解析器,有些无法在 .NET 上运行Core CLR 等。总是有一些障碍将我推向“编写自己的解析器”的解决方案。
所以我想知道...... 是否有可能编写我自己的解析器并将其与 Roslyn 连接/集成? 是否有任何书籍、教程或示例如何做到这一点?
【问题讨论】:
-
当然,您可以编写自己的代码并使用结果调用 Roslyn 元素。您会发现您必须针对您的语言做很多工作(Rosyln 不会),并且与 Roslyn 集成可能相当于构建一个从您的语言到 Roslyn 提供的任何中间形式的翻译器(AST、MSIL、 ...)。请参阅stackoverflow.com/a/3460977/120163 了解如何进行此操作的详细讨论,尤其是关于解析后的生活