1.以下の文法は、左再帰、してくださいFIRSTセット、FOLLOWセット、SELECTコレクション、そして私は私を+ *記号列の分析を排除します
E - > E + T | T
T - > T * F | F
F - >(E)| 私
左再帰を排除します:
E→TE」
E '→+ TE' |ε
T→FT」
T '→* FT' |ε
F→(E)| I
FIRST集:
FIRST(TE ')= {T}
FIRST(+ TE ')= {+}
FIRST(E)= {E}
FIRST(FT ')= {F}
FIRST(* FT ')= {*}
FIRST((E))= {(}
FIRST(I)= {I}
FOLLOW集:
フォロー(E)= {)}
フォロー(E ')= {#}
フォロー(T)= {E '}
フォロー(T ')= {#}
フォロー(F)= {#}
SELECTセット:
SELECT(E→TE ')=最初の(TE')= {T}
(E「→+ TE)=最初の(+ TE)= {+}を選択
SELECT(E '→E)=(FIRST(E) - {E})∪FOLLOW(E')= {)}
SELECT(T→FT ')=最初の(FT')= {F}
SELECT(T '→* FT')=最初の(* FT ')= {*}
SELECT(T '→ε)=(FIRST(ε) - {ε})∪FOLLOW(T')= {#}
SELECT(F→(E))= FIRST((E))= {(}
SELECT(F→I)=最初の(I)= {I}
私は+ Iを*分析記号列:
2.P101実践7(2)(3)
A→aABe | A
B→Bbの| D
左エキス共通因子:
A→A」
A「→阿部| E
左再帰を排除します:
B→デシベル」
B '→B-B' | E
FIRST集:
FIRST(AA ')= {}
FIRST(ABE)= {A}
FIRST(E)= {E}
FIRST(DB ')= {D}
FIRST(BB ')= {B}
FOLLOW集:
FOLLOW(A)= {こと}
FOLLOW(A ')= {#}
フォロー(B)= {E}
フォロー(B ')= {#}
SELECTセット:
SELECT(A→A-A ')= FIRST(AA')= {}
SELECT(ABE→A ')=最初の(ABE)= {A}
SELECT(A '→ε)=(FIRST(ε) - {ε})∪FOLLOW(A')= {#}
SELECT(B→デシベル ')=最初の(DB')= {D}
SELECT(B '→B-B')=最初の(B-B ')= {B}
SELECT(B '→ε)=(FIRST(ε) - {ε})∪FOLLOW(B')= {#}
S→Aaと| B
A→SB
B→AB
代入:
S→SBaに| B
左再帰を排除します:
S→bSの」
S '→のBaS' | E
B→AB
FIRST集:
FIRST(SBA)= {S}
FIRST(B)= {B}
FIRST(BS ')= {B}
FIRST(BAS)= {B}
FIRST(E)= {E}
FIRST(AB)= {AB}
FOLLOW集:
フォロー(S)= {B}
フォロー(S ')= {#}
フォロー(B)= {}
SELECTセット:
SELECT(S→SBaに)= FIRST(SBA)= {S}
SELECT(S→B)=最初の(B)= {B}
(S→BSに ')SELECT = FIRST(BS')= {B}
SELECT(S '→のBaS')=最初の(BAS ')= {B}
SELECT(S '→ε)=(FIRST(ε) - {ε})∪FOLLOW(S')= {#}
SELECT(B→AB)=最初の(AB)= {}
次の文法FIRSTセット、FOLLOWセットを探しています
S - >のAp
- > |ε
- >のcA
- >を1aA
FIRST()= {}
FIRST(E)= {E}
FIRST(CA)= {C}
FIRST(AA)= {}
FIRST(AP)= {、C、P}
フォロー(S)= {#}
FOLLOW(A)= {P}
SELECT(S→AP)= FIEST(AP)= {A}
SELECT(A→A)=最初の()= {}
SELECT(A→ε)=(FIRST(ε) - {ε})∪FOLLOW(A)= {P}
SELECT(A→CA)= FIRST(CA)= {C}
SELECT(A→AA)= FIRST(AA)= {}
S - > Apを
S - >ベクレル
A - >
A - >のcA
B - > B
B - >デシベル
FIRST()= {}
FIRST(CA)= {C}
FIRST(B)= {B}
FIRST(DB)= {D}
FIRST(AP)= {C}
FIRST(ベクレル)= {B、D}
フォロー(S)= {#}
FOLLOW(A)= {P}
フォロー(B)= {Q}
SELECT(S→AP)= FIEST(AP)= {A}
SELECT(S→ベクレル)=最初の()= {}
SELECT(A→A)=最初の()= {}
SELECT(A→CA)= FIRST(CA)= {C}
SELECT(B→B)=最初の(B)= {B}
SELECT(B→デシベル)= FIRST(DB)= {D}