Bison:莫名其妙地出现语法错误



我写了一个flex/Bison语法器,它可以完美地工作到某一点。但是,当我用新的语法规则添加一个新的非终端时,无论是哪一个,我都会收到以下警告:警告:规则在语法中无用[-Wother]

当我把同样的规则移到另一个非终端时,效果很好。就好像我不能再添加任何非终端了。

这是代码中不起作用的部分:

%type<number> expression
%type<arr> array
array:
    '[' expression ']'                  { cout << "SUCCESS" << endl; }
    ;           
expression: 
    NUMBER                              { $$ = $1; }
    ;

所有类型都是在联合中预定义的,我一直在尝试更改规则/非终端顺序。什么都不管用。请帮忙,因为我搞不清出了什么问题!

如果规则产生的非终结符不是起始符号或在某些(有用的)结果的右侧,则该规则是无用的。

因此,除非你在某个地方也使用它,否则你不能只添加一个新的非终端。

这可能不是你的问题——问题中的信息太少,无法说明你的问题是什么——但至少与提供的信息一致。

最新更新