Bison:无故出现语法错误

Bison: getting syntax error for no reason

我写了一个 flex/Bison 语法,它在某一点之前都可以正常工作。 但是,当我添加一个带有新语法规则的新非终结符时——无论是哪一个,我都会收到以下警告:警告:规则在语法中无用 [-Wother]

当我将完全相同的规则移动到不同的非终端时它工作正常。 就好像我不能再添加非终端了。

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

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

所有类型都在联合中预定义,我一直在尝试更改 rules/non-terminals 顺序。什么都不管用。 请帮忙,因为我不知道问题出在哪里!

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

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

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