第06章 語(yǔ)法制導(dǎo)翻譯技術(shù)_第1頁(yè)
第06章 語(yǔ)法制導(dǎo)翻譯技術(shù)_第2頁(yè)
第06章 語(yǔ)法制導(dǎo)翻譯技術(shù)_第3頁(yè)
第06章 語(yǔ)法制導(dǎo)翻譯技術(shù)_第4頁(yè)
第06章 語(yǔ)法制導(dǎo)翻譯技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1S.PO.P語(yǔ)義分析及生成中間代碼程序語(yǔ)義分析及生成中間代碼程序代碼生成程序代碼生成程序代碼優(yōu)化程序代碼優(yōu)化程序語(yǔ)法分析程序語(yǔ)法分析程序詞法分析程序詞法分析程序錯(cuò)錯(cuò)誤誤處處理理符符號(hào)號(hào)表表管管理理2教學(xué)目標(biāo)教學(xué)目標(biāo) 要求理解要求理解翻譯文法翻譯文法的概念的概念 理解理解語(yǔ)法制導(dǎo)翻譯語(yǔ)法制導(dǎo)翻譯和和屬性翻譯文法屬性翻譯文法的含義的含義 明確明確自頂向下自頂向下和和自底向上自底向上語(yǔ)法制導(dǎo)翻譯的語(yǔ)法制導(dǎo)翻譯的區(qū)別和特點(diǎn)區(qū)別和特點(diǎn)36.1 6.1 翻譯文法翻譯文法6.2 6.2 語(yǔ)法制導(dǎo)翻譯語(yǔ)法制導(dǎo)翻譯6.3 6.3 自頂向下語(yǔ)法制導(dǎo)翻譯自頂向下語(yǔ)法制導(dǎo)翻譯6.4 6.4 屬性翻譯文法屬性翻譯文法

2、6.5 6.5 屬性文法的自頂向下翻譯屬性文法的自頂向下翻譯6.6 6.6 自底向上語(yǔ)法制導(dǎo)翻譯自底向上語(yǔ)法制導(dǎo)翻譯教學(xué)內(nèi)容教學(xué)內(nèi)容4程序語(yǔ)言中間代碼目標(biāo)代碼程序語(yǔ)言中間代碼目標(biāo)代碼翻譯翻譯翻譯翻譯5實(shí)際應(yīng)用中比較流行的語(yǔ)義分析方法:實(shí)際應(yīng)用中比較流行的語(yǔ)義分析方法:基于基于屬性文法屬性文法的的語(yǔ)法制導(dǎo)翻譯方法語(yǔ)法制導(dǎo)翻譯方法6中綴表示中綴表示后綴表示后綴表示a+b ab+a+b*c abc*+(a+b)*c ab+c*a:=b*c+b*d abc*bd*+:=特點(diǎn)特點(diǎn)1、運(yùn)算對(duì)象出現(xiàn)的順序和原有順序(從左到右)相同、運(yùn)算對(duì)象出現(xiàn)的順序和原有順序(從左到右)相同2、運(yùn)算符按實(shí)際計(jì)算順序(從左到

3、右)出現(xiàn)、運(yùn)算符按實(shí)際計(jì)算順序(從左到右)出現(xiàn)3、運(yùn)算符緊跟在運(yùn)算對(duì)象的后面出現(xiàn),且沒(méi)有括號(hào)、運(yùn)算符緊跟在運(yùn)算對(duì)象的后面出現(xiàn),且沒(méi)有括號(hào)優(yōu)點(diǎn):簡(jiǎn)明、便于計(jì)值優(yōu)點(diǎn):簡(jiǎn)明、便于計(jì)值7分別給出下列表達(dá)式的后綴表示分別給出下列表達(dá)式的后綴表示 a+b*(c-d) (a-b)*c+d3. -a+b*(-c+d)4. X:=-(a+b)/(c-d)-(a+b*c)1. abcd-*+2. ab-c*d+3. a-bc-d+*+4. Xab+-cd-/abc*+-:=8中綴表達(dá)式翻譯成波蘭后綴表達(dá)式中綴表達(dá)式翻譯成波蘭后綴表達(dá)式aa+bb*cc*+ a+b*c輸入串輸入串a(chǎn)bc*+輸出結(jié)果輸出結(jié)果活動(dòng)序列活

