Chapter語法制導翻譯及中間代碼生成_第1頁
Chapter語法制導翻譯及中間代碼生成_第2頁
Chapter語法制導翻譯及中間代碼生成_第3頁
Chapter語法制導翻譯及中間代碼生成_第4頁
Chapter語法制導翻譯及中間代碼生成_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Chapter 5. 語法制導翻譯及 中間代碼生成Part2- 5.3 n波蘭邏輯學家J.Lukasiewicz于1929年提出了另一種表示表達式的方法。按此方法,每一運算符都置于其運算對象之后,故稱為后綴表示。表達式中各個是按,故無須使用括號來指示運算順序,因而又稱為。下面我們對照地給出一些表達式的兩種表示:A+BAB+A+B*CABC*+(A+B)*(C+D)AB+CD+*x/yz-d*exyz/de*-(a=0b3)(exy) a0=b3 exy四元式和三元式四元式和三元式是一種更接近目標代碼的中間代碼形式,由于這種形式的中間代碼便于優(yōu)化處理,因此,在目前的許多編譯程序中得到了廣泛的應用

2、。是一種“三地址語句三地址語句”的等價表示。它的一般形式為:(op,arg1,arg2,)其中,op為一個二元(也可是一元或零元)運算符; arg1,arg2分別為它的兩個運算對象,它們可以是變量、常數(shù)或系統(tǒng)定義的臨時變量名;運算的結(jié)果將放入中。四元式還可寫為類似 于 P A S C A L 語 言 的 賦 值 語 句 的 形 式 :result := arg1 op arg2n需要指出的是,每個只能有一個運算符,所以,一個復雜的表達式只能由多個構(gòu)成的序列表示。n例如,表達式A+B*C可寫為序列 T1:=B*CT2:=A+T1n當op為一元、零元運算(如無條件轉(zhuǎn)移)時,arg2甚至arg1應缺

3、省,即result:=op arg1或 op result ;對應的一般形式為:(op,arg1,-,result)或 (op,-,-,result) 。三元式n為了節(jié)省臨時變量的開銷,有時也可采用一種三元式結(jié)構(gòu)來作為中間代碼,其一般形式為(i) (op,arg1,arg2)其中,(i)為的編號,也代表了該式的運算結(jié)果;op,arg1,arg2的含義與類似,區(qū)別在于arg可以是某的序號,表示用該的結(jié)果作為運算對象。例如,對于賦值語句a:=-b*(c+d),若用表示,則可寫成(U_minus, b, - )( + , c, d )( * , , )( := , ,a )式中的運算符U_minus

4、表示一元減運算。翻譯程序中使用的輔助函數(shù)int LookUp(char *Name)以Name查符號表,若查到則返回相應登記項的序號(1),否則返回0。int Enter(char* Name)以Name為名字在符號表中登錄新的一項,返回值為該項的序號。int Entry(char *Name)以Name為名字查、填符號表: int Entry(char *Name)int i=LookUp(Name); if(i) return i;else return Enter(Name);注意,在實際的編譯系統(tǒng)中,還應區(qū)分當前是否在處理說明部分:若是說明部分,則查表時i應為0(否則Name被重復定義);若非,則i不能為0(否則Name尚未被定義)。int Trip(int op,int arg1,int arg2)根據(jù)給定的參數(shù)產(chǎn)生一個(op,arg1,arg2)并將它送入表中,其返回值為表中序號。為區(qū)分參數(shù)arg表示的是還是變量,約定當arg0表示變量在符號表中登記項序號;arg=0表示參數(shù)為空。翻譯的S屬性翻譯文法ExprExpr$=$1;ExprExpr+Term$=Trip(+,$1,$3); |Term$=$1; |-Term$=Trip(U_minus,$2,0);TermTerm*

溫馨提示

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

評論

0/150

提交評論