1.除去は、私は私を+ *分析する記号列を再帰的な次の文法を残しました。
それぞれFIRSTセット、FOLLOWセット、およびセットSELECTを探しています
E - > E + T | T
T - > T * F | F
F - >(E)| 私
ソリューション:
左再帰を排除
E - > TE ' E ' - > + TE " | ε T - > FT ' T ' - > * FT " | ε F - >(E)| 私
FIRST集:
FIRST(E)= FIRST(T)=最初の(F)= {(I}
FIRST(E ')= {+、ε}
FIRST(E')= {+、ε}
FIRST(T ')= {* 、ε}
FOLLOW集:
フォロー(E)= {)、#} フォロー(E ' )=フォロー(E)= {)、#} フォロー(T)= {+ 、)、#} フォロー(T') =フォロー(T)= { + )、#} フォロー(F) = {+、*、)、#}
SELECTセット:
SELECT(E - > TE ' )= {(iは} (E SELECT ' - > + TE ')= {+ } SELECT(E ' >ε)= - {)、#を} SELECT(Tを- > FT ' ) = {(iは} SELECT(T ' - > * FT ')= {* } (SELECT) = {T ' - >ε} = {+、)、#} SELECT(F - >(E))= { (} (SELECT) = {F - > I} = {I}
運動2.P101 7(2)(3)文法を書き換えられ、FIRSTは、それぞれフォローセットを設定し、SELECTを設定してください
ソリューション:
2番目の質問:
左再帰を排除
→を1aA A ' A ' →安倍| E B→デシベル' B ' →bBで" | E
FIRST集:
FIRST(A)= {} FIRST(A ' )= {ε} FIRST(B)= {D} FIRST(B ' )= {B、ε}
FOLLOW集:
FOLLOW(A)= {D、#} FOLLOW(A ' )= {D、#} フォロー(B)= {E} FOLLOW(B ' )= {E}
SELECTセット:
SELECT(A→を1aA ' )= {} SELECT(A ' ABE→)= {} SELECT(A ' →ε)= {D、#} SELECT(B→デシベル' )= {D}は SELECT(B ' →bBで')= {B} SELECT(B ' →ε)= {E}
3番目の質問:
左再帰を排除
BS→S ' S ' →のBaS " | E B→AB
FIRST集:
FIRST(S)= {B} FIRST(S ' )= {ε} FIRST(B)= {}
FOLLOW集:
フォロー(S)= {#} FOLLOW(S ' )= {#} FOLLOW(B)= {}
SELECTセット:
(S→BSにSELECT ' )= {B} SELECT(S ' →のBaS ')= {ε}は SELECT(S ' →ε)= {#} (B→AB)を選択= {}
ワークショップ:
次の文法FIRSTセット、FOLLOWセットとSELECTセットを探しています。
(1)
S->のAp
A-> |ε
A->のcA
A->を1aA
(2)
S-> Apを
S->ベクレル
A-> A
A->のcA
B-> B
B->デシベル
ソリューション:
(1)
FIRST集:
FIRST(S)= {、C、P} FIRST(A) = {} FIRST(A) = {C} FIRST(A) = {}
FOLLOW集:
フォロー(S)= {#}
FOLLOW(A) = {P}
SELECTセット:
SELECT(S-> AP)= {、C、P} SELECT(A - >)= {} SELECT(A - >ε)= {P} SELECT(A - > CA)=は、 {C}は SELECT( - > AA)= {}
(2)
FIRST集:
FIRST(S)= {C} FIRST(S) = {B、D} FIRST(A) = {} FIRST(A) = {C} FIRST(B) = {B} FIRST(B) = { D}
FOLLOW集:
フォロー(S)= {#} FOLLOW(A) = {P} FOLLOW(B) = {Q}
SELECTセット:
S-> Apを S - > ベクレル A - > A - > のcA B - > B B - > dBの SELECT() = {} SELECT(Sの - > AP)= {C} SELECT(Sの - >ベクレル) = {B、D} SELECT(A - >)= {} SELECT(A - > CA)= {C} SELECT(B - > B)= {B} SELECT(B - >デシベル)= {D}