4、動(dòng)序列為動(dòng)作符號(hào)標(biāo)記為動(dòng)作符號(hào)標(biāo)記+為一個(gè)動(dòng)作符號(hào)為一個(gè)動(dòng)作符號(hào)9 EE+T ET TT*F TF F(E) Fa Fb Fc EE+T ET TT*F* TF F(E) Faa Fbb Fcc翻譯文法就是翻譯文法就是在原有的輸入在原有的輸入文法基礎(chǔ)上,文法基礎(chǔ)上,在規(guī)則右部適在規(guī)則右部適當(dāng)位置加入動(dòng)當(dāng)位置加入動(dòng)作符號(hào)所得。作符號(hào)所得。10 EE+T ET TT*F* TF F(E) Faa Fbb Fcc其中:其中: +,*,a 為動(dòng)作符號(hào)。為動(dòng)作符號(hào)。為動(dòng)作符號(hào)標(biāo)記,后為動(dòng)作符號(hào)標(biāo)記,后面為字符串。面為字符串。 在本例中,其對(duì)應(yīng)語(yǔ)義子程序的功能是要輸出打在本例中,其對(duì)應(yīng)語(yǔ)義子程序的功能是要

5、輸出打印動(dòng)作符號(hào)標(biāo)記后面的字符串。印動(dòng)作符號(hào)標(biāo)記后面的字符串。所以:所以:產(chǎn)生式產(chǎn)生式1:EE+T+ 的語(yǔ)義是分析的語(yǔ)義是分析E, + 和和T,輸出,輸出+產(chǎn)生式產(chǎn)生式6:Fa a的語(yǔ)義是分析的語(yǔ)義是分析a,輸出,輸出a11用輸入文法推導(dǎo):用輸入文法推導(dǎo):ETTF*F(E)E+TTFaFbb12用翻譯文法推導(dǎo)得到活動(dòng)序列用翻譯文法推導(dǎo)得到活動(dòng)序列(aa+bb+)*bb*:E=T=T*F*=F*F*=(E)*F*=(E+T+)*F*=(T+T+)*F*=(F+T+)*F*=(aa+T+)*F*=(a a +F+)*F*=(a a +bb+)*F*=(a a +b b+)*b b*ETTF*F(E

6、)E+TTFaFb*bbab13下面給出輸入文法和翻譯文法的概念:下面給出輸入文法和翻譯文法的概念:輸入文法:輸入文法:未插入動(dòng)作符號(hào)時(shí)的文法。未插入動(dòng)作符號(hào)時(shí)的文法。 由由輸入文法輸入文法可以通過(guò)推導(dǎo)產(chǎn)生可以通過(guò)推導(dǎo)產(chǎn)生輸入序列輸入序列。翻譯文法:翻譯文法:插入動(dòng)作符號(hào)的文法。插入動(dòng)作符號(hào)的文法。 由由翻譯文法翻譯文法可以通過(guò)推導(dǎo)產(chǎn)生可以通過(guò)推導(dǎo)產(chǎn)生活動(dòng)序列。活動(dòng)序列。 輸入序列輸入序列 動(dòng)作序列動(dòng)作序列 14定義定義 翻譯文法翻譯文法是上下文無(wú)關(guān)文法,其是上下文無(wú)關(guān)文法,其終結(jié)符號(hào)集終結(jié)符號(hào)集由由輸入符號(hào)輸入符號(hào)和和動(dòng)作符號(hào)動(dòng)作符號(hào)組成。組成。由翻譯文法所產(chǎn)生的終由翻譯文法所產(chǎn)生的終結(jié)符號(hào)

