freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[理學]new編譯原理第五章-資料下載頁

2025-02-18 20:45本頁面
  

【正文】 GEN (itr, E(1)PLACE,,U)。 GEN (opr,U,E(2)PLACE,T)。 EMODE:=r END ELSE / * E(1) MODE=r and E(2)MODE=int * / BEGIN U:=NEWTEMP。 GEN (itr, E(2) PLACE,,U)。 GEN (opr,E(1) PLACE,U,T)。 EMODE:=r END。 EPLACE:=T。 這樣 , X*2+A*(I+1) 其中 I為整型量 , X、 A為實型量 , (itr,2,,T1) (*r,X,T1 ,T2 ) (+i,I,1,T3) (itr,T3,,T4 ) (*r,A,T4,T5) (+r,T2,T5,T6) 第五章 語法制導(dǎo)翻譯及中間代碼生成 167。 自底向上語法制導(dǎo)翻譯 一、簡單算術(shù)表達式和賦 值語句的翻譯 1. 翻譯成四元式 2. 類型檢查與類型轉(zhuǎn)換 二、布爾表達式的翻譯 1. 概述 三、控制語句翻譯 goto語句的翻譯 翻譯 四、數(shù)組元素的翻譯 1. 下標變量地址的計算 五、過程語句的翻譯 六、說明語句的翻譯 第五章 語法制導(dǎo)翻譯及中間代碼生成 167。 自底向上語法制導(dǎo)翻譯 一、簡單算術(shù)表達式和賦 值語句的翻譯 1. 翻譯成四元式 2. 類型檢查與類型轉(zhuǎn)換 二、布爾表達式的翻譯 1. 概述 三、控制語句翻譯 goto語句的翻譯 翻譯 四、數(shù)組元素的翻譯 1. 下標變量地址的計算 五、過程語句的翻譯 六、說明語句的翻譯 167。 自底向上語法制導(dǎo)翻譯 二、布爾表達式的翻譯 1. 概述 布爾表達式由布爾運算符 ∧ (與 )、 ∨ (或 )和 ?(非 )等作用于布爾量或 關(guān)系表達式構(gòu)成 ,關(guān)系表達式的形式是 E1 rop E2,其中 rop是關(guān)系運算符 (如 、 =、 =、 、 =及 )。 而 E1和 E2是算術(shù)表達式 。 (1)布爾表達式的 用途 在程序設(shè)計語言中 , 布爾表達式有兩個基本 用途 : 1) 一個是求邏輯值 , 邏輯值的結(jié)果是真或假 。 2) 另一個用得最多的是在控制語句中用作條件表達式 , 例如 , 在 ifthen、 ifthenelse和 whiledo語句里表示控制條件 。 (2)布爾表達式的文法 布爾表達式文法 G[ E]如下 : E∷ =E∧ E|E∨ E| ? E|(E)|i|i rop i 說明: 1) 布爾表達式的文法是一個二義文法 例如:該文法的一個句子 a ∧ b ∨ c有兩棵不同的語法樹與之對應(yīng),所以該文法是一個二義文法。 E E E ∨ E E ∧ a b c E E E ∧ a E E ∨ b c 2) 規(guī)定布爾運算符的優(yōu)先順序是 : ? 、 ∧ 、 ∨ 。并假定 ∧ 和 ∨ 為左結(jié)合。 所有關(guān)系運算符優(yōu)先級相同 ,且高于任何布爾運算符 ,低于算術(shù)運算符。 3) i可認為是布爾表達式也可視為數(shù)值( 1為真 true,0為假 false)。 4) i rop i 中 rop是 關(guān)系運算符, i是布爾變量或算術(shù)值 (3)布爾表達式求值 方法 1) 把真和假數(shù)值化,使布爾表達式計算類似于算術(shù)表達式的計算, 常用 1表示真, 0表示假,或者用非零整數(shù)表示真 。 如: 1∨ ( ? 0∧ 0) ∨ 0= 1∨ ( 1∧ 0) ∨ 0= 1∨ 0∨ 0=1 2) 采取某種優(yōu)化措施,有時并不需要將一個布爾表達式從頭算到尾, 而只須計算它的一個子表達式, 便能確定整個布爾表達式真和假。 例如,對于 A∨ B,只要計算出 A為真,則不管 B值如何, A∨ B之值 一定為真。又如對 A∧ B,只要計算出 A為假,則 A∧ B必然為假,等等。 對于三種邏輯運算 , A∨ B: if A then true else B A∧ B: if A then B else false ? A: if A then false else true 用這種方式實現(xiàn)控制語句的布爾表達式尤其方便 。 對應(yīng)上述兩種 計算方法 , 其布爾表達式有兩種不同的翻譯方法 。 第五章 語法制導(dǎo)翻譯及中間代碼生成 167。 自底向上語法制導(dǎo)翻譯 一、簡單算術(shù)表達式和賦 值語句的翻譯 1. 翻譯成四元式 2. 類型檢查與類型轉(zhuǎn)換 二、布爾表達式的翻譯 1. 概述 三、控制語句翻譯 goto語句的翻譯 翻譯 四、數(shù)組元素的翻譯 1. 下標變量地址的計算 五、過程語句的翻譯 六、說明語句的翻譯 167。 自底向上語法制導(dǎo)翻譯 二、布爾表達式的翻譯 ( 1) 如同翻譯算術(shù)表達式一樣,用于求值 例如, 布爾表達式 ? a∧ (b∨ c=d)將被翻譯成如下四元式: 1) (? ,a,,T1) 2) (=,c,d,T2) 3) (∨ ,b,T2,T3) 4) (∧ ,T1,T3,T4) 仿照翻譯算術(shù)表達式的方法,很容易寫出布爾表達式文法 G[ E]的 每個規(guī)則 用于求值的 語義動作 。 (1) E∷ = E(1) ∧ E(2) {EPLACE:=NEWTEMP。 GEN(∧ ,E(1) PLACE, E(2)。 PLACE ,EPLACE)} (2) E∷ = E(1) ∨ E(2) {EPLACE:=NEWTEMP。 GEN(∨ ,E(1) PLACE, E(2).PLACE ,EPLACE)} (3) E∷ = ? E(1) {EPLACE:=NEWTEMP; GEN( ? , E(1)PLACE, ,EPLACE)} (4) E∷ =( E(1) ) {EPLACE:= E(1) PLACE } (5) E∷ =i {EPLACE:=ENTRY( i) } (6) E∷ =i rop i {EPLACE:=NEWTEMP。 GEN(rop,ENTRY(i(1)),ENTRY(i(2)),)}} (2)作為條件控制的布爾表達式的翻譯 1)布爾表達式 E作為條件控制的代碼結(jié)構(gòu) 對于條件語句 if E then S1 else S2 中布爾表達式 E,它的作用就是控制 S1和 S2的選擇, 我們賦于 E代碼 兩種出口,其一為“真出口”,另一個是“假出口”,它們分別指出 當 E值為 true和 false時,控制轉(zhuǎn)向的目標 (即某一四元式所在位置或 序號 )。條件語句可翻譯成如 下圖: E的代碼 S1的代碼 true false S2的代碼 2)三種形式的四元式 作為條件控制的布爾表達式 E的翻譯歸納起來只有三種形式的四元式 (jnz, a1, ,p) 若 a1為真時 ,則轉(zhuǎn)向第 p個四元式。 (jrop,a1,a2, p) 若關(guān)系 a1 rop a2成立時 ,轉(zhuǎn)向第 p個四元式。 (j, , ,p) 無條件轉(zhuǎn)向第 p個四元式 。 除上述兩種真轉(zhuǎn)外 , 可用無條件表示假轉(zhuǎn) 例如 , if a∨ b c then S1 else S2 經(jīng)翻譯后 , 可得如下四元式序列: (1) (jnz,a, ,5) (2) (j, , ,3) (3) (j,b,c,5) (4) (j, , ,p+1) (5) (關(guān)于 S1的四元式序列 ) (P) (j, , ,q) (p+1) (關(guān)于 S2的四元式序列 ) (q) ( 1) a為真, a∨ bc就為真,轉(zhuǎn) 5執(zhí)行 ( 2) a為假, a∨ bc的值取決于 bc的值,所以轉(zhuǎn) 3執(zhí)行 ( 3) a為假,且 bc,則 a∨ bc為真,轉(zhuǎn) 5執(zhí)行 ( 4) a為假,且 bc也是假,則 a∨ bc為假,執(zhí)行 S2語句,即應(yīng)轉(zhuǎn) p+1執(zhí)行 ( p)執(zhí)行完 S1(對應(yīng)四元式為( 5))則應(yīng)轉(zhuǎn)到條件語句的下一條語句執(zhí)行,所以無條件跳轉(zhuǎn)到( q)執(zhí)行。 四元式 (1)~ (4)中顯然含有多余的四元式,如 (2)顯然是不需要 。 第五章 語法制導(dǎo)翻譯及中間代碼生成 167。 自底向上語法制導(dǎo)翻譯 一、簡單算術(shù)表達式和賦 值語句的翻譯 1. 翻譯成四元式 2. 類型檢查與類型轉(zhuǎn)換 二、布爾表達式的翻譯 1. 概述 三、控制語句翻譯 goto語句的翻譯 翻譯 四、數(shù)組元素的翻譯 1. 下標變量地址的計算 五、過程語句的翻譯 六、說明語句的翻譯 167。 自底向上語法制導(dǎo)翻譯 二、布爾表達式的翻譯 ( 1) 回填 在自底向上的語法制導(dǎo)翻譯過程中 , 在產(chǎn)生一個條件或無條件轉(zhuǎn)移 四元式時 , 它所要轉(zhuǎn)移到的那個四元式尚未產(chǎn)生 , 故無法立即產(chǎn)生一 個完全控制轉(zhuǎn)移四元式 。 例如 , 對于上例 , 在產(chǎn)生第一個四元式時 , 因為語句 S1的中間代碼尚未產(chǎn)生 , 故此時只得產(chǎn)生一個空缺轉(zhuǎn)移目標 的四元式 (jnz,a, ,0), 且將此四元式的序號作為語義信息存起來 , 待開始翻譯語句 S1時 , 再將 S1的第一個四元式序號 (即 5)填入這個不 完全條件轉(zhuǎn)移四 元式中 。 我們把這種事后再填轉(zhuǎn)移目標叫做回填 。 ( 2) 真鏈 T和假鏈 F 在翻譯過程中 , 有時會存在著若干個轉(zhuǎn)移四元式 ,如例中的 1和 3兩個四元式 , 它們有同一個轉(zhuǎn)移目標 5,但此目標的具體位置在形成四元式時還不知道 , 此時 , 我們將這些四元式鏈接起來 , 并且用一個指示器指示這條鏈的鏈頭 , 以后 , 便可以從鏈頭開始 ,沿著這條鏈逐個為其中各四元式填入轉(zhuǎn)移目標 。 (1) (jnz,a, ,5) (2) (j, , ,3) (3) (j,b,c,5) (4) (j, , ,p+1) (5) (關(guān)于 S1的四元 式序列 ) (P) (j, , ,q) (p+1) (關(guān)于 S2的四 元式序列 ) (q) 167。 自底向上語法制導(dǎo)翻譯 二、布爾表達式的翻譯 在實際操作時, 1) 將要填真出口的各四元式鏈接起來,組成一個鏈稱 真鏈 T ,記為 TC 2) 將要填假出口的各四元式鏈接起來,組成一個鏈稱 假鏈 F ,記為 FC 首先定義兩個語義變量 T鏈和 F鏈的鏈頭。 如下圖: 鏈中各個四元式 RESULT字段為相應(yīng)結(jié)點指針字段,當其不為零時,它是 鏈中后繼四元式的序號如( 2)中的 3,否則,相應(yīng)四元式是鏈尾結(jié)點,如( 1)中的 0 (1) (jnz, a, , 0) (2) (j , , ,3) ETC → (3) (j, b, c, 1) EFC → (4) (j , , ,0) (5) (3)改寫布爾表達式文法 G[E] 為了使用語法制導(dǎo)翻譯做回填工作,便于編制相應(yīng)的語義子程序, 我們對上面布爾表達式文法 G[ E]改寫為 E∷ =E∧ E|E∨ E | ? E|(E)|i|i rop i E∧ ∷ =E∧ E∨ ∷ =E∨ 這樣,當掃描到 E∧ 和 E∨ 并歸約到 E∧ 和 E∨ 時 就可以及時回填 ,知道真假出口,如果不是這樣改寫,當掃描到 E∧ 和 E∨ 時,還不能歸約,因此就不能及時回填。 ( 4) 文法 G[E]各規(guī)則語義子程序 1
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1