我写了一个flex/Bison语法器,它可以完美地工作到某一点。但是,当我用新的语法规则添加一个新的非终端时,无论是哪一个,我都会收到以下警告:警告:规则在语法中无用[-Wother]
当我把同样的规则移到另一个非终端时,效果很好。就好像我不能再添加任何非终端了。
这是代码中不起作用的部分:
%type<number> expression
%type<arr> array
array:
'[' expression ']' { cout << "SUCCESS" << endl; }
;
expression:
NUMBER { $$ = $1; }
;
所有类型都是在联合中预定义的,我一直在尝试更改规则/非终端顺序。什么都不管用。请帮忙,因为我搞不清出了什么问题!
如果规则产生的非终结符不是起始符号或在某些(有用的)结果的右侧,则该规则是无用的。
因此,除非你在某个地方也使用它,否则你不能只添加一个新的非终端。
这可能不是你的问题——问题中的信息太少,无法说明你的问题是什么——但至少与提供的信息一致。