7、串稱為結(jié)符號(hào)串稱為活動(dòng)序列活動(dòng)序列?;顒?dòng)序列活動(dòng)序列:由翻譯文法推導(dǎo)出的符號(hào)串,由由翻譯文法推導(dǎo)出的符號(hào)串,由終結(jié)符終結(jié)符和和動(dòng)作符號(hào)動(dòng)作符號(hào)組成。組成。從從活動(dòng)序列活動(dòng)序列中,抽去中,抽去動(dòng)作符號(hào)動(dòng)作符號(hào),則得,則得輸入序列輸入序列(a+b)*b從從活動(dòng)序列活動(dòng)序列中,中,抽去抽去輸入序列輸入序列,則得,則得動(dòng)作序列動(dòng)作序列,執(zhí)行動(dòng)作序列,則完成翻譯任務(wù):執(zhí)行動(dòng)作序列,則完成翻譯任務(wù): ab+b* ab+b* (aa+bb+)*bb*15例:例:翻譯文法翻譯文法G(E)=Vn,Vt,P,E,其中其中Vn=E, T, FVt=a, b, c, +, *, (, ), +, *, a, b, c

8、P= EE+T+,F(E),ET,Faa,TT*F*,Fbb,TF,Fcc符號(hào)串翻譯文法:符號(hào)串翻譯文法:若插入文法中的動(dòng)作符號(hào)對(duì)應(yīng)的語(yǔ)若插入文法中的動(dòng)作符號(hào)對(duì)應(yīng)的語(yǔ)義子程序是輸出動(dòng)作符號(hào)標(biāo)記義子程序是輸出動(dòng)作符號(hào)標(biāo)記后的字符串的文法。后的字符串的文法。16語(yǔ)法制導(dǎo)翻譯:語(yǔ)法制導(dǎo)翻譯:按翻譯文法進(jìn)行的翻譯。按翻譯文法進(jìn)行的翻譯。給定一輸入符號(hào)串,根據(jù)翻譯文法獲得翻譯該符號(hào)串給定一輸入符號(hào)串,根據(jù)翻譯文法獲得翻譯該符號(hào)串的動(dòng)作序列,并執(zhí)行該序列所規(guī)定的動(dòng)作的過(guò)程。的動(dòng)作序列,并執(zhí)行該序列所規(guī)定的動(dòng)作的過(guò)程。171819 EE+T ET TT*F* TF F(E) Fii消除左遞歸消除左遞歸 ET

9、+T TF*F* F(E) Fii20處理處理E的遞歸下降翻譯程序流程圖的遞歸下降翻譯程序流程圖ET+T T EINPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) T OUT(“+”) INPUTSYM=+ 出口出口 Y N 21處理處理E的遞歸下降翻譯程序代碼的遞歸下降翻譯程序代碼ET+T int E()int es=0;es=T();while(ch=+)ch=getchar();es=T();printf(“+”);return es;T EINPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) T OUT(“+”) INPUTSYM=+ 出口出口 Y N 22處理處理T的遞歸下降翻譯程序流程圖的遞歸下降翻譯程序流

10、程圖TF*F*F TINPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) F OUT(“*”) INPUTSYM=* 出口出口 Y N 23處理處理T的遞歸下降翻譯程序代碼的遞歸下降翻譯程序代碼TF*F*F TINPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) F OUT(“*”) INPUTSYM=* 出口出口 Y N int T()int es=0;es=F();while(ch=*)ch=getchar();es=F();printf(“*”);return es;24處理處理F的遞歸下降翻譯程序流程圖的遞歸下降翻譯程序流程圖F(E) FiiE FINPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) INPUTSYM=) 出口

