編譯原理課件05語法制導(dǎo)翻譯技術(shù)和中間代碼生成_第1頁
編譯原理課件05語法制導(dǎo)翻譯技術(shù)和中間代碼生成_第2頁
編譯原理課件05語法制導(dǎo)翻譯技術(shù)和中間代碼生成_第3頁
編譯原理課件05語法制導(dǎo)翻譯技術(shù)和中間代碼生成_第4頁
編譯原理課件05語法制導(dǎo)翻譯技術(shù)和中間代碼生成_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章語法引導(dǎo)翻譯技術(shù)和中間查詢密碼生成,5.1概要5.2屬性語法5.3語法引導(dǎo)翻譯概要5.4中間語言5.5自下而上語法引導(dǎo)翻譯5.6遞歸下降語法引導(dǎo)的翻譯本章總結(jié),語義分析的任務(wù):靜態(tài)語義審查,審查各語法結(jié)構(gòu)的靜態(tài)語義,即檢驗語法結(jié)構(gòu)合法的過程,真的意義有木有。 5.1概要、例如:式A B*C、對運(yùn)算對象進(jìn)行類型檢查,先定義變量后進(jìn)行檢查,如果靜態(tài)意義正確,則意義處理執(zhí)行真翻譯,即生成程序的某個中間查詢密碼的形式,或者直接生成營銷對象查詢密碼。 執(zhí)行真正的翻譯,5.1概要,目前很多編譯程序進(jìn)行語義分析的方法采用語法引導(dǎo)翻譯法。 雖然不是形式上的系統(tǒng),但更接近形式化。 語法引導(dǎo)翻譯法以屬性語法

2、為工具描述軟件編程語言的意義。5.1概要、(1)對于每個屬性、語法符號,引入表示與語法符號有關(guān)的信息(類型、值、存儲位置等)的屬性。 屬性的相關(guān)信息(屬性值)可以在解析過程中進(jìn)行修正和傳遞。 1、屬性語法、5.2屬性語法、屬性被分類為2種:綜合屬性其補(bǔ)正運(yùn)算規(guī)則以“自下而上”方式進(jìn)行,即具有規(guī)則左符號的屬性根據(jù)其右符號的屬性、自各兒的其他屬性進(jìn)行補(bǔ)正。 屬性加工的過程是意義的處理過程。 將屬性和繼承屬性集成在一起。 繼承5.2屬性語法、屬性的其補(bǔ)正規(guī)則以“自上而下”的方式進(jìn)行。 即,規(guī)則的右上部符號的一部分的屬性是根據(jù)該左部分符號的屬性或者右部分的其它符號的一部分的屬性被校正的。 5.2對屬性

3、語法、(2)屬性語法、語法的每個規(guī)則準(zhǔn)備的屬性進(jìn)行訂正的訂正規(guī)則稱為意義規(guī)則(記述意義處理的加工動作)。 的雙曲馀弦值。 屬性語法包括無上下關(guān)系的語法和一系列語義規(guī)則。語義規(guī)則:5.2屬性語法、這些個的語義規(guī)則附加在每個語法生成式中,在語法解析過程中執(zhí)行語義規(guī)則描述的動作,實現(xiàn)語義處理。 即,語法的每個生成式的語義規(guī)則記述了語義處理的加工動作。 目前流行的語義描述和語義處理方法主要是屬性語法和語法誘導(dǎo)翻譯方法。 5.2屬性語法,2 .語法引導(dǎo)翻譯法包括每個語法生成公式的語義動作或語義子例程。 在語法解析過程中,每次使用一個生成式進(jìn)行導(dǎo)出或歸納時,執(zhí)行相應(yīng)的生成式的語義動作,實現(xiàn)語義處理。 5.

4、3語法引導(dǎo)翻譯概要(1)語法引導(dǎo)翻譯法的基本思想,s,Axy,意思處理的加工動作,語法引導(dǎo)翻譯法以屬性語法為工具來說明軟件編程語言的意思。 5.3語法指南翻譯的概要,(2)語法指南翻譯法是在語法解析的過程中,按照解析的過程,基于與每個生成式對應(yīng)的語義子程序(或者語義規(guī)則描述的語義處理的加工動作)進(jìn)行翻譯的方法。 5.3語法引導(dǎo)翻譯概要、與每個語法生成式相對應(yīng)的評價的意義記述(意義動作):例如,設(shè)置了單純的算術(shù)式的語法:高能效以太網(wǎng)| e * e|(e )|digit,1.ee(1)即E.val E(1).val*E(2).val,3.E (E(1) )、e.val 4.E digit 7、語句

