編譯原理課件:Chapter-5 語法制導(dǎo)翻譯技術(shù)_第1頁
編譯原理課件:Chapter-5 語法制導(dǎo)翻譯技術(shù)_第2頁
編譯原理課件:Chapter-5 語法制導(dǎo)翻譯技術(shù)_第3頁
編譯原理課件:Chapter-5 語法制導(dǎo)翻譯技術(shù)_第4頁
編譯原理課件:Chapter-5 語法制導(dǎo)翻譯技術(shù)_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1第五章 語法制導(dǎo)翻譯技術(shù)1. 翻譯文法(TG)2. 語法制導(dǎo)翻譯3. 屬性翻譯文法(ATG)4. 自頂向下的語法制導(dǎo)翻譯5. 自底向上的語法制導(dǎo)翻譯25.0 本章導(dǎo)言詞法分析,語法分析: 解決單詞和語言成分的識別及詞法和語法結(jié)構(gòu)的檢查。語法結(jié)構(gòu)可形式化地用一組產(chǎn)生式來描述。給定一組產(chǎn)生式,我們應(yīng)該能夠?qū)⑵浞治銎鳂?gòu)造出來。 本章要介紹的是語義分析和代碼生成技術(shù)。程序語言的語義形式化描述目前有三種基本描述方法,即: 操作語義 指稱語義 公理語義35.1 翻譯文法和語法制導(dǎo)翻譯有上下無關(guān)文法G E : 1. E E + T 4. T F 2. E T 5. F ( E ) 3. T T * F 6

2、. F i此文法是一個中綴算術(shù)表達式文法翻譯的任務(wù)是: 中綴表達式 逆波蘭表示 a + b * c a b c * +假如我們的翻譯任務(wù)是要將中綴表達式簡單變換為波蘭后綴表示,只需在上述文法中插入相應(yīng)的動作符號。41. E E + T + 4. T F2. E T 5. F ( E )3. T T * F * 6. F i i其中: +,*,i 為動作符號。 為動作符號標記,其后為字符串。 在該具體例示中,其對應(yīng)語義子程序的功能是要輸出打印動作符號標記后面的字符串。 所以產(chǎn)生式1:EE + T + 的語義是分析 E, + 和 T 輸出 + 產(chǎn)生式6:Fi i 分析 i 輸出 i1. E E +

3、 T 4. T F2. E T 5. F ( E )3. T T * F 6. F i5下面給出輸入文法和翻譯文法的概念: 輸入文法:未插入動作符號時的文法。 由輸入文法可以通過推導(dǎo)產(chǎn)生輸入序列。 翻譯文法:插入動作符號的文法。 由翻譯文法可以通過推導(dǎo)產(chǎn)生活動序列 輸入序列動作序列6 例:( i + i ) * i 可以用輸入文法推出: E T T * F F * F ( E ) * F ( E + T ) * F ( i + i ) * i* 用相應(yīng)的翻譯文法推導(dǎo),可得: E T T * F * F * F * ( E ) * F * ( E + T + ) * F * ( i i + i

4、i +) * i i * 1. E E + T + 4. T F2. E T 5. F ( E )3. T T * F *6. F i i1. E E + T4. T F2. E T5. F ( E )3. T T * F 6. F i7活動序列:由翻譯文法推導(dǎo)出的符號串,由終結(jié)符和動作符號組成。從活動序列中,抽去動作符號則得輸入序列(i + i ) * i從活動序列中,抽去輸入序列,則得動作序列。執(zhí)行動 作序列,則完成翻譯任務(wù): i i + i * i i + i * 定義5.1 翻譯文法是上下文無關(guān)文法,終結(jié)符號集由輸入符號和動作符號組成。 由翻譯文法所產(chǎn)生的終結(jié)符號串稱為活動序列。( i

5、 i + i i + ) * i i *8以上例題中的翻譯文法為: GT = ( Vn , Vt , P, E ) Vn = E, T, F Vt = i, +, *, ( , ), +, *, i P = EE + T +, ET, TT * F *, TF, F( E ), Fi i 符號串翻譯文法:輸入文法中的動作符號對應(yīng)的語義子程序是輸出動作符號標記后的字符串的文法。語法制導(dǎo)翻譯:按翻譯文法進行的翻譯 給定一輸入符號串,根據(jù)翻譯文法獲得翻譯該符號串的動作序列,并執(zhí)行該序列所規(guī)定的動作過程。9語法制導(dǎo)翻譯的實現(xiàn)方法: 翻譯文法所定義的翻譯是由輸入序列和動作序列組成的對偶集。 在文法的適當

