語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt

語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt

ID:57028929

大?。?.69 MB

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

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

語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt_第1頁(yè)
語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt_第2頁(yè)
語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt_第3頁(yè)
語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt_第4頁(yè)
語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt_第5頁(yè)
資源描述:

《語(yǔ)法制導(dǎo)翻譯和中間代碼生成課件.ppt》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第六章 語(yǔ)法制導(dǎo)翻譯和中間代碼生成第一節(jié)屬性文法第二節(jié)語(yǔ)法制導(dǎo)翻譯概論第三節(jié)中間代碼的形式第四節(jié)簡(jiǎn)單賦值語(yǔ)句的翻譯第五節(jié)布爾表達(dá)式的翻譯第六節(jié)控制結(jié)構(gòu)的翻譯第七節(jié)說(shuō)明語(yǔ)句的翻譯第八節(jié)數(shù)組和結(jié)構(gòu)的翻譯6.1屬性文法編譯中的語(yǔ)義處理是指兩個(gè)功能:審查每個(gè)語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義,即驗(yàn)證語(yǔ)法結(jié)構(gòu)合法的程序是否真正有意義(靜態(tài)語(yǔ)義分析/靜態(tài)審查)如果靜態(tài)語(yǔ)義正確,語(yǔ)義處理的工作是要執(zhí)行真正的翻譯,即生成中間代碼或目標(biāo)代碼有的編譯程序直接生成目標(biāo)代碼,有的編譯程序程序采用中間代碼(中間語(yǔ)言)(它是復(fù)雜性介于源程序語(yǔ)言和機(jī)器語(yǔ)言的一種表示形式)第八章 語(yǔ)法制導(dǎo)翻譯和中間代碼生成語(yǔ)法制導(dǎo)翻譯是

2、指在語(yǔ)法分析過(guò)程中,完成附加在所使用的產(chǎn)生式上的語(yǔ)義規(guī)則描述的動(dòng)作屬性,常用以描述事物或人的特征、性質(zhì)、品質(zhì)等,對(duì)編譯程序使用的語(yǔ)法樹(shù)的結(jié)點(diǎn),可以用類(lèi)型、值或存儲(chǔ)位置來(lái)描述它一個(gè)屬性文法是一個(gè)三元組A=(G,V,F(xiàn)):G:一個(gè)上下文無(wú)關(guān)文法V:一個(gè)屬性的有窮集F:關(guān)于屬性的斷言或謂詞的有窮集編譯程序的靜態(tài)語(yǔ)義審查工作就是驗(yàn)證關(guān)于所編譯的程序的斷言是否全部為真例如文法G為:ET1+T2

3、T1orT2Tnum

4、true

5、false對(duì)輸入串3+4的語(yǔ)法樹(shù)如圖6.1:屬性文法記號(hào)中常使用N·t的形式表示與非終結(jié)符N相聯(lián)的屬性t比如可把完成對(duì)上面表達(dá)式的類(lèi)型檢查的屬性文法寫(xiě)成圖6.2

6、的形式:屬性文法最最由克努特(D.E.Knuth)提出,他把屬性分成:繼承屬性、綜合屬性屬性文法中,對(duì)應(yīng)于每個(gè)產(chǎn)生式Aa都有一套與之相關(guān)聯(lián)的語(yǔ)義規(guī)則,每條規(guī)則的形式為b:=f(c1,c2,…,ck)。f是一個(gè)函數(shù),b和c1,c2,…,ck是該產(chǎn)生式文法符號(hào)的屬性(1)如果b是A的一個(gè)屬性,c1,c2,…,ck是產(chǎn)生式右部文法符號(hào)的屬性或A的其他屬性,則稱(chēng)b是A的綜合屬性(2)如果b是產(chǎn)生式右部某個(gè)文法符號(hào)X的一個(gè)屬性,并且c1,c2,…,ck是A或產(chǎn)生式右邊任何文法符號(hào)的屬性,則稱(chēng)b是文法符號(hào)X的繼承屬性在兩種情況下,我們說(shuō)屬性b依賴(lài)于屬性c1,c2,…,ck(1)非終結(jié)符

