Bison:无缘无故地获取语法错误
我已经写了一个flex/Bison语法,它可以完美地工作到某一点。 但是,当我添加一个新的非终结符和一个新的语法规则时,不管是哪一个,我都会得到以下警告:警告:语法中的规则无用[-Wother] 当我将同一条规则移动到另一个非终端时,它可以正常工作。 就像我不能再添加任何非终端一样 这是代码中不起作用的部分:Bison:无缘无故地获取语法错误,bison,yacc,flex-lexer,Bison,Yacc,Flex Lexer,我已经写了一个flex/Bison语法,它可以完美地工作到某一点。 但是,当我添加一个新的非终结符和一个新的语法规则时,不管是哪一个,我都会得到以下警告:警告:语法中的规则无用[-Wother] 当我将同一条规则移动到另一个非终端时,它可以正常工作。 就像我不能再添加任何非终端一样 这是代码中不起作用的部分: %type<number> expression %type<arr> array array: '[' expression ']'
%type<number> expression
%type<arr> array
array:
'[' expression ']' { cout << "SUCCESS" << endl; }
;
expression:
NUMBER { $$ = $1; }
;
%类型表达式
%类型数组
数组:
“['表达式']'{cout如果规则产生的非终结符不是开始符号或在某些(有用的)结果的右侧,则该规则无效
所以你不能仅仅添加一个新的非终端,除非你在某处也使用它
这可能不是您的问题--问题中的信息太少,无法说明您的问题所在--但至少与提供的信息一致。该片段显然有效。请编辑您的问题,以包含足够的规则,以便bison生成警告消息。