6、位置插入語義動作符號。當按文法分析到動作符號時就調(diào)用相應(yīng)的語義子程序,完成翻譯任務(wù)如:( i + i ) * i, i i + i * i ii * i + i * i i i i * + i i i *因此,給定一個翻譯文法,就給定了一個對偶集。105.2 屬性翻譯文法 在翻譯文法的基礎(chǔ)上,我們可以進一步定義屬性文法。 翻譯文法中的符號,包括終結(jié)符、非終結(jié)符和動作符號均可帶有屬性,這樣能更好地描述和實現(xiàn)編譯過程。屬性可以分為兩種:綜合屬性繼承屬性11 5.2.1 綜合屬性基本操作數(shù)帶有屬性的表達式文法GE 1. EE + F 4. TF 2. ET 5. F( E ) 3. TT * F 6

7、. Fi C 其中C 是綜合屬性符號, 為綜合屬性標記,c為屬性變量或者屬性值。此文法能夠產(chǎn)生如下的輸入序列: (i 3 i 9 ) * i 212根據(jù)給定的文法,可寫出該輸入序列的語法樹ET*TFF(E)E+TTFi 3i 2 Fi 9自底向上地計算屬性E 24 T 24*T 12 F 2 F 12 (E 12 )E 3+T 9T 3F 3i 3i 2 F 9i 9用表示屬性計算是自底向上的。稱為綜合屬性。13 為了形式地表示上述表達式的屬性求值過程,我們可以改寫上述文法: 產(chǎn)生式 求值規(guī)則1. E p4 E q5 + T r2 (q5 := p3;) p4 := q5 + r2 ;2. E

8、 p3 T q4 p3 := q4 ;3. T p2 T q3 * F r1 p2 := q3 * r1 ;4. T p2 F q2 p2 := q2 ;5. F p1 ( E q1 ) p1 := q1 ; 6. F p1 i q1 p1 := q1 ;說明: p, q, r 為屬性變量名。屬性變量名局限于每個產(chǎn)生式,可使用不同的名字。求值規(guī)則:綜合屬性是自右向左,自底向上。145.2.2 繼承屬性 考慮到下列文法:G : Type id ,id 其中 Type: 類型名,值為integer, real, boolean等,詞法分析程序返回的類型的類別碼。 id: 變量(值:標識符本身) 對

9、于上述文法的說明語句:integer A, B1 該文法的翻譯任務(wù):將聲明的變量填入符號表(語義) 完成該工作的動作符號:set_table符號表A 整型B1 整型15翻譯文法: Type id set_table ,id set_table 填表時需要的信息:類型、名字、以及位置(可以用全程變量的指針)如何得到? 終結(jié)符(輸入符號)的類型和名字在詞法分析時得到,可設(shè)兩個綜合屬性。 Type t t 中是類型值 id n n 是變量名set_table的插入位置表示填表動作的時機16 Typet t 中是類型值 idn n 是變量名填表動作符號也可帶有屬性: set_tablet1 , n1

10、t1, n1可從其前面的符號得到,稱為繼承屬性,繼承前面符號的值。 t 2 t2 同上屬性翻譯文法:1. Typet idn set_tablet1, n1 t2 t2, t1:= t; n1:= n; 2. t2 ,id n set_tablet1, n1 t3 t3, t1:= t2; n1:= n;3. t1 17例:int A, BC Type int id A , idBC 語法樹: Typeint id A set_tableint, A int , idBC set_tableint, BC int 繼承屬性求值規(guī)則:自左向右,自頂向下。1. Typet idn set_tabl

11、et1, n1 t2 t2, t1:= t; n1:= n; 2. t2 ,id n set_tablet1, n1 t3 t3, t1:= t2; n1:= n;3. t1 18 符號表 BC int A int p int A, BC 的分析翻譯過程: Type t id n1 set_tablet, n1 t Type t id n1 set_tablet, n1 , id n2 set_tablet, n2+ p p195.2.3屬性文法的自頂向下翻譯 ( 一 ) L-屬性翻譯文法(L-ATG) 這是屬性翻譯文法中較簡單的一種。其輸入文法要求是 LL(1)文法,可用自頂向下分析方法構(gòu)造

