編譯原理語義分析和中間代碼

編譯原理語義分析和中間代碼

ID:46515251

大?。?61.34 KB

頁數(shù):8頁

時(shí)間:2019-11-24

編譯原理語義分析和中間代碼_第1頁
編譯原理語義分析和中間代碼_第2頁
編譯原理語義分析和中間代碼_第3頁
編譯原理語義分析和中間代碼_第4頁
編譯原理語義分析和中間代碼_第5頁
資源描述:

《編譯原理語義分析和中間代碼》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第4章語義分析和中間代碼生成4.1概述4.2屬性文法4.3幾種常見的中間語言4.4表達(dá)式及賦值語句的翻譯4.5控制語句的翻譯4.6數(shù)組元素的翻譯4.7過程或函數(shù)調(diào)用語句的翻譯4.8說明語句的翻譯4.9遞歸下降語法制導(dǎo)翻譯方法簡介4.1概述4.1.1語義分析的概念源程序經(jīng)過詞法分析、語法分析后,表明該源程序書寫正確、符合程序語言所規(guī)定的語法,但語法分析并未對程序內(nèi)部的邏輯含義加以分析,因此編譯程序接著進(jìn)行語義分析,即審查每個語法成分的靜態(tài)語義。如果靜態(tài)語義正確,則生成與該語言成分等效的中間代碼,或

2、直接生成目標(biāo)代碼。直接生成機(jī)器語言或匯編語言形式的目標(biāo)代碼的優(yōu)點(diǎn)是編譯時(shí)間短且無需中間代碼到目標(biāo)代碼的翻譯,而生成中間代碼的優(yōu)點(diǎn)是使編譯結(jié)構(gòu)在邏輯上更為簡單明確,特別是使目標(biāo)代碼的優(yōu)化較易實(shí)現(xiàn)。語義分析進(jìn)行的語義檢查有兩類:動態(tài)語義檢查和靜態(tài)語義檢查。動態(tài)語義檢查需生成相應(yīng)的目標(biāo)代碼,在運(yùn)行時(shí)進(jìn)行;靜態(tài)語義檢查在編譯時(shí)進(jìn)行。靜態(tài)語義檢查涉及以下幾個方面:(1)類型檢查,如運(yùn)算操作數(shù)的類型應(yīng)相容。(2)控制流檢查,用以保證控制語句有合法的轉(zhuǎn)向點(diǎn)。如C語言中不允許goto語句轉(zhuǎn)入case語句流;br

3、eak語句需尋找包含它的最小switch、while或for語句方可找到轉(zhuǎn)向點(diǎn)。(3)一致性檢查,如在相同作用域中標(biāo)識符只能說明一次、case語句的標(biāo)號不能相同等。語義分析階段只產(chǎn)生中間代碼而不生成目標(biāo)代碼的方法使編譯程序的開發(fā)變得較為容易,但由于語義是上下文有關(guān)的,因此語義的形式化描述非常困難,目前較常見的是用屬性文法作為描述語義的工具,并采用語法制導(dǎo)翻譯法完成對語法成分的翻譯。4.1.2語法制導(dǎo)翻譯法語法制導(dǎo)翻譯法就是為每個產(chǎn)生式配上一個翻譯子程序(稱語義動作),并在語法分析的同時(shí)執(zhí)行這些子

4、程序。語義動作是為產(chǎn)生式賦予具體意義的手段,它一方面指出了一個產(chǎn)生式所產(chǎn)生的符號串的意義,另一方面又按這種意義規(guī)定了生成某種中間代碼應(yīng)做哪些基本動作。在語法分析過程中,當(dāng)一個產(chǎn)生式獲得匹配(對自上而下分析)或用于歸約(對自下而上分析)時(shí),此產(chǎn)生式相應(yīng)的語義子程序就進(jìn)入工作,完成既定的翻譯任務(wù)。語法制導(dǎo)翻譯分為自下而上語法制導(dǎo)翻譯和自上而下語法制導(dǎo)翻譯,下面重點(diǎn)介紹自下而上語法制導(dǎo)翻譯。假定有一個自下而上的LR分析器,可以把這個LR分析器的能力擴(kuò)大,使它能在用某個產(chǎn)生式進(jìn)行歸約的同時(shí)調(diào)用相應(yīng)的語義

5、子程序進(jìn)行翻譯。每個產(chǎn)生式的語義子程序執(zhí)行后,某些結(jié)果(語義信息)必須作為此產(chǎn)生式的左部符號的語義值暫時(shí)保存下來,以便以后語義子程序引用這些信息。此外,原LR分析器的分析棧也加以擴(kuò)充,以便能存放與文法符號相對應(yīng)的語義值。這樣,分析??纱娣湃愋畔ⅲ籂顟B(tài)、文法符號及文法符號對應(yīng)的語義值。擴(kuò)充后的分析棧如圖4–1所示。此外,原LR分析器的分析棧也加以擴(kuò)充,以便能存放與文法符號相對應(yīng)的語義值。這樣,分析??纱娣湃愋畔ⅲ籂顟B(tài)、文法符號及文法符號對應(yīng)的語義值。擴(kuò)充后的分析棧如圖4–1所示。

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

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

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