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

正文內(nèi)容

[理學]第5章語法制導翻譯及中間代碼(編輯修改稿)

2025-02-10 17:37 本頁面
 

【文章內(nèi)容簡介】 進行類型轉(zhuǎn)換。 S→id:=E if =int amp。 =int then GEN(:=, , , ) Else if =real amp。 =real then GEN(:=, , , ) Else if =int amp。 =real then {T:=newtemp。 GEN(itr, , , T) GEN(:=, , , T)} Else if =real amp。 =int then {T:=newtemp。 GEN(itr, , , T) GEN(:=, T, , ) } 產(chǎn)生式 語義規(guī)則 布爾表達式 : 用布爾運算符號( ∧ , ∨ , ┐ )作用到布爾變量或關(guān)系表達式上而組成的表達式。 ◆ 布爾表達式的作用: 1. 計算邏輯值,注意計算時的優(yōu)先級。 2. 控制流語句,如 ifthen, ifthenelse和 whiledo語句中的條件表達式 ◆ 本節(jié)考慮由如下文法生成的布爾表達式: E→ E ∧ E| E ∨ E| ┐ E|(E)| id rop id|true|false 167。 布爾表達式的翻譯 ? 方法一: 用數(shù)值表示真假,對布爾表達式的求值可如同算術(shù)表達式求值一步步計算。 例如: A∨B∧C ,其四元式為 : (∧ , B, C, T1) (∨ , A, T1, T2) ? 方法二: 采取某種優(yōu)化措施。即 將任何布爾表達式描述為等價的 ifthenelse結(jié)構(gòu)。 例 A∨B:if A then true else if B then true else false A∧B : if A then if B then true else false else false ┐A : if A then false else true 方法一 很容易寫出相應的四元式,從而表示出每個產(chǎn)生式的語義動作。 布爾表達式的翻譯方法 方法二 涉及如何翻譯ifthenelse結(jié)構(gòu)的問題。 作為條件控制的布爾式翻譯 : : goto ... : to to (a) ifthenelse ifthen? 1)條件語句 if E then S1 else S2 E的作用在于控制對 S S2的選擇,因此結(jié)果無需最終保留。通過程序的控制流,即用 程序中控制轉(zhuǎn)移到達的位置 來表示布爾表達式的值。 對作為轉(zhuǎn)移條件的布爾式,其轉(zhuǎn)移可用下述三種四元式表示: (jnz, A, , P): 若 A為真 (1或非 0)則轉(zhuǎn)向第 P四元式 (jrop, A1, A2, P): 若 A1 rop A2為真,則轉(zhuǎn)向第 P四元式 (j, , , P): 無條件轉(zhuǎn)向 P四元式 例如: if A∨ BD then S1 else S2 翻譯成四元式為: ( 1) (jnz, A, ,? ) A的真出口 ( 2) ( j, , ,?) A的假出口 ( 3) ( j, B, D, ?) BD的真出口 ( 4) ( j, , , ? ) BD的假出口 ( 5) 關(guān)于 S1的四元式 ┆ ( P) ( j, , ,?) 跳過 S2的代碼段 ( P+1)關(guān)于 S2的四元式 ┆ ( q) s2后的語句 3 5 5 P+1 q (j=,B,D,P+1) (3)(4)合并改寫 (2)可刪除 可優(yōu)化嗎? 分 析 ? (1)~(4)是布爾式 A∨ BD 的代碼,他們?nèi)菞l件轉(zhuǎn)移或無條件轉(zhuǎn)移四元式,取代了原來的布爾運算。 ? A的真出口和 BD的真出口相同 — (5)S1的第一個四元式 (布爾式的真出口 ) ? A的假出口為 BD的第一個四元式。 ? BD的假出口是整個布爾式的假出口 — S2的第一個四元式。 ? (2)四元式可刪除, (3)、 (4)也可合并 — 代碼優(yōu)化。 翻譯布爾式時要解決的問題 確定每個四元式的第四項,即轉(zhuǎn)向的位置 ——真假出口 拉鏈、回填 問題 1:確定一個布爾表達式的真假出口 ? E→ E(1) ∨ E(2) 若 E(1)為真,則 E為真,因此 E(1)的真出口是 E的真出口 若 E(1)為假,則計算 E(2) ∴ E(1)的假出口為 E(2)的第一個四元式 ∴ E(2)的真假即為 E的真假出口 E1 E2 T, E為 T F, E為 F ? E→ E(1) ∧ E(2): 若 E(1)為假,則 E為假,因此 E(1) 的假出口是 E的假出口 若 E(1)為真,則計算 E(2) ∴ E(2)的真假即為 E的真假出口 ∴ E(1)的真出口為 E(2)的第一個四元式 E1 E2 T, E為 T F, E為 F ?E→ ┐ E(1): E(1)的真出口是 E的假出口; E(1)的假出口是 E的真出口。 問題 2:拉鏈、回填 翻譯過程中常出現(xiàn)若干轉(zhuǎn)移四元式轉(zhuǎn)向同一目標。但此目標的具體位置未確定。 將這些四元式用 “ 拉鏈 ” 的方法鏈接起來,用一指針指向鏈頭,在確定了目標四元式后,再 “ 回填 ” 此鏈。 對一個布爾表達式 E,應有兩條鏈: ? 真出口鏈( T鏈) ? 假出口鏈( F鏈) ? 用屬性 ETC, EFC記錄。 拉鏈返填 ?? ( 10 ) g o t o L ( 10 ) g o t o 0 ?? ?? 鏈尾( 10 ) ( 20 ) g o t o L ( 20 ) g o t o 1 0 ? ? ?? ( 30 ) g o t o L ( 3 0 ) g o t o 2 0 ?? ?? 鏈頭( 30 ) ( 40 ) L :?? ( 40 ) ( 1)( jnz, A, , 0 ) ( 2)( j, , , 0 ) ( 3)( j, B, D, 0) ( 4)( j, , , 0 ) ( 5)關(guān)于 S1的四元式 ┆ ( P)關(guān)于 S2的四元式 1 3 ETC EFC 拉鏈 回填 55 P 例: if A∨ BD then S1 else S2 回填 為了方便對布爾式生成相應的四元式,可對上述文法進行改寫,以利于編制相應的語義子程序。 E→E ∧ E| E∨ E| ┐ E|(E) | id rop id| id E∧ →E ∧ E∨ →E ∨ 1)語義變量和語義過程 為了實現(xiàn)“拉鏈”和“回填”及處理 ETC,EFC,需定義如下變量和過程: 布爾式四元式翻譯 ? NXQ
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1