版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章語(yǔ)法制導(dǎo)翻譯生成中間代碼
語(yǔ)法制導(dǎo)耕笄是處理語(yǔ)義的基域方法,它。語(yǔ)法令折,
基砒,森德法令折得到語(yǔ)言錯(cuò)構(gòu)的錯(cuò)累時(shí),對(duì)附房4此給構(gòu)
的語(yǔ)文進(jìn)行處理,電行爵表達(dá)式的假、皮鼠中間代雞等。
與語(yǔ)法今折郎今的商檢系同,域章的內(nèi)容更灌量4實(shí)際
方法的利譽(yù)。
;要向密包括:
</>德法喇導(dǎo)翻笄的基本梳念
<2><間代雞簡(jiǎn)介
<5>符號(hào)表簡(jiǎn)介
<4>典型聲明語(yǔ)句號(hào)可執(zhí)行語(yǔ)句的題鋅
<5>上機(jī)作業(yè)—第三4nl語(yǔ)法制導(dǎo)耕鐸松制晶劇囹彬
4.1語(yǔ)法制導(dǎo)翻譯簡(jiǎn)介
4.1.1語(yǔ)法與語(yǔ)義
</>語(yǔ)法S語(yǔ)文的關(guān)t
語(yǔ)法是指語(yǔ)言的秸構(gòu)、即語(yǔ)言的“陰3〃,,語(yǔ)文是指附房4
語(yǔ)言秸構(gòu)上的實(shí)際含意,即語(yǔ)言的“意義”。
對(duì)于語(yǔ)法和語(yǔ)義:
?語(yǔ)義系犍離開(kāi)德法獨(dú)更腐森;
?語(yǔ)義逐此語(yǔ)法復(fù)番:
?同一語(yǔ)言秸構(gòu)可包含多種含意,系同鑄■言給構(gòu)泰求相同含意,
?語(yǔ)法與語(yǔ)義之間沒(méi)1朗確的界俵。
倒乙貓一老鼠號(hào)老鼠吃貓
例2;程序微行語(yǔ)言中的合情就秸構(gòu):
1.caseconditionis
2.switch(condition){
easel:statl;
casecondition1:statl;break;
case2:stat2;
casecondition2:stat2;break;
endcase;
)
2
4.1.1語(yǔ)法與語(yǔ)義(續(xù)1)
V2>語(yǔ)文今折的兩個(gè)作用
檢全是否錯(cuò)構(gòu)正確的句3所衰赤的意思也合法,
執(zhí)行規(guī)定的語(yǔ)義劭作,虬;
表達(dá)式索值
符號(hào)表確寫
中間代雞皮鼠等
VM>語(yǔ)文今折的方法
語(yǔ)法制導(dǎo)翻律
3
4.1.2屬性與語(yǔ)義規(guī)則
v/>德法制導(dǎo)題笄的基本思穆
逾俗地講;。語(yǔ)法令折,基砒,伴成語(yǔ)法今新的各個(gè)步驟,
執(zhí)行相應(yīng)的語(yǔ)義劭作。
具體方法/
/,桁文法符號(hào)所代表的語(yǔ)言秸構(gòu)的意思,用附弟4該文法符
號(hào)的屬楹表東,
2,用箝且現(xiàn)觸規(guī)定產(chǎn)生式所代表的語(yǔ)言錯(cuò)構(gòu)之間的關(guān)系(即
屬但之間的關(guān)系),即用語(yǔ)文規(guī)則實(shí)現(xiàn)屬槌行案。
語(yǔ)義規(guī)則的㈱行;森語(yǔ)法今折的適劣時(shí)刻(電推導(dǎo)或歸釣)
執(zhí)行時(shí)房點(diǎn)對(duì)應(yīng)產(chǎn)皮式上的語(yǔ)義規(guī)則,心實(shí)現(xiàn)對(duì)語(yǔ)言秸
構(gòu)語(yǔ)義的處理,電行竄、全確符號(hào)表、女感中間代媽、農(nóng)
中出錯(cuò)信息等。
4
4.1.2屬性與語(yǔ)義規(guī)則(續(xù)1)
V2>屬槌的抽象表赤
.attr
例電:E.val(假)
E.type(類型)
E.code(代碼4列)
E.place(商儲(chǔ)變間)
V3>對(duì)次法的的貢
本章關(guān)港的是語(yǔ)法今折的基砒上的語(yǔ)義處理,忽略語(yǔ)法
臺(tái)新。
名了簡(jiǎn)單,本章的女法一解,二義次法。默欣解決二義
的方法是規(guī)定希規(guī)意義下的優(yōu)先彼右秸合槌。
5
上次課主要內(nèi)容
1.SLR(l)臺(tái)折表的構(gòu)造
?由積別活端敘的DFA構(gòu)透action^agoto表
2.旅SLR⑴次法
?二義交法
?熊二義女法
5語(yǔ)法今析內(nèi)容復(fù)燈
4.語(yǔ)法刷導(dǎo)翻鐸的基存就念
?語(yǔ)法與語(yǔ)義
?屬但S語(yǔ)文規(guī)則
6
E-E1+E2E.val:=E1.val+E2.val4.1.2屬性與語(yǔ)義規(guī)則(續(xù)2)
VM>屬但的是義**
定義4.1對(duì)手產(chǎn)女式A-Q,其中Q是由次法符號(hào)X1X2...Xn祖感
的不列,它的登叢現(xiàn)則可。表示,4〃所亦關(guān)于屬槌的函烈:
b:=f(d,c2,...,ck)(4.1)
語(yǔ)義規(guī)則中的屬槌點(diǎn)點(diǎn)下述楹質(zhì)與關(guān)系。
(〃若b是A的屬但,d,c2,...,ck是Q中次法符號(hào)的屬但,
或者A的其它屬槌,則稱b是A的然金&修。
⑵若b是Q中票文法符號(hào)Xi的屬楹,c1,c2,...,ck是A的
屬嘏,或者是Q中其它次法符號(hào)的屬槌,則稱b是Xi的犍星&修。
⑶稱4〃中屬但b儂獺立屬楹c1,c2,...,cko
⑨考語(yǔ)義規(guī)則的形式電下述4,劃,則可將其怨像,產(chǎn)眩式左
梯次法符號(hào)A的一個(gè)虛幽&帽。屬槌之間的保賴關(guān)系,點(diǎn)度料屬但
上儂蟻盛位O
f(d,c2,...,ck)(4.2)■
(4.1)中屬但之間的依賴關(guān)系,實(shí)質(zhì)上女缺了屬但必算的先后
法4,即所省屬槌ci被必算之后才怩刀一屬”?b。_____________
7
4.1.3語(yǔ)義規(guī)則的兩種形式
V7>語(yǔ)法制導(dǎo)定義
用抽象的屬槌和運(yùn)真符號(hào)衰東的語(yǔ)義規(guī)則公式,做什么,
<2>耕律方案
用具體屬但和運(yùn)算衰示的語(yǔ)義規(guī)則。(程本段,電何做)
?語(yǔ)義規(guī)則也被打慣上稱,語(yǔ)義劭作。
?忽略實(shí)現(xiàn)徇手,二者作用等價(jià)。(核行導(dǎo)實(shí)現(xiàn)J
8
4.1.3語(yǔ)義規(guī)則的兩種形式(續(xù)1)
例4.1桁中徽彬式的算術(shù)表達(dá)式挎換,后敘表聲的語(yǔ)法制
導(dǎo)定義和翩笄方案。成如屬槌print(E.post)可想象為
L.p:=print(E.post)
產(chǎn)女式語(yǔ)法喇導(dǎo)定又題律方嗓7
L-Eprint(E.post)print_post(post);
E-E1+E2E.post:=E1.postpost(k):二'+';k:=k+1;
||E2.post||'+'
E-numE.post:=num.IexvaIpost(k):=lexvaI;k:=k+1;
產(chǎn)金式翻呼方案2
l_fE
EfE1+E2print(+);
E-*numprint(IexvaI);
4.1.3語(yǔ)義規(guī)則的兩種形式(續(xù)2)
語(yǔ)法制導(dǎo)定文-算法翻鋅方案中需要考慮的同奧;
翻等方案一程本實(shí)現(xiàn),1.采用什么件的語(yǔ)法今折方法,
方法系唯一2.,屬,合一方儲(chǔ)變問(wèn);
,考慮行事法不。
耕笄方案7,自下而上行算,LR今新。L
(“43+5+8%的,歸的時(shí)翻呼J1
產(chǎn)皮式翻鐸方嗓7E^T^E
L-Eprint_post(post);I
F+Fa
E->E1+E2post(k)k:=k+1;??
E—numpost(k):=lexval;k:=k+1;35
post:(35+8+)
10
4.1.3語(yǔ)義規(guī)則的兩種形式(續(xù)3)
VM>屬秋作與臺(tái)折樹(shù)的灌琴
將屬槌附房點(diǎn)今折樹(shù)對(duì)反次法符號(hào)上,彬成灌琴今折樹(shù)。
例4.23+5+8的合折樹(shù)布灌琴臺(tái)折樹(shù):
L(print(35+8+))
I
E.post=35+8+
E.post=35++E.post=8
IE(print(3))+E(print(5))8
E.post=3+E.post=58
3535
產(chǎn)幺式語(yǔ)法制導(dǎo)定義翻錦方嚓
L-Eprint(E.post);
E-E1+E2E.post:=E1.postprint(+);
||E2.post|「十,
E-*numE.post:=num.lexval;print(IexvaI);ii
4.1.3語(yǔ)義規(guī)則的兩種形式(續(xù)4)
v分灌卷今新樹(shù)上看罐家屬性馬除合屬但
健豕屬槌是自上而下必算的
蹤合屬槌是自下而上必算的
提醵:除冰特別提醵,本章利信的語(yǔ)注制導(dǎo)翻鐸是稼合屬槌。
L(print(35+8+))
E.post=35+8+
E.post=35++E.post=8
I
E.post=3+E.post=58
35
12
4.1.4LR分析翻譯方案的設(shè)計(jì)
LR今折中的語(yǔ)法制導(dǎo)耕笄實(shí)質(zhì)上是對(duì)LR語(yǔ)法今折的獷克:
</>獷充LR臺(tái)新器的功惚;劣執(zhí)行歸的產(chǎn)攻式的劭作時(shí),也執(zhí)
行產(chǎn)女式對(duì)應(yīng)的語(yǔ)義劭作。由于是歸功時(shí)執(zhí)行語(yǔ)義劭作,因此
限制語(yǔ)義劭作奴犍放森產(chǎn)金式右部的景右邊/
V2>擴(kuò)充臺(tái)折極:靖加一個(gè)與今折棧并列的語(yǔ)義錢,用于塔及
合折棧中次法符號(hào)所對(duì)應(yīng)的屬但他。
例電:E-E1+E2vaI[top]:=vaI[top]+vaI[top+2];
對(duì)于表達(dá)式:5+3輸入記號(hào)流
有歸為,龍部E時(shí),
同時(shí)也得到了他8。
13
4.1.4LR分析翻譯方案的設(shè)計(jì)(續(xù)1)
例4.33+5*8的語(yǔ)注制導(dǎo)翻律。
產(chǎn)皮式融脩檄善是義
L-Eprint(RaW舌tbp]);
E—E1+E2Ea4<itopBlFvaI在如。含WaI[top+2];
E-E1*E2RaW&top曲=vaI*E2p。豺aI[top+2];
EfnEa>kitopOi.:tiKxai|;
14
4.1.4LR分析翻譯方案的設(shè)計(jì)(續(xù)2)
(格局的變化)
今折棧輸入語(yǔ)文劭作
##3+5*8#shift
#n#3+5*8#E-*n,val[top]:=lexval
#E#3+5*8#shift
#E+#3?5*8#shift
#E+n#3?5*8#E-*n,val[top]:二lexval
#E+E#3?5*8#shift
#E+E*#3?5?8#shift
#E+E*n#3?5?8#Efn,val[top]:=lexval
#E+E*E#3?5?8#EfE1*E2;val[top]:=val[top]*val[top+2];
#E+E#3?40#E—E1+E2,val[top]:=val[top]+val[top+2];
#E#43#acc
15
4.1.5遞歸下降分析翻譯方案的設(shè)計(jì)
遞歸下降方法是用銀星實(shí)現(xiàn)對(duì)旅終秸符的展開(kāi)和對(duì)終
秸符的匹配。翻鋅方案的核必需要解決兩個(gè)同奧:
1.電何森遢歸下海各程序中線人語(yǔ)義劭作;
產(chǎn)女式右部的值何假置,陽(yáng)裱;步貢的例房”
2.犯何名次法符號(hào)的屬但核制點(diǎn)儲(chǔ)變用;
西劇返?他、參恭、變量萼。
例電函核念囹語(yǔ)言解琴器語(yǔ)法制導(dǎo)翻律核花(第三法上機(jī)裸,:
I,遢歸3程星可心微花,茁熟,用于返?於要的屬槌值;
2,逐劣微行3程4中的低時(shí)變量,用于保存屬槌值:
3將語(yǔ)義劭作嵌入在3程格的途咨假置,正確必算屬槌值。
佃手上機(jī)作業(yè)裸利徐
16
4.2.中間代碼商介
7,編笄器各階段的黨整輸出,物可。被私名是源程本的
票種中間―東。
2,奉章神備的是中間代雞皮感器輸出的中間表示,稱之
,中間代媽。
3中間代雞實(shí)際上應(yīng)起一個(gè)編鋅器端端S啟端臺(tái)水嶺的
作用O
4.要求中間代媽具嗡犯干特槌,心便于編笄器的許發(fā)移
植茄代碼的優(yōu)化:
?便手語(yǔ)法制導(dǎo)翻笄:
?就與機(jī)器指令的錯(cuò)構(gòu)相近,又與具體機(jī)器無(wú)關(guān)。
5.中間代碼的2要彬式:樹(shù)、后徽式、三地址雞等。
17
4.2.1后綴式
V7>后徽式的特征
糅作劇在麻,搖作符紫成其后,無(wú)需用括號(hào)限喇運(yùn)案的
優(yōu)先行我給合但。
例電:中徽式后徽式
3+5*2/7352*7/+
(3+5)*(2/7)35+27/*
18
V2>行真后徽式的廢加機(jī)
算法4.1后徽式君爵
輸入后徽式
輸出行寓秸累
方法采用下述過(guò)程進(jìn)行行算,景於給累留在錢中。
x:=first_token;
whilenotend_of_exp
I°°Pifxinoperators
thenpushx;一糅作照進(jìn)錢
eIsepop(operators);一兵符,彈出糅作劇
push(evaIuate);一行算,弄渴給累進(jìn)錢
endif;
next(x);
endIoop;■
19
V3>后徽式必算4.2.1后綴式(續(xù)1)
尊木表達(dá)式3+5+8的后敘式,35+8+o
(#35+8+#pushu(3))
(#35+8+#pushu(3))
(#35+8+#pop(3和5),push((3+5)))
(#88+#pushu(8))
(#88+#pop(8和8),push(8+8))
(#16#)
x:=first_token;
whilenotend_of_exp
Ioopifxinoperators
thenpushx;一猱作熬進(jìn)校
eIsepop(operators);一喜符,禪出猱作劇
push(evaIuate);—/我彳蔣話:—一
endif;
next(x);
endIoop;
20
4.2.1后綴式(續(xù)2)
V分粉啟讖式推廣到其他語(yǔ)句
后做式并系局限于二無(wú)運(yùn)算的表達(dá)式,可。稚廣割但何
語(yǔ)句,只要遵守糅作劇點(diǎn)嘛,糅作符緊砥其后的原則即可。
對(duì)語(yǔ)句:ifethenxeIsey
后做式可“4號(hào)考:exyif-then-eIse(1)
上述表示中,e、x介y均需引?賓。
而實(shí)際上,根據(jù)條件e的取值,x?y系犍都花爵:
ep1jezxp2jumpp1:yp2:(2)
其中;p1介p2今別是標(biāo)號(hào):
p1jez表示e的給累,0(假)則挎向p1;
p2jump表示無(wú)條件挎向p2。
S⑴比較,(2)中的if-then-else被今解,首先引■豫e,根
據(jù)e的秸累是否,笈,決定君靠x迷是必算y。
21
4.2.2三地址碼
</>三地址碼的直吼表示
語(yǔ)法:
result:=arg1oparg2或
result:=oparg1或
oparg1
語(yǔ)義:
轉(zhuǎn)累點(diǎn)放在result中的二無(wú)運(yùn)爵arg1oparg2
轉(zhuǎn)累得數(shù)在result+一無(wú)運(yùn)案oparg1
一無(wú)運(yùn)爵oparg1
例如:
藏--x:=a+b*c的三地的法屋列:
T1:二b*c
T2:=a+T1
x:=T2
港意:直現(xiàn)表示昌源銀本中賦值句的區(qū)別。
22
V2>三地址碼的種類)
星號(hào)三地址媽四元式
(1)X:=yopz(op,y,Z,x)
(2)X:=opy(op,V、,X)
(3)X:=y(:二,y,,X)
(4)gotoL(j,,L)
(5)ifxgotoL(jnz,X,,L)
(6)?fxre1opygotoL(jrelop,X,y,L)
(7)paramx(param,1,x)
(8)ca11n,P(ca11,n,,P)
(9)returny(return,,y)
(10)x:=y[i](=□,y[i],,X)
(11)x[i]:二y(□=,y,1x[i])
(12)x:=&y(-&,y,,X)
(13)X:=*y(二*,y,,X)
(14)*x:=二y(*二,y,,X)
23
<3>三地征鴻的實(shí)現(xiàn);三無(wú)式S四無(wú)式
⑦三元式三無(wú)式:(i)(op,arg1,arg2)
三地址媽:(i):=arg1oparg2
例4.5表達(dá)式x:=a+b*c的三無(wú)式:
(1)(*,b,c)*標(biāo)鈉符a,b,c,x今別表
(2)(+,a,(1))求它們的落儲(chǔ)假置,
⑶(:=,x,(2))?4號(hào)⑴、⑵、⑶今別是
它們?cè)谌晔奖碇械募僦谩?/p>
序號(hào)的摳堂含義:就代表此三無(wú)式,又代表三無(wú)式存放的給累。
春及方式:鼎俎丘相,三完式在熟俎中的假置由下標(biāo)法定。
給代碼的優(yōu)化帶來(lái)國(guó)雍。
S名代碼優(yōu)化有使用的方法是刪除其也代碼或移劭菜也代雞
位置,而一里進(jìn)行了代媽的刪除或移劭,則衰東京三元式的星號(hào)
公安藝變化,從而使得其他三無(wú)式中對(duì)晨星號(hào)的引用無(wú)數(shù)。
24
上次課主要內(nèi)容
1.屬槌與語(yǔ)義規(guī)則
2語(yǔ)義規(guī)則的兩種衰示:語(yǔ)法制導(dǎo)定文與翻律方案
3.LR今折中翻笄方案的殘行;獷克語(yǔ)義核與獷充語(yǔ)法令折
4.遞歸下海今折中翻律方案的核花:腐槌的點(diǎn)儲(chǔ)變間與語(yǔ)
義規(guī)則的花爵
5.中間代碼
?中間代碼的作用
?中間代碼的彬式
a.后徽式
b.三地址媽與三地征碼的實(shí)現(xiàn)一三無(wú)式與四無(wú)式
25
語(yǔ)法制導(dǎo)翻鋅殘行的基域步驟:
1.次法符號(hào)屬槌的微行
2.於宴的基本糅作(西烈等)的微奸
3.語(yǔ)義規(guī)則的微行
26
②三無(wú)式的語(yǔ)法制導(dǎo)都鐸<M>三地址碼的實(shí)現(xiàn)(雨)
7,屬嵯.code;三無(wú)式代碼,猾示標(biāo)傭符的存儲(chǔ)單無(wú)
或三無(wú)式表中的序號(hào),
2.屬嵯.name/標(biāo)傭符的名莊;
3,笛微trip(op,arg1,arg2):女感一個(gè)三元式,
返?三無(wú)式的序號(hào)/
4,―劇entry(id.name):返回標(biāo)/符在符號(hào)表中的假
置或存儲(chǔ)假費(fèi)。
生式:語(yǔ)義規(guī)則:
z\
(1J
\/A-*id:=E{A.code:=trip(:=,entry(id.name),E.code))
z2\
(J
x/E-E1+E2{E.code:=trip(+,E1.code,E2.code)}
z\
f3
\7E-E1*E2{E.code:=trip(*,E1.code,E2.code))
z\
(4
x7E—(E1){E.code:=E1.code)
z\
f5)
\/E-—E1{E.code:=tripE1.code,))
z\
f6)
kzE-id{E.code:=entry(id.name)}
27
由、、VM>三地征雞的實(shí)現(xiàn)(^2)
例4.6女鼠x:=a+b*c的三完式d_R今折,
z\
(1)
\/Afid:二E{A.code:=trip(:=,entry(id.name),E.code)}
z2\
(1
\7E-E1+E2{E.code=trip(+,E1.code,E2.code)}
z\
z3
(1
\7E-E1*E2{E.code=trip(*,E1.code,E2.code)}
z\
(4
\7E-(E1){E.code=E1.code}
/\
(5)
\/E-E1{E.code=trip(@,E1.code,)}
z\
(6
\7E-id{E.code=entry(id.name)}
^^A^code=(3)(:=,x,(2))三無(wú)式序列:
x^^^E5^code=⑵(+,a,(1))(1)(*,b,c)
(2)(+,a,(1))
EI.code=a+E4.code=(1)(*,b,c)
I(3)(:=,x,(2))
aE2.code=b*E3.code二c
b
28
VM>三地址雞的實(shí)現(xiàn)(族切
③四完式
四無(wú)式是對(duì)三無(wú)式的改進(jìn),特表示制算錯(cuò)累的三無(wú)式
序號(hào)用一個(gè)晶式的變量衰赤,從而避免了三無(wú)式的值號(hào)三
無(wú)式點(diǎn)三無(wú)獨(dú)中的假黃相關(guān)的隔支。
四無(wú)式的語(yǔ)法:三完式;
(op,arg1,arg2,resuIt)(i)(op,arg1,arg2)
所衰赤的祈靠;
result:=arg1oparg2(i):=arg1oparg2
29
V5>三地址雞的實(shí)現(xiàn)(掾句
7,四無(wú)式與三無(wú)式的唯一區(qū)別是將由本號(hào)所表赤的運(yùn)算
待累改,了由臨忖變量來(lái)表示。
2,此改變使得四無(wú)式具有了運(yùn)算秸零號(hào)四無(wú)式森四無(wú)式
本列中的位置無(wú)關(guān)的特支,它,代雞的優(yōu)化提供了極
大方便,因,送件可。刪除或移劭四無(wú)式而系會(huì)影響
運(yùn)算秸累。
3.三地址碼與四元式形式的一致但。四元式的種類
四完式;三地址碼:
(op,arg1,arg2,result)result:=arg1oparg2
30
@四完式的語(yǔ)法刷導(dǎo)翻用<3>三地址媽的實(shí)現(xiàn)(續(xù)5)
1.屬僧.code:表示存放運(yùn)靠秸累的變量,
2.2:newtemp:返回一個(gè)新的低時(shí)變量,電T1,T2,…等;
3.逑濯,emit(op,arg1,arg2,result);皮感一個(gè)四無(wú)式,
若名一無(wú)運(yùn)算,則arg2可變。
產(chǎn)女式與語(yǔ)義規(guī)則:
⑴A-id:二E{A.code:=newtemp;
emit(:=,E.code,A.code,entry(id.name)))
⑵E-E1+E2{E.code:=newtemp;
emit(+,E1.code,E2.code,E.code))
⑶E-E1*E2{E.code:=newtemp;
emit(*,E1.code,E2.code,E.code))
(4)E-(E1){E.code:=E1.code}
(5)E-E1{E.code:=newtemp;emitE1.code,,E.code)}
⑹E-id{E.code:=entry(id.name))
31
4.2.3圖形表示
V7>樹(shù)作,中間代碼
語(yǔ)法制奠實(shí)反映句3秸構(gòu),對(duì)語(yǔ)法樹(shù)領(lǐng)加修改(加入德
義傳息J,即可。作辦中間代碼的一種彬式(灌琴語(yǔ)法樹(shù)九
例48賦值句x:=(a+b)*(a+b)的樹(shù)的中間代碼索東:
三元坎;
T4/(4)(1)(+,a,b)
(2)(+,a,b)
(3)(*,(1),(2))
(4)(:二,x,(3))
四無(wú)式;
abab
(1)(+,a,b,T1)
(2)(+,a,b,T2)
(3)(*,T1,T2,T3)
(4)(:=T3,T4,x)
32
VZ>樹(shù)的語(yǔ)法制導(dǎo)翻鋅
7,屬生nptr:猾向樹(shù)節(jié)支的猾針:
2.&^mknode(op,nptrl,nptr2):皮鼠一個(gè)根或內(nèi)部節(jié)
支,節(jié)支熬據(jù)是op,nptrl茄nptr2今別能向的左右就省
的3樹(shù)??鄡H嗡一個(gè)就3,則nptr2四變;
3函卻三完式、四完式導(dǎo)相的語(yǔ)義規(guī)則微行的病似喉
(1)A-id:二E
{A.nptr:=mknode(:=,mkleaf(entry(id.name)),E.nptr))
/\
(2)
\/E-E1+E2{E.nptr:二mknode(+,E1.nptr,E2.nptr)}
/\
(3
\7EfE1*E2{E.nptr:=mknode(*,E1.nptr,E2.nptr))
z\
(41
\7E—(E1){E.nptr:=E1.nptr)
/\
(5
\7E一一E1{E.nptr:=mknode(@,E1.nptr,)}
/\
(61
\7E-id{E.nptr:二mkIeaf(entry((id.name)))
33
V3>樹(shù)的優(yōu)化衰示一DAG
電黑樹(shù)上若干個(gè)節(jié)支嗡黨公相同的核3,則送也節(jié)支可。
指向同一個(gè)核3,彬朗一個(gè)有向無(wú)壞囹(DirectedAcycIic
Graph,DAG)。
DAG與樹(shù)的唯一區(qū)別是多個(gè)義親可。共享同一個(gè)核3,從而
達(dá)到資源(運(yùn)算、代雞等)共享的目的。:=T3/(3)
:=T4/(4)
x*T2/(2)
x*T3/(3)
ababab
DAG的語(yǔ)法制導(dǎo)翻鋅馬樹(shù)的語(yǔ)法制導(dǎo)翻律和以需要點(diǎn)
mknode^omkIeaf中懵加相應(yīng)的交詢功犍。
首先全看所要構(gòu)造的節(jié)支是否已經(jīng)卷芥,老卷點(diǎn)則無(wú)需構(gòu)
苴新的節(jié)支,直接返回指向已卷春節(jié)支的指針即可。
34
V分樹(shù)與其他中間代媽的關(guān)系
1.樹(shù)表示的中間代雞身后徽式和三地址雞之間嗡內(nèi)麻寐系;
2.對(duì)樹(shù)進(jìn)行睬度優(yōu)先后各遍歷,得到的俵槌本列就是后徽式
,或者說(shuō)后徽式是樹(shù)的一個(gè)假槌化本列,
3樹(shù)的每個(gè)南部節(jié)支和它的核3對(duì)應(yīng)一個(gè)三無(wú)式或四無(wú)式。
35
V分樹(shù)與其他中間代媽的關(guān)系(續(xù))
例4.9賦值句x:二(a+b)*(a+b)的港琴語(yǔ)法樹(shù):
?=T4/(4)啟獴式;xab+ab+*:=
/
(1b
三無(wú)式;\(+,a,
x*T3/(3)z\
(2b
\7(+,a,
z\?\
3/2
(7f1
\(*,⑴,k7
/\z\
f43
l)(7
\/(:=,x,\
/\
(1bT
四無(wú)式:\7(+,a,
z\\
l2b2)
\7(+,a,?/
3\Tc3K
\)
7(*,T1,F/
/4\3\
(TX)
\7(:=,T4,/
國(guó)此,現(xiàn)代的編笄器基砒架構(gòu)物用語(yǔ)法樹(shù)作卷中間表示。
36
4.3符號(hào)表簡(jiǎn)介
符號(hào)表的作用;速接聲明導(dǎo)引用的橋梁,祀傕每個(gè)
符號(hào)的相關(guān)信息,電作用域介郵足萼,蹄助編鋅的各個(gè)
階段正確】數(shù)地工作。
符號(hào)表毅行的基本要求:目標(biāo)是合理存放信息和快
速率確t我。
?正確存儲(chǔ)各類信息,
?適應(yīng)系同階段的南靠/
?便4嗡數(shù)地進(jìn)行全我、插入、刪除和修改萼糅作,
?安間可。劭態(tài)獷克。
37
4.3.1符號(hào)表?xiàng)l目
■邃新上得.,每個(gè)聲明的名容點(diǎn)符號(hào)表中占據(jù)一桂,
稱,一個(gè)條目,用手盛放名莊的相關(guān)信息。
?符號(hào)表中的內(nèi)客;保留有、標(biāo)/符、特殊符號(hào)(包
括算符、合隔符等J等等。
?多個(gè)3表:系同類別的符號(hào)可。存放點(diǎn)系同的3表
中,的變量名表、過(guò)程名表、保留室表等。
?點(diǎn)數(shù)方式:關(guān)桂室+屬槌。
38
4.3.1符號(hào)表?xiàng)l目(續(xù))
關(guān)4組合關(guān)健室:
intx;
{doubIex;
structx{floaty,z;};
)
7,怒C構(gòu)造的符號(hào)表中,俎合關(guān)桂莊至夕應(yīng)該包括三項(xiàng);
名有+作用域+類型
2,劣一個(gè)名莊x點(diǎn)同一作用域中允許/多于一個(gè)的聲明,則
對(duì)x引用時(shí)需要根據(jù)上千次確定x割友屬于哪個(gè)對(duì)彖。
M因此大多程序微行語(yǔ)言在語(yǔ)法上規(guī)定了系允許送件的聲
朗,。簡(jiǎn)化褊鐸時(shí)的處理。
39
4.3.2構(gòu)成名字的字符串的存儲(chǔ)
足衣熬據(jù)變衣劇提
直接卷放間接存放
名生(胤接商儲(chǔ))屬槌屬但
(或101/4)proc,...proc,
i06(或105/1)int,...int,...
#Q8dA融加6/9)proc,...proc,
由力8w(氧蹌e_fobQ?lb相bt_a..booIean,
sort#a#fldadaavdv#drawredr^(ilnAirfierfobjebijeata#
f101
40
4.3.2構(gòu)成名字的字符串的存儲(chǔ)(續(xù))
?間接得儲(chǔ)的方法實(shí)際上解決了復(fù)點(diǎn)信息的希儲(chǔ)冏題
?粉其推廣到屬但,則值何一個(gè)復(fù)點(diǎn)的屬楹,均可。,其
另辟變間
?變間本身可。是G何復(fù)東秸構(gòu)(電熬組的肉精向量等)
?而以需要粉指向此變間的猾針數(shù)在此屬楹在符號(hào)表中的
對(duì)應(yīng)假置即可。
41
4.3.3名字的作用域
程本微行語(yǔ)言的名莊可。出現(xiàn)點(diǎn)系同的范砌內(nèi),并且可。
具嗡系同的意義。
1,兩種刻合范閶的方式:并列的和錢套的。
2,系同的語(yǔ)言采用系同的方式:的Pascal的還錢定文可。
是錢套的,而C的過(guò)程定義是并列的,便是C允許程本塊
是嵌套的。(冏奧,過(guò)程與程序塊的2要區(qū)別7)
5名莊的作用域:名莊點(diǎn)哪個(gè)范詞內(nèi)越作用。并列的兩個(gè)
范詞內(nèi)的名莊作用域段系相不,但是令別點(diǎn)嵌套的兩個(gè)
范閶內(nèi)的名莊,其作用域的間奧就需要刷足規(guī)則未限定,
。使得但何一個(gè)名有點(diǎn)值何范閶河涵義都是無(wú)二義的。
Q名莊的作用域規(guī)則;視定一個(gè)名莊點(diǎn)什么件的范詞內(nèi)應(yīng)
孩表示什么意義。
42
名室的作用域(族”
</>靜態(tài)作用域規(guī)則(static-scoperule):
編笄時(shí)就可。確定名室的作用域,也可。說(shuō),俱從靜態(tài)裱
程序就可確定名生的作用域。
<2>景近城套規(guī)則(mostcloselynested):
。在4塊,例,也適用4過(guò)程。
⑦程本塊B卡聲明的作用域包括B,
②電黑名生x系在B4聲明,那么B中x的出現(xiàn)是在外閭程星塊
B,的x聲明的作用域中,使得
(a)B,市x的聲明,并且
(b)B'比其它但何含x聲明的隹星塊更摟近被城套的B
43
4,33名室的作用域(^2)
調(diào)俗地講,名莊聲明點(diǎn)離其景近的南層起作用,即
點(diǎn)名有引用處從向向外看,它處點(diǎn)所遢刎的第一個(gè)被名
有聲朗的作用域。
例3:找人
禰三:一班禰三:軟件學(xué)浣禰三:曲電禰三
44
例4.10符合作用域規(guī)則的C++福本。么33名室的作用域(^S)
voidmain()
{inta=0,b=0;/*BO層*/
{intb=1;/*B1層,被BO線套*/
{inta=2,c=4,d=5;/*B2層,被B1被套*/
printf(,z%d%d\n”,a,b);/*錯(cuò)累2,1*/
)
{intb=3;/*B3層,與B2并列*/
printf(,z%d%d\n〃,a,b);/*秸累,;0,3*/
printf(,z%d%d\n,z,a,b);/*秸累,;Qj_L*/
printf(,z%d%d\n”,a,b);/*秸累0,0*/
)聲闞作用域
聲明與作用域:inta二0B0-B2
intb=0B0-B1
intb=1B1-B3
inta=2B2
intb=3B345
生
工4
Vo
2{
3
4
7
100
*,
1..
俵嘏表應(yīng)是一個(gè)棧,。正確反映名生的作用域,即符號(hào)的
加入和刪除,物在俵嘏表的一端進(jìn)行。
關(guān)楠生/名莊+作用域:
俵槌表上的操作:
圭我:從表決(錢頂,許胎,遢物的第一個(gè)名莊:
插入:克上找,森插入在表決,
一?dB25—cB24+aB22''bB11+bBO0+aBO0#
46
1voidmain()么3"俵”?表(犢7)
2{inta=0,b=0;//BO
3{intbl;//B1
4{inta=2,c=4,d=5;}//B2
7{intb=3;_____________}//B3
11))
刪除;(a)粉時(shí);粉在同一作用域的名生同時(shí)精走,適冬保點(diǎn);
(b)永久;粉在同一作用域的名莊同時(shí)精走,系毒保腐。
修改;S至找類何,修改第一個(gè)遢到的名莊的信息。
修改可。用刪除+插入代替。
俵喉表上糅作的致率3個(gè)條目)/
一個(gè)名有的全找;鼠功全我(平的九(n+1)/2;系周功全找:n+1
n
建克n個(gè)條目的符號(hào)表(景懷九£i-(n+1)n/2
Z=1
47
上次課主要內(nèi)容
1.中間代碼
b.三地址雞馬三地址碼的實(shí)現(xiàn)一三無(wú)式號(hào)四無(wú)式
c.囹彬表示一制與DAG
?樹(shù)與后徽式和三地征鳴的關(guān)系
2.符號(hào)表
?符號(hào)表的條目(名莊的特征J
?名莊的兩種卷儲(chǔ)方式(施廣)
?名莊的作用域(靜態(tài)與素近線春源則J
?俵嘏表
48
4.3.5散列表
v/>微列表的構(gòu)閥
粉俵但表今鼠m個(gè)小表。構(gòu)造hash笛烈,使名有靖勺微布點(diǎn)m
個(gè)3表中。若微列靖勺,則時(shí)間復(fù)集盛會(huì)海烈晨俵槌表的1/m。
1.薇列鋌(hashlink九鏈接所嗡具疇相同hash值的無(wú)素,
表要點(diǎn)表要破組中;
2,作用域錠(scopelink'鏈接所有在同一作用域中的完
素,表決點(diǎn)作用域鏈中。
49
V2>微列表上的糅作4.35枚列表(陵7)
1.全找:首先行算微列函烈,影后從微列西劇所猾示的人口
進(jìn)入某個(gè)俵嘏表,在彼槌表中沿hashlink,蒙全找單鏈
表中的名莊一件全找。
2插入:首先
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年文化遺產(chǎn)修復(fù)工程勞務(wù)承包協(xié)議
- 和旅行公司合作合同范例
- 好房公寓出租合同范例
- 2024年房產(chǎn)委托建設(shè)合同:項(xiàng)目代建協(xié)議樣本
- 家居銷售合同模板模板
- 工程設(shè)計(jì)合同范例gf
- 公司員工合同范例制作
- 買賣合同中擔(dān)保合同模板
- 勞務(wù)派遣合同范例范例范例
- 定標(biāo)合同范例
- 教育局職業(yè)院校教師培訓(xùn)實(shí)施方案
- 《萬(wàn)維網(wǎng)服務(wù)大揭秘》課件 2024-2025學(xué)年人教版新教材初中信息技術(shù)七年級(jí)全一冊(cè)
- 2024年新華社招聘應(yīng)屆畢業(yè)生及留學(xué)回國(guó)人員129人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)Unit 5單元測(cè)試卷(含答案)
- (完整版)新概念英語(yǔ)第一冊(cè)單詞表(打印版)
- 美食行業(yè)外賣平臺(tái)配送效率提升方案
- 中國(guó)民用航空局信息中心招聘筆試題庫(kù)2024
- 芯片設(shè)計(jì)基礎(chǔ)知識(shí)題庫(kù)100道及答案(完整版)
- 2025屆高考語(yǔ)文一輪復(fù)習(xí):文言文概括和分析 課件
- 年產(chǎn)10萬(wàn)套新能源車電池托盤項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 《大學(xué)美育》 課件 4.模塊五 第二十四章 時(shí)空綜合的影視藝術(shù)之美
評(píng)論
0/150
提交評(píng)論