• 第十三次作业——自下而上语法分析


    1.已知文法:

    E→E+T | T

    T→T*F | F

    F→(E) | i

    以句柄作为可归约串,写出符号串‘i+i*i#’的"移进-归约"分析过程。

    知识点:

    Firstvt
    找Firstvt的三条规则:如果要找A的Firstvt,A的候选式中出现:
               A->a.......,即以终结符开头,该终结符入Firstvt
               A->B.......,即以非终结符开头,该非终结符的Firstvt入A的Firstvt
               A->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入Firstvt

    Lastvt
    找Lastvt的三条规则:如果要找A的Lastvt,A的候选式中出现:
               A->.......a,即以终结符结尾,该终结符入Lastvt
               A->.......B,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt
               A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt

    1)求FIRSTVT和LASTVT 

     FIRSTVT(E) = {+,*,(,i}

     FIRSTVT(T) = {*,(,i}

     FIRSTVT(F) = {(,i}

     LASTVT(E) = {+,*,),i} 

     LASTVT(T) = {*,),i}

     LASTVT(F) = {),i}

     2)符号对:

    =

    (E)

    <

    +T

    *F

    (E

    >

    E+

    T*

    E)

    3)优先关系表的构造

     

    +

    *

    (

    )

    i

    +

    *

    (

    =

    )

     

     

    i

     

     


    2.P121练习1的(1)(2)。
     

    E→#S#

    S→a|^|(T)

    T→T,S|S

    1)计算FIRSTVT和 LASTVT。

     FIRSTVT(S) = {a,^,(}

     FIRSTVT(T) = {逗号,a,^,(}

     LASTVT(S) = {a,^,)}

     LASTVT(T) = {逗号,a,^,)}

    2)找三种关系对。

    =

    #S#

    (T)

    <

    #S

    (T

    ,S

    >

    S#

    T)

    T,

    3)构造算符优先关系表。

     

    ^

    ,

    (

    )

    a

    #

    ^

     

    >

     

     >

     

    >

    ,

    <

    >

    <

     >

     <

     

    (

    =

     

    )

     

    >

     

     >

     

    >

    a

     

    >

     

     >

     

    >

    #

    <

     

    <

     

    <

    =

  • 相关阅读:
    Linux中rsync备份数据使用实例
    8个Date命令使用示例
    Linux中如何使用alias命令
    在LVM中恢复已删除的逻辑卷
    使用Dmidecode获取硬件信息使用实例
    Linux系统使用SSH登录之前如何显示横幅消息
    在Linux中修改打开文件数量限制的3种方法
    Linux中监控磁盘分区和使用情况的几个工具
    如何解决Ubuntu提示没有找到ifconfig命令
    Linux中ip命令的使用实例
  • 原文地址:https://www.cnblogs.com/lxml/p/11975763.html
Copyright © 2020-2023  润新知