12、分析器。在分析過程中可進行屬性求值。特點: 某個符號的繼承屬性只依賴于該符號左邊的信息!20定義5.2: L-屬性翻譯文法是帶有下列說明的翻譯文法: 1. 文法中的終結(jié)符,非終結(jié)符及動作符號都帶有屬性,且每個屬性都有一個值域。 2. 非終結(jié)符及動作符號的屬性可分為繼承屬性和綜合屬性。 3. 開始符號的繼承屬性具有指定的初始值。 4. 輸入符號(終結(jié)符號)的每個綜合屬性具有指定的初始值。 5. 屬性值的求值規(guī)則如下:21屬性求值規(guī)則:繼承屬性體現(xiàn)自頂向下,自左向右的求值特性。 產(chǎn)生式左部非終結(jié)符號的繼承屬性值,取前面產(chǎn)生式右部該符號已有的繼承屬性值。 產(chǎn)生式右部符號的繼承屬性值,用該產(chǎn)生式左部符

13、號的繼承屬性或出現(xiàn)在該符號左部的符號的屬性值進行計算。22綜合屬性體現(xiàn)自底向上,自右向左的求值特性。 產(chǎn)生式右部非終結(jié)符號的綜合屬性值,取其下部產(chǎn)生式左部同名非終結(jié)符號的綜合屬性值。 產(chǎn)生式左部非終結(jié)符號的綜合屬性值,用該產(chǎn)生式左部符號的繼承屬性或某些右部符號的(任意)屬性進行計算。 動作符號的綜合屬性用該符號的繼承屬性或某些右部符號的(任意)屬性進行計算。 適合在自頂向下分析過程中求值。23例:ABC 求值順序:1) A的繼承屬性 (若A為開始符號,則有指定值;否則由上面產(chǎn)生式右部符號A的繼承屬性求得)2) B的繼承屬性 (由A的繼承屬性求得)B的綜合屬性 (由下面產(chǎn)生式中左部符號為B的綜合

14、屬性求得)4) C的繼承屬性 (由A的繼承屬性和B的屬性求得)C的綜合屬性 (由下面產(chǎn)生式中左部符號為C的綜合屬性求得)6) A的綜合屬性 (由A的繼承屬性或產(chǎn)生式某些右部符號屬性求得) 產(chǎn)生式左部非終結(jié)符號的綜合屬性值,用該產(chǎn)生式左部符號的繼承屬性或某些右部符號的(任意)屬性進行計算。24注意:終結(jié)符只有綜合屬性(它們由詞法分析器提供)。非終結(jié)符和動作符號既可以有綜合屬性也可有繼承屬性。文法開始符號的所有繼承屬性作為屬性計算前的初始值。一般來說,對出現(xiàn)在產(chǎn)生式右邊的繼承屬性和出現(xiàn)在產(chǎn)生式左邊的綜合屬性都必須提供一個求值規(guī)則。屬性求值規(guī)則中只能使用相應(yīng)產(chǎn)生式中的文法符號的屬性(這有助于在產(chǎn)生式

15、范圍內(nèi)“封裝”屬性的依賴性)。但出現(xiàn)在產(chǎn)生式左邊的繼承屬性和出現(xiàn)在產(chǎn)生式右邊的綜合屬性不由所給的產(chǎn)生式的屬性求值規(guī)則進行計算。它們由其它產(chǎn)生式的屬性規(guī)則計算。25輸入文法屬性翻譯文法(字符串)翻譯文法26 (二) 簡單賦值形式的L-屬性翻譯文法(SL-ATG) 一般情況 x := f ( y , z ) x的屬性值是y和z的屬性值的函數(shù) SL-ATG: x := 某符號的屬性值或常量 例 x := y x, y, z := 17 稱為復(fù)寫規(guī)則為了實現(xiàn)上的方便,常希望文法符號的屬性求值規(guī)則為上述簡單形式的。為此,我們對現(xiàn)有的L-ATG的定義做一點改變,從而形成一個稱為簡單賦值形式的L-ATG。2

