当使用选项%定义“Parser.h”的bison进行编译时,我遇到了错误

时间:2013-06-04 04:33:31

标签: bison

我的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。

1 个答案:

答案 0 :(得分:0)

Bison 2.6.2支持%defines指令。

从表面上看,您似乎没有使用最新版本的Bison,而且您的版本不支持%defines。然而,这似乎不太可能;您必须使用十年或更久的版本(ChangeLog中的第一个参考文件%defines于2001年注明日期。)

另一种可能性是你没有将它包含在语法文件中的适当位置。我相信它应该出现在第一个标记正确语法开始的%%之前。

您可以尝试省略文件名;如果源是Parser.y并且你写了一行%defines,那么生成的头文件仍然是Parser.h。我不相信这会奏效,但值得一试。