語義分析與中間代碼生成.ppt

語義分析與中間代碼生成.ppt

ID:52396529

大小:1.48 MB

頁數(shù):179頁

時(shí)間:2020-04-05

語義分析與中間代碼生成.ppt_第1頁
語義分析與中間代碼生成.ppt_第2頁
語義分析與中間代碼生成.ppt_第3頁
語義分析與中間代碼生成.ppt_第4頁
語義分析與中間代碼生成.ppt_第5頁
資源描述:

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

1、第6章 語義分析與中間代碼生成主要內(nèi)容語法制導(dǎo)翻譯符號(hào)表類型檢查中間語言中間代碼生成源語言程序中間代碼目標(biāo)代碼詞法分析語義分析語法分析中間代碼生成代碼生成在編譯中的邏輯階段前端處理后端處理語義處理語義處理的任務(wù):靜態(tài)語義檢查靜態(tài)語義檢查:審查靜態(tài)語義(語義分析)動(dòng)態(tài)語義處理動(dòng)態(tài)語義處理:生成(中間/目標(biāo))代碼首先是語義分析和正確性檢查,若正確,則翻譯成中間代碼或目標(biāo)代碼。在文法中,文法符號(hào)通常都有明確的意義,文法符號(hào)之間也有確定的語義關(guān)系。用屬性描述語義信息,用語義規(guī)則描述屬性間的的關(guān)系,將語義

2、規(guī)則與語法規(guī)則相結(jié)合?;舅枷耄焊鶕?jù)翻譯的需要設(shè)置文法符號(hào)的屬性,以描述語法結(jié)構(gòu)的語義。例如,一個(gè)變量的屬性有類型,作用域,存儲(chǔ)地址等。表達(dá)式的屬性有類型,值等。屬性值的計(jì)算和產(chǎn)生式相聯(lián)系。隨著語法分析的進(jìn)行,執(zhí)行屬性值的計(jì)算,完成語義分析和翻譯的任務(wù)。語義處理的環(huán)境:符號(hào)表為語義分析提供類型、作用域等信息。為代碼生成提供類型、作用域、存儲(chǔ)類別、存儲(chǔ)(相對(duì))位置等信息。在語法分析過程中,隨著分析的步步進(jìn)展,根據(jù)每個(gè)產(chǎn)生式所對(duì)應(yīng)的語義規(guī)則描述的語義動(dòng)作(或語義子程序)進(jìn)行翻譯的辦法稱作語法制導(dǎo)翻譯

3、。語法制導(dǎo)翻譯1、屬性文法(syntax-directeddefinitions):定義翻譯所必須的語義屬性和語義規(guī)則,一般不涉及計(jì)算順序。是對(duì)上下文無關(guān)文法的推廣。2、翻譯模式(translationschemes):給出語義規(guī)則進(jìn)行計(jì)算的順序。兩種常用的描述語義的方法:6.1語法制導(dǎo)翻譯屬性文法(attributegrammar)是在上下文無關(guān)文法的基礎(chǔ)上,為文法每個(gè)終結(jié)符和非終結(jié)符配備若干相關(guān)的屬性,這些屬性代表與文法符號(hào)相關(guān)信息,如它的類型、值、代碼序列、符號(hào)表內(nèi)容等等.屬性與變量一樣,

4、可以進(jìn)行計(jì)算和傳遞。對(duì)于文法的每一個(gè)產(chǎn)生式都配備了一組屬性的計(jì)算規(guī)則,屬性加工的過程即是語義處理的過程。屬性通常分為兩類:綜合屬性和繼承屬性。簡(jiǎn)單地說,綜合屬性用于“自下而上”傳遞信息,而繼承屬性用于“自上而下”傳遞信息。在一個(gè)屬性文法中,?A→??P都有與之相關(guān)聯(lián)的一套語義規(guī)則,規(guī)則形式為b:=f(c1,c2,…,ck),f是一個(gè)函數(shù),而且或者2.b是?中文法符號(hào)的一個(gè)繼承屬性并且c1,c2,…,ck是A或?中的任何文法符號(hào)的屬性。1.b是A的一個(gè)綜合屬性并且c1,c2,…,ck是?中文法符號(hào)

5、的屬性,或者在兩種情況下,都說屬性b依賴于屬性c1,c2,…,ck。1)非終結(jié)符既可有綜合屬性也可有繼承屬性,但文法開始符號(hào)沒有繼承屬性.2)終結(jié)符只有綜合屬性,它們由詞法程序提供.語義規(guī)則所描述的工作可以包括屬性計(jì)算、靜態(tài)語義檢查、符號(hào)表操作、代碼(中間)生成等等。有些語義規(guī)則可能產(chǎn)生副作用(如產(chǎn)生代碼),通常把這樣的語義規(guī)則寫成函數(shù)調(diào)用。例簡(jiǎn)單計(jì)算器程序的屬性文法產(chǎn)生式語義規(guī)則L?Eprint(E.val)E?E1+TE.val:=E1.val+T.valE?TE.val:=T.valT?T

6、1*FT.val:=T1.val*F.valT?FT.val:=F.valF?(E)F.val:=E.valF?digitF.val:=digit.lexval綜合屬性在分析樹中,一個(gè)結(jié)點(diǎn)的綜合屬性值是從其子結(jié)點(diǎn)的屬性值計(jì)算出來的;結(jié)點(diǎn)屬性值的計(jì)算正好和自底向上分析建立分析樹結(jié)點(diǎn)同步進(jìn)行。只使用綜合屬性的屬性文法稱為S-屬性文法。例S-屬性文法產(chǎn)生式語義規(guī)則E?E1+TE.val:=E1.val+T.valE?TE.val:=T.valT?T1*FT.val:=T1.val*F.valT?FT.

7、val:=F.valF?(E)F.val:=E.valF?digitF.val:=digit.lexvaldigit?lexval:=3F?val:=3T?val:=3digit?lexval:=5F?val:=5T?val:=15*E?val:=15+digit?lexval:=4F?val:=4T?val:=4E?val:=193*5+4的帶注釋的分析樹繼承屬性每個(gè)文法符號(hào)可以和一個(gè)繼承屬性值聯(lián)系,屬性值的設(shè)置和語法結(jié)構(gòu)的語義以及翻譯程序的需要有關(guān)。一個(gè)結(jié)點(diǎn)的繼承屬性值是由該結(jié)點(diǎn)兄弟結(jié)點(diǎn)和/

8、或父結(jié)點(diǎn)的屬性值計(jì)算出來的。例進(jìn)行變量說明的類型定義reala,b,cD?TLT?intT?realL?L,idL?id帶有繼承屬性L.in的屬性文法產(chǎn)生式語義規(guī)則D?TLL.in:=T.typeT?intT.type:=integerT?realT.type:=realL?L1,idL1.in:=L.inaddtype(id.entry,L.in)L?idaddtype(id.entry,L.in)cbDT.typeL.inrealL.in,L.in,a每一個(gè)L結(jié)點(diǎn)處都帶有繼承屬性in的分析樹

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。