版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第八章語法制導(dǎo)翻譯和中間代碼生成8.1概述8.2屬性文法和語法制導(dǎo)翻譯8.3語義分析8.4中間代碼8.5一些語句的翻譯中間代碼何謂中間代碼(Intermediatecode)源程序的一種內(nèi)部表示,不依賴目標(biāo)機(jī)的結(jié)構(gòu),易于機(jī)械生成目標(biāo)代碼的中間表示為什麼要此階段邏輯結(jié)構(gòu)清楚;利于不同目標(biāo)機(jī)上實(shí)現(xiàn)同一種語言;利于進(jìn)行與機(jī)器無關(guān)的優(yōu)化;這些內(nèi)部形式也能用于解釋。中間代碼的幾種形式逆波蘭四元式三元式間接三元式樹例:A+B*(C-D)+E/(C-D)^N逆波蘭:ABCD-*+ECD–N^/+四元式:(1)(-CDT1)(2)(*BT1T2)(3)(+AT2T3)(4)(-CDT4)(5)(^T4NT5)(6)(/ET5T6)(7)(+T3T6T7)例:A+B*(C-D)+E/(C-D)^N三元式:(1)(-CD)
(2)(*B(1))(3)(+A(2))(4)(-CD)(5)(^(4)N)(6)(/E(5))(7)(+(3)(6))例:A+B*(C-D)+E/(C-D)^N
間接三元式:間接三元式序列
(1)(-CD)(2)(*B(1))(3)(+A(2))(4)(^(1)N)(5)(/E(4))(6)(+(3)(5))
簡單賦值語句的(四元式)翻譯四元式形式:(op,arg1,arg2,result)或
result:=arg1oparg2語義屬性:,E.place函數(shù):lookup();過程:emit(t:=arg1oparg2);
newtemp;產(chǎn)生式和語義描述:
1、Sid:=E{P:=lookup();ifPnilthenemit(P“:=”E.place)elseerror}(2)EE1+E2
{E.place:=newtemp;
emit(E.place“:=”E1.place“+”E2.place)}(3)E-E1
{E.place:=newtemp;
emit(E.place“:=”“uminus”E1.place)}(4)E(E1)
{E.place:=E1.place}(5)Eid{E.place:=newtemp;
P:=lookup();
ifPnilthenE.place:=P
elseerror}控制語句的翻譯-控制語句中布爾表達(dá)式的翻譯ifEthenS1elseS2BS1S2NYE代碼S1代碼JumpoutS2代碼真假E.true:E.false:E:aropbifaropbgotoE.true
gotoE.false如:a<borc<dande<f可翻譯成如下四元式:1.ifa<bgotoE.truegoto(3)3.ifc<dgoto(5)4.
gotoE.false5.ife<fgotoE.true6.gotoE.false(翻譯不是最優(yōu))把條件轉(zhuǎn)移的布爾表達(dá)式E翻譯成僅含
條件真轉(zhuǎn)和無條件轉(zhuǎn)的四元式語句
ifa<borc<dande<fthenS1elseS2的四元式1.ifa<bgoto(7)//轉(zhuǎn)移至(E.true)2.goto(3)3.ifc<dgoto(5)4.goto(p+1)//轉(zhuǎn)移至(E.false)5.ife<fgoto(7)//轉(zhuǎn)移至(E.true)6.
goto(p+1)//轉(zhuǎn)移至(E.false)7.S1的四元式//(E.true)入口……(p-1)……(p).goto(q)(p+1).S2的四元式//(E.false)入口
……(q-1)…………記錄需回填地址的四元式,把需回填E.true的四元式拉成一鏈,把需回填E.false的四元式拉成一鏈,分別稱做“真”鏈和“假”鏈(10)…gotoE.true…(20)…gotoE.true…(30)…gotoE.true則鏈成(10)…goto(0)…(20)…goto(10)…(30)…goto(20)把地址(30)稱作“真”鏈鏈?zhǔn)?,0為鏈尾?biāo)志,即地址(10)為“真”鏈鏈尾。語義描述使用的變量和過程:E.true“真”鏈,E.false:“假”鏈
E.codebegin:E的第一個(gè)四元式
Nextstat:下一四元式地址過程:emit()輸出一條四元式,而nextstat+1merge(p1,p2)把p1的鏈?zhǔn)滋钤趐2的鏈尾例:
merge(p1,p2)(p10)goto(0)
……
p1鏈(p100)
goto(p10)……`(p1)goto(p100)(p20)goto(0)(p100)……
p2鏈(p200)goto(p20)……(p2)goto(p200)
backpatch(p,t)
把鏈?zhǔn)譸所鏈接的每個(gè)四元式的第四區(qū)段都填為GOTO語句翻譯—拉鏈返填:
因?yàn)樵谏伤脑綍r(shí)轉(zhuǎn)移地址還沒產(chǎn)生,只有在整個(gè)布爾表達(dá)式的四元式產(chǎn)生完畢后才知道,才回填這個(gè)地址……(10)
gotoE.true……(20)
gotoE.true……(30)
gotoE.true……(40)E.true:…………(10)
goto(0)
鏈尾(10)……(20)
goto(10)……(30)
goto(20)
鏈頭(30)……(40)E.true:……控制結(jié)構(gòu)的翻譯While(A<B)doIf(C<D)thenX:=Y+Z
翻譯成四元式:
IfA<Bgoto102Goto107ifC<Dgoto104
goto100T:=Y+ZX:=T
goto100For循環(huán)語句語句形式:Fori:=E1stepE2untilE3doSi:=E;GotoOVERAGAIN:i:=i+E2;OVER:Ifi<=E3then{BeginS1;gotoAGAINend;}Else
數(shù)組和結(jié)構(gòu)的翻譯數(shù)據(jù)表示(固定長度,直接或間接表示)簡單變量:
char:1byteintegers:2or4bytesfloats:4to16bytesbooleans:1bit(butusually1byte)指針:unsignedintegers一維數(shù)組:一塊連續(xù)的存儲區(qū)多維數(shù)組:一塊連續(xù)的存儲區(qū),按行存放結(jié)構(gòu)(記錄):把所有域(field)存放在一塊連續(xù)的存儲區(qū)對象:類的實(shí)例變量象結(jié)構(gòu)的域一樣存放在一塊連續(xù)的存儲區(qū),但方法(成員函數(shù))不存在該對象里指令:l
可變(動態(tài))數(shù)組:若一個(gè)數(shù)組所需的存儲空間的大小在編譯時(shí)就已知道,則稱它為確定數(shù)組,否則稱為可變(動態(tài))數(shù)組。數(shù)組內(nèi)情向量::
編譯將數(shù)組的有關(guān)信息記錄在一些單元中,稱為數(shù)組的“內(nèi)情向量”A[l1:u1,l2:u2,,ln
:un]
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代科技在中藥植物油提取中的綠色環(huán)保策略
- 生活用紙?jiān)O(shè)計(jì)新趨勢創(chuàng)新驅(qū)動的消費(fèi)者體驗(yàn)升級
- 生態(tài)保護(hù)與零碳公園規(guī)劃的融合實(shí)踐
- 國慶節(jié)活動方案活動內(nèi)容
- 現(xiàn)代服務(wù)業(yè)的綠色發(fā)展路徑探索
- 小學(xué)勞動教育考核方案
- 2024年五年級英語下冊 Unit 7 Chinese festivals第6課時(shí)說課稿 譯林牛津版
- 2024年秋七年級歷史上冊 第14課 溝通中外文明的“絲綢之路”說課稿 新人教版
- Unit 3 My friends Read and write(說課稿)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 3 我不拖拉 第一課時(shí)(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治一年級下冊
- 房地產(chǎn)工程管理 -中建八局機(jī)電工程質(zhì)量通病治理辦法
- GB/T 6403.4-2008零件倒圓與倒角
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 企業(yè)合規(guī)管理-課件
- 火電廠安全工作規(guī)程
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 電力業(yè)務(wù)許可證豁免證明
- 特發(fā)性肺纖維化IPF
- FIDIC國際合同條款中英文對照.doc
- 建筑工程資料歸檔立卷分類表(全)
- 個(gè)人勞動仲裁申請書
評論
0/150
提交評論