16、7定義5.4 一個L-ATG被定義為簡單賦值形式的(SL-ATG),當且僅當滿足如下條件: 1. 產(chǎn)生式右部符號的繼承屬性是一個常量,它等于左部符號的繼承屬性值,或等于出現(xiàn)在所給符號左部某個符號的綜合屬性值。 2. 產(chǎn)生式左部非終結(jié)符號的綜合屬性是一個常量,它等于其自身的繼承屬性值或等于右部某個符號的綜合屬性值。目的:一個簡單賦值形式的L-ATG除動作符號外,其余符號的屬性求值規(guī)則右部是屬性或是常量(簡單化)。28 L-ATG SL-ATG 給定一個L-ATG,如何找一個等價的賦值形式的L-ATG?考慮產(chǎn)生式: a R S I I := f ( R , S ) 顯然: 綜合屬性求值規(guī)則不是簡單

17、賦值形式的,因為它需要 對 f 求值。29第一步:設(shè)動作符號“ f ” 表示函數(shù) f 求值,該動作符 號有兩個繼承屬性和一個綜合屬性。 f I1, I2 S1 S1 := f ( I1, I2 )第二步:修改產(chǎn)生式插入“ f ” 到右部的適當位置引進新的復(fù)寫規(guī)則(將R , S 賦給I1和I2, f 值賦給S1 )刪去原有包含 f 的規(guī)則a R S f I1, I2 S1 I , I1 := R , I2 := S, S1 := f ( I1, I2 ), I := S1 該文法是簡單賦值形式的L-ATG。305.3 自頂向下語法制導(dǎo)翻譯 先介紹翻譯文法的自頂向下翻譯,然后介紹屬性翻譯文法的自頂

18、向下翻譯。5.3.1 翻譯文法的自頂向下翻譯遞歸下降翻譯器 5.3.2 屬性翻譯文法的自頂向下翻譯的實現(xiàn)遞歸下降翻譯器31例:輸入文法 a b c b 5.3.1 翻譯文法的自頂向下翻譯遞歸下降翻譯器 按翻譯要求,在文法中插入語法動作符號,在分析過程中調(diào)用相應(yīng)的語義處理程序,完成翻譯任務(wù)。翻譯文法(符號串翻譯文法) a x b z c y u b w32例:輸入文法 a b c b 翻譯文法(符號串翻譯文法) a x b z c y u b w主程序 NEXTSYM; PROCS; if CLASS 右界符 then ERROR; ACCEPT; 過程 PROCS case CLASS of

19、a : P1; b : P2; 其它:ERROR; end of case; 主程序 NEXTSYM; PORCS; if CLASS # then ERROR; ACCEPT;過程 PROCS case CLASS of a : P1 ; b : P2 ; 其它:ERROR; end of case;33例:輸入文法 a b c b 翻譯文法(符號串翻譯文法) a x b z c y u b wP1: / *產(chǎn)生式的代碼 * / NEXTSYM; PROCA; PROCS; RETURN;P2: NEXTSYM; RETURN;過程 PROCA P1: NEXTSYM; PROCA; OUT

20、( x ) ; PROCS; RETURN;P2: NEXTSYM; OUT( z ) ; RETURN;過程 PROCA 34根據(jù)上一章所學(xué)知識,構(gòu)造如下文法的LL(1)分析器。5.3.1 翻譯文法的自頂向下翻譯LL(1)abc#124365POP; PUSH(DcB); NEXTSYM;POP; NEXTSYM;POP; NEXTSYM;POP; PUSH(A); NEXTSYM;POP; PUSH(D); NEXTSYM;POP; NEXTSYM;例:輸入文法 a c b c a c b 35根據(jù)字符串翻譯的具體語義,在適當位置添加動作符號。對應(yīng)地,分析表中的語義動作也發(fā)生了改變。符號串

21、翻譯文法 v a w x c y z b c r a m c n s b abc#124365OUT(vw); POP; PUSH(z D y c x B); NEXTSYM;POP; NEXTSYM;OUT(r); POP; NEXTSYM;OUT(m); POP; PUSH(A); NEXTSYM;POP; PUSH(n D); NEXTSYM;OUT(s); POP; NEXTSYM;36 a c # v a w x c y z動作前#c動作后#zycx加入語義動作后37(字符串)翻譯文法自頂向下翻譯程序的設(shè)計: 構(gòu)造遞歸下降翻譯器或LL(1)翻譯器的關(guān)鍵是要根據(jù)輸入文法構(gòu)造出相應(yīng)的翻譯

