算符優先分析

1. 已知算符優先關係矩陣如下表:

 

+

*

i

(

)

#

+

>

<

<

<

>

>

*

>

>

<

<

>

>

i

>

>

   

>

>

(

<

<

<

<

=

 

)

>

>

   

>

>

#

<

<

<

<

 

=

 寫出符號串(i+i)*i#的算符優先分析過程。

文法:

S → #E#

E → E+T | T

T → T*F | F

F → (E) | i

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)

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章