作业十四

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

 

+

*

i

(

)

#

+

>

<

<

<

>

>

*

>

>

<

<

>

>

i

>

>

 

 

>

>

(

<

<

<

<

=

 

)

>

>

 

 

>

>

#

<

<

<

<

 

=

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

关系

输入串

动作

#

<

(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

>

#

归约

#N*N

>

#

归约

#N

 

#

接受

 

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

1)计算FIRSTVT LASTVT

2)找三种关系对。

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

4)是否算符优先文法?

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

 答:

  文法为:S->a | ^ | (T)

      T->T,S | S

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

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

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

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

   (2)  三种关系对

    =

   (T)

   #S#

      <

   #S

     (T

     ,S

   >

   S#

   T)

   T,

(3)

 

a

^

(

)

,

#

a

 

 

 

 >

>

>

^

 

 

 

 >

>

>

(

<

<

<

=

<

 

)

 

 

 

 >

>

>

,

<

<

<

>

>

 

#

<

<

<

 

 

=

(4)

(5)

 

关系

输入串

动作

 

#

<

(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

=

)#

移进

 

#(N)

>

#

归约

 

#N

 

#

接受

 

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

可以只写表达式部分。

 

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

答:

三元式:(1)(-  cd

 

    (2)(* b(1)

 

    (3)(+ a(2)

 

    (4)(-  cd

 

    (5)(↑  (4)n

 

    (6)(/ e(5)

 

    (7)(+ (3)(6)

 

四元式:(-cdt1

 

    (*bt1t2

 

    (+at2t3

 

    (-cdt4

 

    (↑,t4nt5

 

    (/et5t6

 

    (+t3t6

 

逆波兰式:abcd-*ecd-n/+

posted @ 2019-12-13 11:00  董学沉啦  阅读(184)  评论(0编辑  收藏  举报