算符優先分析

2022-08-31 20:36:09 字數 1693 閱讀 3964

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

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

輸出串動作

#< 

i+i*i#

移進#i

+i*i#

歸約#n

+i*i#

移進 #n+ 

i*i# 

移進 #n+i 

*i# 

歸約 #n+n 

*i# 

移進 #n+n* 

i# 移進 

#n+n*i 

# 歸約 

#n+n*n 

# 歸約 

#n+n 

# 歸約 #n#

接受2.接上個作業(p121練習1),完成4),5)兩個步驟。

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

接受3.嘗試編寫自下而上的語法分析程式。

可以只寫表示式部分。

void isleft( )

while(s[j]>q);

// 把s[j+1]…s[k]歸約為某個n;

k=j+1;

s[k]=n;

}if(s[j]k=k+1;

s[k]=a;

}}while(a!=』#』);

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

算符優先分析

算符優先分析 time limit 1000 ms memory limit 65536 kib problem description 演算法優先分析法是一種不太規範的自下而上分析方法,分析速度快,特別適用於表示式的分析。為了便於大家理解和實踐算符優先分析法,本題目先給出乙個算符優先文法,請大家構...

算符優先分析

1.已知算符優先關係矩陣如下表 ii 寫出符號串 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...

作業十四 算符優先分析

1.已知算符優先關係矩陣如下表 ii 寫出符號串 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...