Bison:无缘无故地获取语法错误

Bison:无缘无故地获取语法错误,bison,yacc,flex-lexer,Bison,Yacc,Flex Lexer,我已经写了一个flex/Bison语法,它可以完美地工作到某一点。 但是,当我添加一个新的非终结符和一个新的语法规则时,不管是哪一个,我都会得到以下警告:警告:语法中的规则无用[-Wother] 当我将同一条规则移动到另一个非终端时,它可以正常工作。 就像我不能再添加任何非终端一样 这是代码中不起作用的部分: %type<number> expression %type<arr> array array: '[' expression ']'

我已经写了一个flex/Bison语法,它可以完美地工作到某一点。 但是,当我添加一个新的非终结符和一个新的语法规则时,不管是哪一个,我都会得到以下警告:警告:语法中的规则无用[-Wother]

当我将同一条规则移动到另一个非终端时,它可以正常工作。 就像我不能再添加任何非终端一样

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

%type<number> expression
%type<arr> array
array:
    '[' expression ']'                  { cout << "SUCCESS" << endl; }
    ;           
expression: 
    NUMBER                              { $$ = $1; }
    ;
%类型表达式
%类型数组
数组:

“['表达式']'{cout如果规则产生的非终结符不是开始符号或在某些(有用的)结果的右侧,则该规则无效

所以你不能仅仅添加一个新的非终端,除非你在某处也使用它


这可能不是您的问题--问题中的信息太少,无法说明您的问题所在--但至少与提供的信息一致。

该片段显然有效。请编辑您的问题,以包含足够的规则,以便bison生成警告消息。