




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.4
布爾表達(dá)式和控制流語(yǔ)句布爾表達(dá)式有兩個(gè)基本目的計(jì)算邏輯值c=(a>b)&&a>1在控制流語(yǔ)句中用作條件表達(dá)式
if(a>b&&a>1)then…1/257.4
布爾表達(dá)式和控制流語(yǔ)句布爾表達(dá)式有兩種計(jì)算方式: if(1ori++>3)then布爾表達(dá)式的完全計(jì)算
E1orE2布爾表達(dá)式的“短路”計(jì)算E1orE2定義成ifE1thentrueelseE2E1andE2定義成
ifE1thenE2elsefalse
7.4
布爾表達(dá)式和控制流語(yǔ)句7.4.1布爾表達(dá)式的翻譯E
E
orE|EandE|notE|(E) |idrelopid|true|falsea<b的翻譯100:ifa<bgoto103101:t:=0102:goto104103:t:=1104:>,>=,<,<=,<>,==對(duì)于a<b的翻譯而言,由于三地址代碼中不包括形如t=a<b的格式,故此使用ifxrelopygotoL來(lái)實(shí)現(xiàn)。7.4
布爾表達(dá)式和控制流語(yǔ)句E
E1orE2
{E.place:=newtemp;
emit(E.place,‘:=’,E1.place,‘or’E2.place)}E
id1relopid2
{E.place:=newtemp;emit(‘if’,id1.place,relop.op,id2.place,‘goto’,nextstat+3);emit(E.place,‘:=’,‘0’);emit(‘goto’,nextstat+2);emit(E.place,‘:=’,‘1’)}a<b的翻譯100:ifa<bgoto103101:t:=0102:goto104103:t:=1104:7.4
布爾表達(dá)式和控制流語(yǔ)句7.4.2控制流語(yǔ)句的翻譯S
ifEthenS1 |ifEthenS1
elseS2 |whileEdoS1 |S1;S2
5/257.4
布爾表達(dá)式和控制流語(yǔ)句E.codeS1.codeE.true:...指向E.true指向E.false(a)if--thenE.codeS1.codeE.true:...指向E.true指向E.falseE.false:gotoS.next(S1.next)S2.code(b)if-then-elseE.codeS1.codeE.true:...指向E.true指向E.falsegotoS.beginS.begin:(c)while-doS1.codeS2.codeS1.next:...(d)
S1;S2Es1Es1s2Es1S1.next:7.4
布爾表達(dá)式和控制流語(yǔ)句S
ifEthenS1{E.true:=newlabel;
E.false:=S.next;
S1.next:=S.next;
S.code:=E.code||gen(E.true,‘:’)||S1.code}E.codeS1.codeE.true:...指向E.true指向E.false(a)if-then7.4
布爾表達(dá)式和控制流語(yǔ)句S
ifEthenS1elseS2{E.true:=newlabel;
E.false:=newlabel;
S1.next:=S.next;
S2.next:=S.next;
S.code:= E.code||gen(E.true,‘:’)||S1.code||
gen(‘goto’,S.next)||gen(E.false,‘:’)||
S2.code}E.codeS1.codeE.true:...指向E.true指向E.falseE.false:gotoS.nextS2.code(b)if-then-else7.4
布爾表達(dá)式和控制流語(yǔ)句S
whileEdoS1
{S.begin:=newlabel;
E.true:=newlabel;
E.false:=S.next;
S1.next:=S.begin;
S.code:=gen(S.begin,‘:’)||E.code||
gen(E.true,‘:’)||S1.code||gen(‘goto’,S.begin)}E.codeS1.codeE.true:...指向E.true指向E.falsegotoS.beginS.begin:(c)while-do7.4
布爾表達(dá)式和控制流語(yǔ)句S
S1;S2{S.code:=S1.code||gen(S1.next,‘:’)||S2.code}S1.codeS2.codeS1.next:...(d)S1;S210/257.4
布爾表達(dá)式和控制流語(yǔ)句7.4.3布爾表達(dá)式的控制流翻譯如果E是a<b的形式,那么代碼是:ifa<bgotoE.truegotoE.false7.4
布爾表達(dá)式和控制流語(yǔ)句表達(dá)式
a<borc<dande<f的代碼是: ifa<bgotoLtrue gotoL1L1: ifc<dgotoL2 gotoLfalseL2: ife<fgotoLtrue gotoLfalse7.4
布爾表達(dá)式和控制流語(yǔ)句E
E1andE2{E1.true:=newlabel;
E1.false:=E.false;
E2.true:=E.true;
E2.false:=E.false;
E.code:=E1.code||gen(E1.true,‘:’)||E2.code}E1.codeE2.codeE1.true:...指向E1.true指向E1.falseE1andE27.4
布爾表達(dá)式和控制流語(yǔ)句E
E1andE2{E1.true:=newlabel;
E1.false:=E.false;
E2.true:=E.true;
E2.false:=E.false;
E.code:=E1.code||gen(E1.true,‘:’)||E2.code}E
(E1
){E1.true:=E.true;
E1.false:=E.false;
E.code:=E1.code}7.4
布爾表達(dá)式和控制流語(yǔ)句E
E1orE2{E1.true:=E.true;
E1.false:=newlabel;
E2.true:=E.true;
E2.false:=E.false;
E.code:=E1.code||gen(E1.false,‘:’)||E2.code}15/257.4
布爾表達(dá)式和控制流語(yǔ)句E
E1orE2{E1.true:=E.true;
E1.false:=newlabel;
E2.true:=E.true;
E2.false:=E.false;
E.code:=E1.code||gen(E1.false,‘:’)||E2.code}E
notE1{E1.true:=E.false;
E1.false:=E.true;
E.code:=E1.code}7.4
布爾表達(dá)式和控制流語(yǔ)句E
id1relopid2{E.code:=gen(‘if’,id1.place,relop.op,id2.place, ‘goto’,E.true)||
gen(‘goto’,E.false)}E
true{E.code:=gen(‘goto’,E.true)}E
false{E.code:=gen(‘goto’,E.false)}如果E是a<b的形式,那么代碼是:ifa<bgotoE.truegotoE.false7.4
布爾表達(dá)式和控制流語(yǔ)句7.4.4開(kāi)關(guān)語(yǔ)句的翻譯switchE begin caseV1:S1 caseV2:S2 ... caseVn-1:Sn–1 default:Sn end7.4
布爾表達(dá)式和控制流語(yǔ)句分支數(shù)較少時(shí) t:=E的代碼 ift
V1gotoL1
S1的代碼 gotonext L1: ift
V2gotoL2 S2的代碼 gotonextL2: ... ...Ln-2:ift
Vn-1gotoLn-1
Sn-1的代碼| gotonextLn-1:Sn的代碼next:7.4
布爾表達(dá)式和控制流語(yǔ)句分支較多時(shí),將分支測(cè)試的代碼集中在一起,便于生成較好的分支測(cè)試代碼。 t:=E的代碼 |Ln: Sn的代碼 gototest
| gotonext L1: S1的代碼 |test:ift=V1gotoL1
gotonext | ift=V2gotoL2
L2: S2的代碼
| ...
gotonext | ift=Vn-1gotoLn-1 ... | gotoLnLn-1: Sn-1的代碼 |next:
gotonext20/257.4
布爾表達(dá)式和控制流語(yǔ)句中間代碼增加一種case語(yǔ)句,便于代碼生成器對(duì)它進(jìn)行特別處理test: caseV1 L1 caseV2 L2 ... caseVn-1 Ln-1 caset Ln
next:7.4
布爾表達(dá)式和控制流語(yǔ)句7.4.5
過(guò)程調(diào)用的翻譯S
callid(Elist)Elist
Elist,EElist
E
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采煤隊(duì)安全生產(chǎn)責(zé)任與技術(shù)服務(wù)合同
- 車(chē)輛過(guò)戶(hù)交易風(fēng)險(xiǎn)防范及糾紛解決合同
- 拼多多品牌營(yíng)銷(xiāo)策略與實(shí)踐
- 特色餐飲品牌股權(quán)收購(gòu)及區(qū)域市場(chǎng)開(kāi)發(fā)協(xié)議
- 探索學(xué)習(xí)從模仿到創(chuàng)作的實(shí)踐路徑
- 投資理財(cái)基礎(chǔ)知識(shí)-個(gè)人財(cái)務(wù)入門(mén)
- 公司電影院活動(dòng)方案
- 公司活動(dòng)布置策劃方案
- 微博大V養(yǎng)成記個(gè)人IP塑造之道
- 公司社外實(shí)踐活動(dòng)方案
- 珠寶公司文件管理制度
- 2025-2030年中國(guó)3C數(shù)碼充電器行業(yè)市場(chǎng)深度調(diào)研及市場(chǎng)供需與投資價(jià)值研究報(bào)告
- 2024年黃岡團(tuán)風(fēng)縣招聘城區(qū)社區(qū)工作者真題
- 2025年山東省高考?xì)v史試卷真題
- 2025至2030中國(guó)農(nóng)膜行業(yè)發(fā)展分析及發(fā)展前景與投資報(bào)告
- 2025圖解《政務(wù)數(shù)據(jù)共享?xiàng)l例》V1.0學(xué)習(xí)解讀
- 2024中國(guó)農(nóng)業(yè)銀行分行年度營(yíng)銷(xiāo)宣傳方案
- 2025電商平臺(tái)店鋪轉(zhuǎn)讓合同模板
- 物業(yè)監(jiān)控調(diào)取管理制度
- 高端私人定制服務(wù)方案
- 2025年保密知識(shí)競(jìng)賽考試題庫(kù)300題(含答案)
評(píng)論
0/150
提交評(píng)論