14.算符优先分析

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

已知文法G[S]为:

S1->#S#

S->a|^|(T)

T->T,S|S

1)计算FIRSTVT和 LASTVT。

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

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

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

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

2)找三种关系对。

(1) =

#S#  

(T)

(2) <

#S

(T

,S

(3) >

S#

T)

T,

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

  a ^ ( ) , #
a       > > >
^       > > >
( < < < = <  
)       > > >
, < < <  > >  
# < < <     =

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, < ))# 移进
 #(N,(N,a  >  ))#  归约
 #(N,(N,N > ))# 归约
 #(N,(N  =  ))#   移进
 #(N(N) >  )#  归约
#(N,N >  )# 归约
 #(N =  )#  移进
 #(N) > # 归约
#N   # 接受

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

可以只写表达式部分。

 

3.给出下面语句的逆波兰式、三元式、树及四元式。

a*b+(c-d)/e 

(1)逆波兰式

a*b+(c-d)/e ==>ab*cd-e/+

(2)三元式

1)(*,a,b)

2)(-,c,d)

3)(/,2),e)

4)(+,1),3))

(3)四元式

1)(*,a,b,t1)

2)(-,c,d,t2)

3)(/,t2,e,t3)

4)(+,t1,t3,t4)

 

posted @ 2019-12-12 19:02  linyanli  阅读(311)  评论(0编辑  收藏  举报