寻找一个交互式工具来创建无上下文语法分析器的语法。

4
我需要一个实用工具,可以在文本框中输入一段文本,并通过编辑BNF或类似格式的令牌结构来实验解析语法,同时能够查看解析树的结果。如果当前语法无法解析该文本,则可以看到其停留的位置。
关键词是“交互性”。例如,我可以使用flex和bison,但我需要不断重建我的词法分析器和解析器。
是否有此类工具可用?我没有找到任何相关的信息。理想情况下,它应该适用于Linux,并且是免费的,如果不能满足这些条件也仍然很有价值。

这是一个对我有用的工具。如果你最终采用我的答案,我可以给你我的电子邮件地址,我们可以合作。这对于快速语法测试非常有帮助。 - Aiden Bell
我找到了这个图片:http://jscc.jmksf.com/jscc_on_web.png 并将其附加在答案中。 - Aiden Bell
3个回答

5

你可以使用pyBison和GTKSourceView来编写它

如果您想要的话,您可以编写一个程序来完成这个任务。我建议将Bison源代码移植到DSO中,以便您可以加载它并通过其中运行您的BNF文件,并提取出自动机表。然后将其连接到GTK-source-view文本框上。

-- 或者 --

创建一个前端(GTKSourceView似乎再次很好),并将其附加到一些系统调用以编写flex.c和bison.c并形成一些共享对象output.so,然后将其加载和卸载到应用程序中,您可以通过其中运行一些源代码。

在开发语法时,我倾向于使用pyBison和其他高级语言工具来提高开发速度。然后稍后使用C / Flex / Bison和我的.l和.y文件。在Python中使用GTK应该非常容易实现上述操作,而无需使用DSO和dlopen()。

与Read-Eval-Print循环非常相似,其中BNF和测试语法在循环中与某些后端D / NFA生成器一起使用

一段时间后

我在回答另一个问题时找到了这个:

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

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


你好!抱歉现在才回复你。这只是我的业余爱好,工作上的事情比较忙。我不认为我有时间参与这样的项目,我也可能缺乏知识,因为我只尝试过一点Python,而且从来没有使用过GTK做过任何事情。但这是一个很好的想法,我希望我有更多的时间投入到兴趣项目中。你链接的工具看起来已经足够好了!我还没有测试过,但我期待着这样做!谢谢你的回答! - user14070
@Kent - 别担心,我一直在等这个 ;) 那个工具看起来相当不错。昨天才发现它 :P 祝好运! - Aiden Bell

4

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接