如何在Bison中显示语法的抽象语法树?

5

我正在使用bison编写一个简单的Pascal编译器的语法,并希望能够可视化我的语法解析树。我在pascal.y文件中指定了该语法。是否有可能基于我的pascal.y文件以图形方式显示语法树?

2个回答

3
Bison的--graph选项生成一个源文件,你可以使用graphvizdot命令呈现它。

1

基于BRPocock的详细回答。

  1. 通过bison pascal.y --graph生成.dot文件。现在你会得到pascal.dot
  2. 确保你已经安装了graphviz下载页面
  3. 通过dot pascal.dot -T png -o pascal.png生成png图片文件
  4. 现在你将得到pascal.png,用于解析器的图形渲染

尽管您引用的答案得到了赞同,但它从未被接受,我认为它实际上并没有回答问题,该问题要求对语法树(针对已解析的输入)进行图形化表示,而不是解析自动机。一些解析器生成器可以提供此功能(例如Antlr测试工具),但Bison并未实现此功能。 - rici
我使用上面列出的下载页面/链接中的64位模式的Windows版本DOT工具。在我的环境中(我使用MinGW - 32位和64位模式),我使用必要的工具得到另一个文件,所以命令dot pascal.dot -T png -o pascal.png最终生成的是pascal.gv而不是pascal.dot文件。这只是对上面答案的一个注释(帮助解决“搜索”混淆问题 - 为什么找不到pascal.dot文件)。谢谢阅读。 - Jens

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