第十四次:算符优先分析

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。

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

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

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

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

2)找三种关系对。

= :(T) 、#S#

< :#S 、,S 、(T

> :S# 、T) 、T,

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

4)是否算符优先文法?

答:是。

5)给出输入串(a,(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 = )# 移进
#(N) > # 归约
#N   # 接受

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

 答:

逆波兰表达式:(1) abcd-*+ecd-n↑/+

三元式:(1) (- c,d)

    (2) (↑ (1),n)

    (3) (/ e,(2))

    (4) (* b,(1))

    (5) (+ a,(4))

    (6) (+ (4),(3))

四元式:(1) (- c,d,t1)

    (2) (↑ t1,n,t2)

    (3) (/ e,t2,t3)

    (4) (* b,t1,t4)

    (5) (+ a,t4,t5)

    (6) (+ t5,t3,t6) 

猜你喜欢

转载自www.cnblogs.com/zxf001/p/12021349.html