7、既可有綜合屬性也可有繼承屬性,但文法開(kāi)始符號(hào)沒(méi)有繼承屬性(2)終結(jié)符只有綜合屬性,它們由詞法程序提供例6.1中,E、T和F的val屬性是綜合屬性,例8.2中的L的in是繼承屬性例6.1簡(jiǎn)單算術(shù)表達(dá)式求值的語(yǔ)義描述:產(chǎn)生式          語(yǔ)義規(guī)則(0)LEprint(E,val)(1)EE+TE.val:=E1.val+T.val(2)ETE.val:=T.val(3)TT1*FT.val:=T1.val×F.val(4)TFT.val:=E.val(5)F(E)F.val:=E.val(6)FdigitF.val:=digit.lexval例6.2描述說(shuō)明語(yǔ)句中各種變量

8、的類(lèi)型信息的語(yǔ)義規(guī)則:產(chǎn)生式          語(yǔ)義規(guī)則(1)DTLL.in:=T.type(2)TintT.type:=integer(3)TrealT.type:=real(4)LL1,idL1.in:=L.in(5)Lidaddtype(id.entry,L.in)圖6.3是句子intid1,id2的語(yǔ)法樹(shù),使用  表示屬性的傳遞情況6.2語(yǔ)法制導(dǎo)翻譯概論基于屬性文法的處理過(guò)程(語(yǔ)法制導(dǎo)翻譯):對(duì)單詞符號(hào)串進(jìn)行語(yǔ)法分析,構(gòu)造語(yǔ)法分析樹(shù),然后根據(jù)需要構(gòu)造屬性依賴(lài)圖,遍歷語(yǔ)法樹(shù)并在語(yǔ)法樹(shù)的各結(jié)點(diǎn)處按語(yǔ)義規(guī)則進(jìn)行計(jì)算一.計(jì)算語(yǔ)義規(guī)則所謂依賴(lài)圖是一個(gè)有向圖,用于描述分析樹(shù)中的

9、屬性和屬性間的相互依賴(lài)關(guān)系依賴(lài)圖的構(gòu)造算法如下:for分析樹(shù)中每一個(gè)結(jié)點(diǎn)ndofor結(jié)點(diǎn)的文法符號(hào)的每一個(gè)屬性ado為a在依賴(lài)圖中建立一個(gè)結(jié)點(diǎn);for分析樹(shù)中每一個(gè)結(jié)點(diǎn)ndofor結(jié)點(diǎn)n所用產(chǎn)生式對(duì)應(yīng)的每一個(gè)語(yǔ)義規(guī)則b:=f(c1,c2,…,ck)dofori:=1tokdo從ci結(jié)點(diǎn)到b結(jié)點(diǎn)構(gòu)造一條有向邊例6.2的句子Realid1,id2,id3分析樹(shù)的依賴(lài)圖(圖中的結(jié)點(diǎn)用數(shù)字表示)如圖6.4:從依賴(lài)圖的拓?fù)渑判蛑?,可以得到所有?jì)算語(yǔ)義規(guī)則的順序。用這個(gè)順序來(lái)計(jì)算語(yǔ)義規(guī)則就得到輸入符號(hào)串的翻譯屬性計(jì)算有樹(shù)遍歷的和一遍掃描的方法二.S-屬性文法和自下而上翻譯S-屬性文法是

10、只含有綜合屬性的屬性文法綜合屬性可 在分析輸入符號(hào)串的同時(shí)自下而上來(lái)計(jì)算S-屬性文法的翻譯器通??山柚贚R分析器實(shí)現(xiàn)分析器可以保存與棧中文法符號(hào)有關(guān)的綜合屬性值,每當(dāng)進(jìn)行歸約時(shí),新的屬性值就由棧中正在歸約的產(chǎn)生式右邊符號(hào)的屬性值來(lái)計(jì)算對(duì)例6.1的輸入串2+3*5語(yǔ)法樹(shù)如圖6.5:三.L-屬性文法在自上而下分析中的實(shí)現(xiàn)一個(gè)屬性文法稱(chēng)為L(zhǎng)-屬性文法,如果對(duì)于每個(gè)產(chǎn)生式AX1X2…Xn,其每個(gè)語(yǔ)義規(guī)則中的每個(gè)屬性或者是綜合屬性,或者是Xj(1≤j≤n)的一個(gè)繼承屬性且這個(gè)繼承屬性?xún)H依賴(lài)于:(1)產(chǎn)生式Xj在左邊符號(hào)X1

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

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

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