編譯原理例題習(xí)題講解(ch6-ch7)_第1頁
編譯原理例題習(xí)題講解(ch6-ch7)_第2頁
編譯原理例題習(xí)題講解(ch6-ch7)_第3頁
編譯原理例題習(xí)題講解(ch6-ch7)_第4頁
編譯原理例題習(xí)題講解(ch6-ch7)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第 6-7 章章 語法制導(dǎo)翻譯語法制導(dǎo)翻譯中間代碼中間代碼 一、一、重點與難點重點與難點 重點:語法制導(dǎo)翻譯的基本思想,屬性文法,翻譯模式,說明語句的翻譯方案。 三地址碼,各種語句的目標(biāo)代碼結(jié)構(gòu)、屬性文法與翻譯模式。 難點:屬性的意義,對綜合屬性,繼承屬性,固有屬性的理解,屬性計算,怎么通過屬性來 表達翻譯。布爾表達式的翻譯,對各種語句的目標(biāo)代碼結(jié)構(gòu)、屬性文法與翻譯模式的理解。 二、基本要求二、基本要求 掌握語法制導(dǎo)翻譯的基本思想, 屬性文法, 綜合屬性, 繼承屬性, 固有屬性, 屬性計算, S_屬性文法,L_屬性文法,說明語句的翻譯方案,翻譯模式、屬性文法的實現(xiàn) 掌握中間語言與語義分析的基

2、本概念;熟練掌握語法(結(jié)構(gòu))樹、三地址代碼、賦值與 控制語句的翻譯;理解組合數(shù)據(jù)說明的翻譯、過程調(diào)用翻譯、說明語句的翻譯。 三、例題與習(xí)題三、例題與習(xí)題 1、翻譯算術(shù)表達式 (a+b)*(c+d) +(a+b+c) 為三地址代碼 解:寫出三地址代碼為: t1 := a + b t2 := - t1 t3 := c + d t4 := t2 * t3 t5 := a + b t6 := t5 + c t7: = t4 + t6 2、對下面的文法,設(shè)計語法制導(dǎo)定義獲得類型信息,要求只利用綜合屬性。 DL,id | L LT id Tint | real 解: 3、請設(shè)計語法制導(dǎo)的定義,將后綴表達式

3、翻譯成中綴表達式。注意,不允許出 現(xiàn)冗余括號,后綴表達式的文法如下: EEE+ EEE* Eid 解: 4、 下面文法產(chǎn)生的表達式是對整型和實型常數(shù)應(yīng)用算符+形成的。 當(dāng)兩個整數(shù)相 加時,結(jié)果為整數(shù),否則為實數(shù)。 E TR R + TR| Tnum.num | num a) 給出語法制導(dǎo)定義確定每個子表達式的類型。 b) 把表達式翻譯成前綴形式,并且決定類型。試用一元運算符inttoreal 把整型 值轉(zhuǎn)換為相等的實型值,以使得前綴表達式中兩個運算對象是同類型的。 解:a)設(shè)type 是綜合屬性,代表各非終結(jié)符的“類型”屬性 設(shè)in 是繼承屬性,翻譯模式如表所示。 b)設(shè)屬性s 和i 用于傳遞

4、屬性type,屬性t 和j 用于傳遞屬性val。 5、令S.val 為下面的文法由S 生成的二進制數(shù)的值(如,對于輸入101.101,S.val =5.625); SL.L | L LLB | B B0 | 1 按照語法制導(dǎo)翻譯的方法,對每個產(chǎn)生式給出相應(yīng)的語義規(guī)則。 解: SS print(S.val); SL1.L2 S.val:=L1.val+L2.val/2L2.length ; S L S.val:=L.val; LL1B L.val:=L1.val*2+B.val; L.length:=L1.length+1; LB L.val:=B.val; L.length:=1; B0 B.

5、val:=0; B1 B.val:=1; 6、在一個移入歸約的分析中采用以下的語法制導(dǎo)的翻譯模式,在按一產(chǎn)生式 歸約時,立即執(zhí)行括號中的動作。 AaB print “0”; Ac print “1”; BAb print “2” 當(dāng)分析器的輸入為 aacbb 時,打印的字符串是什么? 解:分析器的分析過程如下圖所示: 由于分析器采用移入歸約的方式進行分析,符號串a(chǎn)acbb 的分析過程將如 圖中所標(biāo)的歸約順序進行,而在按一產(chǎn)生式歸約時,立即執(zhí)行括號中的動作,所 以分析器打印的字符為 12020。 7、文法如下: PD DD;D|id:T|proc id;D;S (1)設(shè)計語法制導(dǎo)定義,打印該程序

6、一共聲明的 id 個數(shù) (2)設(shè)計翻譯模式,打印 P 所生成的程序中每個 id 的嵌套深度 解: (1) 語法制導(dǎo)定義:引入屬性 i,記錄 id 的個數(shù) PD printf(D.i); DD1;D2 D.i=D1.i+D2.i; Did:T D.i=1; Dproc id;D1;S D.i=D1.i+1 (2)翻譯模式:引入屬性 level 和 name PD.level=1;D DD1.level=D.level; D1; D2.level=D.level;D2 Did:T printf(,D.lev); Dproc id; D1.level=D.level+1; D1;S 8、請將下列語句 while (AD) then X:=Y+Z 翻譯成四元式 解:翻譯的三地址碼序列: L1: if AB goto L1 goto L4 L2: if CD goto L3 goto L1 L3:T=Y+Z X=T goto L1 L4: 9、將下列程序的執(zhí)行語句翻譯成三地址代碼(設(shè) S.next 為 L0): if( i j ) s = 10 * s e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論