




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、6.96.9 casecase語句語句CASE E ofCASE E of case C case C1 1 :S S1 1 ; ; case C case C2 2 :S S2 2 ; ; otherwise S otherwise Sn nendend語義:語義:、計算表達式、計算表達式E E的值;的值;、分支測試,即查找與、分支測試,即查找與E E相同的相同的CiCi。如果沒有,。如果沒有, 那么默認值和該表達式值匹配;那么默認值和該表達式值匹配;、執(zhí)行相匹配分支的語句;、執(zhí)行相匹配分支的語句;、跳轉(zhuǎn)到該語句的后繼語句。、跳轉(zhuǎn)到該語句的后繼語句。一般形式:一般形式:casecase語句的
2、實現(xiàn)方案語句的實現(xiàn)方案1 1 適合分支數(shù)適合分支數(shù)1010個以內(nèi)個以內(nèi)對對E E求值的代碼,結果存入求值的代碼,結果存入T T中中 L L1 1:if TCif TC1 1 goto goto L L2 2 ; S S1 1的代碼;的代碼; gotogoto next next;L L2 2:if TCif TC2 2 goto goto L L3 3 ; S S2 2的代碼;的代碼; gotogoto next next;L L3 3: L Ln-1n-1:if TCif TCn-1n-1 goto L goto Ln n ; S Sn-1n-1的代碼;的代碼;gotogoto next n
3、ext;L Ln n:S Sn n的代碼的代碼; ;NextNext:后繼語句:后繼語句CASE E ofCASE E ofcase Ccase C1 1 :S S1 1 ; ;case Ccase C2 2 :S S2 2 ; ; otherwise Sotherwise Sn nendendcasecase語句的實現(xiàn)方案語句的實現(xiàn)方案 2 2對對E E求值的代碼,結果存入求值的代碼,結果存入T T中;中; gotogoto testtest; L L1 1: S S1 1的代碼;的代碼;gotogoto nextnext; L L2 2: S S2 2的代碼;的代碼;gotogoto ne
4、xtnext; L Ln-1n-1:S Sn-1n-1的代碼;的代碼;gotogoto nextnext; L Ln n: S Sn n的代碼;的代碼;gotogoto nextnext;testtest:if Tif TC C1 1 goto goto L L1 1 ; if T if TC Cn-1n-1 goto goto L Ln-1n-1; goto Lgoto Ln n ; NextNext:后繼語句:后繼語句 Test Test部分:部分: 根據(jù)根據(jù)CiCi與與 LiLi的關的關系確定轉(zhuǎn)移目標。系確定轉(zhuǎn)移目標。 標號標號L Li i : 編譯時加入;編譯時加入; 引入隊列記錄引入
5、隊列記錄CiCi, , Li Li 的對應關系。的對應關系。CASE E ofCASE E ofcase Ccase C1 1 :S S1 1 ; ;case Ccase C2 2 :S S2 2 ; ; otherwise Sotherwise Sn nendend100(+ , i , j ,T100(+ , i , j ,T1 1 ) )101(:=, T101(:=, T1 1, _ , T ), _ , T )102(j, _ , _ , 111 ) 102(j, _ , _ , 111 ) 103(:= , m, _ , k )103(:= , m, _ , k )104(j, _
6、 , _ , 114 ) 104(j, _ , _ , 114 ) 105( - , m, 1 , T105( - , m, 1 , T2 2 ) )106(:= , T106(:= , T2 2, _ , k ), _ , k )107(j, _ , _ ,104 ) 107(j, _ , _ ,104 ) 108( + , m, 1 , T108( + , m, 1 , T3 3 ) )109(:= , T109(:= , T3 3, _ , k ), _ , k )110(j, _ , _ ,107 ) 110(j, _ , _ ,107 ) CASE i+jCASE i+j of of
7、case 2case 2:k:=mk:=m ; ;case 9case 9:k:=m-1k:=m-1 ; ;otherwise k:=m+1otherwise k:=m+1endend111(case,2,103, _ )111(case,2,103, _ )112(case,9,105, _ )112(case,9,105, _ )113(case,T,108, _ ) 113(case,T,108, _ ) 114114語義分析過程語義分析過程掃描到掃描到動動 作作casecase產(chǎn)生標號:產(chǎn)生標號:test, next, test, next, 工作單元工作單元T T E E產(chǎn)生產(chǎn)生 T
8、T:=E =E 的中間代碼的中間代碼ofof1)1)記錄待返填地址記錄待返填地址(test)(test):Test.addrTest.addr:= nxq:= nxq; ;2)2)產(chǎn)生轉(zhuǎn)移指令:產(chǎn)生轉(zhuǎn)移指令:gen(jgen(j, _ ,_ , 0), _ ,_ , 0)3)3)設置空隊列:設置空隊列:queuequeue100(+ , i , j ,T100(+ , i , j ,T1 1 ) )101(:=, T101(:=, T1 1, _ , T ), _ , T )102(j, _ , _ , 0 ) 102(j, _ , _ , 0 ) CASE i+jCASE i+j of of
9、case 2case 2:k:=mk:=m ; ;case 9case 9:k:=m-1k:=m-1 ; ;otherwise k:=m+1otherwise k:=m+1endendn n TestTest 102102n+1n+1 nextnext 0 0queueC Ci i產(chǎn)生標號產(chǎn)生標號L Li i, ,連同連同NXQNXQ進符號表;進符號表;設設L Li i在符號表中位置為在符號表中位置為P Pi i,(C(Ci i,P,Pi i) )進隊列進隊列queuequeueS Si i1 1)產(chǎn)生)產(chǎn)生S Si i的代碼;的代碼; 2 2)gen(jgen(j, _ ,_ ,next.a
10、ddr, _ ,_ ,next.addr) );3 3)對標號)對標號nextnext拉鏈:拉鏈:next.addrnext.addr:=NXQ-1;:=NXQ-1;100(+ , i , j ,T100(+ , i , j ,T1 1 ) )101(:=, T101(:=, T1 1, _ , T ), _ , T )102(j, _ , _ , 0 ) 102(j, _ , _ , 0 ) 103(:= , m, _ , k )103(:= , m, _ , k )104(j, _ , _ , 0 ) 104(j, _ , _ , 0 ) 105( - , m, 1 , T105( - ,
11、 m, 1 , T2 2) )106(:= , T106(:= , T2 2, _ , k), _ , k)107(j, _ , _ ,104) 107(j, _ , _ ,104) CASE i+jCASE i+j of ofcase 2case 2:k:=mk:=m ; ;case 9case 9:k:=m-1k:=m-1 ; ;otherwise k:=m+1otherwise k:=m+1endendn n TestTest 102102n+1n+1 nextnext 0 104 1070 104 107n+2n+2L L1 1103103n+3n+3L L2 2105105queue
12、queue2 2n+2n+29 9n+3n+3otherwiseotherwise 產(chǎn)生標號產(chǎn)生標號L Ln n, ,連同連同NXQNXQ進符號表;設位置為進符號表;設位置為P Pn n, ,(T,P(T,Pn n) )進隊列進隊列queue (queue (上述條件都不滿足,一定可上述條件都不滿足,一定可以滿足本條件,以滿足本條件, TT )TT )100(+ , i , j ,T100(+ , i , j ,T1 1 ) )101(:=, T101(:=, T1 1, _ , T ), _ , T )102(j, _ , _ , 0 ) 102(j, _ , _ , 0 ) 103(:=
13、, m, _ , k )103(:= , m, _ , k )104(j, _ , _ , 0 ) 104(j, _ , _ , 0 ) 105( - , m, 1 , T105( - , m, 1 , T2 2 ) )106(:= , T106(:= , T2 2, _ , k ), _ , k )107(j, _ , _ ,104 ) 107(j, _ , _ ,104 ) 108( + , m, 1 , T108( + , m, 1 , T3 3 ) )109(:= , T109(:= , T3 3, _ , k ), _ , k )110(j, _ , _ ,107 ) 110(j,
14、_ , _ ,107 ) CASE i+jCASE i+j of of case 2 case 2:k:=mk:=m ; ; case 9 case 9:k:=m-1k:=m-1 ; ; otherwise k:=m+1 otherwise k:=m+1endendn n TestTest 102102n+1n+1 nextnext 0 104 107 1100 104 107 110n+2n+2L L1 1103103n+3n+3L L2 2105105n+4n+4L L3 3108108queuequeue2 2n+2n+29 9n+3n+3T Tn+4n+4endend 返填返填test
15、: Backpatch(test.addr,NXQtest: Backpatch(test.addr,NXQ););讀取讀取queue,queue,對對(Ci(Ci ,Pi ) ,Pi ),產(chǎn)生:,產(chǎn)生:(case,Ci(case,Ci ,Pi ,_); ,Pi ,_); backpatch(next.addr,NXQbackpatch(next.addr,NXQ) )CASE i+jCASE i+j of ofcase 2case 2:k:=mk:=m ; ;case 9case 9:k:=m-1k:=m-1 ; ;otherwise k:=m+1otherwise k:=m+1endend
16、n n TestTest 102102n+1n+1 nextnext 110110n+2n+2L L1 1103103n+3n+3L L2 2105105n+4n+4L L3 3108108queuequeue2 2n+2n+29 9n+3n+3T Tn+4n+4 111111(case,2,103, _ )111(case,2,103, _ )112(case,9,105, _ )112(case,9,105, _ )113(case,T,108, _ ) 113(case,T,108, _ ) 102(j, _ , _ , 0 ) 102(j, _ , _ , 0 ) 103(:= , m
17、, _ , k )103(:= , m, _ , k )104(j, _ , _ , 0 ) 104(j, _ , _ , 0 ) 105( - , m, 1 , T105( - , m, 1 , T2 2 ) )106(:= , T106(:= , T2 2, _ , k ), _ , k )107(j, _ , _ ,104 ) 107(j, _ , _ ,104 ) 108( + , m, 1 , T108( + , m, 1 , T3 3 ) )109(:= , T109(:= , T3 3, _ , k ), _ , k )110(j, _ , _ ,107 ) 110(j, _ ,
18、 _ ,107 ) 1141141146.10 6.10 過程調(diào)用過程調(diào)用過程調(diào)用時,程序轉(zhuǎn)向執(zhí)行另外一段代碼,執(zhí)行完過程調(diào)用時,程序轉(zhuǎn)向執(zhí)行另外一段代碼,執(zhí)行完畢后,返回原來的執(zhí)行點繼續(xù)往下執(zhí)行。正確的過畢后,返回原來的執(zhí)行點繼續(xù)往下執(zhí)行。正確的過程調(diào)用必須保證:程調(diào)用必須保證: 程序的控制能夠正確地轉(zhuǎn)移到被調(diào)用的過程。程序的控制能夠正確地轉(zhuǎn)移到被調(diào)用的過程。 被調(diào)用者能夠正確地從調(diào)用者哪里獲取數(shù)據(jù)。被調(diào)用者能夠正確地從調(diào)用者哪里獲取數(shù)據(jù)。 被調(diào)用者能夠把處理結果返回給調(diào)用者。被調(diào)用者能夠把處理結果返回給調(diào)用者。 同時,控制能夠返回到調(diào)用的地方繼續(xù)執(zhí)行。同時,控制能夠返回到調(diào)用的地方繼續(xù)執(zhí)行
19、。上述上述4 4條中,條中,1 1,4 4是控制聯(lián)系,是控制聯(lián)系,2 2,3 3是數(shù)據(jù)聯(lián)系。是數(shù)據(jù)聯(lián)系。工作工作中間代碼中間代碼程序的控制轉(zhuǎn)移到被調(diào)用的過程程序的控制轉(zhuǎn)移到被調(diào)用的過程call 過程名過程名被調(diào)用者能夠從調(diào)用者獲取數(shù)據(jù)被調(diào)用者能夠從調(diào)用者獲取數(shù)據(jù)par 參數(shù)參數(shù)i被調(diào)用者能夠把處理結果返回被調(diào)用者能夠把處理結果返回return yy代表返回代表返回值,可選值,可選控制能夠返回到調(diào)用的地方繼續(xù)執(zhí)行控制能夠返回到調(diào)用的地方繼續(xù)執(zhí)行過程調(diào)用過程調(diào)用和和數(shù)組元素數(shù)組元素相混淆的處理,如:相混淆的處理,如:X:=A(I,J)X:=A(I,J)解決方法:解決方法: 查符號表。這就要求數(shù)組元素或過程查符號表。這就要求數(shù)組元素或過程( (函數(shù)函數(shù)) )要先定要先定義,后使用;(如義,后使用;(如C C中的原型定義)中的原型定義)1. 文法:文法:S call call id (Elist id (Elist) ) Elist Elist E Elistlist , E | E , E | E 2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 渝中區(qū)危險化品運輸合同6篇
- 2024屆高考語文專題復習彈琴三境界 寫作指導
- 餐廳窗口承包合同
- 2025年青海道路運輸從業(yè)人員資格考試內(nèi)容有哪些
- 公司和個人勞務合同
- 學校食堂檔口承包合同
- 會議邀請函模板表
- 公司財務管理規(guī)章制度的修訂與完善建議
- 企業(yè)高管聘用合同
- 農(nóng)田租地合同協(xié)議書
- 2024關于進一步提升基層應急管理能力的意見詳細解讀課件
- 2024版合同范本之711便利店加盟合同
- 2022電力監(jiān)控系統(tǒng)網(wǎng)絡安全監(jiān)測裝置說明書
- 公路工程標準施工招標文件(2018年版)
- 近三年投標沒有發(fā)生過重大質(zhì)量安全事故的書面聲明范文
- 《工程熱力學》(第四版)全冊配套完整課件
- 2024時事政治考試題庫(100題)
- 2024年司法考試真題及答案
- 膽總管切開取石T管引流術護理查房參考課件
- YYT 1814-2022 外科植入物 合成不可吸收補片 疝修補補片
- 工程機械設備綜合保險
評論
0/150
提交評論