編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt

編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt

ID:59486336

大?。?04.00 KB

頁數(shù):48頁

時(shí)間:2020-09-13

編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt_第1頁
編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt_第2頁
編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt_第3頁
編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt_第4頁
編譯原理第八章語法制導(dǎo)翻譯與中間代碼生成ppt課件.ppt_第5頁
資源描述:

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

1、第八章語法制導(dǎo)翻譯與中間代碼生成語言的結(jié)構(gòu)可形式的用一組產(chǎn)生式(BNF)描述,這使得語言的詞法分析器和語法分析器的自動(dòng)生成成為可能。本章:語義的形式化困難,語義處理復(fù)雜,難以形式化語義處理主要包括靜態(tài)語義(包括類型規(guī)則和作用域/可見性規(guī)則)檢查和翻譯成中間代碼;對(duì)屬性和屬性文法作一介紹;語法制導(dǎo)翻譯:一種接近形式化的系統(tǒng);典型的中間代碼;語義子程序設(shè)計(jì);各種基本語言成分的自下而上分析的語法制導(dǎo)翻譯。8.1屬性和屬性文法8.1.1屬性文法屬性(attribute)是編程語言結(jié)構(gòu)的任意特性,是一個(gè)語法概念的特征描述。屬性是想表示的任何東西,典型的屬性有:變量的數(shù)據(jù)類型、表達(dá)式的值、存儲(chǔ)器中變量

2、的位置、程序的目標(biāo)代碼、數(shù)的有效位數(shù)等。屬性文法(attributegrammar):將屬性關(guān)系等式附加在相應(yīng)文法規(guī)則上的文法屬性的表示:若a是文法符號(hào)X的一個(gè)屬性,則記作X.a。a稱為屬性變量。屬性關(guān)系等式與采用何種語法分析方式無關(guān),但是屬性的計(jì)算次序受分析方法所限定的分析樹結(jié)點(diǎn)的建立次序的約束。例8.1考慮下面簡單的無符號(hào)數(shù)文法:number→numberdigit

3、digitdigit→0

4、1

5、2

6、3

7、4

8、5

9、6

10、7

11、8

12、9屬性文法:文法規(guī)則語義規(guī)則number(1)→number(2)digitnumber(1).val=number(2).val*10+digit.valnumb

13、er→digitnumber.val=digit.valdigit→0digit.val=0……digit→9digit.val=9屬性計(jì)算依賴于分析樹或語法樹明確或不明確的遍歷:例8.2考慮下列類似C語言中變量聲明的簡單文法:decl→typevar-listtype→int

14、floatvar-list→id,var-list

15、id屬性文法:文法規(guī)則語義規(guī)則decl→typevar-listvar-list.dtype=type.dtypetype→inttype.dtype=integertype→floattype.dtype=realvar-list(1)→id,var-list(

16、2)id.dtype=var-list(1).dtypevar-list(2).dtype=var-list(1).dtypevar-list→idid.dtype=var-list.dtype字符串floatx,y的語法樹,顯示屬性文法指定的dtype屬性:輔助函數(shù)mkOpNode和mkNumNode:mkOpNode構(gòu)成一個(gè)新的樹結(jié)點(diǎn);mkNumNode構(gòu)成一個(gè)葉子結(jié)點(diǎn)。例8.3考慮下列簡單的整數(shù)算術(shù)表達(dá)式文法:exp→exp+term

17、exp-term

18、termterm→term*factor

19、factorfactor→(exp)

20、numberexp(或term或factor)的基本

21、屬性是它的數(shù)字值,寫作val。屬性文法……簡單整型算術(shù)表達(dá)式的抽象語法樹的屬性文法:文法規(guī)則語義規(guī)則exp(1)→exp(2)+termexp(1).tree=mkOpNode(+,exp(2).tree,term.tree)exp(1)→exp(2)-termexp(1).tree=mkOpNode(-,exp(2).tree,term.tree)exp→termexp.tree=term.treeterm(1)→term(2)*factorterm(1).tree=mkOpNode(*,term(2).tree,factor.tree)term→factorterm.tree=fact

22、or.treefactor→(exp)factor.tree=exp.treefactor→numberfactor.tree=mkNumNode(number.lexval)8.1.2綜合和繼承屬性綜合屬性(synthesizedattribute):若產(chǎn)生式左部符號(hào)A的屬性值是通過右部符號(hào)的屬性值或A的其它屬性值得來的S屬性文法:所有的屬性都是綜合的—任一右部符號(hào)的屬性計(jì)算與它所在的產(chǎn)生式無關(guān)(從語法樹看,任一結(jié)點(diǎn)的屬性僅依賴它的下層或它自己的其它屬性,換句話說不依賴上層和同層其它結(jié)點(diǎn)的屬性)S屬性文法的屬性值可以通過對(duì)樹進(jìn)行簡單后序遍歷來計(jì)算:voidPostEval(treenod

23、eT){foreachchildCofTdoPostEval(C);computeallsynthesizedattributesofT;}并不是所有的屬性都是綜合的。所有的非綜合屬性稱為繼承(inherited)屬性。例8.4對(duì)例8.1中的文法進(jìn)行修改,數(shù)可以是八進(jìn)制或十進(jìn)制的based-num→numbasecharbasechar→o

24、dnum→numdigit

25、digitdigit→0

26、1

27、2

28、3

29、4

30、5

31、6

32、7

當(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)有爭議請(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)系客服處理。