22、文法。該翻譯文法要能正確地定義輸入語言到目標語言的翻譯。有了這種翻譯文法,根據(jù)語法制導(dǎo)翻譯原理和第四章語法分析的知識,就不難構(gòu)造出相應(yīng)的翻譯器。38方法:對于每個非終結(jié)符號都編寫一個翻譯子程序(過程)。根據(jù)該非終結(jié)符號具有的屬性數(shù)目,設(shè)置相應(yīng)的參數(shù)。 U x, y 繼承屬性:聲明為賦值形參 Procedure U ( x, y ); 綜合屬性:聲明為變量形參 x賦值形參 y變量形參 5.3.2 屬性文法自頂向下翻譯的實現(xiàn)遞歸下降翻譯 我們把處理翻譯文法的遞歸下降翻譯器進行適當擴展,便可得到處理屬性(翻譯)文法的遞歸下降翻譯器。39過程調(diào)用語句的實參: 繼承屬性 : 繼承屬性值(傳實參值) 綜合

23、屬性 : 屬性變量名(傳地址,返回時有值)關(guān)于屬性名的約定:1) 具有相同值的屬性取相同的屬性名。 (這樣可省去不少屬性求值規(guī)則)2) 產(chǎn)生式左部的同名非終結(jié)符使用相同的屬性名。(遞歸下降分析法規(guī)定每個非終結(jié)符只編寫一個子程序!) 具有簡單賦值形式的屬性變量名取相同的屬性名,可刪去屬性求值規(guī)則。 a b e I J x y e I J x y z w x y z w i a b c b, c := a i x x x40例: Typet idn set_tablet1, n1 t2 t2, t1:= t; n1:= n; Typet idn set_tablet, n t41例:有如下屬性翻譯

24、文法G R1 aT1 Q1 xT2 , R2 Q2 R2 := R1, T2 := T1, Q2 := Q1 R1 b zR2 R2 := R1 P cU1 yU2 Q Z vP b U2 := U1, P := Q + U1, Z := U1 - 3 P w P := 8下面通過一個例子,詳細介紹如何構(gòu)造屬性文法的遞歸下降翻譯器。(該文法應(yīng)是具有L-屬性的符號串翻譯文法)。42簡化后的屬性翻譯文法G R aT Q xT , R Q R b zR P cU yU Q Z vP b P := Q + U, Z := U - 3 P w P := 8對簡單賦值形式的屬性變量取相同的屬性名,其求值規(guī)

25、則可以刪去。開始符號的繼承屬性 R = 7。43全局變量的過程聲明:CLASS; / * 存放單詞類別碼 * /TOKEN; / * 存放單詞值 */NEXTSYM; / * 詞法分析程序。每調(diào)用一次,單詞類別碼 CLASS, 單詞值 TOKEN,該符號指針指向下一個單詞 */主程序: NEXTSYM; /* CLASS = 第一個輸入符號的類型; TOKEN = 第一個輸入符號的值; */ PROCS(7); if CLASS 右界符 then ERROR; ACCEPT;R aT Q xT , R Q R b zRP cU yU Q Z vP b P := Q + U, Z := U -

26、3P w P := 844過程 PROCS(R) R; /* 值形參聲明 */ case CLASS of a: P1 ; b: P2 ; 其它:ERROR; end of case; P1 : / * 產(chǎn)生式 1 的代碼 * / T , Q ; / * 局部變量聲明 * / T := TOKEN; / * 詞法分析得到的單詞值,賦給終結(jié)符的綜合屬性 * / NEXTSYM; PROCA(Q) / * 這里的為變量地址,從A返回時應(yīng)當有值 * / OUT( XT, R ); PROCS(Q) / * 這里的已有具體值 * / RETURN;R aT Q xT , R Q R b zR45 P2

27、: NEXTSYM; OUT( ZR ); RETURN;過程 PROCA(P) P; /*變量形參聲明*/ case CLASS of c: P3 其它:P4 end of case;2. R b zR3. P cU yU Q Z vP b P := Q + U, Z := U - 34. P w P := 846 P3: U , Q , Z ; /* 局部變量聲明*/ U := TOKEN; NEXTSYM; Z := U 3 ; /* 插在U已知,使用Z之前。 */ OUT( yU ); PROCA(Q); /* 返回后有值*/ P := Q + U; /* 插在Q, U已知,使用P之前

28、。 */ PROCS(Z); OUT( vP ); if CLASS b then ERROR; NEXTSYM; RETURN;P cU yU Q Z vP b P := Q + U, Z := U - 347P4: P:=8; OUT(w); RETURN; 4. P w P := 848翻譯的輸入: 算術(shù)表達式 a + b翻譯的輸出: 四元組 ADD , Pa , Pb , Pr Pa , Pb , Pr 為變量a , b和結(jié)果單元的地址(由編譯分配)。表達式: ( a + b ) * c輸入: ( id 1 + id 2 ) * id 4 id由詞法分析程序返回,1 詞法綜合屬性, 為

