《中間代碼生成》PPT課件

《中間代碼生成》PPT課件

ID:39382244

大?。?84.92 KB

頁數(shù):40頁

時間:2019-07-02

《中間代碼生成》PPT課件_第1頁
《中間代碼生成》PPT課件_第2頁
《中間代碼生成》PPT課件_第3頁
《中間代碼生成》PPT課件_第4頁
《中間代碼生成》PPT課件_第5頁
資源描述:

《《中間代碼生成》PPT課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第七章中間代碼生成序7.1中間語言7.2說明語句7.3賦值語句7.4布爾表達(dá)式7.6回填7.7過程語句練習(xí)17.4布爾表達(dá)式◆布爾表達(dá)式:用布爾運算符號(and,or,not)作用到布爾變量或關(guān)系表達(dá)式上而組成◆布爾表達(dá)式的作用:1.用作計算邏輯值2.用作控制流語句如if-then,if-then-else和while-do等之中的條件表達(dá)式◆本節(jié)考慮由如下文法生成的布爾表達(dá)式:E→Eor

2、EandE

3、notE

4、(E)

5、idrelopid

6、true

7、false27.4.1翻譯布爾表達(dá)式的方法◆表示一個布爾表達(dá)式的值方法一:用數(shù)值表示真和假,從而

8、對布爾表達(dá)式的求值可以象對算術(shù)表達(dá)式的求值那樣一步一步地來計算方法二:通過程序的控制流,即用程序中控制轉(zhuǎn)移到達(dá)的位置來表示布爾表達(dá)式的值方法二用于翻譯控制流語句中的布爾表達(dá)式尤其方便。37.4.2數(shù)值表示法用1表示真,0表示假來實現(xiàn)布爾表達(dá)式的翻譯布爾表達(dá)式:aorbandnotc翻譯成三地址代碼序列:100:t1:=notc101:t2:=bandt1102:t3:=aort1關(guān)系表達(dá)式:a

9、04:圖7.11關(guān)于布爾表達(dá)式的數(shù)值表示法的翻譯模式E→E1orE2{E.place:=newtemp;emit(E.place':='E1.place'orE2.place)}E→E1andE2{E.place:=newtemp;emit(E.place':='E1.place'andE2.place)}5(接上頁)E→notE1{E.place:=newtemp;emit(E.place':=''not'E1.place)}E→id1relopid2{E.place:=newtemp;emit('if'id1.placerelop.opid

10、2.place'goto'nextstat+3);emit(E.place':=''0');emit('goto'nextstat+2);emit(E.place':=''1')}E→ture{E.place:=newtemp;emit(E.place':=''1')}E→false{E.place:=newtemp;emit(E.place':=''0')}67.4.3控制流語句文法:S→ifEthenS1

11、ifEthenS1elseS2

12、whileEdoS1E.codeS1.codeE.true:...E.false:(a)if-thent

13、oE.truetoE.false代碼結(jié)構(gòu):7E.codeS1.codeE.true:S2.codeE.false:gotoS.next...S.next:toE.truetoE.false(b)if-then-elseE.codeS1.codeE.true:E.false:gotoS.begin...S.begin:toE.falsetoE.true(c)while-do8語法制導(dǎo)定義:產(chǎn)生式語義規(guī)則S→ifEthenS1E.true:=newlabel;E.false:=S.next;S1.next:=S.nextS.code:=E.code

14、

15、

16、gen(E.true’:’)

17、

18、S1.code9產(chǎn)生式語義規(guī)則S→ifEthenS1elseS2E.true:=newlabel;E.false:=newlabel;S1.next:=S.next;S2.next:=S.next;S.code:=E.code

19、

20、gen(E.true’:’)

21、

22、S1.codegen(‘goto’S.next)

23、

24、gen(E.false’:’)

25、

26、S2.code(接上頁)10產(chǎn)生式語義規(guī)則S→whileEdoS1S.begin:=newlabel;E.true:=newlabel;E.false:=S.next

27、;S1.next:=S.begin;S.code:=gen(S.begin’:’‖E.code‖gen(E.true’:’)‖S1.code‖gen(‘goto’S.begin)(接上頁)117.4.4控制流語句中的布爾表達(dá)式的翻譯基本思想:假定E形如a<d,則將生成如下的E的代碼:ifa<bgotoE.true表7.5語法制導(dǎo)定義gotoE.false產(chǎn)生式語義規(guī)則E→E1orE2E1.true:=E.true;E1.false:=newlabel;E2.true:=E.true;E2.false:=E.falseE.code:=E1.cod

28、e

29、

30、gen(E1.false’:’)

31、

32、E2.code12產(chǎn)生式語義規(guī)則E→E1andE2E1.true:=newlabel;E1.false:=E

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。