第十四次:算符优先分析

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)(* b,(1))

    (3)(+ a,(2))

    (4)(↑ (1),n)

    (5)(/ e,(4))

    (6)(+ (3),(5))

四元式:

            (1)(- c,d,t1)

    (2)(* b,t1,t2)

    (3)(+ a,t2,t3)

    (4)(↑ t1,n,t4)

    (5)(/ e,t4,t5)

    (6)(+ t3,t5)

posted @ 2019-12-13 17:14  zxf001  阅读(141)  评论(0编辑  收藏  举报