%token A B C D E F G H
%%
x : y H y | z H z
;
y : G | t | y B G | y B t
;
z : w | z D w
;
w : C | t | E z F
;
t : A
;
tのためにreduce/reduceの競合があります。どうすればそれを解決できますか?
デフォルトでは、y:tとw:tの間の競合は、y:tを優先して解決されます。逆の場合は、対応するルールを並べ替えます。または、次のようにそれらの1つを展開できます:-
%token A B C D E F G H
%%
x : y H y | z H z
;
w : C | A | E z F
;
z : w | z D w
;
y : G | A B G | A B A | y B G | y B A
;
tルールを削除し、y:ルールを展開して削除したことに注意してください:-
ステップ1:tを削除する:ルール
%token A B C D E F G H
%%
x : y H y | z H z
;
y : G | A | y B G | y B A
;
z : w | z D w
;
w : C | A | E z F
;
ステップ2:
%token A B C D E F G H
%%
x : y H y | z H z
;
y : G | A | A B G | A B A | y B G | y B A
;
z : w | z D w
;
w : C | A | E z F
;