zoukankan      html  css  js  c++  java
  • 作业十

    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

    分析符号串 i*i+i:

     

     first集:

     FIRST(TE')={ (, i }

      FIRST(+TE')={+}

      FIRST(ε)={ε}

      FIRST(FT')={ (, i }

      FIRST(*FT')={*}

      FIRST((E))={ ( }

      FIRST(i)={i}

    follow集:

      FOLLOW(E)={ ),# }

      FOLLOW(E')={ ),# }

      FOLLOW(T)={+,),#}

      FOLLOW(T')={+,),#}

      FOLLOW(F)={*,+,),#}

    select集:

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

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

      SELECT(E'->ε)=FIRST(ε)-{ε}UFOLLOW(E')=FOLLOW(E')={ ),# }

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

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

      SELECT(T'->ε)=FIRST(ε)-{ε}UFOLLOW(T')=FOLLOW(T')={ +,),# }

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

      SELECT(F->i)=FIRST(i)={i}

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

     文法改写:

       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')=FIRST(aA')={a}

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

      SELECT(A'->ε)=FIRST(ε)-{ε}UFOLLOW(A')=FOLLOW(A')={d,#}

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

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

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

     (3)

    S->Aa | b

        A->SB

          B->ab

     first集:

      FIRST(bS')={b}

      FIRST(BaS')={a}

      FIRST(ε)={ε}

      FIRST(ab)={a}

    follow集:

      FOLLOW(S)={#}

      FOLLOW(S')={#}

      FOLLOW(B)={a}

    select集:

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

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

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

      SELECT(B->ab)=FIRST(ab)={a}

    课堂练习:

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

    S->Ap

    A->a |ε

    A->cA

    A->aA

     (1)

    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(ε)-{ε}UFOLLOW(A)=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

    (2)

    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->Bp)=FIRST(Bq)={b,d}

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

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

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

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

     

  • 相关阅读:
    16. 3Sum Closest
    17. Letter Combinations of a Phone Number
    20. Valid Parentheses
    77. Combinations
    80. Remove Duplicates from Sorted Array II
    82. Remove Duplicates from Sorted List II
    88. Merge Sorted Array
    257. Binary Tree Paths
    225. Implement Stack using Queues
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/xuechendong/p/11866418.html
Copyright © 2011-2022 走看看