I';使用选项%defines";编译bison时出错;语法分析器;

I';使用选项%defines";编译bison时出错;语法分析器;,bison,Bison,我的Parser.y文件包含以下代码 %defines "Parser.h" 我已经编译了这个文件,我有一个下面的错误 $bison解析器.y Parser.y:27.10-19:语法错误,意外字符串 所以我已经发表了这一行评论 //%defines "Parser.h" 我编译了这个文件,并没有错误,但它并没有生成输出头文件 我改变了编译选项 $bison Parser.y--defines=Parser.h 这是成功的,但我不想使用选项与“野牛”命令 换句话说,我想在bison文件中使用

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

%defines "Parser.h"
我已经编译了这个文件,我有一个下面的错误

$bison解析器.y

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

所以我已经发表了这一行评论

//%defines "Parser.h"
我编译了这个文件,并没有错误,但它并没有生成输出头文件

我改变了编译选项

$bison Parser.y--defines=Parser.h

这是成功的,但我不想使用选项与“野牛”命令

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

我该怎么办


很抱歉,我的英语太差了。

Bison 2.6.2支持
%defines
指令

表面上看,您似乎没有使用足够新的Bison版本,并且您的版本不支持
%defines
。然而,这似乎是不可能的;您必须使用十年或更久的版本(更改日志中对
%defines
的第一次引用日期为2001年)

另一种可能是您没有在语法文件的适当位置包含它。我认为它应该出现在第一个
%%
之前,这标志着语法的正确开始


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

发布完整的代码,以便其他人运行您的代码并查看error@pinkpanther谢谢你的评论,但问题已经解决了。完整的代码是。谢谢。我使用过Bison 2.3版本我尝试过Bison 2.3的最小语法,使用
%定义了“file.h”
,但失败了;Bison 2.6.2也编译了同样的代码。我使用的语法名为
min.y
,有三行:
%定义了“minimal.h”
%%
,和
信息:仅限a“b”c“
。这在Bison 2.6.2中生成了一个相当小(但绝对不是最小)的文件,名为
minimal.h
。如果没有文件名,
%defines
行适用于Bison 2.3。