版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第八章語法制導(dǎo)翻譯和中間代碼生成8.1概述8.2屬性文法和語法制導(dǎo)翻譯8.3語義分析8.4中間代碼8.5一些語句的翻譯中間代碼何謂中間代碼(Intermediatecode)源程序的一種內(nèi)部表示,不依賴目標(biāo)機的結(jié)構(gòu),易于機械生成目標(biāo)代碼的中間表示為什麼要此階段邏輯結(jié)構(gòu)清楚;利于不同目標(biāo)機上實現(xiàn)同一種語言;利于進行與機器無關(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}控制語句的翻譯-控制語句中布爾表達式的翻譯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)移的布爾表達式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)祝盀殒溛矘?biāo)志,即地址(10)為“真”鏈鏈尾。語義描述使用的變量和過程:E.true“真”鏈,E.false:“假”鏈
E.codebegin:E的第一個四元式
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)譸所鏈接的每個四元式的第四區(qū)段都填為GOTO語句翻譯—拉鏈返填:
因為在生成四元式時轉(zhuǎn)移地址還沒產(chǎn)生,只有在整個布爾表達式的四元式產(chǎn)生完畢后才知道,才回填這個地址……(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ū)對象:類的實例變量象結(jié)構(gòu)的域一樣存放在一塊連續(xù)的存儲區(qū),但方法(成員函數(shù))不存在該對象里指令:l
可變(動態(tài))數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆遼寧省興城市紅崖子滿族鄉(xiāng)初級中學(xué)畢業(yè)升學(xué)考試模擬卷生物卷含解析
- 2025年上半年重慶三峰環(huán)境集團股份限公司及所屬子企業(yè)招聘32人易考易錯模擬試題(共500題)試卷后附參考答案
- 二零二五版果樹嫁接撫育承包合作協(xié)議3篇
- 2025年上半年連云港贛榆縣招考事業(yè)單位工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧阜新市事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧省鞍山市面向"雙一流"建設(shè)高校招聘2025年上半年應(yīng)屆畢業(yè)生第二批易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧省沈陽市總工會“特邀審計專家”招聘3人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧丹東事業(yè)單位招728人重點基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2025年上半年贛州市衛(wèi)生計生系統(tǒng)事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年貴州黔東南從江縣從大學(xué)生志愿服務(wù)西部志愿者中招聘事業(yè)單位人員擬聘重點基礎(chǔ)提升(共500題)附帶答案詳解-1
- 春節(jié)文化常識單選題100道及答案
- 12123交管學(xué)法減分考試題及答案
- 2024年杭州師范大學(xué)附屬醫(yī)院招聘高層次緊缺專業(yè)人才筆試真題
- 制造業(yè)BCM業(yè)務(wù)連續(xù)性管理培訓(xùn)
- 24年追覓在線測評28題及答案
- TGDNAS 043-2024 成人靜脈中等長度導(dǎo)管置管技術(shù)
- 《陸上風(fēng)電場工程概算定額》NBT 31010-2019
- 招投標(biāo)法考試試題及答案
- 皮帶輸送機工程施工電氣安裝措施要點
- 藥房(冰柜)溫濕度表
- QJ903.9A-1995航天產(chǎn)品工藝文件管理制度管理用工藝文件編制規(guī)則
評論
0/150
提交評論