添付しているLR表を用いてトークン列iiをLR構文解析しています.初期状態は,(0 , ii$)です.例を参考にして,(0 , i*i$)→(0 i5 , *i$)→(0 F , *i$)→(0 F3 , *i$)→(0 T , *i$)→(0 T2 , *i$)→(0 E , *i$)→(0 E1 , *i$)までできたのですが,この続きをどのようにすればよいのかわからないので教えて下さい.もし,ここまでで間違っているところがあれば,そこも教えて下さい.よろしくお願いします.
例:i+iを解析する場合
(0 , i+i$)
↓ LR表で状態0,入力iの位置→「s5」
(0 i5 , +i$)
↓ LR表で状態5,入力+の位置→「r6」
↓ まずスタックの「i5」をFに変えて還元
(0 F , +i$)
↓ 状態0のときの行先(goto)がFの位置→状態3
(0 F3 , +i$)
↓ LR表で状態3,入力+の位置→「r4」
↓ まずスタックの「F3」をTに変えて還元
(0 T , +i$)
↓ 状態0のときの行先(goto)がTの位置→状態2
(0 T2 , +i$)
↓ LR表で状態2,入力+の位置→「r2」
↓ まずスタックの「T2」をEに変えて還元
(0 E , +i$)
↓ 状態0のときの行先(goto)がEの位置→状態1
(0 E1 , +i$)
↓ LR表で状態1,入力+の位置→ 「s6」
(0 E1 +6 , i$)
↓ LR表で状態6,入力iの位置→ 「s5」
(0 E1 +6 i5 , $)
↓ LR表で状態5,入力$の位置→ 「r6」
↓ まずスタックの「i5」をFに変えて還元
(0 E1 +6 F , $)
↓ 状態6のときの行先(goto)がFの位置→状態3
(0 E1 +6 F3 , $)
↓ LR表で状態3,入力$の位置→ 「r4」
↓ まずスタックの「F3」をTに変えて還元
(0 E1 +6 T , $)
↓ 状態6のときの行先(goto)がFの位置→状態9
(0 E1 +6 T9 , $)
↓ LR表で状態9,入力$の位置→ 「r1」
↓ まずスタックの「E1+6T9」をEに変えて還元
(0 E, $)
↓ 状態0のときの行先(goto)がEの位置→状態1
(0 E1 , $)
↓ LR表で状態1,入力$の位置→「受理」
あなたの回答
tips
プレビュー