zoukankan      html  css  js  c++  java
  • 第十次作业——消除左递归

    1.将以下文法消除左递归,求FIRST集、FOLLOW集,SELECT集,并分析符号串 i*i+i  

         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')={T}

      FIRST(+TE')={+}

      FIRST(ε)={ε}

      FIRST(FT')={F}

      FIRST(*FT')={*}

      FIRST((E))={(}

      FIRST(i)={i}

     FOLLOW集:

      FOLLOW(E)={)}

      FOLLOW(E')={#}

      FOLLOW(T)={E'}

      FOLLOW(T')={#}

      FOLLOW(F)={#}

     SELECT集:

      SELECT(E→TE')=FIRST(TE')={T}

      SELECT(E'→+TE')=FIRST(+TE')={+}

      SELECT(E'→ε)=(FIRST(ε)-{ε})∪FOLLOW(E')={)}

      SELECT(T→FT')=FIRST(FT')={F}

      SELECT(T'→*FT')=FIRST(*FT')={*}

      SELECT(T'→ε)=(FIRST(ε)-{ε})∪FOLLOW(T')={#}

      SELECT(F→(E))=FIRST((E))={(}

      SELECT(F→i)=FIRST(i)={i}

     分析符号串i*i+i:

     

    答案:

    2.P101练习7(2)(3)

     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)={Be}

      FOLLOW(A')={#}

      FOLLOW(B)={e}

      FOLLOW(B')={#}

     SELECT集:

      SELECT(A→aA')=FIRST(aA')={a}

      SELECT(A'→ABe)=FIRST(ABe)={A}

      SELECT(A'→ε)=(FIRST(ε)-{ε})∪FOLLOW(A')={#}

      SELECT(B→dB')=FIRST(dB')={d}

      SELECT(B'→bB')=FIRST(bB')={b}

      SELECT(B'→ε)=(FIRST(ε)-{ε})∪FOLLOW(B')={#}

     S → Aa|b

     A → SB

     B → ab

     代入:

      S→SBa|b

     消除左递归:

      S →bS'

      S'→BaS'|ε

      B→ab

     FIRST集:

      FIRST(SBa)={S}

      FIRST(b)={b}

      FIRST(bS')={b}

      FIRST(BaS)={B}

      FIRST(ε)={ε}

      FIRST(ab)={ab}

     FOLLOW集:

      FOLLOW(S)={B}

      FOLLOW(S')={#}

      FOLLOW(B)={a}

     SELECT集:

      SELECT(S→SBa)=FIRST(SBa)={S}

      SELECT(S→b)=FIRST(b)={b}

      SELECT(S→bS')=FIRST(bS')={b}

      SELECT(S'→BaS')=FIRST(BaS')={B}

      SELECT(S'→ε)=(FIRST(ε)-{ε})∪FOLLOW(S')={#}

      SELECT(B→ab)=FIRST(ab)={a}

     求以下文法的FIRST集、FOLLOW集

     S -> Ap

     A -> a |ε

     A -> cA

     A -> aA

      FIRST(a)={a}

      FIRST(ε)={ε}

      FIRST(cA)={c}

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

      FOLLOW(S)={#}

      FOLLOW(A)= {p}

      SELECT(S→Ap)=FIEST(Ap)={A}

      SELECT(A→a)=FIRST(a)={a}

      SELECT(A→ε)=(FIRST(ε)-{ε})∪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(a)={a}

      FIRST(cA)={c}

      FIRST(b)={b}

      FIRST(dB)={d}

      FIRST(Ap)={a,c}

      FIRST(Bq)={b,d}

      FOLLOW(S)={#}

      FOLLOW(A)={p}

      FOLLOW(B)={q}

      SELECT(S→Ap)=FIEST(Ap)={A}

      SELECT(S→Bq)=FIRST(a)={a}

      SELECT(A→a)=FIRST(a)={a}

      SELECT(A→cA)=FIRST(cA)={c}

      SELECT(B→b)=FIRST(b)={b}

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

  • 相关阅读:
    POJ 2976 Dropping tests
    【学习笔记-中国剩余定理】POJ1006 Biorhythms
    2017.10.6北京清北综合强化班DAY6
    P1607 [USACO09FEB]庙会班车Fair Shuttle
    2017.10.5北京清北综合强化班DAY5
    洛谷 P1379 八数码难题
    A. 拼音魔法
    A
    K
    A
  • 原文地址:https://www.cnblogs.com/lxml/p/11839669.html
Copyright © 2011-2022 走看看