もともと例ではこれがありました
expr:
INTEGER
| expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
;
「もっとシンプル」にしたかったので、これを書きました(加算と減算の両方で「+」を実行することに気づきました。ただし、これは例です)
expr:
INTEGER
| expr addOp expr { $$ = $1 + $3; }
;
addOp:
'+' { $$ = $1; }
| '-' { $$ = $1; }
;
これで、シフト/リデュース エラーが発生します。まったく同じはずです-_-(私にとって)。これを修正するにはどうすればよいですか?
編集:物事を明確にするために。最初のものには警告/エラーはありません。%left を使用して優先順位を設定します (また、%right を = およびその他の右側の操作に使用します)。ただし、サブ式に入ると適用されないようです。