如何列出 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作为其他可能较少使用的信息。 (如果您使用开始条件块,输出有点难以阅读,并且它扩展了宏,这可能是也可能不是您要查找的内容。)
我想从 flex/bison 文件中提取所有模式,以便一起查看它们。我暂时对应用于模式的规则不感兴趣。
肯定有人已经为此编写了 flex/bison 文件? :)
如果你给它 -v
命令行选项,bison 将输出格式良好的语法版本(和所有状态)到扩展名为 .output
的文件中。您可以使用 --report-file=PATH
指定要写入的精确文件名,并使用 --report=THINGS
指定要报告的内容列表;有关详细信息,请参阅 bison --help
。但是 afaik,语法总是打印在报告文件的开头附近,就在冲突列表之后,如果有的话。
flex
没有等效的选项,但是如果您指定 -T
标志(用于调试 flex 本身),那么 flex 也会将模式列表转储到 stderr作为其他可能较少使用的信息。 (如果您使用开始条件块,输出有点难以阅读,并且它扩展了宏,这可能是也可能不是您要查找的内容。)