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 顺序。什么都不管用。
请帮忙,因为我不知道问题出在哪里!
如果规则产生的非终结符号不是开始符号或在某些(有用的)产生式的右侧,则该规则无用。
所以你不能只添加一个新的非终端,除非你也在某处使用它。
这可能不是您的问题 -- 问题中的信息太少无法说明您的问题是什么 -- 但它至少与所提供的信息一致。
我写了一个 flex/Bison 语法,它在某一点之前都可以正常工作。 但是,当我添加一个带有新语法规则的新非终结符时——无论是哪一个,我都会收到以下警告:警告:规则在语法中无用 [-Wother]
当我将完全相同的规则移动到不同的非终端时它工作正常。 就好像我不能再添加非终端了。
这是代码中不起作用的部分:
%type<number> expression
%type<arr> array
array:
'[' expression ']' { cout << "SUCCESS" << endl; }
;
expression:
NUMBER { $$ = ; }
;
所有类型都在联合中预定义,我一直在尝试更改 rules/non-terminals 顺序。什么都不管用。 请帮忙,因为我不知道问题出在哪里!
如果规则产生的非终结符号不是开始符号或在某些(有用的)产生式的右侧,则该规则无用。
所以你不能只添加一个新的非终端,除非你也在某处使用它。
这可能不是您的问题 -- 问题中的信息太少无法说明您的问题是什么 -- 但它至少与所提供的信息一致。