語法制導(dǎo)翻譯和中間代碼的生成_第1頁
語法制導(dǎo)翻譯和中間代碼的生成_第2頁
語法制導(dǎo)翻譯和中間代碼的生成_第3頁
語法制導(dǎo)翻譯和中間代碼的生成_第4頁
語法制導(dǎo)翻譯和中間代碼的生成_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 GE GE ET ET1 1 T T2 2|T|T1 1 or T or T2 2 Tnum|true|false Tnum|true|false 輸入串輸入串3+43+4ETT34+ETT34+根據(jù)每個產(chǎn)生式所對應(yīng)的語義子程序根據(jù)每個產(chǎn)生式所對應(yīng)的語義子程序(或語義規(guī)則描述的語義動作)進(jìn)行(或語義規(guī)則描述的語義動作)進(jìn)行翻譯的辦法稱作語法制導(dǎo)翻譯。翻譯的辦法稱作語法制導(dǎo)翻譯。兩個主要任務(wù)兩個主要任務(wù): : (1). (1).簡單算數(shù)術(shù)表達(dá)式計(jì)算它的值簡單算數(shù)術(shù)表達(dá)式計(jì)算它的值, , (2). (2).其它語法結(jié)構(gòu)翻印成中間代碼其它語法結(jié)構(gòu)翻印成中間代碼 1). 1).逆波蘭記號逆波蘭記號

2、2).2).三元式三元式 3).3).樹形表示樹形表示 4).4).四元式四元式 :=a+*bbcd+T1T2*T1T2-T1T2/T1T2-T1規(guī)則:規(guī)則:(op , Arg1 , Arg2 , Resultop , Arg1 , Arg2 , Result) 實(shí)例實(shí)例:a:=b:a:=b* *c+bc+b* *d d表示為表示為: : (1). ( (1). (* *, b , c , t1), b , c , t1) (2). ( (2). (* *, b , d , t2), b , d , t2) (3). (+, t1 , t2 , t3) (3). (+, t1 , t2 , t

3、3) (4). (:=, t3 , , a) (4). (:=, t3 , , a)1)E.type1)E.type表示表示E E的類型信息,的類型信息,E.typeE.type的值或?yàn)榈闹祷驗(yàn)閕ntint 或?yàn)榛驗(yàn)閞ealreal,2)2)整型加(乘)和實(shí)型加(乘整型加(乘)和實(shí)型加(乘), ), 把十(把十(* *)分別)分別 寫作十寫作十i i( (* *i i) )和十和十r r( (* *r r). ). 3)3)用一目算符用一目算符 itritr表示將整型運(yùn)算對象轉(zhuǎn)換成實(shí)表示將整型運(yùn)算對象轉(zhuǎn)換成實(shí) 型。型。 (1). if ab goto (4) (2). t:=0 (3). go

4、to (5) (4). t:=1 (5).EEEE1 1 or E or E2 2 E.Place:=newtemp; E.Place:=newtemp; emit(E.place :=E emit(E.place :=E1 1.place or E.place or E2 2.place).place)EEEE1 1 and E and E2 2 E.Place:=newtemp; E.Place:=newtemp; emit(E.place :=E emit(E.place :=E1 1.place and E.place and E2 2.place).place)Enot EEnot

5、E1 1 E.Place:=newtemp; E.Place:=newtemp; emit(E.place := not E emit(E.place := not E1 1.place).place)E(EE(E1 1) ) emit(E.place := E emit(E.place := E1 1.place).place)E的代碼S S1 1的代碼E的代碼S S1 1的代碼Jump outS S2 2的代碼E的代碼S S1 1的代碼Jump beginJump begin(1)(1).if ab goto (7).if ab goto (7)(2).goto (3)(2).goto (

6、3)(3) If cd goto (5)(3) If cf goto (7)if ef goto (7)(6)(6) goto (p+1) goto (p+1)(7) s1(7) s1的四元式的四元式 .(p) goto(q)(p) goto(q)P+1P+1的四元式的四元式 .(q)(q)產(chǎn)生四元時(shí)不知道產(chǎn)生四元時(shí)不知道(10) goto E.true (10). goto (0).(20) goto E.true (20) goto(10).(30) goto E.true (30) goto(20).(40) goto E.true (40) goto(30) 表達(dá)式:表達(dá)式:ab or

7、 cd and ef其語法樹為:其語法樹為: E.true=100,104E.false=103,105E.true=104E.false=103,105E.true=104E.false=105E.true=100E.false=101E.true=102E.false=103EabEEorcdefEEand歸約歸約ab 產(chǎn)生式產(chǎn)生式Eid1 relop id2Eid1 relop id2E.true:=nextstat;E.true:=nextstat; E.codebegin:= nextstat; E.codebegin:= nextstat; E.false:= nextstat+1

8、; E.false:= nextstat+1; emit(if id1.place rop id2.place goto -) emit(if id1.place rop id2.place goto -) emit(goto -); emit(goto -);得得:100:if ab goto :100:if ab goto 101:goto - 101:goto -E. codebegin=100E.true=100E.false=101歸約歸約cd 產(chǎn)生式產(chǎn)生式102 :if cd goto 103:goto -E1. codebegin=102E.true=102E.false=103

9、歸約歸約ef104 :if ef goto 105:goto -E2. codebegin=104E.true=104E.false=105EEEE1 1 andand E E2 2backpatch(Ebackpatch(E1 1.true, E.true, E2 2.codebegin);.codebegin); E.codebegin:= E E.codebegin:= E1 1.codebegin;.codebegin; E.true:=E E.true:=E2 2.true;.true; E.false:=merge(E E.false:=merge(E1 1.false, E.fa

10、lse, E2 2.false) .false) E2. codebegin=104E.true=104E.false=105E1. codebegin=102E.true=102E.false=103backpatch(E1.true, E2.codebegin)=backpatch(102, 104)E.false:=merge(E1.false, E2.false) = merge(103, 105)E.true=104100:if ab goto 101:goto -102 :if cd goto 104103:goto 104 :if ef goto 105:goto 103E. c

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

評論

0/150

提交評論