版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第八章第八章 語法制導翻譯法語法制導翻譯法n指出:按照編譯程序的邏輯工作過程,指出:按照編譯程序的邏輯工作過程,語法分析后,接下來就要進行語義分析語法分析后,接下來就要進行語義分析了,語義分析后,再生成中間代碼。實了,語義分析后,再生成中間代碼。實際應(yīng)用中,往往在語法分析的同時,進際應(yīng)用中,往往在語法分析的同時,進行語義分析并生成中間代碼,這就是語行語義分析并生成中間代碼,這就是語法制導翻譯法。法制導翻譯法。n語法制導翻譯過程中,需要借助于屬性語法制導翻譯過程中,需要借助于屬性文法進行語義描述和語義處理。文法進行語義描述和語義處理。本章主要內(nèi)容n屬性內(nèi)容n語法制導翻譯的基本思想n中間代碼的形式
2、屬性文法屬性文法n對于某個壓縮了的文法,當把每個文法對于某個壓縮了的文法,當把每個文法符號和一組屬性相關(guān)聯(lián),并把產(chǎn)生式附符號和一組屬性相關(guān)聯(lián),并把產(chǎn)生式附加以語義規(guī)則的時候,就得到加以語義規(guī)則的時候,就得到屬性文法屬性文法。n語法制導的翻譯過程:由于屬性文法的語法制導的翻譯過程:由于屬性文法的規(guī)則和產(chǎn)生式是一一對應(yīng)的關(guān)系。所以,規(guī)則和產(chǎn)生式是一一對應(yīng)的關(guān)系。所以,由屬性文法確定的語義分析可以在語法由屬性文法確定的語義分析可以在語法分析的過程中進行。這個過程成為分析的過程中進行。這個過程成為語法語法制導的翻譯。制導的翻譯。屬性文法屬性文法n屬性文法屬性文法(attribute grammar):
3、nA=(G,V,F),其中其中 nG:一個一個CFG, 屬性文法的基礎(chǔ)。屬性文法的基礎(chǔ)。nV:有窮的屬性集有窮的屬性集n每個屬性與一個文法符號相關(guān)聯(lián)每個屬性與一個文法符號相關(guān)聯(lián)n這些屬性代表與文法符號相關(guān)的語義信息這些屬性代表與文法符號相關(guān)的語義信息n如類型、地址、值、代碼、符號表內(nèi)容等等如類型、地址、值、代碼、符號表內(nèi)容等等n屬性與變量一樣,可以進行計算和傳遞屬性與變量一樣,可以進行計算和傳遞n屬性加工的過程即是語義處理的過程屬性加工的過程即是語義處理的過程n屬性加工與語法分析同時進行屬性加工與語法分析同時進行n屬性的表示:屬性的表示:n標始符(或數(shù)),寫在相應(yīng)文法的下邊標始符(或數(shù)),寫在
4、相應(yīng)文法的下邊n點記法:點記法:E.Val,E.Place,E.TypenF:關(guān)于屬性的屬性斷言或一組屬性的計算規(guī)則關(guān)于屬性的屬性斷言或一組屬性的計算規(guī)則(稱為語義規(guī)則稱為語義規(guī)則) .n 斷言或語義規(guī)則與一個產(chǎn)生式相聯(lián)斷言或語義規(guī)則與一個產(chǎn)生式相聯(lián),只引用該產(chǎn)生式左端或只引用該產(chǎn)生式左端或右端的終結(jié)符或非終結(jié)符相聯(lián)的屬性右端的終結(jié)符或非終結(jié)符相聯(lián)的屬性.繼承屬性和綜合屬性繼承屬性和綜合屬性n兩類屬性:兩類屬性:n綜合屬性綜合屬性(Synthesized Attribute):歸約型屬性:歸約型屬性n用于用于“自下而上自下而上”傳遞信息傳遞信息n繼承屬性繼承屬性(Inherited Attri
5、bute):推導型屬性:推導型屬性n用于用于“自上而下自上而下”傳遞信息。傳遞信息。n屬性的計算:屬性的計算:AX1 X2 XnnA的綜合屬性的綜合屬性,計算計算 S(A):=f(I(X1),I(Xn)nXj的繼承屬性的繼承屬性,計算計算 T(Xj):=f(I(A),. I(Xn) n文法符號屬性的說明:文法符號屬性的說明:n非終結(jié)符既可有綜合屬性也可有繼承屬性,但文法開始符號沒非終結(jié)符既可有綜合屬性也可有繼承屬性,但文法開始符號沒有繼承屬性有繼承屬性.n終結(jié)符只有綜合屬性終結(jié)符只有綜合屬性.n通常規(guī)定:文法符號的綜合屬性與繼承屬性無交。通常規(guī)定:文法符號的綜合屬性與繼承屬性無交。綜合屬性的例
6、子綜合屬性的例子n非終結(jié)符非終結(jié)符E、T及及F都有一個綜合屬性都有一個綜合屬性val,符號符號digit有一有一個綜合屬性,它的個綜合屬性,它的值由詞法分析器提值由詞法分析器提供。供。n與產(chǎn)生式與產(chǎn)生式LE對應(yīng)對應(yīng)的語義規(guī)則僅僅是的語義規(guī)則僅僅是打印由打印由E產(chǎn)生的算產(chǎn)生的算術(shù)表達式的值的一術(shù)表達式的值的一個過程,我們可認個過程,我們可認為這條規(guī)則定義了為這條規(guī)則定義了L的一個虛屬性。的一個虛屬性。n某些非終結(jié)符加上某些非終結(jié)符加上標是為了區(qū)分一個標是為了區(qū)分一個產(chǎn)生式中同一非終產(chǎn)生式中同一非終結(jié)符多次出現(xiàn)結(jié)符多次出現(xiàn)語 義 規(guī) 則 L EE E1+TETT T1 * FTFF(E)Fdigi
7、tPrint(E.val) E.val:=E1.val+T.val E.val:=T.val T.val:=T1.val F.val T.val:=F.valF.val:=E.valF.val:=digit.lexval產(chǎn) 生 式綜合屬性的自下而上定值綜合屬性的自下而上定值.LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*3*5+4的帶注釋的分析樹的帶注釋的分析樹繼承屬性的例子繼承屬性的例子 繼承屬性繼承屬性L.in產(chǎn) 生 式語 義 規(guī)
8、 則D TL T int T real L L1,idL idL.in:=T.typeT.type=integerT.type:=real L1.in:=L.in addtype(id.entry,L.in) addtype(id.entry,L.in)繼承屬性的自上而下定值繼承屬性的自上而下定值 DL.in= realL.in= realL.in= realT.type=realrealid2id1id3.Real id1,id2,id3,L屬性文法屬性文法n適合于指導自上而下的分析。適合于指導自上而下的分析。n一個屬性文法稱為一個屬性文法稱為L屬性文法,如果對于每個產(chǎn)屬性文法,如果對于每個
9、產(chǎn)生式生式AX1X2Xn,滿足:,滿足:n(1) Xj(1jn)的繼承屬性僅依賴于下述屬)的繼承屬性僅依賴于下述屬性值中的一種:性值中的一種:nA的繼承屬性;的繼承屬性;n產(chǎn)生式右部位于產(chǎn)生式右部位于Xj左邊的符號左邊的符號X1,X2,Xj-1的屬性。的屬性。n(2)A的綜合屬性,僅依賴于下述屬性值中的一的綜合屬性,僅依賴于下述屬性值中的一種:種:nA的繼承屬性;的繼承屬性;n產(chǎn)生式右部符號產(chǎn)生式右部符號Xj (除自身外)的任意屬性(除自身外)的任意屬性。L屬性文法的自上而下計算屬性文法的自上而下計算nL屬性文法的翻譯器通??山柚趯傩晕姆ǖ姆g器通??山柚贚L分析器實現(xiàn)。分析器實現(xiàn)。n在在
10、L屬性文法的基礎(chǔ)上,屬性文法的基礎(chǔ)上, LL分析器可以改造為一分析器可以改造為一個翻譯器,在對輸入串進行語法分析的同時對屬性個翻譯器,在對輸入串進行語法分析的同時對屬性進行計算。進行計算。n需要對需要對LL分析器分析器增加增加語義棧語義棧, ,以保存與棧中文法符以保存與棧中文法符號有關(guān)的繼承屬性值。號有關(guān)的繼承屬性值。n每當進行推導時,新的屬性值就由棧中正在推導的每當進行推導時,新的屬性值就由棧中正在推導的產(chǎn)生式左邊符號的屬性值來計算。產(chǎn)生式左邊符號的屬性值來計算。S屬性文法屬性文法n適用于指導適用于指導自下而上的分析自下而上的分析n一個屬性文法稱為一個屬性文法稱為 S屬性文法屬性文法,當且僅
11、當滿足如當且僅當滿足如下條件:下條件:n(1)所有非終結(jié)符的屬性是綜合屬性;)所有非終結(jié)符的屬性是綜合屬性;n(2)同一產(chǎn)生式中相同符號的各綜合屬性之間)同一產(chǎn)生式中相同符號的各綜合屬性之間無相互依賴關(guān)系;無相互依賴關(guān)系;n(3)如果)如果q是某個產(chǎn)生式中文法符號是某個產(chǎn)生式中文法符號V的繼承屬的繼承屬性,則屬性性,則屬性q的值僅僅依賴于該產(chǎn)生式右部位于的值僅僅依賴于該產(chǎn)生式右部位于V左邊的符號的屬性。左邊的符號的屬性。S屬性文法的自下而上計算屬性文法的自下而上計算nS屬性文法的翻譯器通??山柚趯傩晕姆ǖ姆g器通??山柚贚R分析器分析器實現(xiàn)。實現(xiàn)。 在在S屬性文法的基礎(chǔ)上,屬性文法的基礎(chǔ)上
12、,LR分析器可分析器可以改造為一個翻譯器,在對輸入串進行語法分以改造為一個翻譯器,在對輸入串進行語法分析的同時對屬性進行計算。析的同時對屬性進行計算。n需要對需要對LR分析器分析器增加增加語義棧語義棧, ,以保存與棧中文以保存與棧中文法符號有關(guān)的綜合屬性值。法符號有關(guān)的綜合屬性值。n每當進行歸約時,新的屬性值就由棧中正在歸每當進行歸約時,新的屬性值就由棧中正在歸約的產(chǎn)生式右邊符號的屬性值來計算。約的產(chǎn)生式右邊符號的屬性值來計算。LR分析器改造為翻譯器分析器改造為翻譯器LR分析器分析器增加語義棧增加語義棧 產(chǎn)生式產(chǎn)生式 語義規(guī)則語義規(guī)則) (.)1 . 1.) . .l)1* . 1. )F .
13、 F.)()() . .)ii .:.LR分析器改造為翻譯器分析器改造為翻譯器*的分析和計值過程的分析和計值過程步驟步驟 動作動作 狀態(tài)棧狀態(tài)棧 語義棧語義棧(值棧值棧) 符號棧符號棧 余留輸入串余留輸入串) 3*) 3 *) *) *) *) *) *) *) *) * ) * ) ()() * #) ()() ) ()() )接受)接受語法制導翻譯的基本思想語法制導翻譯的基本思想n為每條產(chǎn)生式配上一個翻譯子程序(稱為語義為每條產(chǎn)生式配上一個翻譯子程序(稱為語義動作或語義子程序);動作或語義子程序);n語義動作的工作語義動作的工作n指明符號串的意義;指明符號串的意義;n按照這種意義規(guī)定了對應(yīng)
14、的動作:按照這種意義規(guī)定了對應(yīng)的動作:n查添各種表格查添各種表格n改變變量之值改變變量之值n診察與報告源程序錯誤診察與報告源程序錯誤n產(chǎn)生中間代碼產(chǎn)生中間代碼n在語法分析的同時,當一個產(chǎn)生式獲得匹配在語法分析的同時,當一個產(chǎn)生式獲得匹配(對于自上而下分析)或用于歸約(對于自下(對于自上而下分析)或用于歸約(對于自下而上分析)時,就執(zhí)行相應(yīng)產(chǎn)生式的語義子程而上分析)時,就執(zhí)行相應(yīng)產(chǎn)生式的語義子程序。序。語法制導翻譯法的一般原理語法制導翻譯法的一般原理n直觀地說,語法制導翻譯法(直觀地說,語法制導翻譯法(SDTS)組成如)組成如下:下:n一個源語言;一個源語言;n一個目標語言;一個目標語言;n一組
15、翻譯規(guī)則一組翻譯規(guī)則n為文法中的產(chǎn)生式添加上語義動作為文法中的產(chǎn)生式添加上語義動作n作用:將任何源語言符號串翻譯成對應(yīng)的作用:將任何源語言符號串翻譯成對應(yīng)的目標語言串。目標語言串。語法制導翻譯法語法制導翻譯法的形式化定義的形式化定義nSDTS是一個是一個CFG,是一個五元組是一個五元組n T=(VT,VN, , R,S),其中其中n(1) VT是有窮的輸入字母表(包含源語言中的符號);是有窮的輸入字母表(包含源語言中的符號); n(2) VN是有窮的非終結(jié)符集;是有窮的非終結(jié)符集;n(3) 是有窮的輸出字母表(包含出現(xiàn)在輸出串中的符號);是有窮的輸出字母表(包含出現(xiàn)在輸出串中的符號);n(4)
16、 R是形如是形如Aw,y的規(guī)則的有窮集合;的規(guī)則的有窮集合;nR中規(guī)則形式:中規(guī)則形式: Aw,y nA VN , w(VT VN)*, y(VN )*且且y中那組非中那組非終結(jié)符是終結(jié)符是w中中那組非終結(jié)符的置換。那組非終結(jié)符的置換。nW:規(guī)則的源成分:規(guī)則的源成分 y:規(guī)則的翻譯成分:規(guī)則的翻譯成分n(5) S VN ,是文法的開始符號。,是文法的開始符號?;A(chǔ)源文法和基礎(chǔ)目標文法基礎(chǔ)源文法和基礎(chǔ)目標文法nSDTS的基礎(chǔ)源文法的基礎(chǔ)源文法(輸入文法輸入文法)n一個一個CFG:(VT,VN, P, S),其中其中nP=A w|Aw,y屬于屬于R)nSDTS的基礎(chǔ)目標文法的基礎(chǔ)目標文法(輸出文
17、法輸出文法)n一個一個CFG:(VN, , P, S),其中其中nP=A y|Aw,y屬于屬于R)一個例子一個例子 EE+T E T T TF T F F (E) F a E=ET+ E=T T=TF T=F F=E F=a 產(chǎn)生式產(chǎn)生式 翻譯規(guī)則翻譯規(guī)則翻譯模式翻譯模式n翻譯模式可遞歸定義為:翻譯模式可遞歸定義為:n(S,S)(S,S)是一個翻譯模式,且這兩個是一個翻譯模式,且這兩個S S是相關(guān)的是相關(guān)的n(aAb,aAb)(aAb,aAb)是一個翻譯模式,且兩個是一個翻譯模式,且兩個A A是相關(guān)是相關(guān)的;此外,若的;此外,若A-g,gA-g,g是是R R中的一條規(guī)則,則中的一條規(guī)則,則(a
18、gb,agb)(agb,agb)也是一個翻譯模式。規(guī)則中也是一個翻譯模式。規(guī)則中g(shù) g和和g g的的非終結(jié)符之間的相關(guān)性也必須帶進這種翻譯模式非終結(jié)符之間的相關(guān)性也必須帶進這種翻譯模式中。中。n顯然,翻譯模式是一個形如顯然,翻譯模式是一個形如(u,v)的串對,的串對,其中其中nu是基礎(chǔ)源文法的一個句型是基礎(chǔ)源文法的一個句型,u (VT VN)*, nv是與是與u對應(yīng)的翻譯,對應(yīng)的翻譯,v (VN )*翻譯模式的變換翻譯模式的變換n若若(aAb,aAb)(aAb,aAb)是一個翻譯模式,是一個翻譯模式,A-g,gA-g,g是是R R中的一條規(guī)則,則中的一條規(guī)則,則n(aAb,aAb)=(aAb,
19、aAb)=(agb,agb) (agb,agb) n是一個翻譯模式到另一個翻譯模式的變是一個翻譯模式到另一個翻譯模式的變換。換。n與推導過程類似。與推導過程類似。SDTS定義的翻譯定義的翻譯n一個一個 SDTS定義的翻譯是如下對偶集:定義的翻譯是如下對偶集:n(x,y)|(S,S)=*(x,y), xVT*,y* n比較:比較:CFG中語言的定義。中語言的定義。翻譯的例子翻譯的例子na+a*a的翻譯過程:的翻譯過程: (E,E)(E+T,ET+) (T+T,TT+) (F+T,FT+) (a+T,aT+) (a+TF,aFF+) (a+FF,aFF+) (a+aF,aaF+) (a+aa,aa
20、a+)樹變換樹變換n語法制導的翻譯過程可以看成是將輸入文法語法制導的翻譯過程可以看成是將輸入文法Gi中的推導樹變換成輸出文法中的推導樹變換成輸出文法G0中的推導樹。給中的推導樹。給了輸入句子了輸入句子x,可以按如下方式得到,可以按如下方式得到x的一個翻的一個翻譯:先為推導譯:先為推導x構(gòu)造一棵推導樹,再變換該樹到構(gòu)造一棵推導樹,再變換該樹到輸出文法中的一棵樹,然后取此輸出樹的邊緣輸出文法中的一棵樹,然后取此輸出樹的邊緣作為作為x的一個翻譯。具體變換過程如下:的一個翻譯。具體變換過程如下:n從中剪去終結(jié)符號結(jié)點;從中剪去終結(jié)符號結(jié)點;n根據(jù)適當?shù)姆g規(guī)則,重排每個中間結(jié)點的孩子;根據(jù)適當?shù)姆g規(guī)
21、則,重排每個中間結(jié)點的孩子;n添加對應(yīng)于輸出符號集添加對應(yīng)于輸出符號集中的終結(jié)符結(jié)點。中的終結(jié)符結(jié)點。中間代碼中間代碼n中間代碼(中間代碼(Intermediate code ):):n源程序的一種內(nèi)部表示,不依賴目標機的結(jié)源程序的一種內(nèi)部表示,不依賴目標機的結(jié)構(gòu),易于機械生成目標代碼的中間表示。構(gòu),易于機械生成目標代碼的中間表示。n中間代碼的幾種形式中間代碼的幾種形式n逆波蘭逆波蘭n四元式四元式n三元式三元式n間接三元式間接三元式n樹樹逆波蘭表示方法逆波蘭表示方法n表達式表達式的一種表示形式的一種表示形式n運算符直接跟在運算量后面運算符直接跟在運算量后面n又稱為后綴又稱為后綴(post fi
22、x)表示法表示法n定義:設(shè)定義:設(shè)E是表達式,那么是表達式,那么n如果如果E是變量或者常量,是變量或者常量,E的逆波蘭表示為的逆波蘭表示為EnE1 OP E2 = E1 E2 OP,其中,其中E1,E2 為為 E1, E2的逆波蘭表示。的逆波蘭表示。n(E) = E,其中其中E為為E 的逆波蘭表示。的逆波蘭表示。后綴表達式的計值后綴表達式的計值n自左向右掃描表達式,每遇到運算量就自左向右掃描表達式,每遇到運算量就把它推進棧,每遇到把它推進棧,每遇到k目算符就把它作用目算符就把它作用于棧頂?shù)挠跅m數(shù)膋個項,并把運算結(jié)果來代替這個項,并把運算結(jié)果來代替這k個項個項逆波蘭表示的例子逆波蘭表示的例子n
23、A+b ab+nA+b*c abc*+n(a+b)*c ab+c*nA + B * ( C - D ) + E / ( C - D ) NA B C D - * + E C D N / +na+b*c/(d+e) abc*de+/+逆波蘭表示方法的擴充逆波蘭表示方法的擴充n賦值語句:賦值語句:V:=e Ve:=n例子:例子:t=(a+b)*c/(d-e) tab+c*de-/=n轉(zhuǎn)向語句:轉(zhuǎn)向語句:goto jumpn條件語句:條件語句:n If then else njumpfjumpn數(shù)組說明:數(shù)組說明:array Al1.u1,.,ln.un nL1u1lnun A ADECn下標變量:
24、下標變量:A A SUBS eL1jumpfxL2jumpyL1L2四元式四元式n一般形式:一般形式:nn例子:例子:na+b*cn*bct1n+at1t2n單目運算符的處理:單目運算符的處理:為空。為空。n一般來講,四元式的運算符都有對應(yīng)的機器指令,或一般來講,四元式的運算符都有對應(yīng)的機器指令,或者對應(yīng)的子程序,因此從四元式生成指令代碼是容易者對應(yīng)的子程序,因此從四元式生成指令代碼是容易的。的。n四元式之間的聯(lián)系是通過臨時變量實現(xiàn)的,便于進行四元式之間的聯(lián)系是通過臨時變量實現(xiàn)的,便于進行代碼優(yōu)化。代碼優(yōu)化。四元式表示的例子四元式表示的例子nA + B * ( C - D ) + E / (
25、C - D ) Nn(1)( - C D T1 )n(2)( * B T1 T2)n(3)( + A T2 T3)n(4)( - C D T4)n(5)( T4 N T5)n(6)( / E T5 T6)n(7)( + T3 T6 T7)三元式三元式n如果我們不明顯給出四元式的結(jié)果部分,而是用四元如果我們不明顯給出四元式的結(jié)果部分,而是用四元式的編號來表示結(jié)果,那么我們可以得到三元式。形式的編號來表示結(jié)果,那么我們可以得到三元式。形式如下:式如下:nn例子:例子:a+b*c=* *bcbcn +a+an三元式的出現(xiàn)順序與三元式的出現(xiàn)順序與表達式的計值順序表達式的計值順序一致。一致。n和四元式的
26、比較:和四元式的比較:n無須臨時變量;無須臨時變量;n占用存儲空間少;占用存儲空間少;n相互引用太多,使得難以進行代碼優(yōu)化。相互引用太多,使得難以進行代碼優(yōu)化。三元式表示的例子三元式表示的例子nA + B * ( C - D ) + E / ( C - D ) Nn(1) ( - C D )n(2) ( * B (1) )n(3) ( + A (2) )n(4) ( - C D )n(5) ( (4) N )n(6) ( / E (5) )n(7) ( + (3) (6) )間接三元式間接三元式n間接三元式:間接三元式:n為了便于代碼優(yōu)化處理,用一張為了便于代碼優(yōu)化處理,用一張間接碼表間接碼表
27、輔以輔以三元三元式表式表的辦法來表示中間代碼。的辦法來表示中間代碼。n間接碼表是一張間接碼表是一張指示器表指示器表,它將按運算的先后順序,它將按運算的先后順序列出有關(guān)三元式在三元式表中的位置。列出有關(guān)三元式在三元式表中的位置。n當在代碼優(yōu)化過程中需要調(diào)整運算順序時,只需重當在代碼優(yōu)化過程中需要調(diào)整運算順序時,只需重新安排間接碼表即可。新安排間接碼表即可。n例子:例子:X:=(A+B)*Cn Y:=D(A+B)間接三元式表示的例子間接三元式表示的例子A + B * ( C - D ) + E / ( C - D ) Nn間接三元式序列間接三元式序列 間接碼表間接碼表(1)( - C D ) (1
28、)(2)( * B (1) ) (2)(3)( + A (2) ) (3)(4) ( (1) N ) (1)(5)( / E (4) ) (4)(6) ( + (3) (5) ) (5) (6)樹形表示(抽象語法樹樹形表示(抽象語法樹AST)n采用樹形表示作為一種中間代碼形式,有助于代碼采用樹形表示作為一種中間代碼形式,有助于代碼的產(chǎn)生和優(yōu)化。的產(chǎn)生和優(yōu)化。n樹形表示的定義:樹形表示的定義:n簡單變量或常數(shù)的樹就是該變量或常數(shù)自身;簡單變量或常數(shù)的樹就是該變量或常數(shù)自身;n如果表示如果表示e1和和e2的樹為的樹為T1和和T2,那么,那么, e1+e2, e1*e2,-e1的樹分別是:的樹分別是
29、: 顯然,樹形表示是三元式表示的翻版。顯然,樹形表示是三元式表示的翻版。n抽象語法樹(抽象語法樹(Abstract Syntax Tree) n在語法樹中去掉那些對翻譯不必要的信息,獲得更有效的在語法樹中去掉那些對翻譯不必要的信息,獲得更有效的源程序中間表示源程序中間表示nAST可以拓廣,用來表示數(shù)組元素、過程調(diào)用、控制結(jié)構(gòu)、可以拓廣,用來表示數(shù)組元素、過程調(diào)用、控制結(jié)構(gòu)、說明等。說明等。+e1e2-e1*e1e2簡單算術(shù)表達式和賦值句的翻簡單算術(shù)表達式和賦值句的翻譯譯n文法:文法:nAi:=EnEE+E|E*E|-E|(E)|In引入的語義屬性:引入的語義屬性:E.PLACEn與非終結(jié)符與非
30、終結(jié)符E相聯(lián)系,表示存放相聯(lián)系,表示存放E值的變量名在符號表的入口值的變量名在符號表的入口或整數(shù)碼或整數(shù)碼(對臨時變量)(對臨時變量)n語義過程:語義過程:nNEWTEMP:函數(shù)過程。每次調(diào)用,回送一個代表新臨時變量函數(shù)過程。每次調(diào)用,回送一個代表新臨時變量名的整數(shù)碼作為函數(shù)值。名的整數(shù)碼作為函數(shù)值。nENTRY(i):函數(shù)過程。對函數(shù)過程。對i所代表標識符查找符號表以獲知它所代表標識符查找符號表以獲知它在符號表中位置(入口)。在符號表中位置(入口)。nGEN(OP,ARG1,ARG2,RESULT):語義過程。把四元式語義過程。把四元式(OP,ARG1,ARG2,RESULT)填入四元式表中。填入四元式表中。產(chǎn)生式的語義描述產(chǎn)生式的語義描述n(1)Ai:=E GEN(:=,E.PLACE,_,ENTRY(i)n(2)EE1+E2 E.PLACE:=NEWTEMP;n GEN(+, E1.PLACE, E2.PLACE, E.PLACE)n(3) EE1*E2 E.PLACE:=NEWTEMP;n GEN(*, E1.PLACE, E2.PLACE, E.PLACE)n(4)E-E1 E.PLACE:=NEWTEMP;n GEN(, E1.PLACE, _, E.PLACE)n(5)E(
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版ERP系統(tǒng)用戶權(quán)限管理與審計合同3篇
- 基于二零二五年度計劃的工業(yè)級無人機采購合同3篇
- 二零二五版電商產(chǎn)品包裝設(shè)計與營銷方案合同3篇
- 二零二五年港口集裝箱租賃及維護服務(wù)合同規(guī)范3篇
- 二零二五版駕駛員與貨運配送服務(wù)企業(yè)勞動合同3篇
- 二零二五年礦山企業(yè)礦產(chǎn)品環(huán)保評價采購合同3篇
- 二零二五版CFG樁施工質(zhì)量保障合同協(xié)議2篇
- 二零二五版區(qū)塊鏈技術(shù)應(yīng)用定金及借款合同2篇
- 二零二五版出租車駕駛員權(quán)益保障合同3篇
- 二零二五年度遮陽棚安裝與戶外照明系統(tǒng)設(shè)計合同4篇
- 第二章 運營管理戰(zhàn)略
- 新概念英語第二冊考評試卷含答案(第49-56課)
- 商業(yè)倫理與企業(yè)社會責任(山東財經(jīng)大學)智慧樹知到期末考試答案章節(jié)答案2024年山東財經(jīng)大學
- 【奧運會獎牌榜預測建模實證探析12000字(論文)】
- (完整版)譯林版英語詞匯表(四年級下)
- 8 泵站設(shè)備安裝工程單元工程質(zhì)量驗收評定表及填表說明
- 企業(yè)年會盛典元旦頒獎晚會通用PPT模板
- 污水管道工程監(jiān)理控制要點
- 潮流能發(fā)電及潮流能發(fā)電裝置匯總
- (高清正版)T_CAGHP 066—2019危巖落石柔性防護網(wǎng)工程技術(shù)規(guī)范(試行)
- 支票票樣-樣版
評論
0/150
提交評論