如何打印从特定节点开始的 YACC 语法图?

How to print a YACC grammar graph starting from a specific node?

我有大量的 YACC 语法来处理一系列相关标准。我想用 bison --graph 命令打印它的图形,但是生成的 .dot 文件有超过 4 万行。

图表太大,xdotdot 工具无法渲染它。我终于设法用 sfdp 生成了输出,但是生成的图像超过 50MB,简直无法理解。

我只对可视化语法的一部分感兴趣,最好是从特定语法规则开始的子集。有没有办法将此类约束添加到图形生成或渲染中?

您可以通过添加

将语法限制为从 非终结符 开始的子集
%start the_nonterminal

你会得到很多无用的生产和无用的 non-terminal 警告,但你仍然会得到图表。

如果您想将其限制为 non-terminal 的单个作品,您可以暂时为该作品引入一个新的开始 non-terminal(假设原始 [=19] 的语法=] 不是递归的)。