如何列出 lex/yacc 或 flex/bison 模式?

How to list lex/yacc or flex/bison patterns?

我想从 flex/bison 文件中提取所有模式,以便一起查看它们。我暂时对应用于模式的规则不感兴趣。

肯定有人已经为此编写了 flex/bison 文件? :)

如果你给它 -v 命令行选项,bison 将输出格式良好的语法版本(和所有状态)到扩展名为 .output 的文件中。您可以使用 --report-file=PATH 指定要写入的精确文件名,并使用 --report=THINGS 指定要报告的内容列表;有关详细信息,请参阅 bison --help。但是 afaik,语法总是打印在报告文件的开头附近,就在冲突列表之后,如果有的话。

flex 没有等效的选项,但是如果您指定 -T 标志(用于调试 flex 本身),那么 flex 也会将模式列表转储到 stderr作为其他可能较少使用的信息。 (如果您使用开始条件块,输出有点难以阅读,并且它扩展了宏,这可能是也可能不是您要查找的内容。)