11、出口 Y N INPUTSYM=( INPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) Y N INPUTSYM=下一個(gè)符號(hào)下一個(gè)符號(hào) INPUTSYM=i OUT(i) ERRORERRORN 25處理處理F的遞歸下降翻譯程序代碼的遞歸下降翻譯程序代碼F(E) Fiiint F() int es=0; if(ch=()ch=getchar();es=E();if(ch!=)return 3;elsech=getchar();return es; elseelseif(isalpha(ch) /判斷是否為字母判斷是否為字母printf(“%c”,ch);ch=getchar();return es;els

12、e return 4;26考慮下面的輸入考慮下面的輸入文法:文法: AaBcD Ab Bc BaA DcD Db 輸入文法的輸入文法的LL(1)LL(1)分析表分析表 27如果我們?cè)谠撦斎胛姆ǖ倪m當(dāng)?shù)胤讲迦敕g所需要的如果我們?cè)谠撦斎胛姆ǖ倪m當(dāng)?shù)胤讲迦敕g所需要的動(dòng)作符號(hào),那么,可得到如下的翻譯文法:動(dòng)作符號(hào),那么,可得到如下的翻譯文法: AvawBxcyDz Ab Bcr BamA DcDn Dsb輸入文法:輸入文法: AaBcD Ab Bc BaA DcD Db 28翻譯文法:翻譯文法: AvawBxcyDz Ab Bcr BamA DcDn Dsb翻譯文法的翻譯文法的LL(1)LL(1)

13、分析表分析表 29對(duì)于翻譯文法,動(dòng)作符號(hào)像其它符號(hào)一樣入棧。但當(dāng)對(duì)于翻譯文法,動(dòng)作符號(hào)像其它符號(hào)一樣入棧。但當(dāng)動(dòng)作符號(hào)處于棧頂時(shí),無(wú)論當(dāng)前的輸入符號(hào)是什么,動(dòng)作符號(hào)處于棧頂時(shí),無(wú)論當(dāng)前的輸入符號(hào)是什么,都要執(zhí)行由該動(dòng)作符號(hào)所規(guī)定的操作,并將該動(dòng)作符都要執(zhí)行由該動(dòng)作符號(hào)所規(guī)定的操作,并將該動(dòng)作符號(hào)從棧頂彈出,且不移動(dòng)讀符號(hào)指針。號(hào)從棧頂彈出,且不移動(dòng)讀符號(hào)指針。 a棧頂棧頂A,當(dāng)前輸入符號(hào),當(dāng)前輸入符號(hào)a時(shí),操作:時(shí),操作:A出棧;出棧;zDycxBwav入棧;入棧;v出棧并執(zhí)行;出棧并執(zhí)行;a出棧;出棧;w出棧并執(zhí)行。出棧并執(zhí)行。 3031在翻譯文法的基礎(chǔ)上,可以進(jìn)一步定義在翻譯文法的基礎(chǔ)上,

14、可以進(jìn)一步定義屬性文法屬性文法,翻譯文法中的符號(hào),包括終結(jié)符、非終結(jié)符和動(dòng)作翻譯文法中的符號(hào),包括終結(jié)符、非終結(jié)符和動(dòng)作符號(hào)均可帶有屬性,這樣能更好的描述和實(shí)現(xiàn)編譯符號(hào)均可帶有屬性,這樣能更好的描述和實(shí)現(xiàn)編譯過(guò)程。過(guò)程。屬性可以分為兩種:屬性可以分為兩種:綜合屬性綜合屬性繼承屬性繼承屬性32基本操作數(shù)帶有屬性的表達(dá)式文法基本操作數(shù)帶有屬性的表達(dá)式文法GE: 1. EE+F 4. TF 2. ET 5. F(E) 3. TT*F 6. Fi C 此文法能夠產(chǎn)生如下的輸入序列:此文法能夠產(chǎn)生如下的輸入序列: (i 3 i 9) * i 233根據(jù)給定的文法,可寫出該輸入序列的語(yǔ)法樹(shù)根據(jù)給定的文法,