5、7 8*5、e、e、e、e、e、e、3 .編譯中經(jīng)常使用的中間查詢密碼:逆波蘭式、四維式、三維式、樹形表示、5.4中間查詢密碼、逆波蘭式。例如,逆波蘭式、a*b、ab*、(a b)*(c d )、ab cd *、中間裝訂式、5.4中間查詢密碼、逆波蘭式表示法與中間裝訂表示法相比,優(yōu)點為:沒有括弧。 但是,處理用反波蘭式表示的公式的只有一個工作棧內(nèi)存。 另外,5.4中間查詢密碼在計算機(jī)從左向右依次掃描倒三角波形式時,如果當(dāng)前的符號是運(yùn)算對象,則進(jìn)入棧內(nèi)存,如果當(dāng)前的符號是算子,則設(shè)為k元算子、5.4中間查詢密碼、反波蘭式ab c*的處理過程如下圖所示:5.4中間查詢密碼、反坡南非蘭特形式可展開成

6、其它語法結(jié)構(gòu):代入文、V=E、反波蘭式、VE=、條件句、反波蘭式、iii else S2、ES1S2、5.4中間查詢密碼、三元式和樹形表示、三元式主要由三部分組成這里,OP是運(yùn)算符,arg1、arg2分別是第一和第二兩個運(yùn)算,在OP是目標(biāo)運(yùn)算的情況下,將運(yùn)算對象定義為arg1的情況較多。第五章語法引導(dǎo)翻譯技術(shù)和中間查詢密碼生成,例如,a b*c的三元式系列:(1) (*、b、c )、(2) (、a、(1) ),運(yùn)算對象是指有象征符表的項或有三元式表的項,5.4中間查詢密碼,1 .三元式出現(xiàn)的順序與語法成分的修正值順序一致。 三元式的特點:2 .三元式之間的聯(lián)系通過指示符實現(xiàn)。5.4中間查詢密碼