29、變量數(shù)據(jù)區(qū)地址 (由翻譯分配)。輸出: ADD, 1, 2, 3 MULT, 3, 4, 5例:構(gòu)造將算術(shù)表達式翻譯成四元組的屬性翻譯文法,并寫出遞歸下降分析程序。由該屬性翻譯文法來描述翻譯過程。5.4 一個例子數(shù)據(jù)區(qū):12435部分結(jié)果部分結(jié)果abc49翻譯文法設(shè)計: E E + T ADD T F E T F ( E ) T T * F MULT F id在文法中的插入位置:在分別處理完成兩個操作數(shù)之后。輸入序列:( a + b ) * c翻譯文法產(chǎn)生的活動序列: ( a + b ADD ) * c MULT動作符號序列:ADD MULT 反映生成四元式的順序,也即語法分析 過程中語義程序

30、的調(diào)用順序。其中:ADD為輸出ADD四元式的動作符號 MULT為輸出MULT四元式的動作符號對應(yīng)于完成翻譯 中語義動作程序50屬性翻譯文法的設(shè)計 在翻譯文法的基礎(chǔ)上可設(shè)計其屬性翻譯文法,以便語義分析過程中生成完整的四元式,完成翻譯。輸入符號(操作數(shù))有一綜合屬性,它是該符號在數(shù)據(jù)區(qū)的地址。每個非終結(jié)符有一個綜合屬性,該屬性是由它產(chǎn)生的代表該子表達式在數(shù)據(jù)區(qū)中的地址(中間結(jié)果)。動作符號有三個繼承屬性,它們分別是左右操作數(shù)和運算結(jié)果在數(shù)據(jù)區(qū)的地址。 這樣可得表達式的屬性翻譯文法 可將中綴表達式翻譯成四元式51x, p := NEW y := q z := rx := px, p := NEW y

31、 := q z := rx := px := px := pE x E q + T r ADD y , z , p E x T P T x T q *F r MULT y , z , p T x F P F x (E P )F x id P 說明: id 的綜合屬性 P 是數(shù)據(jù)區(qū)地址。NEW為系統(tǒng)過程,返回的數(shù)據(jù)區(qū)地址。52反映屬性求值的語法樹: E 5 T 5 T 3 * F 4 F 3 MULT 3 , 4 , 5 ( E 3 ) E 1 + T 2 T 1 F 2 F 1 id 2 ADD 1 , 2 , 3 id 153語義動作程序ADD y , z , p fprint (objfi

32、le, “ADD”, y, z, p, “%d %d %d n”) 作業(yè):P193 1.只做前綴式;2.(, ) ; 3. 4. 編寫遞歸下降翻譯程序 (自己編寫!)54例如有文法:1. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;C5C3C2*+#+*C#111acc2345.5 屬性翻譯文法的自頂向下翻譯的實現(xiàn)LL(1)

33、分析法# 符號棧分析表待輸入字符串551. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;rANSWERPRA2A1MULTRA2A1ADD每個非終結(jié)符和動作符號所占用的棧空間大小所有符號入棧時,應(yīng)當將符號本身連同其屬性一起入棧!56#1. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 :

34、= q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;C5C3C2*+#+*C#111234初始狀態(tài):57#ANSWER1. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P

35、C q P := q;C5C3C2*+#+*C#11123458#ANSWERADD1. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;C5C3C2*+#+*C#111234591. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2,

36、P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;+*C#111234C5C3C2*+#ANSWERADDMULT601. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;+*C#111234C5C3C2*+#ANSWERADDMULT(&) C2數(shù)據(jù)區(qū):2611. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2 := r, R := A1 + A2, P := R 3. P * q r MULTA1, A2 R A1 := q , A2 := r , R := A1 * A2, P := R4. P C q P := q;+*C#111234C5C3C2*+#ANSWERADD2MULT(&) C3數(shù)據(jù)區(qū):2621. p ANSWERr r := p2. P + q r ADDA1, A2 R A1 := q , A2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論