15、可寫出該輸入序列的語(yǔ)法樹(shù)自底向上自底向上的屬性計(jì)算的屬性計(jì)算ET*TFF(E)E + TTFi 3i 2 Fi 9ET*TFF(E)E+TTFi 3i 2 Fi 9 3 3 9 3 9 12 12 12 2 24 2434 產(chǎn)生式產(chǎn)生式 求值規(guī)則求值規(guī)則1.E p4 E q5 + T r2 p 4 = q 5 + r 2 ;2.E p3 T q4 p 3 = q 4 ;3.T p2 T q3 * F r1 p 2 = q 3 * r 1 ;4.T p2 F q2 p 2 = q 2 ;5.F p1 (E q1) p 1 = q 1 ; 6.F p1 i q1 p 1 = q 1 ;說(shuō)明:說(shuō)明:

16、 p,q,r為屬性變量名。為屬性變量名。 屬性變量名局部于每個(gè)產(chǎn)生屬性變量名局部于每個(gè)產(chǎn)生式,也可使用不同的名字。式,也可使用不同的名字。 求值規(guī)則:綜合屬性求值規(guī)則:綜合屬性是是自底向上自底向上求值。求值。為了形式地表示上述表達(dá)式的屬性求值過(guò)程,可以改寫為了形式地表示上述表達(dá)式的屬性求值過(guò)程,可以改寫上述文法:上述文法:35考慮下列文法:考慮下列文法:G:1. Type id 2. , id 3. 符號(hào)表符號(hào)表A 整型整型BC 整型整型其中其中 Type: 類型名(值:類型名(值:int, real, bool等)等) id: 變量名(值:指向該變量符號(hào)表項(xiàng)的指針)變量名(值:指向該變量符號(hào)

17、表項(xiàng)的指針)上述文法所產(chǎn)生的語(yǔ)句:上述文法所產(chǎn)生的語(yǔ)句:int A,BC 該文法的翻譯任務(wù):將聲明的變量填入符號(hào)表該文法的翻譯任務(wù):將聲明的變量填入符號(hào)表完成該工作的動(dòng)作符號(hào):完成該工作的動(dòng)作符號(hào):set_table36翻譯文法:翻譯文法:1. Type id set_table 2. ,id set_table 3. 填表時(shí)需要的信息:類型,名字,以及填的位置填表時(shí)需要的信息:類型,名字,以及填的位置如何得到?如何得到?類型和名字在詞法分析時(shí)得到,可設(shè)兩個(gè)綜合屬性。類型和名字在詞法分析時(shí)得到,可設(shè)兩個(gè)綜合屬性。37 Type t t中放類型值中放類型值 id n n中放變量名中放變量名填表動(dòng)

18、作符號(hào)也可帶有屬性:填表動(dòng)作符號(hào)也可帶有屬性: set_tablet1 , n1 t1,n1 可從前面得到,所以稱為可從前面得到,所以稱為繼承屬性繼承屬性,繼承前面的值繼承前面的值 t 2 t2 同上同上屬性翻譯文法:屬性翻譯文法:1. Type t id n set_tablet1,n1 t2 t2=t;t1 = t; n1 = n; 2. t2 ,id n set_tablet1,n1 t3 t3t2;t1 = t2; n1 = n;3. t2 38例:例:int a,b Type int id , id 語(yǔ)法樹(shù):語(yǔ)法樹(shù): Type int id set_table int, int ,

19、id set_tableint int 繼承屬性求值:自頂向下繼承屬性求值:自頂向下綜合屬性求值:自底向上綜合屬性求值:自底向上39 符號(hào)表符號(hào)表 a int b int pint , 的分析翻譯過(guò)程:的分析翻譯過(guò)程: Type int id a set_tableint,a intType int id aset_tableint,a ,id b set_tableint,b+翻譯文法:翻譯文法: Type id set_table ,id set_table 4041繼承屬性求值:自頂向下繼承屬性求值:自頂向下一個(gè)結(jié)點(diǎn)的繼承屬性值是由一個(gè)結(jié)點(diǎn)的繼承屬性值是由其父結(jié)點(diǎn)或兄弟結(jié)點(diǎn)其父結(jié)點(diǎn)或兄弟

