版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第九章 中間代碼生成,本章內(nèi)容 用語(yǔ)法制導(dǎo)定義和翻譯方案的方法來(lái)說(shuō)明程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)怎樣被翻譯成中間形式。,9.1 賦值語(yǔ)句的翻譯,翻譯的需求 充分了解各種語(yǔ)言現(xiàn)象的語(yǔ)義 包括:控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、單詞 充分了解它們的實(shí)現(xiàn)方法 目標(biāo)語(yǔ)言的語(yǔ)義 了解中間代碼的語(yǔ)義 了解運(yùn)行環(huán)境,實(shí)現(xiàn)賦值語(yǔ)句的翻譯,基本子程序 產(chǎn)生一條中間代碼 gen(code) 產(chǎn)生新的臨時(shí)變量 newtemp 屬性設(shè)置 中間代碼序列 code 存儲(chǔ)位置 place,賦值語(yǔ)句的四元式翻譯,S id := E S.code := E.code | gen( id.place:=E.place ) E E1 + E2 E.pla
2、ce := newtemp; E.code := E1.code | E2.code | gen(E.place:=E1.place+E2.place) E E1 * E2 E.place := newtemp; E.code := E1.code | E2.code | gen(E.place:=E1.place*E2.place),注釋: | 表示代碼序列的連接,E - E1 E.place := newtemp; E.code := E1.code | gen(E.place:=0-E1.place) E ( E1 ) E.place:= E1.place; E.code:= E1.co
3、de E id E.place:= id.place; E.code:= E num E.place:= num.val;E.code:= ,例 5-7:翻譯 a:= -c+b*34,a:= -c+b*34的中間代碼,t2:=0 - c t3:=b*34 t1:=t2+t3 a:=t1,a:= -c+b*34的中間代碼的生成過(guò)程,S.code (S id := E)= E.code | gen( a:=E.place ) /* a id.place */ (E E1 + E2)= E1.code | E2.code | gen( t1:=E1.place+E2.place ) | gen( a
4、:=t1 ) /* newtemp t1 E.place */ (E1 - E11)= E11.code | gen( t2:= 0 - E11.place ) (E2 E21 * E22)/* newtemp t2 E1.place */,| E21.code | E22.code | gen( t3:= E21.place*E22.place ) /* newtemp t3 E2.place */ | gen( t1:=t2+t3 ) | gen( a:=t1 ) (E21 b)= gen( t2:= 0 - c ) | gen( t3:=b*34 ) (E22 34 ) /* c E11
5、.place */ /* b E21.place */ /* 34 E22.place */ | gen( t1:=t2+t3 ) | gen( a:=t1 ) /* E21.code E22.code */,結(jié)果 S的代碼,t2:=0 - c t3:=b*34 t1:=t2+t3 a:=t1,結(jié)果:開(kāi)始符號(hào)的屬性 S.code,1) 找出分析樹(shù)中使用的產(chǎn)生式規(guī)則 2)根據(jù)產(chǎn)生式的語(yǔ)義規(guī)則,代換公式中的各屬性 3)反復(fù)使用 1) 和 2) 改寫公式,最后得到代碼生成語(yǔ)句組成的公式 組成語(yǔ)句的翻譯結(jié)果(中間代碼序列),小結(jié),根據(jù)不同的中間代碼改寫語(yǔ)義規(guī)則 樹(shù)結(jié)構(gòu)(一個(gè)結(jié)點(diǎn)多個(gè)域) 后綴式 賦值語(yǔ)
6、句的四元式翻譯 語(yǔ)法制導(dǎo)定義 翻譯模式: 重要屬性與過(guò)程:code、place、newtemp、gen,表達(dá)式翻譯中的其它問(wèn)題,運(yùn)算合法性檢查 利用符號(hào)表保存的名字類型 類型自動(dòng)轉(zhuǎn)換 填加專用指令 臨時(shí)變量空間的統(tǒng)計(jì) 了解需求、及時(shí)釋放,9.2 控制語(yǔ)句的翻譯,高級(jí)語(yǔ)言的控制結(jié)構(gòu) 順序 begin 語(yǔ)句; 語(yǔ)句; end 條件 if_then_else if_then switch case 循環(huán) while_do do_while for repeat_util 三地址代碼的控制結(jié)構(gòu) goto l if x relop y goto l,S while C do S1 的翻譯,屬性設(shè)置(繼承
7、) 布爾式 C 代碼段真出口 true 代碼段假出口 false 語(yǔ)句 S 代碼段的入口 begin 后續(xù)段入口 next,循環(huán)語(yǔ)句的屬性文法,S while C do S1 C.false := S.next; S.begin := S1.next := newlabel; C.true := S1.begin := newlabel; S.code := gen( S.begin: ) | C.code | gen( C.true: ) | S1.code | gen( gotoS.begin ) 語(yǔ)義過(guò)程 新標(biāo)號(hào)的產(chǎn)生 newlabel,S if C then S1else S2 的翻譯
8、,代碼序列 C S1 S2 屬性關(guān)系 S1.begin = C.true S2.begin = C.false S1.next = S2.next = S.next,條件語(yǔ)句的屬性文法,S if C then S1 C.true := newlabel; else S2 C.false := newlabel; S1.next := S2.next := S.next; S.code := C.code | gen( C.true: ) | S1.code | gen( goto S.next ) | gen( C.false: ) | S2.code,簡(jiǎn)單布爾表達(dá)式的翻譯,C E1 relop E2 C.code := E1.code | E2.code | gen( if E1.place relop.op E2.place gotoC.true ) | gen( gotoC.false ),例 :翻譯下列語(yǔ)句,while a y do z := x + 1; else S12 x := y,S1,生成的三地址代碼序列,L1: if a y goto L5 goto L1 L5: t1 := x + 1 z := t1 got
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廈門外代倉(cāng)儲(chǔ)有限公司2025年倉(cāng)儲(chǔ)事業(yè)部客服崗社會(huì)招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 2026年湖南長(zhǎng)城銀河科技有限公司招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026年祖廟街道公有企業(yè)招聘工作人員備考題庫(kù)及參考答案詳解1套
- 2026年襄陽(yáng)有崗湖北省大學(xué)生鄉(xiāng)村醫(yī)生專項(xiàng)計(jì)劃招錄386人備考題庫(kù)及參考答案詳解1套
- 2026年深圳市建筑科學(xué)研究院股份有限公司北京分公司招聘?jìng)淇碱}庫(kù)及一套參考答案詳解
- 2026年潤(rùn)曜(北京)國(guó)際醫(yī)藥科技有限公司招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 中學(xué)圖書館借閱制度
- 養(yǎng)老院老人心理咨詢師行為規(guī)范制度
- 企業(yè)內(nèi)部培訓(xùn)與外部合作制度
- 企業(yè)職業(yè)健康安全事故調(diào)查處理指南(標(biāo)準(zhǔn)版)
- 四川省內(nèi)江市2023-2024學(xué)年九年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷
- 消化性出血護(hù)理查房
- 專利管理工作流程
- 營(yíng)養(yǎng)健康食堂實(shí)施方案
- 四川省內(nèi)江市2023-2024學(xué)年高二上學(xué)期期末檢測(cè)生物試題【含答案解析】
- 蒙藥浴足的護(hù)理
- 農(nóng)業(yè)風(fēng)險(xiǎn)識(shí)別及防范措施
- 安全生產(chǎn)先進(jìn)班組事跡材料
- 血透室感染控制
- 51-認(rèn)知無(wú)線電技術(shù)1課件
- 提高鋼立柱基礎(chǔ)預(yù)埋件質(zhì)量控制合格率QC活動(dòng)成果
評(píng)論
0/150
提交評(píng)論