更新了......我知道,我的语法不明确,但我怎样才能重写这个语法来消除这种歧义?.....................
我有一个这样的语法:
野牛文件
%left equal nEqual
%left gre less greOrEqual lessOrEqual
%left plus sub
%left DIV mult exp mod
%left not
%left leftB rightB
%%
S :
var "=" A ";"
;
A:
Aexp
|Rexp
;
Aexp :
Num
| leftB Aexp rightB
| Aexp plus Aexp
| Aexp sub Aexp
| Aexp DIV Aexp
| Aexp mult Aexp
;
Rexp :
Aexp
| Rexp gre Rexp
| Rexp less Rexp
| Rexp greOrEqual Rexp
| Rexp lessOrEqual Rexp
| Rexp equal Rexp
| Rexp nEqual Rexp
;
这样做我得到 1 个 shift/reduce 和 1 个 reduce/reduce 冲突,如何更改语法以消除冲突?