20、結(jié)點(diǎn)的的某些屬性決定的某些屬性決定的42綜合屬性求值:自底向上綜合屬性求值:自底向上一個(gè)結(jié)點(diǎn)的綜合屬性值是一個(gè)結(jié)點(diǎn)的綜合屬性值是其子結(jié)點(diǎn)的某些屬性其子結(jié)點(diǎn)的某些屬性來(lái)決定的來(lái)決定的43L-屬性翻譯文法(屬性翻譯文法(L-ATG)這是屬性翻譯文法中較簡(jiǎn)單的一種。其輸入文法要求是這是屬性翻譯文法中較簡(jiǎn)單的一種。其輸入文法要求是LL(1)文法文法,可用自頂向下分析構(gòu)造分析器。在分析過(guò)程中可進(jìn)行,可用自頂向下分析構(gòu)造分析器。在分析過(guò)程中可進(jìn)行屬性求值。屬性求值。一屬性翻譯文法稱為是一屬性翻譯文法稱為是L-屬性屬性的,對(duì)其中的每個(gè)產(chǎn)生式的,對(duì)其中的每個(gè)產(chǎn)生式AX1X2Xn,下面的三個(gè)條件成立:,下面的三

21、個(gè)條件成立:右部符號(hào)右部符號(hào)Xj(1 j n)的繼承屬性之值,僅依賴于的繼承屬性之值,僅依賴于X1,X2,Xj-1的任意屬性或的任意屬性或A的繼承屬性;的繼承屬性;左部符號(hào)左部符號(hào)A的綜合屬性之值僅依賴于的綜合屬性之值僅依賴于A的繼承屬性或(和)的繼承屬性或(和)右部符號(hào)右部符號(hào)Xj(1 j n)的任意屬性;的任意屬性; 對(duì)一動(dòng)作符號(hào)而言,其綜合屬性之值是以該動(dòng)作符號(hào)的繼承對(duì)一動(dòng)作符號(hào)而言,其綜合屬性之值是以該動(dòng)作符號(hào)的繼承屬性或產(chǎn)生式右部符號(hào)的任意屬性為變?cè)暮瘮?shù)。屬性或產(chǎn)生式右部符號(hào)的任意屬性為變?cè)暮瘮?shù)。44右部符號(hào)右部符號(hào)Xj(1 j n)的繼承屬性之值,僅依賴于的繼承屬性之值,僅依賴

22、于X1,X2,Xj-1的任意屬性或的任意屬性或A的繼承屬性;的繼承屬性;繼承屬性求值規(guī)則: (1) 產(chǎn)生式左部非終結(jié)符號(hào)的繼承屬性值,取前面產(chǎn)生式右部該符號(hào)已有的繼承屬性值。 (2)產(chǎn)生式右部符號(hào)的繼承屬性值,用該產(chǎn)生式左部符號(hào)的繼承屬性或出現(xiàn)在該符號(hào)左部的符號(hào)的屬性值進(jìn)行計(jì)算。 體現(xiàn)自頂向下,自左向右的求值特性。體現(xiàn)自頂向下,自左向右的求值特性。45左部符號(hào)左部符號(hào)A的綜合屬性之值僅依賴于的綜合屬性之值僅依賴于A的繼承屬性或的繼承屬性或(和)右部符號(hào)(和)右部符號(hào)Xj(1 j n)的任意屬性;的任意屬性;對(duì)一動(dòng)作符號(hào)而言,其綜合屬性之值是以該動(dòng)作符號(hào)的對(duì)一動(dòng)作符號(hào)而言,其綜合屬性之值是以該動(dòng)

