10.消除左递归

 

1.将以下文法消除左递归,并分析符号串 i*i+i  

并分别求FIRST集、FOLLOW集,和SELECT集

     E -> E+T | T

     T -> T*F | F

     F -> (E) | i

E->TE'

E'->+TE'|ε

T->FT'

T'->*FT'|ε

F->(E)|i

FIRST集

FIRST(TE')={(,i }

FIRST(+TE')={ + }

FIRST(ε)={ ε }

FIRST(FT')={(,i }

FIRST(*FT')={ * } 

FIRST((E))={( }

FIRST((E)|i)={ i }

FOLLOW集

FOLLOW(E)={#,)}

FOLLOW(E')={ )}

FOLLOW(T)={ + }

FOLLOW(T')={ + }

FOLLOW(F)={ * }

SELECT集

SELECT(E->TE')={(,i }

SELECT(E'->+TE')={ + }

SELECT(E'->ε)={ )}

SELECT(T->FT')={(,i }

SELECT(T'->*FT')={ * } 

SELECT(T'->ε)={ + }

SELECT(F->(E))={(  }

SELECT(F->i)={ i }

分析符号串 i*i+i

2.P101练习7(2)(3)文法改写,并分别求FIRST集、FOLLOW集,和SELECT集

(2)

A->aABe|a

B->Bb|d

A->aA'

A'->ABe|ε

B->dB'

B'->bB'|ε

FIRST集

FIRST(aA')={a}

FIRST(ABe)={a}

FIRST(ε)={ε}

FIRST(dB')={d}

FIRST(bB')={b}

FOLLOW集

FOLLOW(A)={#,d}

FOLLOW(A')={d}

FOLLOW(B)={e}

FOLLOW(B')={e}

SELECT集

SELECT(A->aA')={a}

SELECT(A'->ABe)={a}

SELECT(A'->ε)={d}

SELECT(B->dB')={d}

SELECT(B'->bB')={b}

SELECT(B'->ε)={e}

(3)

S->Aa|b

A->SB

B->ab

S->bS'

S'->BaS'|ε

B->ab

FIRST集

FIRST(bS')={b}

FIRST(BaS')={a}

FIRST(ε)={ε}

FIRST(a)={a}

FOLLOW集

FOLLOW(S)={#}

FOLLOW(S')={#}

FOLLOW(B)={a}

SELECT集

SELECT(S->bS')={b}

SELECT(S'->BaS')={a}

SELECT(S'->ε)={#}

SELECT(B->ab)={a}

课堂练习:

求以下文法的FIRST集、FOLLOW集和SELECT集。

S->Ap

A->a|ε

A->cA

A->aA

FIRST集

FIRST(Ap)={a,c,p}

FIRST(a)={a}

FIRST(ε)={ε}

FIRST(cA)={c}

FIRST(aA)={a}

FOLLOW集

FOLLOW(S)={#}

FOLLOW(A)={p}

SELECT集

SELECT(S->Ap)=FIRST(Ap)={a,c,p}

SELECT(A->a)=FIRST(a)={a}

SELECT(A->ε)=FIRST(ε) - {ε} U FOLLOW(A)={p}

SELECT(A->cA)=FIRST(cA)={c}

SELECT(A->aA)=FIRST(aA)={a}

 

S->Ap

S->Bq

A->a

A->cA

B->b

B->dB

FIRST集

FIRST(Ap)={a,c}

FIRST(Bq)={b,d}

FIRST(a)={a}

FIRST(cA)={c}

FIRST(b)={b}

FIRST(dB)={d}

FOLLOW集

FOLLOW(S)={#}

FOLLOW(A)={p}

FOLLOW(B)={q}

SELECT集

SELECT(S->Ap)=FIRST(Ap)={a,c}

SELECT(S->Bq)=FIRST(Bq)={b,d}

SELECT(A->a)=FIRST(a)={a}

SELECT(A->cA)=FIRST(cA)={c}

SELECT(B->b)=FIRST(b)={b}

SELECT(dB)=FIRST(dB)={d}

posted @ 2019-11-12 09:46  linyanli  阅读(168)  评论(0编辑  收藏  举报