我的Parser.y文件包含以下代码。
%defines "Parser.h"
我已经编译了这个文件,但我遇到了以下错误。
$ bison Parser.y
Parser.y:27.10-19:语法错误,意外字符串
所以我对这一行进行了评论。
//%defines "Parser.h"
我编译了这个文件并且我没有错误,但它没有输出头文件。
我已经改变了编译选项。
$ bison Parser.y --defines = Parser.h
成功但我不想使用“bison”命令选项。
换句话说,我想在bison文件中使用%defined选项。
我该怎么办?
抱歉pooooooor english。
答案 0 :(得分:0)
Bison 2.6.2支持%defines
指令。
从表面上看,您似乎没有使用最新版本的Bison,而且您的版本不支持%defines
。然而,这似乎不太可能;您必须使用十年或更久的版本(ChangeLog中的第一个参考文件%defines
于2001年注明日期。)
另一种可能性是你没有将它包含在语法文件中的适当位置。我相信它应该出现在第一个标记正确语法开始的%%
之前。
您可以尝试省略文件名;如果源是Parser.y并且你写了一行%defines
,那么生成的头文件仍然是Parser.h。我不相信这会奏效,但值得一试。