




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1. 一般情況下,為什么語義分析部分僅產生中間代碼?解答:一般情況下,語義分析部分僅產生中間代碼,其原因是: 可使難點分解,分別解決。可對語義分析產生的中間代碼進行優化,以產生高效率的目標代碼。語義分析通常與機器無關,目標代碼往往與機器有關。把語義分析與目標代碼生成分開,可 讓一個語義分析程序適用于多個目標代碼生成程序。2. (湖北省高等教育自學考試)什么是語法制導翻譯?為什么把這種方法叫語法制導翻譯? 解答:所謂語法制導翻譯,是指在語法規則的制導卞,通過計算語義規則,完成對輸入符號 串的翻譯。由于使用屬性文法時把語法規則和語義規則分開,但在使用語法規則進行推導或規約 的同時又使用這些語義規則
2、來知道翻譯與最終產生目標代碼,所以稱為語法制導翻譯。3. 給出將附值語句翻譯成四元式的語法制導定義,允許右部表達式含有加法、乘法、取負、 括號運算。生成賦值語句X=E*(C+D)+A的四元式。解答:賦值語句的自卜而上的語法制導翻譯過程描述為:規則語義動作(1) A:=i:=EGEN (:=E.PLACE.,ENTRY(i) ) (2) E:=E1+E2 E .PLACE =NEWTEMP;GEN(+,E】.PLACE, E2.PLACE.E.PLACE)(3) E:= EE2 E.PLACE:=NEWTEMP;GEN(憑E】.PLACE, EMPLACE,E.PLACE)(4) E:=.EA
3、EPLACE:=NEWTEMP;GEN(E】PLACE.EPLACE)(5)E:=(艮)E.PLACE:= EMPLACE(6)E 二=1E.PLACE:= ENTRY(i) 生成的賦值語句X:=B*(C+D)+A的四元式為:什,CQJ4)(*BT1,T2)(+.T2.AJ3)(:=T3,_,X)4. 給出將布爾表達式翻譯成四元式的語法制導定義。 解答:布爾表達式的語義子程序為:規則(1)E:=I語義動作E.TC:=null;E.FC:=NXQ;GEN (Jez , ENTRY(i),.0) (2) E:= i1 rop i2 E.TC:=null;E.FC:=NXQ;GEN (JmopJEN
4、TRYg), ENTRY(F) E:=Q)(4)E:=-E1ETC=EiTC,ETC=ELTC; E.TC:=NXQ;GEN (J.0): BP (ELFU NXQ);(5) EA:=E!A if EFCnullthen beginE1.TC:=NXQ;GEN (J.,0)End;BPtETCNXQ );EA.TC:=null; EdFC嚴E】FC (6) E := EAE2if E2.FCiiull then beginBP (EA.FC, NXQ); E.FC:=nuUEndE.TC:=E2.TC; (7) EO:=EXV if E】TC=iiullthen begm E】TC:=NXQ;
5、GEN (I 0)End;EO.TCWTC;BP (E】TC,NXG);(8)E:=E°E2 if E2.TCxnullthenE.TC:=MERG(E°.TC.E2.TC)Else beginBP (EMC ,NXQ);E.FC:=E2.FCEnd;E.FC:=E2.FC其中: NXQ指示器指向下一個將要形成但尚未形成的四元式的地址(編號),初值為1,每當 執行GEN次,NXQ自動加U GEN是一個語義過程,該過程把四元式加入四元式表區中。 E.TC和E.FC分別表示E所對應的四元式需回填“真”、“假”出I的四元式地址所構 成的鏈。 MERG (P1,P2)為一函數,把以
6、P1和P2為鏈首的兩個鏈合二為一作為函數值,回送 合并后的鏈首。 BP (P, t)為一語義過程,EP是BACKPATCH的縮寫。這是一 “回填”過程,它把以 P為鏈首所鏈接的每個四元式的第四區段都填為to Jrop是根據關系運算符rop定義的條件轉移。5. 試寫出PASCAL循環語句foi 1=1 to Ndo S的語義程序,假定該語句的文法為 Ff:= for i:= 1 toNS:= Fi doS1解答:根據題設文法,f&語句的語義子程序為:Fi::= for i:= 1 toNFi.place:=entry (1); GEN(:=, T,Fi.place);Fmal:=nele
7、mp; GEN( :=.N.place,filial);Fi.chain:=NXQ; Fi.quad:=NXQ ;GEN(place .finaLO)S:=Fi doS1BACKPATCH (Scham.NXQ); GEN j+R place, 4Fi.place); GEN (J,_,巧.quad); BACKPATCH (S.chaukNXQ)6.寫出條件賦值語句i :=if B then Ei elseE:的語義子程序。其中E是布爾表達式,E】和氏是算術表達式,1代表與E】、氏類型相同的 左部變量。按寫出的語義子程序生成條件賦值語句Z:=if A>C then x+v else x
8、v+05的四元式序列。解答:按條件賦值語句的語義給出該語句的文法如F:Ai::=i:=A2:=Ai if B thenA3::=Az Ei elseS:=A$ Er相應的語義子程序為:(1) A】二=1】=Al.place:=entiy (i) (2) A2::=Ai if B then(3) A3::=A: Ei elseBP (E.TC, NXQ); A2.chaiii:=B.FC; A:.place :=Ai .place GEN (:=,Ei.place, _ ,A:.place); A3.cham:=NXQ;GEN ( J, _、_,0 );BP(A2.chaiii,NXQ);A3.
9、place:=A2.place(4) S:=A3E2GEN (:= Ez.place, ,A3.place);BP(A3.chain.NXQ) 按上述語義子程序,條件賦值語句Z:=if A>C thenx+y else x-y+0.5的四元式序列為:JZ JZ JZ JZ JZ JZ JZ JZ JZ 123456789 ( /(X /lx /(X /(X /(V z(x /(J>,AG )(J , 一 一(6) (+:XTi) v c=g 一z)(人 _,_,(刃) CXXTJ (+,T2,O.5J3) (:=, 一Z)7.寫出編譯PASCAL語言repeat語句repeatSi
10、; S2;Sn until E;的語義子程序其中E是條件表達式.解答:PASCAL的“peat語句的文法為:Ri- repeatL->S|LsSlT;R:f R1L untilS-R:E于是repeat語句各產生式的語義子程序為:Ri- repeat L SLT;L->LsSlR:-*R1L untilRi.QUAD:=NXQL.CHAIN:=S.CHAINBACKPATCH (L.CHAIN.NXQ)L.CHAIN:=Si.CHAINR2.QUAD-R1.QUAD; BACKPATCH (L.CHAIN,NXQ) Sf R:EBACKPATCH (E.FC, Rz.QUAD);
11、S.CHAIN:=E.TC8為便于填寫被說明的名字的性質,試修改下面關于變量類型說明的文法,并給出相應的語義動作。待修改的類型說明文法為:D-namelist integEt namelistnamelist-* i, name 1 i st i解答:(1為便于填寫名字的屬性,將上述文法修改為:Dfnamelist, DIDf i integerD i realnamelist-* name 1 i s 11, i namelist- i于是,相應的語義動作為: Df i integerD i realDfnamelist, DInamelist-* inamelist-* name list
12、1, iFILL (ENTRY (1),mt); D.ATT:=int FILL (ENTRY (i) ,real ); D.ATT:=realfor 隊列 namelist.QUEUE 的每一項 P do FILL (RD】.ATT); DArr=D】ATT 建立一個隊列namelist.QUEUE.它只包含一項ENTRY (i) 把 ENTRY(i)排在 nainelistQUEUE 的末端; namelist.QUEUE: lamelist1 .QUEUE 注意:其中FILL (P, A)是一語義過程,其功能是把屬性A添進P所指向的符號表入I I的 有關區段。語義變量D.ATT用以記錄說
13、明語句所規定的屬性。(2)若類型說明的文法為:D-namelis t int egerD-namelis t real namelist-* name list1, inamelisti相應的語義動作為:Df namelis t integerfor 隊列 namelist.QUEUE 的每一項 P do FILL (Emt);Df namelis t realfor 隊列 namelist.QUEUE 的每一項 P do FILL (Pjeal);namelisti建立一個隊列namelist.QUEUE它只包 含一項 ENTRY(i) namelist- name list1, i把 EN
14、TRY(i)排在 namelist.QUEUE 的末端;nainelist.QUEUEnainelist1 .QUEUE 9.(中國科學院計算所1996年)某些語言允許給出名字表的一個屬性表,也允許聲明嵌在另 一個聲明里面,下面文法抽彖這個問題:D>attrlistnamelist|attilist(D)Name list>id,namelist id Attrlist>A attrlist|AA>decinial|fixed|float|realD - attrlist (D)的含義是:在括號中的聲明提到的所有名字有attrlist中給出的屬 性,而不管聲明嵌套多少層
15、。寫一個翻譯方案,它將每個名字的屬性添入符號表。解答:相應的翻譯方案為:DJ ->D.num=O; DD attrlistnamelist.num=D.num+attilist.num; namelistD attrlist D).num=D .niun-rattrlist.num; (D JNamelist -ldfaddattrd.entiy aiamelist.num); Namelist -ldnamelisti.nunnamelist.num; namelistiaddatti (list.num); attrlist A attrlisti attr
16、list.num=attrlist i .num +1;attrlist -*A attrlist.num=l; 10. 寫出翻譯過程調用語句的語義子程序。要求生成的四元式序列在轉子指令之前的參數四 元式pai按反序出現(即和實在參數的順序相反),在此情況下翻譯過程調用語句時是否 需要語義變量(隊列)QUEUE呢?解答:為使過程調用語句的語義子程序產生的參數四元式pa按反序出現,過程調用語句的 文法為:S call i (arglist)Arglist EArglist aiglistl,E按照該文法,語法制導翻譯程序將不需要語義變量隊列QUEUE,但需要一個語義變 量棧STACK,用以實現按
17、反序記錄每個實在參數的地址。翻譯過程調用語句的語義子程序為:aiglist Eaiglist aiglist1、E建立一個arglist.STACK棧,它只包含一個項E.PLACE 把 E.PLACE 壓入棧 arglistSTACK;aiglist. STACK:=arghst1. STACK S call i (aiglist)WHILE aighst.STACKnull doBegin把arglist.STACK棧頂上托出去,并放入P元中;GEN (par,一P)End;GEN(call, 一 一ENTRY(i) 11. 仲國科學院計算所1994)設有文法GS:S 二=(L)|aL:=L
18、.S|S給此文法配上語義動作子程序(或者說為此文法寫一個語法制導定義),它輸出配對拾 號的個數,如對于句子(a,(a,),輸出是2。解答:加入新的開始符號S和規則S*S,得到增廣文法。語法制導定義如下:print (S.num);S.num:=L.num+l;S.num:=O; L.num:=L i .num+S.num; L.num:=S.num; st=sS 二=(L)S:=aL:=LbSL:=S12. (中國科學院軟件所1999)文法GS的產生式如2S 二=(L)|aL:= L、S|S 試寫出一個語法制導定義,它輸出配對括號個數。寫出一個翻譯方案,打印每個a的嵌套深度。如(a,a) ,a
19、),打印2, 1。 解答:加入新的開始符號S,和規則S,aS,得到增廣文法:s=sSx(L)S:=AL:=LbSL;:=S1為s; L引入屬性h,語法制導定義為:S=Spnnt (S.h)S 二=(L)S.h:=L.h+lS:= aS.h:=OL:: =Li, SL.h:=Li.h+S.hL:: =SL.h:=S.h2引入屬性d,翻譯方案定義為:S:=S.d:=O; SS :='C L.d:=S.d+l; Li Sd:=Ld; S,L:=S.d=L.d; S13. (中國科學院軟件所2000年)程序的文法如下:Pf DDD; D|id ; T|proc id ; D ; S(1) 寫一
20、個語法制訂定義,打印該程序一共聲明了多少個id.(2) 寫一個翻譯方案,打印該程序每個變量id的嵌套深度。 解答:(1)引進屬性b得到語法制導定義如下:PDprint (D,i); DDi;D?D.i:=Di.i+D2.i;D->id :TD.i:=l; D-proc id :DI ; S引進屬性1和得到翻譯方案如卞:D->Di.l:=D.l; DiDz.l-D.l; d2DidTprint ( Ql); DprocIdDi.l:=D.l+l;D)s14. (中國科學院計算所1995年)設有文法GS:S;:=L.L|LL:=LB|BE:=0|l給此文法配上語義動作子程
21、序(或者說為此文法寫一個語法制導定義),它輸出S產生 的二進制數的值,例如101.101時,輸出5.625。解答:加入新的開始符號9和規則9 : =S,得到增廣文法。s=spimt (S.val); S:=Li.LzS.val:=Li.val+L2.vaV2L2 kngth;S:=LS.val:=L.val; L:=LiBL.val:=Li.val*2+B.val; L.length:=Li.lengths 1;L:=BL.val:=B.val; L.length:=l; B:=0B.val:=0;B:=lB.val:=l; 語法制導定義如下:15. (中國科學院計算所1993年)請按語法制導
22、的定義將后綴表達式翻譯成中綴表達式。注 意:不允許出現冗余拾號,后綴表達式的文法如下:E:=E1E2+E:=EiE2*E:=id解答:加入新的餓開始符號S和規則S:=E,得到增廣文法。語法制導定義如下:S:=Eprint (E.code) E:=EiE2+E.code:=Ei.code|p |Ez.code; E.op=>+> E:=E1E2*if Ei.op= + and E:.op=ThenEi.code:= X c |Ei.code| 0 ' * MP Cll Ei.code| 4 ) c;ElseIf El .op=,+JThen E.codeh C | Ei.co
23、de| ')' |4 * 'HEz.code; ElseIf E2.op=5+,Then E.code:=Ei.code|c c |p (4 |E2.code| y ; ElseE.code:=Ei.code|c* ' |E2.code;E.oph *;E:=idE.code:=id.lexval; E.op='$,;16.某程序設計語言說明部分的語法制導定義如下所示:D:=TL T:=mt T:=real L:=LijdL:=id給出其語法制導定義及自底向上分析的翻譯方案,并比較兩者的不同解答:語法制導定義為:D:=TLL.in:=T.typeT:=i
24、iitT.type:=iiitegerT:=realT.type:=realL:=LljdL.m:=L.m addtvpe (id.entryX.iii) L:=idaddtype (id.entiy, L.m) 自底向上分析的翻譯方案為:D:=TL T:=mtL.iii:=T.typeT.type:=integerT:=realT.type:=realL:=L.in:=L.inLbidaddtvpe (id.entiy. L.m) L:=idaddtype (id.entry, L.iii)從上述定義可見,兩者的區別僅在于翻譯方案中,把語義操作插入在規則右部的任意位置。17. 給出PASCAL語言常量定義的翻譯方案。解答:PASCAL語言常量定義的翻譯方案為:CONSTDP:=CONST CDTCDT:=CDT: CDCD:=id=num num.ord: =lookCT (num.lexval);id.ord:=num.oid;ld.type :=iiiteger ;id .kind :=CONSTANT;add (id.entry; 1d.kind4d.typejd.01d) CD:=id=id i id .kind :=CONSTANT; ld.type:=id 1 .typelid.ord:=idi.ord;add (id.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年GCP醫療器械臨床試驗知識考試題與答案
- 2025醫療設備、耗材、試劑采購協議合同
- 2025存量房買賣合同附加協議(現房)
- 二年級上冊科學教案-太陽的位置和方向-1教學設計
- 亞馬遜商城的課件
- 2025私人倉庫租賃合同書
- 關于電動自行車騎行安全致學生家長的一封信
- Scratch 編程《揭秘機器學習》(教案)六年級下冊信息科技Scratch編程
- 《全球金融市場概述》課件
- 2025標準商業店鋪出租合同模板
- 飾品工廠知識培訓課件
- 無人機飛手培訓班合作合同協議范本模板
- 中國時尚產業的發展趨勢分析
- VDA6.3-2023版培訓教材課件
- 2025河北保定鈔票紙業有限公司人員招聘29人筆試參考題庫附帶答案詳解
- 2025有關房屋買賣合同書模板
- 河北新化股份有限公司鍋爐技改項目(噪聲、固體廢物)竣工環境保護驗收報告
- 高++中語文++高考復習+語言文字運用之錯別字
- 個人用電協議合同范例
- SZDB∕Z 317-2018 大中型商場、超市安全防范規范
- 《圓柱和圓錐》單元整體設計(教學設計)-2023-2024學年六年級下冊數學北京版
評論
0/150
提交評論