中間代碼生成課件.ppt

中間代碼生成課件.ppt

ID:57012220

大?。?79.50 KB

頁(yè)數(shù):93頁(yè)

時(shí)間:2020-07-26

中間代碼生成課件.ppt_第1頁(yè)
中間代碼生成課件.ppt_第2頁(yè)
中間代碼生成課件.ppt_第3頁(yè)
中間代碼生成課件.ppt_第4頁(yè)
中間代碼生成課件.ppt_第5頁(yè)
資源描述:

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

1、語(yǔ)義分析的任務(wù):靜態(tài)語(yǔ)義審查審查每個(gè)語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義,即驗(yàn)證語(yǔ)法結(jié)構(gòu)合法的程序,是否真正有意義。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成例如:表達(dá)式A+B*C對(duì)運(yùn)算對(duì)象進(jìn)行類型檢查,對(duì)變量進(jìn)行先定義后使用檢查如果靜態(tài)語(yǔ)義正確,語(yǔ)義處理則要執(zhí)行真正的翻譯,即生成程序的某種中間代碼的形式或直接生成目標(biāo)代碼。執(zhí)行真正的翻譯第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成目前多數(shù)編譯程序進(jìn)行語(yǔ)義分析的方法是采用語(yǔ)法制導(dǎo)翻譯法。它不是一種形式系統(tǒng),但它比較接近形式化。語(yǔ)法制導(dǎo)翻譯法使用屬性文法為工具來(lái)描述程序設(shè)計(jì)語(yǔ)言的語(yǔ)義。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成(1)屬性對(duì)文法的每一個(gè)符號(hào),引進(jìn)一

2、些屬性,這些屬性代表與文法符號(hào)相關(guān)的信息,如類型、值、存儲(chǔ)位置等。與屬性相關(guān)的信息,即屬性值,可以在語(yǔ)法分析過(guò)程中計(jì)算和傳遞。1.屬性文法第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成屬性分為兩類:綜合屬性其計(jì)算規(guī)則按“自下而上”方式進(jìn)行,即規(guī)則左部符號(hào)的某些屬性根據(jù)其右部符號(hào)的屬性和(或)自己的其他屬性計(jì)算得到。屬性加工的過(guò)程即是語(yǔ)義的處理過(guò)程。綜合屬性和繼承屬性。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成繼承屬性其計(jì)算規(guī)則按“自上而下”方式進(jìn)行,即規(guī)則右部符號(hào)的某些屬性根據(jù)其左部符號(hào)的屬性和(或)右部其他符號(hào)的某些屬性計(jì)算得到。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成(2)屬性文法為文法

3、的每一個(gè)規(guī)則配備的計(jì)算屬性的計(jì)算規(guī)則,稱為語(yǔ)義規(guī)則(描述語(yǔ)義處理的加工動(dòng)作)。屬性文法包含一個(gè)上下文無(wú)關(guān)文法和一系列語(yǔ)義規(guī)則。語(yǔ)義規(guī)則:第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成這些語(yǔ)義規(guī)則附在文法的每個(gè)產(chǎn)生式上,在語(yǔ)法分析過(guò)程中,執(zhí)行語(yǔ)義規(guī)則描述的動(dòng)作,從而實(shí)現(xiàn)語(yǔ)義處理。也就是說(shuō),附在文法的每個(gè)產(chǎn)生式上語(yǔ)義規(guī)則描述了語(yǔ)義處理的加工動(dòng)作。目前流行的語(yǔ)義描述和語(yǔ)義處理的方法主要是屬性文法和語(yǔ)法制導(dǎo)翻譯方法。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成2.語(yǔ)法制導(dǎo)翻譯法為文法的每個(gè)產(chǎn)生式都配備一個(gè)語(yǔ)義動(dòng)作或語(yǔ)義子程序。在語(yǔ)法分析的過(guò)程中,每當(dāng)使用一條產(chǎn)生式進(jìn)行推導(dǎo)或歸約時(shí),就執(zhí)行相應(yīng)產(chǎn)生式

