其他分享
首页 > 其他分享> > 算符优先分析

算符优先分析

作者:互联网

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

 

+

*

i

(

)

#

+

>

<

<

<

>

>

*

>

>

<

<

>

>

i

>

>

   

>

>

(

<

<

<

<

=

 

)

>

>

   

>

>

#

<

<

<

<

 

=

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

 

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

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

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

4)是否算符优先文法?

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

 

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

可以只写表达式部分。

 

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

----------------------------------------------------------------------------------------------------------------------------------------------

(i+i)*i#

 

 

关系

输入串

动作

1

#

<

( 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

 

#

接受

 

 

 

2.已知文法:

S -> a | ^ | (T)

T -> T , S | S

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

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

4)是否算符优先文法?

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

 

 

因为:

E -> #S#

S -> a | ^ | (T)

T -> T , S | S

 

(1) 计算FIRSTVT和 LASTVT。

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

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

 

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

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

 

 

(2) 找三种关系对。

= :

#S#

(T)

 

< :

#S

(T

,S

 

> :

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 ,

<

a ) ) #

移进

 

# ( N , ( N , a

>

) ) #

归约

 

# ( N , ( N , N

<

) ) #

移进

 

# ( N , ( N , N )

>

) #

归约

 

# ( N , ( N )

<

) #

移进

 

# ( N , ( N ) )

 

#

接受

 

 

 

 

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

可以只写表达式部分。

 

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

逆波兰表达式

abcd-*+ ecd-n/ +

 

三元式

(1) ( - , c , d )

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

(3) ( + , a , (2) )

(4) ( - , c , d )

(5) (  , (4) , n )

(6) ( / , e / (5) )

(7) ( + , (3) , (6) )

 

四元式

(1) ( - , c , d , t1 )

(2) ( * , b , t1 , t2 )

(3) ( + , a , t2 , t3 )

(4) ( - , c , d , t4 )

(5) (  , t4 , n ,t5 )

(6) ( / , e , t5 , t6 )

(7) ( + , t3 , t6 )

标签:分析,算符,优先,移进,关系,归约,表达式
来源: https://www.cnblogs.com/q1uj1e/p/12021592.html