最初在示例中是这样的
expr:
INTEGER
| expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
;
我希望它“更简单”所以我写了这个(我意识到它会为加法和减法做'+'。但这是一个例子)
expr:
INTEGER
| expr addOp expr { $$ = $1 + $3; }
;
addOp:
'+' { $$ = $1; }
| '-' { $$ = $1; }
;
现在我得到一个移位/减少错误。它应该完全相同-_-(对我来说)。我需要做什么来解决这个问题?
编辑:说清楚。第一个没有警告/错误。我使用 %left 来设置优先级(我将使用 %right 来表示 = 和其他正确的操作)。但是,当进入子表达式时,它似乎并不适用。