4、的語(yǔ)義動(dòng)作,從而實(shí)現(xiàn)語(yǔ)義處理。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成(1)語(yǔ)法制導(dǎo)翻譯法的基本思想S→……{……}………A→xy{……}………a1a2a3…aiai+1…an語(yǔ)義處理的加工動(dòng)作語(yǔ)法制導(dǎo)翻譯法使用屬性文法為工具來(lái)說(shuō)明程序設(shè)計(jì)語(yǔ)言的語(yǔ)義。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成(2)語(yǔ)法制導(dǎo)翻譯法在語(yǔ)法分析過(guò)程中,依隨分析的過(guò)程,根據(jù)每個(gè)產(chǎn)生式所對(duì)應(yīng)的語(yǔ)義子程序(或語(yǔ)義規(guī)則描述的語(yǔ)義處理的加工動(dòng)作)進(jìn)行翻譯的方法。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成為文法每一產(chǎn)生式設(shè)計(jì)相應(yīng)的求值的語(yǔ)義描述(語(yǔ)義動(dòng)作):例如,設(shè)有簡(jiǎn)單算術(shù)表達(dá)式的文法:E→E+E

5、E*E

6、(E)

7、di

8、git1.E→E(1)+E(2){E.val=E(1).val+E(2).val}2.E→E(1)*E(2){E.val=E(1).val*E(2).val}3.E→(E(1)){E.val=E(1).val}4.E→digit{E.val=Lex.digit}第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成E.val=47E.val=8E.val=40E.val=7E.val=5+5*871.E→E(1)+E(2){E.val=E(1).val+E(2).val}2.E→E(1)*E(2){E.val=E(1).val*E(2).val}3.E→(E(1)){E.val=E(1).

9、val}4.E→digit{E.val=Lex.digit}句子7+8*5EEEEE3.編譯中常用的中間代碼:逆波蘭式四元式三元式樹(shù)形表示第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成逆波蘭式逆波蘭式除去了原表達(dá)式中的括號(hào),并將運(yùn)算對(duì)象寫(xiě)在前面,運(yùn)算符寫(xiě)在后面,因而又稱為后綴式。例如:逆波蘭式a*bab*(a+b)*(c+d)ab+cd+*中綴表達(dá)式第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成逆波蘭式表示法同中綴表示法相比其優(yōu)點(diǎn)是:不再有括號(hào),且運(yùn)算符出現(xiàn)的順序體現(xiàn)了中綴表達(dá)式的運(yùn)算順序2.易于計(jì)算機(jī)處理第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成一般表達(dá)式計(jì)值時(shí),要處理兩類符號(hào),一類是運(yùn)算對(duì)象,

10、另一類是運(yùn)算符,通常用兩個(gè)工作棧分別處理。但處理用逆波蘭式表示的表達(dá)式卻只用一個(gè)工作棧。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成當(dāng)計(jì)算機(jī)自左到右順序掃描逆蘭波式時(shí),若當(dāng)前符號(hào)是運(yùn)算對(duì)象則進(jìn)棧,若當(dāng)前符號(hào)是運(yùn)算符,設(shè)為K元運(yùn)算符,則將棧頂?shù)腒個(gè)元素依次取出,同時(shí)進(jìn)行K元運(yùn)算,并將運(yùn)算結(jié)果置于棧頂,表達(dá)式處理完畢時(shí),其計(jì)算結(jié)果自然呈現(xiàn)在棧頂。第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成逆波蘭式ab+c*的處理過(guò)程如下圖:baT1第7章語(yǔ)法制導(dǎo)翻譯技術(shù)和中間代碼生成cT1T2逆波蘭形式可以推廣到其他語(yǔ)法結(jié)構(gòu):賦值語(yǔ)句V=E逆波蘭式VE=條件語(yǔ)句

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

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

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