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)文法改写,并分别求FIRST集、FOLLOW集,和SELECT集

    答:(2)

    提取左公因子:  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')={#}

    (3)化成: 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集和SELECT集。

    答:

    S->Ap
    A->a |ε
    A->cA

    A->aA

    FIRST集:     FIRST(a)={a}  FIRST(ε)={ε}  FIRST(cA)={c}  FIRST(aA)={a}  FIRST(Ap)={a,c,p}

    FOLLOW集:FOLLOW(S)={#}  FOLLOW(A)= {p}

    SELECT集: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集: FIRST(a)={a}  FIRST(cA)={c}  FIRST(b)={b}  FIRST(dB)={d}  FIRST(Ap)={a,c}  FIRST(Bq)={b,d}

    FOLLOW集:  FOLLOW(S)={#}  FOLLOW(A)={p}  FOLLOW(B)={q}

    SELECT集:  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}

  • 相关阅读:
    Python中Random随机数返回值方式
    SQL跨库查询
    正则表达式基本语法
    excel VBA使用教程
    使用某些Widows API时,明明包含了该头文件,却报错“error C2065: undeclared identifier”
    电脑开机后数字键盘为关闭状态
    编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010
    变量作用域,不能理解,先记下
    解决MySQL 在 Java 检索遇到timestamp空值时报异常的问题
    Annotation
  • 原文地址:https://www.cnblogs.com/huangyixuan/p/11861915.html
Copyright © 2011-2022 走看看