算符优先分析

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

 

+

*

i

(

)

#

+

>

<

<

<

>

>

*

>

>

<

<

>

>

i

>

>

   

>

>

(

<

<

<

<

=

 

)

>

>

   

>

>

#

<

<

<

<

 

=

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

文法:

S → #E#

E → E+T | T

T → T*F | F

F → (E) | i

算符优先分析_第1张图片

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

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

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

4)是否算符优先文法?

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

答:

(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)

算符优先分析_第2张图片

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

可以只写表达式部分。

 

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

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

三元式:

(1) ( - , c , d )

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

(3) ( / , e , (1) )

(4) ( ↑ , (3) , n )

(5) ( + , a , (2) )

(6) ( + , (5) , (4) )

四元式:

( - , c , d , (1) )

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

( / , e , (1) , (3) )

( ↑ , (3) , n , (4) )

( + , a , (2) , (5) )

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

 

 

你可能感兴趣的:(算符优先分析)