任何具有测试功能的BNF IDE

Run*_* FS 11 .net language-design bnf parser-generator

我正在研究一门新语言,在编写语法时,我希望能够测试语法的完整性,冲突和类似情况.我并不是真的关心底层解析器生成器(但是.NET的一个是优选的)

所以功能列表简称为:

  • 文本编辑器构建功能
  • 语法/语义错误报告
  • 冲突报道
  • 语法测试功能(即用于在预期语法中编写代码以验证语法定义的正确性的窗口)

一个名为Irony的CodePlex项目确实有类似于我要求的东西,但不支持将语法编写为必需的BNF.

Kal*_*son 7

我建议使用ANTLR作为解析器生成器.它功能齐全,支持C#以及许多其他目标语言.

对于IDE,有一个名为ANTLR IDE的 Eclipse插件和一个名为ANTLRWorks的独立IDE ,两者都运行良好.

但请注意,ANTLR使用LL(*)算法而不是LR(k)算法.不过,它非常好,ANTLRWorks可以完成大部分必要的左分解.


Ira*_*ter 5

当"处理新语言"并试图获得正确的引用BNF时,您可能不希望将引用语法偏向任何特定的解析器生成器.为Bison(LALR(1))或ANTLR(LL*)编写测试语法的麻烦之一就是你正是这样做的.你也不想挂断"如何以实际解析的方式编写BNF规则",大概是因为你对编写语法感兴趣,而不是在解析器生成器上工作.

所以我建议使用完整的上下文免费解析器生成器.这将让您以最自然的形式以最少的努力编写语法.这可能意味着放弃"文本编辑器","编辑器测试窗口",......但是根据我的经验(检查我的堆栈溢出生物),使用无上下文解析器生成器完全淹没了那些细节.编辑保存解析只是不需要花费很多精力.

我理解Bison有一个GLR选项可以提供无上下文的解析器生成,并且是开源的,所以它可能只用于测试语法.

我们的DMS软件再造工具包是商业性的,并且还提供了一个GLR解析器,它已被用于实现大量30多种语言,包括C,C++和COBOL,包括许多方言以及更多现代语言,如Python,Ruby,PHP ,....

DMS和Bison之间的区别在于DMS旨在支持构建全语言分析器/翻译器的所有方面(Unicode lexing,具有错误报告和恢复的GLR解析,自动树构建,符号表构建,控制和数据流分析) ,转换,漂亮,...).如果你想认真评估你的"新语言",你最终需要做所有这些事情,而Bison只是迈出这条路的一小步.DMS将带您全程前进.