4

我想要一个实用程序,我可以提供一段文本(在文本框中)并尝试解析器语法(通过编辑类似的 BNF)和令牌结构,同时我可以看到解析树的外观(如果它是无法使用我当前的语法解析文本,我会看到它在哪里停止)。

关键词是交互性。例如,我可以使用 flex 和 bison 来做到这一点,但我必须不断地重新创建我的词法分析器和解析器。

外面有这样的东西吗?我还没有找到。理想情况下,它应该在 Linux 中工作并且是免费的,如果这不是一个选项,它仍然很有趣。

4

3 回答 3

5

您可以使用 GTKSourceView 与 pyBison 和朋友一起敲打它

我没有看到任何东西,但如果你愿意,你可以编写一个程序来做到这一点。我会将 Bison 的源代码移植到 DSO,这样您就可以加载它并通过它运行 BNF 并拉出自动机表。然后将评估附加到 GTK-source-view 文本框

- 或者 -

创建一个前端(GTKSourceView 似乎又不错了)并将其附加到一些系统调用以写出您的 flex.c 和 bison.c 并形成一些共享对象 output.so,然后将其加载和卸载到应用程序中,然后您可以运行一些来源通过。

我在开发语法时倾向于使用pyBison和其他高级语言工具来提高开发速度。然后将 C/Flex/Bison 与 .l 和 .y 文件一起使用。GTK 应该很容易在 Python 中使用,无需 DSO 和 dlopen() fandango 即可实现上述目标。

非常类似于 Read-Eval-Print 循环,其中 BNF 和测试语法与一些后端 D/NFA 生成器处于循环中

一段时间以后

我发现这回答了另一个问题:

http://jscc.jmksf.com/jscc_on_web.png

它是一个类似 JavaScript Yacc/Bison 的工具,用于在 JavaScript 中生成解析器。您可以轻松地使用它来调试您的 C 语法,因为它们都是 BNF!我一定会使用它。

于 2009-05-16T10:32:52.340 回答
4

ANTLRWORKS ( http://www.antlr.org/works/index.html ) 是迄今为止我见过的最好的交互式语法开发环境。它让您可视化和调试用 ANTLR 编写的 LL(*) 语法。

于 2009-10-15T04:17:04.050 回答
1

看看VisualBNF

于 2010-01-13T12:34:25.367 回答