【发布时间】:2020-05-31 09:30:58
【问题描述】:
我正在练习平衡括号的语法:
S -> (S)
S -> SS
S -> ()
编译器返回一个移位/减少冲突。这是我的野牛语法:
%%
prog:
srule
;
srule
: ( srule )
| srule srule
| ( )
;
%%
谁能给我解释一下原因以及如何在不改变语法的情况下解决它?
【问题讨论】:
-
不改语法是解决不了的,除非使用
%prec或%assoc不被认为是改语法。你确定你转录正确吗? -
更改语法非常简单,例如使用此语法即可:
S -> (S)S | ε。我想知道移位/减少的原因以及在这种情况下如何使用优先运算符。再次感谢您。