zoukankan      html  css  js  c++  java
  • 第十三次作业——自下而上语法分析

    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

     

    >

     

     >

     

    >

    #

    <

     

    <

     

    <

    =

  • 相关阅读:
    react 把时间戳用new Date改为日期
    react-格式化日期
    react-2种方法写法
    React-router4简约教程
    react-addons-css-transition-group
    vue-一些易错点
    Js apply方法详解,及其apply()方法的妙用
    C++中的继承(3)作用域与重定义,赋值兼容规则
    C++中的继承(1) 继承方式
    vim中文帮助文档安装
  • 原文地址:https://www.cnblogs.com/lxml/p/11975763.html
Copyright © 2011-2022 走看看