0

我的 Parser.y 文件包含以下代码。

%defines "Parser.h"

我已经编译了此文件,但出现以下错误。

$野牛解析器.y

Parser.y:27.10-19:语法错误,意外字符串

所以我把这行注释掉了。

//%defines "Parser.h"

我已经编译了这个文件,没有错误,但它没有生成输出头文件。

我已经改变了编译选项。

$ 野牛 Parser.y --defines=Parser.h

它是成功的,但我不想使用带有“bison”命令的选项。

换句话说,我想在野牛文件中使用 %defines 选项。

我应该怎么办?

对不起,pooooooor 英语。

4

1 回答 1

0

%definesBison 2.6.2 支持该指令。

从表面上看,您似乎没有使用足够新的 Bison 版本,并且您的版本不支持%defines. 但是,这似乎不太可能;您必须使用十年或更久的版本(ChangeLog 中的第一个参考%defines日期为 2001 年)。

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

您可以尝试省略文件名;如果源是 Parser.y 并且您写了一行%defines,则生成的标题无论如何都是 Parser.h。我不相信这会奏效,但值得一试。

于 2013-06-04T04:51:07.963 回答