7、、間接三維式、(1)間接三維式表:被用于存儲各個三維式本身。 (2)直接查詢密碼顯示:以執(zhí)行各三維形式的順序列出三維形式顯示中各三維形式的位置。 請注意,間接三元表不存儲重復(fù)的三元表達(dá)式。 例如,語句、X=(A B)*C、Y=D(A B )、三元序列、(1) (、a、b )、(2) (*、(2) (5)、間接三元式、間接查詢密碼表、三元式表、(1)、(2)、(3)、(1)、(5)、(1) (、a、b )、樹形表為a *。 *、a、*、b、d、終端結(jié)點表示運(yùn)算對象,各自的內(nèi)結(jié)點表示一元或二元的運(yùn)算符。 樹形表示是三元式的復(fù)刻,(3)、(1)*、(2)*、c、a、b、d、5.4中間色查詢密碼,四元

8、式主要由四個部分構(gòu)成:(OP、arg1、)、OP為目標(biāo)運(yùn)算時,多將運(yùn)算對象定義為arg1。5.4中間查詢密碼、四元式的第四個組件result是編譯程序為了存儲中間運(yùn)算結(jié)果而臨時導(dǎo)入的變量,通常稱為Ti之類的臨時變量,也是x之類的用戶定義變量。 例如,X a*bc/d四元式序列:(1) (*、a、b、T1)、(2) (/、c、d、T2)、(3) (、ttl、1 .四元式出現(xiàn)的順序與語法成分的修正數(shù)值順序一致。 四元式的特點:3 .易于優(yōu)化處理。 在5.4中間查詢密碼、編譯系統(tǒng)中,四元表達(dá)式可以表示為另一個更直觀、更易懂的形式的三地址查詢密碼或三地址語句。result : arg1 OP arg2

9、、3地址語句:語句中3個量的代入語句,各量占據(jù)1個地址。三地址查詢密碼格式被定義為5.4中間查詢密碼,例如,X a*bc/d的四元序列: (*,a,b,T1 ),(2) (/,c,d,T2 ),(3)T3T1T2,(4) xt3,5.4中間查詢密碼,示例1. a b * (c d ) a bc d *,5.4中間查詢密碼,ttd T4=b * T3,5.4中間查詢密碼,i(i/(i ) )的逆波蘭式,i(i/(i ) )的四元式,t1=i i, t3=i t2 (1)揭示源結(jié)構(gòu)和營銷對象結(jié)構(gòu),(2)自下而上語法引導(dǎo)翻譯的特點:棧內(nèi)存掌門人形成駕駛盤,約定時間執(zhí)行相應(yīng)的語義動作,(3)給出從源結(jié)

10、構(gòu)到營銷對象結(jié)構(gòu)的轉(zhuǎn)換方法,5.5自下而上語法引導(dǎo)翻譯, 例1 .如下所述的: tr打印“3”、RR/s打印“4”和RS打印“5”,語法及其相應(yīng)的語義行為采用由下到上的語法導(dǎo)航翻譯,從而為輸入串bR/bTc/bSc/ac的翻譯結(jié)果提供5.5個由下到上的語法導(dǎo)航r,c,t,b,a,s,c,t,b,r, s輸入為bR/bTc/bSc /ac,對應(yīng)的語義動作(翻譯計劃)、打印“1”、打印“2”、打印“3”、打印“4”、高能效以太網(wǎng)、1.e e (1)、e.val e (1) . val E.val Lex.digit,5.5自下而上的語法誘導(dǎo)翻譯,示例3從簡單算術(shù)表達(dá)式到四元表達(dá)式的語義描述,例如,

11、具有簡單算術(shù)表達(dá)式的語法:高能效以太網(wǎng)| e * e|(e )|I,5.5自下而上的語法(3)T3T1T2,a*bc*d,5.5自下而上的語法語義函數(shù)newtemp ()是生成新的臨時變量名并返回新的臨時變量名的整數(shù)的功能。 例如T1、T2等。5.5自下而上的語法誘導(dǎo)翻譯,(2)不加符號表,假變量單詞值部分用整數(shù)表示。 (1)發(fā)送符號表。 對于臨時變量,有兩種不同的處理方法3360,5.5自下而上的語法誘導(dǎo)翻譯,語義過程Lookup( ),功能是審查是否出現(xiàn)在符號表中,否則返回其指針,否則返回NULL。 語義變量E.place表示變量名稱的象征符表中的條目地址或臨時變量

12、名稱的整數(shù),用于存儲終止符e以外的值。 5.5自下而上的語法導(dǎo)航翻譯,1. E E(1) E(2),2. E E(1) * E(2),E.place newtemp (); emit (e.placee (1).placee (2).place )、E.place newtemp (); emit (e.placee (1).place * e (2).place )、5.5自下而上的語法導(dǎo)航翻譯、3. E (E(1) )、e.place、4. E i、p Lookup ( ); 國際貨幣基金組織=空) e .放置p; else錯誤();5.5自下而上語法引導(dǎo)翻譯,變量在符號表的入

13、口用變量本身表示,修正高能效以太網(wǎng)| e * e|(e )|I,5.5自下而上語法引導(dǎo)翻譯,5.5自下而上語法引導(dǎo)翻譯,高能效以太網(wǎng)| e * e|(e )邏輯值。 軟件編程語言布爾表達(dá)式有兩個作用:其中布爾操作符(、和)作為控制語句的條件等式應(yīng)用于布爾變量或關(guān)系表達(dá)式。 的雙曲馀弦值。 布爾表達(dá)式到四元表達(dá)式的翻譯為某些語言(如PL/1 )行政許可更常用的表達(dá)式。 可以將布爾操作符、算術(shù)運(yùn)算符和關(guān)系運(yùn)算符應(yīng)用于任何類型的表達(dá)式,而無需區(qū)分布爾值和算術(shù)值。為了簡單起見,考慮以下語法生成的布爾表達(dá)式:從布爾表達(dá)式到四元表達(dá)式的翻譯、僅考慮E E (1) E (2)、E E (1)、E E (1 ) )、2 .由于布爾運(yùn)算的特殊性,通過采取任何優(yōu)化措施,表達(dá)式整體的值、布爾表達(dá)式到四元表達(dá)式的翻譯、AB解釋、AB解釋、a解釋、if A then true else B、if

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論