我想要一个实用程序,我可以提供一段文本(在文本框中)并尝试解析器语法(通过编辑类似的BNF)和令牌结构,同时我可以看到解析树的外观(如果它无法使用我当前的语法解析文本,我会看到它停止的位置。
关键词是互动。我可以使用flex和bison来做到这一点,但我总是不得不重新创建我的词法分析器和解析器。
那里有这样的东西吗?我还没找到。理想情况下它应该在Linux中工作并且是免费的,如果这不是一个选项,它仍然是有意义的。
答案 0 :(得分:5)
你可以使用pyBison和朋友使用GTKSourceView
我没有看到任何东西,但如果你愿意,你可以写一个程序来做这件事。我要么将Bison的源代码移植到DSO,以便你可以加载它并通过它运行你的BNF并拉出自动机表。然后将evalutation附加到GTK-source-view文本框
- 或 -
创建一个前端(GTKSourceView似乎又好了)并将其附加到一些系统调用以写出你的flex.c和bison.c并形成一些共享对象output.so然后将其加载并卸载到应用程序中,你可以然后运行一些来源。
在开发语法时我倾向于使用 pyBison 和其他高级语言工具来提高开发速度。然后使用带有.l和.y文件的C / Flex / Bison。 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!我一定会用它。
答案 1 :(得分:4)
ANTLRWORKS(http://www.antlr.org/works/index.html)是迄今为止我见过的最好的交互式语法开发环境。它让你可视化和调试用ANTLR编写的LL(*)语法。
答案 2 :(得分:1)