zoukankan      html  css  js  c++  java
  • 算符优先分析

    1. 已知算符优先关系矩阵如下表:

     

    +

    *

    i

    (

    )

    #

    +

    >

    <

    <

    <

    >

    >

    *

    >

    >

    <

    <

    >

    >

    i

    >

    >

       

    >

    >

    (

    <

    <

    <

    <

    =

     

    )

    >

    >

       

    >

    >

    #

    <

    <

    <

    <

     

    =

     写出符号串(i+i)*i#的算符优先分析过程。

    2.接上个作业(P121练习1),完成4),5)两个步骤。

    1)计算FIRSTVT和 LASTVT。

    2)找三种关系对。

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

    4)是否算符优先文法?

    5)给出输入串(a,(a,a))#的算符优先分析过程。

    3.尝试编写自下而上的语法分析程序。

    可以只写表达式部分。

    4.写出a+b*(c-d)+e/(c-d)↑n 的逆波兰表达式,三元式,四元式。

    ----------------------------------------------------------------------------------------------------------------------------------------------

    (i+i)*i#

    关系

    输入串

    动作

    1

    #

    <

    ( i + i ) * i #

    移进

    # (

    <

    i + i ) * i #

    移进

    # ( i

    >

    + i ) * i #

    归约

    # ( N

    <

    + i ) * i #

    移进

    # ( N +

    <

    i ) * i #

    移进

    # ( N + i

    >

    ) * i #

    归约

    # ( N + N

    >

    ) * i #

    归约

    # ( N

    =

    ) * i #

    移进

    # ( N )

    >

    * i #

    归约

    # N

    <

    * i #

    移进

    # N *

    <

    i #

    移进

    # N * i

    #

    接受

    2.已知文法:

    S -> a | ^ | (T)

    T -> T , S | S

    1)计算FIRSTVTLASTVT

    2)找三种关系对。

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

    4)是否算符优先文法?

    5)给出输入串(a,(a,a))#的算符优先分析过程。

     

     

    因为:

    E -> #S#

    S -> a | ^ | (T)

    T -> T , S | S

     

    (1) 计算FIRSTVTLASTVT

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

    FirstVT(T) = { a , ^ , ( , , }

     

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

    LastVT(T) = { a , ^ , ) , , }

     

     

    (2) 找三种关系对。

    = :

    #S#

    (T)

     

    < :

    #S

    (T

    ,S

     

    > :

    S#

    T)

    T,

     

     

     

     

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

     

    a

    ^

    (

    )

    ,

    #

    a

     

     

     

    ^

     

     

     

    (

    =

    )

     

     

     

    ,

    #

    =

    (4)算!

    5a,(a,a))#

    关系

    输入串

    动作

    #

    <

    ( a , ( a , a ) ) #

    移进

    # (

    <

    a , ( a , a ) ) #

    移进

    # ( a

    >

    , ( a , a ) ) #

    归约

    # ( N

    <

    , ( a , a ) ) #

    移进

    # ( N ,

    <

    ( a , a ) ) #

    移进

    # ( N , (

    <

    a , a ) ) #

    移进

    # ( N , ( a

    >

    , a ) ) #

    归约

    # ( N , ( N

    <

    , a ) ) #

    移进

    # ( N , ( N ,

    <

    a ) ) #

    移进

    # ( N , ( N , a

    >

    ) ) #

    归约

    # ( N , ( N , N

    <

    ) ) #

    移进

    # ( N , ( N , N )

    >

    ) #

    归约

    # ( N , ( N )

    <

    ) #

    移进

    # ( N , ( N ) )

    #

    接受

    3.尝试编写自下而上的语法分析程序。

    可以只写表达式部分。

    4.写出a+b*(c-d)+e/(c-d)↑n 的逆波兰表达式,三元式,四元式。

    逆波兰表达式

    abcd-*+ ecd-n/ +

     

    三元式

    (1) ( - , c , d )

    (2) ( * , b , (1) )

    (3) ( + , a , (2) )

    (4) ( - , c , d )

    (5) (  , (4) , n )

    (6) ( / , e / (5) )

    (7) ( + , (3) , (6) )

     

    四元式

    (1) ( - , c , d , t1 )

    (2) ( * , b , t1 , t2 )

    (3) ( + , a , t2 , t3 )

    (4) ( - , c , d , t4 )

    (5) (  , t4 , n ,t5 )

    (6) ( / , e , t5 , t6 )

    (7) ( + , t3 , t6 )

  • 相关阅读:
    CTFHub题解-技能树-Web-文件上传(00截断、双写后缀)【三】
    CTFHub题解-技能树-Web-文件上传(.htaccess、MIME绕过、文件头检查)【二】
    CTFHub题解-技能树-Web-文件上传(无验证、前端验证)【一】
    CTFHub题解-技能树-Web-SQL注入(Cookie注入、UA注入、Refer注入)【三】
    记一次centos7重启后docker无法启动的问题
    ctfshow——web_AK赛
    Windows10安装MongoDB
    centOS7安装docker和docker-compose
    xray—学习笔记
    ctfhub技能树—sql注入—过滤空格
  • 原文地址:https://www.cnblogs.com/q1uj1e/p/12021592.html
Copyright © 2011-2022 走看看