使用C#选择解析器生成器来构建自定义语言的解释器?

时间:2012-11-02 14:43:51

标签: c# parsing compiler-construction programming-languages interpreter

这是我第一次真正尝试实现域特定语言。

我知道语言语法和抽象语法树的基础知识,但是之前我没有弄脏它们。

我想构建一个小语言,简单的变量/数组和条件语句。我想通过我用C#构建的解释器来解释和执行用户输入的代码。在精神上与PHP相似的东西更简单。

我搜索了一下,我感到困惑。

我发现具有良好C#支持的最佳解析器生成器是Gold和Irony。我也发现了ANTLR,但我看到太多人抱怨C#suppots的问题。此外,其中三个似乎缺乏良好的文档。

我主要担心的是开始使用其中一个,然后发现它不能用于任务,要么是因为缺乏良好的C#支持,要么是良好的文档或其他东西。我想要一些我可以“自信地”开始工作的东西,让我自己在项目中开始。

有没有人可以帮我挑选能够很好地完成工作的东西并保证与C#一起使用?

2 个答案:

答案 0 :(得分:2)

我建议你使用ANTLR。我使用它编写了自己的编译器(用于MSIL)。 ANTLR有C#支持,我没有发现任何问题。

U也可以查看my source code(我不能使用样本,但它有ANTLT .g文件)。

答案 1 :(得分:2)

我建议你试试TinyPG。它编译为C#,你可以直接在语法中提供C#。