23、作符號(hào)的繼承屬性或產(chǎn)生式右部符號(hào)的任意屬性為變?cè)暮瘮?shù)。繼承屬性或產(chǎn)生式右部符號(hào)的任意屬性為變?cè)暮瘮?shù)。綜合屬性綜合屬性求值規(guī)則求值規(guī)則: (1)產(chǎn)生式右部非終結(jié)符號(hào)的綜合屬性值,取其下部產(chǎn))產(chǎn)生式右部非終結(jié)符號(hào)的綜合屬性值,取其下部產(chǎn)生式左部同名非終結(jié)符號(hào)的綜合屬性值。生式左部同名非終結(jié)符號(hào)的綜合屬性值。 (2)產(chǎn)生式左部非終結(jié)符號(hào)的綜合屬性值,用該產(chǎn)生式)產(chǎn)生式左部非終結(jié)符號(hào)的綜合屬性值,用該產(chǎn)生式左部符號(hào)的繼承屬性或某個(gè)右部符號(hào)的屬性進(jìn)行計(jì)算。左部符號(hào)的繼承屬性或某個(gè)右部符號(hào)的屬性進(jìn)行計(jì)算。 (3)動(dòng)作符號(hào)的綜合屬性用該符號(hào)的繼承屬性或某個(gè)右)動(dòng)作符號(hào)的綜合屬性用該符號(hào)的繼承屬性或某個(gè)右

24、部符號(hào)的屬性進(jìn)行計(jì)算。部符號(hào)的屬性進(jìn)行計(jì)算。體現(xiàn)自底向上,自右向左的求值特性。體現(xiàn)自底向上,自右向左的求值特性。46例:例:ABC 求值順序:求值順序:1) A的繼承屬性的繼承屬性 (若(若A為開(kāi)始符號(hào),則有指定值為開(kāi)始符號(hào),則有指定值,否則由上面否則由上面 產(chǎn)生式右部符號(hào)的繼承屬性求得)產(chǎn)生式右部符號(hào)的繼承屬性求得)2) B的繼承屬性的繼承屬性 (由(由A的繼承屬性求得)的繼承屬性求得)3) B的綜合屬性的綜合屬性 (由下面產(chǎn)生式中左部符號(hào)為(由下面產(chǎn)生式中左部符號(hào)為B的綜合屬性的綜合屬性 求得)求得)4) C的繼承屬性的繼承屬性 (由(由A的繼承屬性和的繼承屬性和B的屬性求得)的屬性求得)

25、5) C的綜合屬性的綜合屬性 (由下面產(chǎn)生式中左部符號(hào)為(由下面產(chǎn)生式中左部符號(hào)為C的綜合屬性的綜合屬性 求得)求得)6) A的綜合屬性的綜合屬性 (由(由ABC計(jì)算)計(jì)算)47方法:方法: 對(duì)于每個(gè)非終結(jié)符號(hào)都編寫一個(gè)翻譯子程序(過(guò)對(duì)于每個(gè)非終結(jié)符號(hào)都編寫一個(gè)翻譯子程序(過(guò)程)。根據(jù)該非終結(jié)符號(hào)具有的屬性數(shù)目,設(shè)置相應(yīng)程)。根據(jù)該非終結(jié)符號(hào)具有的屬性數(shù)目,設(shè)置相應(yīng)的參數(shù)。的參數(shù)。繼承屬性:聲明為賦值形參繼承屬性:聲明為賦值形參綜合屬性:聲明為變量形參綜合屬性:聲明為變量形參過(guò)程調(diào)用語(yǔ)句的實(shí)參:過(guò)程調(diào)用語(yǔ)句的實(shí)參:繼承屬性繼承屬性 : 繼承屬性值繼承屬性值綜合屬性綜合屬性 : 屬性變量名(傳地址,返回時(shí)有值)屬性變量名(傳地址,返回時(shí)有值)Ux, y Procedure U(x,y); x賦值形參

溫馨提示

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

評(píng)論

0/150

提交評(píng)論