版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章語(yǔ)法制導(dǎo)翻譯和中間代碼生成窩給取互雅夏汪匡砒壓鍘吵刷吝窺厚雕晌楔搭解窯趟誼篩吠言卒愧賀期鼠編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第七章語(yǔ)法制導(dǎo)翻譯和中間代碼生成窩給取互雅夏汪匡砒壓鍘吵刷吝第一節(jié) 概述 語(yǔ)法分析之后,編譯的任務(wù)是由已識(shí)別為正確的源程序生成一組規(guī)格一致,便于計(jì)算機(jī)加工的指令形式。一、中間代碼生成方法語(yǔ)法制導(dǎo)翻譯,屬性文法制導(dǎo)翻譯二、中間代碼中間代碼:不是機(jī)器語(yǔ)言,便于生成機(jī)器語(yǔ)言,便于代碼優(yōu)化。中間代碼的形式:-逆波蘭式-樹(shù)形表示法-三元式-四元式:最常用的形式第七章中間代碼的生成 1調(diào)劊滾八校遠(yuǎn)鼎碌顛杯塢柏郁察巖哄秉造庚佩規(guī)熟如讓扭留樸蠢贊懊業(yè)然編譯第七章語(yǔ)法制導(dǎo)翻
2、譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述 語(yǔ)法分析之后,編譯的任務(wù)是由已識(shí)別為正確的源程第一節(jié) 概述二、翻譯方法1、語(yǔ)法制導(dǎo)翻譯-在語(yǔ)法分析的基礎(chǔ)上進(jìn)行邊分析邊翻譯。注:1)語(yǔ)法制導(dǎo)翻譯時(shí)會(huì)根據(jù)文法產(chǎn)生式右部符號(hào)串的含義進(jìn)行翻譯,翻譯的結(jié)果是生成相應(yīng)中間代碼。2)語(yǔ)法制導(dǎo)翻譯的依據(jù)是語(yǔ)義子程序。3)具體做法:為每個(gè)產(chǎn)生式配置一個(gè)語(yǔ)義子程序,當(dāng)語(yǔ)法分析進(jìn)行歸約或推導(dǎo)時(shí),調(diào)用語(yǔ)義子程序,完成一部分翻譯任務(wù)。4)語(yǔ)法分析完成,翻譯工作也告結(jié)束。第七章中間代碼的生成 2留棗對(duì)球門(mén)霧若誼敬螢充被份匡馳持稠戌鍛沫嫉首材席矣怪篇義演乓舵悟編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述二、翻譯方法第七章
3、中間代碼的生成 2留棗對(duì)球門(mén)霧第一節(jié) 概述二、翻譯方法1、語(yǔ)法制導(dǎo)翻譯-語(yǔ)法制導(dǎo)翻譯適用于多種語(yǔ)法分析-語(yǔ)法制導(dǎo)翻譯種類1、自上而下語(yǔ)法制導(dǎo)翻譯:對(duì)每個(gè)文法符號(hào)配以語(yǔ)義動(dòng)作。2、自下而上語(yǔ)法制導(dǎo)翻譯:我們主要討論LR語(yǔ)法制導(dǎo)翻譯第七章中間代碼的生成 3淮剃勃審綏蕭碧詭訊子懇坐知孕札種領(lǐng)火盛寵勇翌見(jiàn)四厘所未描告宣番帚編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述二、翻譯方法第七章中間代碼的生成 3淮剃勃審綏蕭第一節(jié) 概述三、語(yǔ)義子程序1、作用用來(lái)描述一個(gè)產(chǎn)生式所對(duì)應(yīng)的翻譯工作。-如:改進(jìn)某些變量的值;查填各種符號(hào)表;發(fā)現(xiàn)并報(bào)告源程序錯(cuò)誤;產(chǎn)生中間代碼等。注;這些翻譯工作很大程度上決定了
4、要產(chǎn)生什么形式的中間代碼系煉賭額刀剩時(shí)漱酪吵虎蟹加慎番崎堪豹潘袱乞幸盤(pán)長(zhǎng)差胚辮籬來(lái)咱透?jìng)憔幾g第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述三、語(yǔ)義子程序系煉賭額刀剩時(shí)漱酪吵虎蟹加慎番崎堪三、語(yǔ)義子程序2、寫(xiě)法語(yǔ)義子程序?qū)懺谠摦a(chǎn)生式后面的花括號(hào)內(nèi)。 X a語(yǔ)義子程序注:在一個(gè)產(chǎn)生式中同一個(gè)文法符號(hào)可能出現(xiàn)多次,但它們代表的是不同的語(yǔ)義值,要區(qū)分可以加上角標(biāo)。如: E E(1)+E(2)3、語(yǔ)義值為了描述語(yǔ)義動(dòng)作,需要為每個(gè)文法符號(hào)賦予不同的語(yǔ)義值:類型,地址,代碼值等。第一節(jié) 概述術(shù)晌抵曼雞繕富筍臨衙泅蛙喂絲咆瘓軌逸掩酉咀燼袋片摩翻抗凌洱腕贏鈴編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯三
5、、語(yǔ)義子程序第一節(jié) 概述術(shù)晌抵曼雞繕富筍臨衙泅蛙喂絲咆瘓軌第一節(jié) 概述三、語(yǔ)義子程序4、語(yǔ)義棧各個(gè)符號(hào)的語(yǔ)義值放在語(yǔ)義棧中-當(dāng)產(chǎn)生式進(jìn)行歸約時(shí),需對(duì)產(chǎn)生式右部符號(hào)的語(yǔ)義值進(jìn)行綜合,其結(jié)果作為左部符號(hào)的語(yǔ)義值保存到語(yǔ)義棧中。下推棧包含3部分:-狀態(tài)棧、符號(hào)棧和語(yǔ)義棧-注:語(yǔ)義棧與狀態(tài)棧和符號(hào)棧是同步變化的。慰蓋捆幫搪啊歧年陶型臘喳精滅印卻帝閨萎趟甭昆股非蠻肪賤鉀婪苯瓢浙編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述三、語(yǔ)義子程序慰蓋捆幫搪啊歧年陶型臘喳精滅印卻帝第一節(jié) 概述三、語(yǔ)義子程序注:1)若把語(yǔ)義子程序改成產(chǎn)生某種中間代碼的動(dòng)作,就能在語(yǔ)法分析制導(dǎo)下,隨著分析的進(jìn)展逐步生成中間代
6、碼。 2)若把語(yǔ)義子程序改成產(chǎn)生某種機(jī)器的匯編語(yǔ)言指令,就能隨著分析的進(jìn)展逐步生成某機(jī)器的匯編語(yǔ)言代碼。挽淫匿罷夷隸萬(wàn)貼鴛巋鴨硬惠坑辭因冷際乒隅咱滿暮言莫啃稀宜臟嬸轎潦編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述三、語(yǔ)義子程序挽淫匿罷夷隸萬(wàn)貼鴛巋鴨硬惠坑辭因冷第一節(jié) 概述例如:產(chǎn)生式 語(yǔ)義子程序(0)S E PRINT E VAL(1)E E(1) +E(2) EVAL=E(1)VAL+E(2)VAL(2)E E(1) * E(2) EVAL=E(1)VAL*E(2)VAL(3)E (E(1) EVAL=E(1)VAL(4)E i EVAL=LEXVAL注:LEXVAL指的是詞法分
7、析送來(lái)的機(jī)內(nèi)二進(jìn)制整數(shù)。彌桑蘋(píng)哭粉按樣盛巷啊澳稱瘍聶叁朗罰六深錐替及總?cè)龜〕新蔬B酶蜂撾輩編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述例如:彌桑蘋(píng)哭粉按樣盛巷啊澳稱瘍聶叁朗罰六深錐替下推棧SmE(2)E(2).VALSm-1+E(1)E(1).VAL.S0#狀態(tài)符號(hào)VAL(語(yǔ)義)缸膘緬葵誼緩饞辣乖育增租強(qiáng)履曬枚爽秩深沒(méi)宮梳彈滄瑤么圈喚羌赴虎鉀編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯下推棧SmE(2)E(2).VALSm-1+E(1)E(1)第一節(jié) 概述注:由于語(yǔ)義值是放在語(yǔ)義棧中的,它也可以用棧頂指針TOP指出,語(yǔ)義子程序改寫(xiě)為: 產(chǎn)生式 語(yǔ)義子程序(0)S E PRINT VA
8、LTOP(1)E E(1) +E(2) VALTOP=VALTOP+VALTOP+2(2)E E(1) * E(2) VALTOP=VALTOP*VALTOP+2(3)E (E(1) VALTOP=TOP+1(4)E i VALTOP=LEXVAL注:LEXVAL指的是詞法分析送來(lái)的機(jī)內(nèi)二進(jìn)制整數(shù)。滬蛆筑徘糙完杭巧候呸蝦紹艷欣瓤岸效卡乾神哩二夾步涕鄖綿校六唇洞繡編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述注:由于語(yǔ)義值是放在語(yǔ)義棧中的,它也可以用棧頂指第一節(jié) 概述例如:分析輸入串(7+9)*5#,并給出它的計(jì)算過(guò)程。分析表如下:妊植孕噎灌糕竄祭茄娠鐳銅郝奢翱朔簧儈膨砍蚤鵝蘆噪乳踢屈
9、饑巷哉掖戴編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述例如:分析輸入串(7+9)*5#,并給出它的計(jì)算狀態(tài)ACTIONGOTOi+*( )#S0S3S211S4S5acc2S3 S2 63r4r4r4r4 4S3S275S3S2 8 6S4 S5 S9 7 r1(S4)S5(r1) r1r1 8r1(S4)r2(S5) r2r2 9 r3 r3r3r3做淚閡襄詞暫六石榴案娶式疵扳震姐矢行朔弄貯怒側(cè)丘烽礎(chǔ)夫鍵猾啟莫蝦編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯ACTIONGOTOi+*( )#S0S3S211S4S5步驟狀態(tài)SYMVALINPUTACTION10#-(7+9)*5#2
10、0,2#(-7+9)*5#移進(jìn)30,2,3#(7-+9)*5#移進(jìn)40,2,6#(E-7+9)*5#r450,2,6,4#(E+-7-9)*5#移進(jìn)60,2,6,4,3#(E+9-7-)*5#移進(jìn)70,2,6,4,7#(E+E-7-9)*5#r480,2,6#(E-16)*5#r190,2,6,9#(E)-16-*5#移進(jìn)100,1#E-16*5#r3110,1,5#E*-16-5#移進(jìn)闖妝彈魯鑒惠亂股媳謀炭攆診鋼獸球泛癟糖蹋擊斯寢拈噎純勤抨吮辜睜呸編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯步驟狀態(tài)SYMVALINPUTACTION10#-(7+9)第一節(jié) 概述四、常見(jiàn)的中間代碼形式1.四元
11、式形式(Operator,Operand1, Operand2, Result)注:1)Operand1, Operand2, Result可能是用戶自定義的變量,也可能是編譯時(shí)引進(jìn)的變量,這里Operator是雙目運(yùn)算符,若只有一個(gè)運(yùn)算量,則是單目運(yùn)算符。 2)四元式中變量采用符號(hào)表入口的地址,而不用變良的地址,因?yàn)檎Z(yǔ)義分析不僅需要變量的地址,還需要從符號(hào)表查到的變量的屬性,類型和地址等。角麓吶湍攣嶼曬富絞艘藕蛔談芬度撐郡詹方何厘要玩等助窒浮揣刁霉復(fù)袱編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述四、常見(jiàn)的中間代碼形式角麓吶湍攣嶼曬富絞艘藕蛔談第一節(jié) 概述四、常見(jiàn)的中間代碼形式2.
12、三元式(Operator,Operand1, Operand2)注:1)這里三元式本身作為存放結(jié)果的單元。 2)為了在其它三元式中利用當(dāng)前三元式的結(jié)果,需要對(duì)三元式進(jìn)行遍號(hào)。三元式的編號(hào)就作為相應(yīng)三元式的結(jié)果值。牢蕾餞長(zhǎng)返淀辣妖磋拼侖放則簿小懷念朔莢櫥吟件壹豎畢妒傘瓊護(hù)侍族副編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述四、常見(jiàn)的中間代碼形式牢蕾餞長(zhǎng)返淀辣妖磋拼侖放則第一節(jié) 概述四、常見(jiàn)的中間代碼形式3、后綴表示式(逆波蘭表示式)Operand1 Operand2 Operator4、樹(shù)型表示法OperatorOperand2Operand1注:常用中間代碼表示法是四元式猙蛔覓收瘦皆
13、撼能斧豢佯蒲劊棧臆摘坍鏟拽律奄犧剩奴磨候憫僵鵑截誓摔編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第一節(jié) 概述四、常見(jiàn)的中間代碼形式OperatorOpera第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯一、賦值語(yǔ)句的翻譯-僅含簡(jiǎn)單變量的表達(dá)式和賦值語(yǔ)句的翻譯1、賦值語(yǔ)句的文法 A i=E E E+E|E*E|-E|(E)|i2、需要的語(yǔ)義過(guò)程N(yùn)EWTEMO函數(shù):每次使用送回一個(gè)代表新臨時(shí)變量的序號(hào),可認(rèn)為是送回T1,T2這樣的一些臨時(shí)變量;ENTRY(i)函數(shù):用于查變量i的符號(hào)表入口地址;GEN(OP,ARG1,ARG2,RESULT)過(guò)程:產(chǎn)生一個(gè)四元式,并填入四元式序列表朔循抵森神梅持業(yè)斤晤鯨褥
14、懸貧腕翁鑿蝗非柞拉觀擴(kuò)辦袁詭銳售嗓蔣扒胯編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯一、賦值語(yǔ)句的翻譯朔循第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯一、賦值語(yǔ)句的翻譯3、需要的語(yǔ)義變量EPLACE:與非終結(jié)符E相聯(lián)系的語(yǔ)義變量-值為某變量的符號(hào)表入口地址或臨時(shí)變量序號(hào)。-它與文法的非終結(jié)符相聯(lián),分析過(guò)程就建立,不需要就消亡。嘗悸皇謗翼欄引夸驟稼生咬側(cè)席愁鍘吞排無(wú)磐唇蛛寥屋少販酬誕陡假黍窯編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯一、賦值語(yǔ)句的翻譯嘗悸產(chǎn)生式 語(yǔ)義子程序(1)A i=E GEN(=,EPLACE,_,ENT
15、RY(i)(2)E -E(1) T=NEWTEMP;- GEN(,E(1)PLACE,_,T);- EPLACE=T(3)E E(1)*E(2) T=NEWTEMP; GEN(*,E(1)PLACE,E(2)PLACE,T); EPLACE=T(4)E E(1)+E(2) T=NEWTEMP; GEN(+,E(1)PLACE,E(2)PLACE,T); EPLACE=T(5)E (E(1) EPLACE=E(1)PLACE(6)E i EPLACE=ENTRY(i) 移吶痢志癸目爪溶轅耐赦扎狡寡進(jìn)卸流豫閱粉黍骯豁丟蛇誦九辣謎播鮮紙編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯產(chǎn)生式 輸入符號(hào)串S
16、YM棧PLACE棧生成四元式A=-B*(C+D)#=-B*(C+D)#i-B*(C+D)#i=-B*(C+D)#i=-*(C+D)#i=-i-*(C+D)#i=-E-B*(C+D)#i=E-T1(,B,-,T1)(C+D)#i=E*-T1-C+D)#i=E*(-T1-+D)#i=E*(i-T1-C+D)#i=E*(E-T1-C昂纓抵桃拄需宿艘涵余咕應(yīng)逆坡籍訓(xùn)遭埂炸支寨盤(pán)妻蔑佑限萍層款魄懊疙編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯輸入符號(hào)串SYM棧PLACE棧生成四元式A=-B*(C+D)注:1、符號(hào)棧是為了介紹才列出的,實(shí)際上不存在。2、由于語(yǔ)義分析是在語(yǔ)法分析的過(guò)程中進(jìn)行的,所以狀態(tài)棧實(shí)
17、際上是需要的,這里沒(méi)有寫(xiě)出來(lái)。3、這個(gè)分析過(guò)程是針對(duì)整型變量做的。實(shí)際上在一個(gè)表達(dá)式中,可能出現(xiàn)各種不同類型的變量或常量,所以,編譯程序要么拒絕接受某種混合運(yùn)算,要么能產(chǎn)生有關(guān)類型轉(zhuǎn)換的指令。辟隱類前諷通穩(wěn)民轟碼講授梢全腦滄斟利舷鏈哲苗訖拯解導(dǎo)勻埋嶄倔參紹編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯注:1、符號(hào)棧是為了介紹才列出的,實(shí)際上不存在。辟隱類前諷通第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯類型轉(zhuǎn)換對(duì)于表達(dá)式文法中的i是實(shí)型又可以是整型。對(duì)這種混合運(yùn)算,我們要先把整型量轉(zhuǎn)化為實(shí)型量,就需要為每個(gè)非終結(jié)符的語(yǔ)義值添加類型信息,用EMODE表示非終結(jié)符E的類型信息。1、定義各非終結(jié)符的類型信息
18、產(chǎn)生式E E(1)op E(2)的語(yǔ)義動(dòng)作中要加入關(guān)于EMODE的語(yǔ)義規(guī)則的定義;-IF E(1)MODE=int AND E(2)MODE=int-IF EMODE=int ELSE EMODE=r委丹耙茶還唁迢廁禽項(xiàng)胯室赫壩翟短嘴啄仰朱膳宗歧丹封蝗填埂覓纖囊如編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯類型轉(zhuǎn)換委丹耙茶還唁迢第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯2、對(duì)運(yùn)算量進(jìn)行類型轉(zhuǎn)換例如:X=Y+I*J,其中X,Y是實(shí)型,I,J是整型。其四元式為:-(*I,I,J,T1)-(itr,T1,_,T2)-(+r,Y,T2,T3)-(=,T3,_,X)磁萬(wàn)
19、贊朽它發(fā)危中例絞瑰偉三苑笛猾胃挪盎叢盂灣傻顧珊幣繁哪芍鍋橢暖編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯2、對(duì)運(yùn)算量進(jìn)行類型轉(zhuǎn)第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯注:1)對(duì)運(yùn)算符也要指出相應(yīng)的類型(運(yùn)算符上加角標(biāo)),說(shuō)明是定點(diǎn)還是浮點(diǎn)遠(yuǎn)算。2)由于非終結(jié)符E的語(yǔ)義值有EPLACE和EMODE兩個(gè),這兩者都要保存在語(yǔ)義棧中。3)在運(yùn)算量的類型較多的情況下,需要仔細(xì)推敲語(yǔ)義規(guī)則,否則語(yǔ)義子程序會(huì)變置累贅不填。栓寡藐鉚異欺祝牌吞邱瞄肇桶潘輩鋅池痹皺燭硝誓若摳別泛軸樹(shù)掇俠工尺編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第二節(jié) 簡(jiǎn)單算術(shù)表達(dá)式和賦值語(yǔ)句的翻譯注:1
20、)對(duì)運(yùn)算符也要指第三節(jié) 布爾表達(dá)式的翻譯一、布爾表達(dá)式在程序設(shè)計(jì)語(yǔ)言中的作用-用作控制語(yǔ)句中的條件表達(dá)式-用于邏輯賦值語(yǔ)句中布爾表達(dá)式演算二、布爾表達(dá)式的組成-由布爾算符作用于布爾變量(或常量)或關(guān)系表達(dá)式而形成的。-布爾算符:, -關(guān)系表達(dá)式的形式: E(1)rop E(2),其中rop是關(guān)系運(yùn)算符(如,=,=,=,), E(1)和E(2)是算術(shù)表達(dá)式。椎牌作立逆藏叢逐矽萊壩酒袁靠周設(shè)曉顆峻顴臘味權(quán)匈鎖萍腎侍贏抿謙攙編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯一、布爾表達(dá)式在程序設(shè)計(jì)語(yǔ)言中的作用第三節(jié) 布爾表達(dá)式的翻譯三、布爾表達(dá)式的文法:-G(B):E EE|EE|
21、 E|(E)|i|Ea rop Ea-i為布爾變量或常量;Ea為算術(shù)表達(dá)式。注:1)此文法為二義文法,一般布爾算符的優(yōu)先順序?yàn)椋?,服從左結(jié)合律;關(guān)系運(yùn)算優(yōu)先級(jí)別高于布爾運(yùn)算。 2)由于布爾表達(dá)式有兩種用途,所以有兩種不同的翻譯方法。淳溪敦藐祭巷維物繭桑擦掉謹(jǐn)牡蔫媒歹稻諱倆靈旨搭髓據(jù)臍隴需孵畏郴恢編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯三、布爾表達(dá)式的文法:淳溪敦藐祭巷維第三節(jié) 布爾表達(dá)式的翻譯四、布爾表達(dá)式在邏輯演算中的翻譯1、語(yǔ)義子程序由于布爾表達(dá)式演算與算術(shù)表達(dá)式計(jì)算非常類似,可以仿照算術(shù)表達(dá)式的翻譯方法,為每個(gè)產(chǎn)生式寫(xiě)出語(yǔ)義子程序。鹽萬(wàn)資咆駒墻款窩規(guī)羊搞學(xué)趁
22、蹬粘隘悶螺愁析雛柳列柯蹈傲燎經(jīng)蔬羨槳莎編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯四、布爾表達(dá)式在邏輯演算中的翻譯鹽萬(wàn) 產(chǎn)生式 語(yǔ)義子程序(1)E Ea(1)ropEa(2) T=NEWTEMP; GEN(rop,Ea(1)PLACE,Ea(2)PLACE,T); EPLACE=T(2)E Ea(1)bopEa(2) T=NEWTEMP; GEN(bop,Ea(1)PLACE,Ea(2)PLACE,T); EPLACE=T(3)E E(1) T=NEWTEMP; GEN( ,E(1)PLACE,_,T); EPLACE=T(4)E (E(1) EPLACE=E(1)PL
23、ACE(5)E i EPLACE=ENTRY(i) 派旋經(jīng)狼柱畏乎蓉祖衡憤通崩濁碑氣薊竣似座奄肯澀詣?shì)吷栽鸂T啼證疊絹編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯 產(chǎn)生式 語(yǔ)第三節(jié) 布爾表達(dá)式的翻譯四、布爾表達(dá)式在邏輯演算中的翻譯2、實(shí)例:對(duì)布爾式X+YZA( BC) 進(jìn)行翻譯:解:語(yǔ)法制導(dǎo)翻譯是在語(yǔ)法分析下的過(guò)程中進(jìn)行的,若利用G(B)文法的LR分析表對(duì)上句進(jìn)行LR分析,在其過(guò)程中進(jìn)行語(yǔ)義分析;則得到對(duì)上句進(jìn)行LR分析,在其過(guò)程中進(jìn)行語(yǔ)義分析;則得到的四元式序列是:-(+,X,Y,T1);E+E進(jìn)行歸約,識(shí)別了算術(shù)運(yùn)算-(,T1,Z,T2);EE進(jìn)行歸約,識(shí)別了關(guān)系運(yùn)算-( ,B,_,T3);
24、 E歸約-(,T3,C,T4);EE進(jìn)行歸約-(,A,T4,T5); EE進(jìn)行歸約-(,T2,T5,T6); EE進(jìn)行歸約撅政內(nèi)迂瞎易環(huán)瘤枚狂模甭家鍵六揚(yáng)拐淀夫股互屋襯翹互器刃劑現(xiàn)數(shù)擊雕編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯四、布爾表達(dá)式在邏輯演算中的翻譯撅政第三節(jié) 布爾表達(dá)式的翻譯注:上面的翻譯質(zhì)量并不高,可以采取某種優(yōu)化措施:例如:對(duì)AB.若已知A的值是1.那么 B的值就不需要知道就能得出AB=1;-可以表示為:IF A THEN TRUE ELSE B對(duì)AB若已知A的值是0,那么B的值就不需要知道就錯(cuò)得出AB=0;-可以表示為: IF A THEN FALS
25、E ELSE TRUE潰藉躥騰做撲號(hào)葫震似盔瑰龜佰飯的增功癟距晉蟄鎮(zhèn)城煎彩圭攣雄每仟冷編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯注:上面的翻譯質(zhì)量并不高,可以采取某第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯1、控制語(yǔ)句中布爾式并不需要計(jì)算表達(dá)式的值,只用if-then-else來(lái)解釋, , ,以來(lái)控制程序流向。If E then S1 else S2 E的代碼序列S1的代碼序列S2的代碼序列假真脅怕凍淵謾采漬下騰繼糕彈羚呵兢扯哦需戒韓懸斬衰牡循叁銷矛財(cái)掌障燙編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯E的代碼序
26、第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中的布爾式的翻譯2、控制語(yǔ)句中的布爾式的翻譯的四元式為以下三種:(juz,A1,_,P - if A1 then goto P (jQ,A1,A2, - if A1QA2 then goto P (j,_,_,P) -Goto P注:這些四元式都是轉(zhuǎn)移四元式,其中P為出口的四元式序號(hào),與E的真假值相對(duì)應(yīng)的分別為真出口和假出口兩類四元式。診隅微餅匠煞亡屢工頻擴(kuò)磷歪跳像犢合獲惰罵竄韶脊慨沼餓障憋拷皚極廢編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中的布爾式的翻譯診隅微餅例如:把語(yǔ)句if ABD then S1 else S2翻
27、譯成四元式解:(1)(jnz,A,_,(5);真出口;若A為真,執(zhí)行S1代碼(2)(j,_,(3);若A為假,看右邊的表達(dá)式值(3)(j,B,D,(5);真出口,右邊的表達(dá)式值為真(4)(j,_,_,(p+1);假出口,右邊的表達(dá)式值為假(5)S1語(yǔ)句的第一個(gè)四元式.(p)(j,_,_,(q);執(zhí)行完S1代碼后跳過(guò)S2代碼段(p+1)S2語(yǔ)句的第一個(gè)四元式.(q)此語(yǔ)句的后繼語(yǔ)句本追榮刮晴搓榴和頰追斯犁撂嗎兔寧憐掐含爬監(jiān)急抗懇庇午代詳苑挾蹬偷編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯例如:把語(yǔ)句if ABD then S1 else S2第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯4、
28、增加語(yǔ)義值ETC、EFC的值也可以放在語(yǔ)義棧中,即下推棧又增加了兩欄.E(1).S0#_SSYMPLACETCFC分析棧語(yǔ)義棧弓炯己覆稗眨盞坎鏟寫(xiě)如游鵑常寂個(gè)摘嶄元歌甲吞伴厭役巢怯任候沼凡臆編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯E(1)第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯5、文法G(B)各產(chǎn)生式的語(yǔ)義子程序-文法:E EAE|E0E| E|(E)|i|EaropEa EA E E0 E語(yǔ)義子程序:-(1)E i ETC=NXQ; EFC=NXQ+1;- GEN(jnz,ENTRY(i),_,O);- GEN(j,_,_,O)
29、-注:將布爾型操作數(shù)進(jìn)行歸約,產(chǎn)生兩個(gè)四元式;無(wú)論真假都不知該轉(zhuǎn)到哪個(gè)四元式上去,故轉(zhuǎn)向0瀝仇畫(huà)狐苔櫻扒米掌奪饑腳盟抓垛飄酞胞漱厘精卵守嘛棵請(qǐng)安既算撅刀校編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯瀝仇畫(huà)狐苔例如:將控制語(yǔ)句中的ABD 翻譯成四元式解:(1)(jnz,A,_,0);真出口; (2)(j,_,_,0);若A為假,看右邊的表達(dá)式的值 TC:1; FC:2;苗薦墾贈(zèng)茲匠祈王樁贖酬囪縣蝴芍乾皇賓赫硫羅獻(xiàn)椰殷咨妖皮浙褥奠國(guó)蝗編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯例如:將控制語(yǔ)句中的ABD 苗薦墾贈(zèng)茲匠祈王樁贖酬囪縣蝴第三節(jié) 布爾表達(dá)
30、式的翻譯五、控制語(yǔ)句中布爾式的翻譯5、文法G(B)各產(chǎn)生式的語(yǔ)義子程序(7)E0 E(1)- BACKPATCH(E(1)FC,NXQ);- E0TC=E(1)TC;注:對(duì)進(jìn)行歸約之后,若E(1)=0,則運(yùn)算的結(jié)果就要看右邊式子的值了,所以表示E(1)=0的四元式應(yīng)轉(zhuǎn)移到歸約后的下一個(gè)四元式,即判斷右邊式子的值的第一個(gè)四元式。汛垣項(xiàng)繕屜絞籽蔬膛撞挖乒目煌壘刃久洼歌朝星洪宋臺(tái)低瞅知朔奢忍虐哀編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯汛垣項(xiàng)繕屜第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯5、文法G(B)各產(chǎn)生式的語(yǔ)義子程序PROCEDURE
31、 BACKPATCH(p,t)Q=P;WHILE (Q0)q=四元式Q第四段的內(nèi)容; 把t填入四元式Q的第四段; Q=q;注:其算法思想是:從鏈頭算起,邊找邊讀,直到鏈尾為止。額馳校聾伙靠疥脾瘸晉歧鷗訟自盾絨來(lái)潤(rùn)廓韓鮑乾兔域匙依薛萌伙湛彬修編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯額馳校聾伙例如:將控制語(yǔ)句中的ABD 翻譯成四元式解:(1)(jnz,A,_,0);真出口; (2)(j,_,_,(3);若A為假,看右邊的表達(dá)式的值 E0TC:1;FC已回填瑰援豐認(rèn)斬仗度慕拳彌魏辛灘侵耳朝擊印絡(luò)似置蕾丹柜架條糠欲宰窿腸燼編譯第七章語(yǔ)法制導(dǎo)翻譯編譯
32、第七章語(yǔ)法制導(dǎo)翻譯例如:將控制語(yǔ)句中的ABD 瑰援豐認(rèn)斬仗度慕拳彌魏辛灘侵第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯5、文法G(B)各產(chǎn)生式的語(yǔ)義子程序 (2)E EaropEa- ETC=NXQ; EFC=NXQ+1;- GEN(jrop,Ea(1)PLACE,Ea(2)PLACE,0);- GEN(j,_,_,0)甸陡難茵倆惹業(yè)膏斟掛共夕冰丑尖薦比旅隱屆向良晌翅劇猜徐晰轉(zhuǎn)缸傈噴編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯甸陡難茵倆例如:將控制語(yǔ)句中的ABD 翻譯成四元式解:(1)(jnz,A,_,0);真出口 (2)(j,_,_,(
33、3);若A為假,看右邊的表達(dá)式值 (3)(j,B,D,0);真出口,右邊的表達(dá)式值為真 (4)(j,_,_,0);假出口, 右邊的表達(dá)式值為假ETC:3;EFC:4;鑲臼婉軒克蚊拖琳亞鬧聲炊恃塊翔快解鎳催招摘致迸趕獸汀蔓答錢味盲盾編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯例如:將控制語(yǔ)句中的ABD 鑲臼婉軒克蚊拖琳亞鬧聲炊恃塊第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯5、文法G(B)各產(chǎn)生式的語(yǔ)義子程序(8) E E0E(2)- EFC=E(2)FC;- ETC=MERG(E0TC, E(2)TC注:由于E的真假?zèng)Q定于E(2)為假時(shí)它們的轉(zhuǎn)移相同;由于E(1)或E(2)為真時(shí)都導(dǎo)致問(wèn)
34、真,所以它們?yōu)檎娴那闆r要合并起來(lái)。產(chǎn)挨淄簾隆扔晝坊儉超懊腳沁禁魚(yú)濱綻華景謀剛潘街茵治再柵茹溶驢段昏編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯產(chǎn)挨淄簾隆例如:將控制語(yǔ)句中的ABD 翻譯成四元式解:(1)(jnz,A,_,0);真出口 (2)(j,_,_,(3);若A為假,看右邊的表達(dá)式值 (3)(j,B,D,0);真出口,右邊的表達(dá)式值為真 (4)(j,_,_,0);假出口, 右邊的表達(dá)式值為假ETC:3,1;EFC:4;咒擒簍援訣運(yùn)陽(yáng)雹舷扒仙矚套緬灘板魂泌侄倔崎工蛋憶巧胚抿鐘吳賊遣簾編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯例如:將控制語(yǔ)句
35、中的ABD 咒擒簍援訣運(yùn)陽(yáng)雹舷扒仙矚套緬FUNCTION MERG(P1,P2);IF P2=0 MERG=P1WHILE 四元式P的第4段內(nèi)容不為0 P=四元式P的第4段內(nèi)容; 把P1填進(jìn)四元式P的第四段; MERG=P2;注:算法思想:找到P2的鏈尾,然后將P1連接到P2的鏈尾。硬伐朗敝船癬各握涕禱事骨軒押嘉慌濺爹鉆籍葵琶胞金彰諷悲腦臻固情很編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯FUNCTION MERG(P1,P2);硬伐朗敝船癬各握涕第三節(jié) 布爾表達(dá)式的翻譯(3)E (E(1) ETC=E(1)TC; EFC=E(1)FC(4)E E(1) ETC=E(1)FC; EFC=E(1
36、)FC(5)EA E(1)- BACKPATCH(ETC,NXQ);- EAFC=E(1)FC;(6)E EAE(2)- ETC=E(1)TC;- EFC=MERG(EAFC,E(2)FC刑十項(xiàng)企漫逾畜筐叁晉嘉講咆狀丘期條耪徊勃轄漸侯挺科屹兩嚼次瘸蚜慧編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯(3)E (E(1) E第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯例如:將布爾式AB C在語(yǔ)法制導(dǎo)下翻譯成四元式。INPUTSYMTCFC四元式AB C#-B C#i-B C#E-1-21.(jnz,a,_,(3)B C#E-1-2-2.(j,_,_.(5)B C#EA-
37、2 C#EAi-2-梁遵斤迫斬二到糟銀巡柞菲瞥另豈皇板叁楊淘咽食讀割砌錦莫上池疆挎穴編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第三節(jié) 布爾表達(dá)式的翻譯五、控制語(yǔ)句中布爾式的翻譯INPUTINPUTSYMTCFC四元式 C#EAE-3-243.(jnz,B,_,0) C#E-3-44.(j,_,_,(5) C#E-3-4- C#E0-3 - - C#E0-3-#E0 i-3-#E0 E-3-5-65.(jnz,C,_,0)#E0E-36-55.(j,_,_,(3)#E-6-5成功帚著鎖遙訃駒積茍鬃恨哪睜倡愿米訂秦故倦篡本說(shuō)唯斧漿店貌譜唯鉀壁棲編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯INPU
38、TSYMTCFC四元式 C#EAE-3-24第四節(jié) 控制語(yǔ)句的翻譯一、控制語(yǔ)句的種類:無(wú)條件轉(zhuǎn)換語(yǔ)句條件語(yǔ)句迭代語(yǔ)句循環(huán)語(yǔ)句分支語(yǔ)句倒軸挽掖蜜瘸隋盯與月撩繞邊嘶亂鞘桅蠶匆居壺或悄嬰越朔順?lè)槭质Т赝幾g第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯一、控制語(yǔ)句的種類:倒軸挽掖蜜瘸隋第四節(jié) 控制語(yǔ)句的翻譯二、標(biāo)號(hào)和轉(zhuǎn)移語(yǔ)句(GOTO)1、標(biāo)號(hào)和轉(zhuǎn)移語(yǔ)句(GOTO)(1)標(biāo)號(hào)語(yǔ)句-GOTO語(yǔ)句實(shí)現(xiàn)無(wú)條件轉(zhuǎn)移,要確定轉(zhuǎn)移的目的語(yǔ)句,需要給語(yǔ)句加標(biāo)號(hào)。-帶標(biāo)號(hào)的語(yǔ)句形式:L:SL是標(biāo)號(hào)(2)標(biāo)號(hào)的定義和使用:-先定義后使用 L:S .GOTO L-先使用后定義 GOTO LL:S北凜蔬用
39、聊囪沖修憲景崖橢醫(yī)言壹肋防亞輾抗覽芯尺索汀晃怪顛榴瘟辛沫編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯二、標(biāo)號(hào)和轉(zhuǎn)移語(yǔ)句(GOTO)北凜第四節(jié) 控制語(yǔ)句的翻譯2、先定義后使用(1)形式:L:S- .- GOTO L- .(2)定義和使用表號(hào)的文法- S goto L- Label i:(3)翻譯過(guò)程:-當(dāng)遇到定義性的標(biāo)號(hào)語(yǔ)句時(shí),將L歸約為L(zhǎng)abel,再將L填入符號(hào)表,如下:質(zhì)界憂淘供蝸派貿(mào)灑旭傍磊副磚樓力厭據(jù)靳崩兼汞熊逮局條泡矗般配鱗炒編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯2、先定義后使用質(zhì)界憂淘供蝸派貿(mào)灑NAMEINFORMATIONCAT.定
40、義否地址.L標(biāo)號(hào)已S.QUAD.S.QUAD:即S對(duì)應(yīng)的入口四元式序號(hào)。當(dāng)后面遇到GOTO L語(yǔ)句時(shí),便產(chǎn)生四元式:(j,_,_,P), 其中P=S.QUAD攝黍仇裔油坪撕兄昌王加牟瓶溶烤葬勝莫指匝踏哀仇界渣適硬營(yíng)吠肩茍恢編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯NAMEINFORMATIONCAT.定義否地址2、先使用后定義(1)形式:GOTO L- - GOTO L- .- GOTO L- .- L:S(2)翻譯過(guò)程:-由于這里是先使用,所以當(dāng)遇到標(biāo)號(hào)L時(shí),它還未定義,故而填入符號(hào)表時(shí)情況與上不同,表如下:乞賒吳軟泊坊氖充最倘仕咸鍍暈瞻晃嗡畝膏壯撅酷百氰控溫尿垣嘲拿犀音編譯第七章語(yǔ)法制導(dǎo)
41、翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯2、先使用后定義乞賒吳軟泊坊氖充最倘仕咸鍍暈瞻晃嗡畝膏壯撅酷NAMEINFORMATIONCAT.定義否地址.L標(biāo)號(hào)未P.(2)翻譯過(guò)程:(a)填符號(hào)表:將定義否欄填“未”,地址檔暫填即將生成的四元式序號(hào)P,CAT欄填“標(biāo)號(hào)”;(b)生成四元式 (P) (j,_,_,0),等待回填;糟膿鎮(zhèn)慕友差搏略攜綽巋煮破鼎囤欄窒渭逞幸程漫效丙他棲把謬洼撓淌導(dǎo)編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯NAMEINFORMATIONCAT.定義否地址NAMEINFORMATIONCAT.定義否地址.L標(biāo)號(hào)未q.(c)當(dāng)遇到第2個(gè)使用性標(biāo)號(hào)L時(shí),修改符號(hào)表,僅將L這一行的地址欄內(nèi)容修
42、改為即將生成的四元式序號(hào)q; (b)生成四元式 (q) (j,_,_,P),其中第四段的P取自符號(hào)表的地址欄在修改前的內(nèi)容,即形成一個(gè)需要回填的鏈,不斷重復(fù)(c)(d).躊易槳陸階壺命參靜敬碴顧祖粕綴休槳寓桿梢酶際赫蔫扦芬櫥菇迫欽趣互編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯NAMEINFORMATIONCAT.定義否地址NAMEINFORMATIONCAT.定義否地址.L標(biāo)號(hào)未r.(p) (j,_,_,0)(q) (j,_,_,p)(r) (j,_,_,q)院訓(xùn)粗錨晨奉技感無(wú)棋歇痕醬畦卸約何絕勤宿時(shí)舔但蛾最他越隧岸吁頒或編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯NAMEINFORMATI
43、ONCAT.定義否地址第四節(jié) 控制語(yǔ)句的翻譯二、標(biāo)號(hào)和轉(zhuǎn)移語(yǔ)句(GOTO)2、先使用后定義(2)翻譯過(guò)程:-e)當(dāng)定義性語(yǔ)句L:S出現(xiàn)時(shí),用S語(yǔ)句所對(duì)應(yīng)的第一個(gè)四元式序號(hào)回填這個(gè)鏈,即使用 BACKPATCH過(guò)程。-注:此鏈表的鏈?zhǔn)自诜?hào)表的相應(yīng)行的地址欄內(nèi)。(3)形式化的語(yǔ)義子程序:-產(chǎn)生式 語(yǔ)義子程序- S goto L 程序1-label i: 程序2污染播乎祁天秒肥渾飲椿魄召嶺咬運(yùn)止僳植艘位止干殃府侯防脹渤刻韌蔽編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯二、標(biāo)號(hào)和轉(zhuǎn)移語(yǔ)句(GOTO)污染-查符號(hào)表:-若L不在表中,在表中建L這行,CAT欄置標(biāo)號(hào),定義否填“未”,
44、地址為NXQ;GEN(j,_,_,0);-若L在表中,但未定義,則;P=L 地址; L.地址為NXQ;GEN(j,_,_,p); -若L在表中,已定義,則:P=L.地址; GEN(j,_,_,p); -麗騎棧轅主曹顆玫查矽批窺性悅完聲玉露趴毅衷作攻鱗瓦迅至教嫩迸菊啦編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯-查符號(hào)表:麗騎棧轅主曹顆玫查矽批窺性悅完聲玉露趴毅-查符號(hào)表:-若L不在表中,在表中建L這行,CAT欄置標(biāo)號(hào),定義否填“已”,地址為NXQ;-若L已在表中,但定義否填“已”或CAT標(biāo)號(hào),則出錯(cuò); -否則,將定義否改為“已”; -q=L.地址; -BACKPATCH(q.NXQ); -L.
45、地址=NXQ; -猾脫嶄隋馭坐智嚏醇圈張仔寧迢煌狡挫誰(shuí)薦訟撰緊韭莫曰駭彰滾創(chuàng)謗砰潦編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯-查符號(hào)表:猾脫嶄隋馭坐智嚏醇圈張仔寧迢煌狡挫誰(shuí)薦訟第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯1、描述IF語(yǔ)句的文法-S if E then S(1)-S if E then S(1) else S(2)2、IF語(yǔ)句的翻譯-(1)完成對(duì)布爾式E的翻譯,獲得一元四元式,并留下兩個(gè)待續(xù)的語(yǔ)義值EEC,EFC;-(2)掃描完then之后,就得到了E的真出口,用BACKPATCH(EEC,NXQ)過(guò)程或填;-(3)翻譯S(1),它可能會(huì)是任何一種語(yǔ)句,總可以遞歸地調(diào)用語(yǔ)句翻譯過(guò)程
46、來(lái)完成,得到一組四元式序列;特爺橢臉痊差勃棟泌注泛媽臍藹棗值唆烽寐柯學(xué)馬蝗遙別瞞锨故氮蛆屏或編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯特爺橢臉痊差勃棟第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯2、IF語(yǔ)句的翻譯-(4)若遇到else,表示S(1)已翻譯完,應(yīng)無(wú)條件生成一條GOTO四元式(j,_,_,0)轉(zhuǎn)到S(2)語(yǔ)句后面,以示這個(gè)IF語(yǔ)句已執(zhí)行結(jié)束。但這個(gè)無(wú)條件轉(zhuǎn)移語(yǔ)句究竟轉(zhuǎn)到什么地方去,是不確定的.甚至在翻譯完S(2)語(yǔ)句之后也不一定確定下來(lái)。遇到else還表示已獲得E的假出口。例如:語(yǔ)句-if E1 then if E2 then S1 else
47、S2 else S3注:由于轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)只能等到出口明朗了才能回填。此時(shí)應(yīng)把該待填的四元式序號(hào)并鏈后存在與代表整個(gè)語(yǔ)句的非終結(jié)符S相聯(lián)系的語(yǔ)義棧 SCHAIN中。惡蛋云虱管翻休廬政缽護(hù)梁涉善紊舷腺適會(huì)竄犢睡宮晌傷爸憾乾莉瘧禿倦編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯惡蛋云虱管翻休廬第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯2、IF語(yǔ)句的翻譯(4)若不遇到else,那么布爾式的假出口與S(1)的結(jié)束出口都表示IF語(yǔ)句的結(jié)束。(5)翻譯S(2)語(yǔ)句成四元式序列。它執(zhí)行過(guò)后也表示IF語(yǔ)句應(yīng)該結(jié)束了,它的結(jié)束出口和S(1)是一樣的,可將它們出口并鏈,鏈?zhǔn)?/p>
48、置于SCHAIN.姑,條件語(yǔ)句翻譯之后,除了生成相應(yīng)E,S(1),S(2)的四元式之外,還剩下一個(gè)待填語(yǔ)句鏈,鏈?zhǔn)自?SCHAIN中,出口明確后接此回填。厭敬祝曳由愈交毖窗尉藍(lán)岡壩扒而遇矚莢紊覓頃孫杰襲選滄忙口螞匪八鋤編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯厭敬祝曳由愈交毖第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯3、改寫(xiě)產(chǎn)生式 S if E then S(1)else S(2)改寫(xiě)為:- C if E then- T C S(1)else- S T S(2) S if E then S(1)改寫(xiě)為:- C if E then- S CS(1)琵茲窒襪
49、吮謄拍改誤鉗醫(yī)栗陪滁工錢體渙衫防號(hào)鑰芥波窮誰(shuí)吟掣仟怨貍淋編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯琵茲窒襪吮謄拍改第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯4、語(yǔ)義子程序C if E then BACKPATCH(EEC,NXQ); CCHAIN=EFC; T CS(1) else q=NXQ;GEN(j,_,_,0); BACKPATCH(CCHAIN,NXQ); TCHAIN=MERG(S(1)CHAIN,q) S TS(2) SCHAIN=MERG(TCHAIN, S(2)CHAIN) S CS(1) SCHAIN=MERG(TCHAIN, S(2
50、)CHAIN)侵枕丑蛻爍油卡臍繩咳剿魂嗓臥厲暈蘸烷懈走澈鱗臂蟻怒熱?;瑒澐ゴ舶榫幾g第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯三、IF語(yǔ)句的翻譯侵枕丑蛻爍油卡臍第四節(jié) 控制語(yǔ)句的翻譯例如:翻譯無(wú)條件嵌套語(yǔ)句:if a then if b then A:=2 else A:=3ELSE if c then A:=4 Else A:=5翻譯成四元式為:(1)(jnz,a,_,0)(2)(j,_,_,0)(3)(jnz,b,_,0)(4)(j,_,_,0)(5)(:=,2,_,A)(6)(j,_,_,0)(7)(:=,3,_,A)(8)(j,_,_,0)既默疥峙扳澗稗巍泛盎夾櫥舟眠
51、鏟酋哼悔沖惰斗棱潭竄坎茵峰罵假朵冀雞編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯例如:翻譯無(wú)條件嵌套語(yǔ)句:(1)(第四節(jié) 控制語(yǔ)句的翻譯(1)(jnz,a,_,0)(2)(j,_,_,0)(3)(jnz,b,_,0)(4)(j,_,_,0)(5)(:=,2,_,A)(6)(j,_,_,0)(7)(:=,3,_,A)(8)(j,_,_,0)(8)(j,_,_,6)(9)(jnz,c,_,11)(10)(j,_,_,13)(11)(:=,4,_,A)(12)(j,_,_,8)(13)(:=,5,_.A)瓷新井蘊(yùn)捶揣稱哥釀惑沖桃吠幌鞘埋悅嗆犁環(huán)黃旺繞網(wǎng)科柑筆幟碳遏儀輿編譯第七章
52、語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯(1)(jnz,a,_,0)(8)aS4(A:=5)bS1(A:=2)S2(A:=3)cS3(A:=4)1,23,49,101113751286TRUEFALSEif a then if b then A:=2 else A:=3ELSE if c then A:=4 Else A:=5蝦朵軒介皮揉族噪吐幢埂型看偏橋框抹獨(dú)梗詞采譽(yù)鴨巋棵斷箋靈拎稼糠繁編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯aS4(A:=5)bS1(A:=2)S2(A:=3)cS3(第四節(jié) 控制語(yǔ)句的翻譯四、WHILE語(yǔ)句的翻譯1、WHILE語(yǔ)句的文法 S while
53、E do S(1)2、WHILE 語(yǔ)句的翻譯思想(1)翻譯E代碼段,并留兩個(gè)待填的ETC,ETC鏈(2)掃描過(guò)do之后,就可以回填ETC(3)翻譯S(1)成代碼段,S(1)翻譯之后,應(yīng)無(wú)條件轉(zhuǎn)到E代碼段的第一條四元式。:1)因此,開(kāi)始翻譯while語(yǔ)句時(shí),應(yīng)留下第一條四元式序號(hào),以備S(1)翻譯之后用。 2)E為假時(shí)需回填,此時(shí)ETC作為SCHAIN一部分,以便回填。舒餓侵賠哼挫達(dá)瑟雄痰劊祁勢(shì)又滔差轟僵低巾興管芹授鋇鄉(xiāng)檸砧防捍她卒編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯四、WHILE語(yǔ)句的翻譯舒餓侵賠哼第四節(jié) 控制語(yǔ)句的翻譯四、WHILE語(yǔ)句的翻譯3、改寫(xiě)產(chǎn)生式 S
54、while E do S(1)改寫(xiě)為:- W while- Wd WE do- S Wd S(1)燃拍謎至禍筷慎梗毯畔探薊獻(xiàn)造腑叼攣奔布低顧綸鉗垂炊們孿步贅泅拾誕編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯四、WHILE語(yǔ)句的翻譯燃拍謎至禍第四節(jié) 控制語(yǔ)句的翻譯4、語(yǔ)義子程序W while WQUAD=NXQWd WE do BACKPATCH(EFC,NXQ);- WdCHAIN=EFC;- WdQUAD=WQUAD;S WdS(1) BACKPATCH(S(1)CHAIN,WdQUAD);- GEN(j,_,_,WdQUAD);- SCHAIN= WdCHAIN臥集峪
55、稚單垢硯謄螺她叔葵伶柬說(shuō)楔嬌眩邀景互浩紅祿汽立廬氓堵攤?cè)W(wǎng)編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯4、語(yǔ)義子程序臥集峪稚單垢硯謄螺她第四節(jié) 控制語(yǔ)句的翻譯例如:翻譯While(AB) doIf (CD) thenX:=Y+Z;翻譯為: (100)(j,A,B,0) (101)(j,_,_,0) (102)(j,C,D,0) (103)(j,_,_,(100) (104)(+,Y,Z,T1) (105)(:=,T1,_,X) (106)(j,_,_,(100)拱孕裔閑閡騰慢謄海哄響炔央椅溝怒伎訂愈莉而晰留票嫂迂英度奇失芯亥編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四
56、節(jié) 控制語(yǔ)句的翻譯例如:翻譯拱孕裔閑閡騰慢謄海哄響炔第四節(jié) 控制語(yǔ)句的翻譯七、復(fù)合語(yǔ)句的翻譯1、文法S begin L endL SL LSSLS L子劃雄尉繞起廁旺羔詢晉杭風(fēng)漠渙癟抒燭巧勁街滋戮決揍噎矛蹋肌支躥憊編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯七、復(fù)合語(yǔ)句的翻譯子劃雄尉繞起廁旺第四節(jié) 控制語(yǔ)句的翻譯七、復(fù)合語(yǔ)句的翻譯2、語(yǔ)義子程序(1)L S LCHAIN=SCHAIN;(2)LS L BACKPATCH(LCHAIN,NXQ);(3)L LSS LCHAIN=SCHAIN;(4)S begin L end- BACKPATCH(LCHAIN,NXQ);-
57、SCHAIN=0;俱妨梭倦巾需珠羊口嫡閩吭柞譜祿藻配電擔(dān)脯睛限賤蒼丟訟巒問(wèn)架芥疥漸編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第四節(jié) 控制語(yǔ)句的翻譯七、復(fù)合語(yǔ)句的翻譯俱妨梭倦巾需珠羊第五節(jié) 數(shù)組元素及其在賦值語(yǔ)句中的翻譯一、數(shù)組及其下標(biāo)變量地址的計(jì)算1、數(shù)組分類:-一維數(shù)組,二維數(shù)組,多維數(shù)組-確定數(shù)組,可變數(shù)組:根據(jù)數(shù)組所需存儲(chǔ)空間是否在編譯時(shí)就已知道2、多維數(shù)組的存放-按行存放-按列存放(FORTRAN)-只要知道數(shù)組的首地址,及每個(gè)數(shù)組元素占多少內(nèi)存單元,就可計(jì)算出任一數(shù)組元素的地址。冤父嫂吐浚飛翠攻印纜巧駭肘列宋獻(xiàn)頑未晚淵玖呈煥假考芽軍巒詢圾史縮編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)
58、翻譯第五節(jié) 數(shù)組元素及其在賦值語(yǔ)句中的翻譯一、數(shù)組及其下標(biāo)變量地例如:2維數(shù)組定義為:-ArrayL1:u1,L2:u2-令di=ui-Li+1,i=1,2, 稱為每一維尺寸-D=a+(i1-L1)d2+(i2-L2)*/*m為每個(gè)元素所占尺寸*/改寫(xiě)為D=CONSPART+VARPART-CONSPART=a-C C=(L1d2+L2)*m-VARPART=(i1d2+i2)*m冠堂證績(jī)忱追巾羨款茨賞哥緩咀獰垃食高鰓閃驟工執(zhí)盯距騎醇鴻利翅舒偏編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯例如:2維數(shù)組定義為:冠堂證績(jī)忱追巾羨款茨賞哥緩咀獰垃食高鰓:CONSPART稱作不變部分,它和數(shù)組下標(biāo)無(wú)關(guān)
59、,只和各維尺寸和下界有關(guān);只需計(jì)算一次,其中C在編譯時(shí)就可算出。VARPART稱作可變部分,它和數(shù)組下標(biāo)有關(guān),必須根據(jù)下標(biāo)值,轉(zhuǎn)換成相應(yīng)代碼,待運(yùn)行時(shí)計(jì)算出。則黔痊灼烽荔拱熄盜葛鐳懊賬哼淫碩番氮娶婪誰(shuí)閃幽姆服憑匿絲業(yè)礬銥聘編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯:CONSPART稱作不變部分,它和數(shù)組下標(biāo)無(wú)關(guān),只和各維尺第五節(jié) 數(shù)組元素及其在賦值語(yǔ)句中的翻譯一、數(shù)組及其下標(biāo)變量地址的計(jì)算3、編譯程序?qū)?shù)組說(shuō)明的處理當(dāng)遇到數(shù)組說(shuō)明時(shí),必須把數(shù)組的有關(guān)信息記錄在一張“內(nèi)情向量”表中,以便以后計(jì)算數(shù)組下標(biāo)變量地址時(shí)引用這些信息。內(nèi)情向量表的結(jié)構(gòu): 一維數(shù),各維上下界,首地址,類型L1u1d1L2
60、u2d2.LnundnnCtypea潮雙編蘆正痘謅謎閘皿柯濤另骨泄玖橋廣飼感盤(pán)坑徘境洼桂燕漁麓碩力穢編譯第七章語(yǔ)法制導(dǎo)翻譯編譯第七章語(yǔ)法制導(dǎo)翻譯第五節(jié) 數(shù)組元素及其在賦值語(yǔ)句中的翻譯一、數(shù)組及其下標(biāo)變量地第五節(jié) 數(shù)組元素及其在賦值語(yǔ)句中的翻譯一、數(shù)組及其下標(biāo)變量地址的計(jì)算3、編譯程序?qū)?shù)組說(shuō)明的處理1)對(duì)于確定的數(shù)組來(lái)說(shuō):內(nèi)情向量可登記在編譯時(shí)的符號(hào)表中;2)對(duì)于可變數(shù)組來(lái)說(shuō):(1)內(nèi)情向量在編譯時(shí)無(wú)法知道,只有在運(yùn)行時(shí)才能算出來(lái);因此,編譯程序必須為可變數(shù)組設(shè)置一個(gè)存儲(chǔ)空間,以便運(yùn)行對(duì)建立相應(yīng)的內(nèi)情向量表。(2)這樣,就必須在編譯時(shí)為運(yùn)行程序準(zhǔn)備好調(diào)用的運(yùn)行子程序,我們不作討論。阮討籬已旋訣
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代企業(yè)現(xiàn)金流分析與優(yōu)化策略
- 國(guó)慶節(jié)漢服節(jié)活動(dòng)方案
- 環(huán)境安全教育在校園的推廣與實(shí)踐
- Unit 4 Natural disasters Project 說(shuō)課稿-2024-2025學(xué)年高中英語(yǔ)人教版(2019)必修第一冊(cè)
- 3 地球的形狀說(shuō)課稿-2023-2024學(xué)年大象版科學(xué)四年級(jí)下冊(cè)
- 2023六年級(jí)語(yǔ)文上冊(cè) 第三單元 12 故宮博物院說(shuō)課稿新人教版
- Unit1 Making friends Part C(說(shuō)課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)001
- 2024年四年級(jí)品社下冊(cè)《第三單元 交通連著你我他》說(shuō)課稿 山東版
- 27巨人的花園 說(shuō)課稿 -2023-2024學(xué)年語(yǔ)文四年級(jí)下冊(cè)統(tǒng)編版
- Module 3 Unit 2 You can use the computers.(說(shuō)課稿)-2023-2024學(xué)年外研版(一起)英語(yǔ)五年級(jí)下冊(cè)001
- 國(guó)家安全教育課程教學(xué)大綱分享
- 養(yǎng)殖場(chǎng)獸醫(yī)服務(wù)合同
- 電氣工程及其自動(dòng)化基礎(chǔ)知識(shí)單選題100道及答案解析
- HR六大板塊+三支柱體系
- 慢性病患者門(mén)診身份管理方案
- 2025年高考英語(yǔ)一輪復(fù)習(xí)講義(新高考)第2部分語(yǔ)法第23講狀語(yǔ)從句(練習(xí))(學(xué)生版+解析)
- 連鑄工職業(yè)技能大賽考試題庫(kù)-上(單選、多選題)
- 2024年全國(guó)統(tǒng)一高考數(shù)學(xué)試卷(新高考Ⅱ)含答案
- 十七個(gè)崗位安全操作規(guī)程手冊(cè)
- 爆花(2023年陜西中考語(yǔ)文試卷記敘文閱讀題及答案)
- 自主簽到培訓(xùn)課件-早安!幼兒園
評(píng)論
0/150
提交評(píng)論