




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章語法制導(dǎo)翻譯生成中間代碼
語法制導(dǎo)耕笄是處理語義的基域方法,它。語法令折,
基砒,森德法令折得到語言錯構(gòu)的錯累時,對附房4此給構(gòu)
的語文進(jìn)行處理,電行爵表達(dá)式的假、皮鼠中間代雞等。
與語法今折郎今的商檢系同,域章的內(nèi)容更灌量4實(shí)際
方法的利譽(yù)。
;要向密包括:
</>德法喇導(dǎo)翻笄的基本梳念
<2><間代雞簡介
<5>符號表簡介
<4>典型聲明語句號可執(zhí)行語句的題鋅
<5>上機(jī)作業(yè)—第三4nl語法制導(dǎo)耕鐸松制晶劇囹彬
4.1語法制導(dǎo)翻譯簡介
4.1.1語法與語義
</>語法S語文的關(guān)t
語法是指語言的秸構(gòu)、即語言的“陰3〃,,語文是指附房4
語言秸構(gòu)上的實(shí)際含意,即語言的“意義”。
對于語法和語義:
?語義系犍離開德法獨(dú)更腐森;
?語義逐此語法復(fù)番:
?同一語言秸構(gòu)可包含多種含意,系同鑄■言給構(gòu)泰求相同含意,
?語法與語義之間沒1朗確的界俵。
倒乙貓一老鼠號老鼠吃貓
例2;程序微行語言中的合情就秸構(gòu):
1.caseconditionis
2.switch(condition){
easel:statl;
casecondition1:statl;break;
case2:stat2;
casecondition2:stat2;break;
endcase;
)
2
4.1.1語法與語義(續(xù)1)
V2>語文今折的兩個作用
檢全是否錯構(gòu)正確的句3所衰赤的意思也合法,
執(zhí)行規(guī)定的語義劭作,虬;
表達(dá)式索值
符號表確寫
中間代雞皮鼠等
VM>語文今折的方法
語法制導(dǎo)翻律
3
4.1.2屬性與語義規(guī)則
v/>德法制導(dǎo)題笄的基本思穆
逾俗地講;。語法令折,基砒,伴成語法今新的各個步驟,
執(zhí)行相應(yīng)的語義劭作。
具體方法/
/,桁文法符號所代表的語言秸構(gòu)的意思,用附弟4該文法符
號的屬楹表東,
2,用箝且現(xiàn)觸規(guī)定產(chǎn)生式所代表的語言錯構(gòu)之間的關(guān)系(即
屬但之間的關(guān)系),即用語文規(guī)則實(shí)現(xiàn)屬槌行案。
語義規(guī)則的㈱行;森語法今折的適劣時刻(電推導(dǎo)或歸釣)
執(zhí)行時房點(diǎn)對應(yīng)產(chǎn)皮式上的語義規(guī)則,心實(shí)現(xiàn)對語言秸
構(gòu)語義的處理,電行竄、全確符號表、女感中間代媽、農(nóng)
中出錯信息等。
4
4.1.2屬性與語義規(guī)則(續(xù)1)
V2>屬槌的抽象表赤
.attr
例電:E.val(假)
E.type(類型)
E.code(代碼4列)
E.place(商儲變間)
V3>對次法的的貢
本章關(guān)港的是語法今折的基砒上的語義處理,忽略語法
臺新。
名了簡單,本章的女法一解,二義次法。默欣解決二義
的方法是規(guī)定希規(guī)意義下的優(yōu)先彼右秸合槌。
5
上次課主要內(nèi)容
1.SLR(l)臺折表的構(gòu)造
?由積別活端敘的DFA構(gòu)透action^agoto表
2.旅SLR⑴次法
?二義交法
?熊二義女法
5語法今析內(nèi)容復(fù)燈
4.語法刷導(dǎo)翻鐸的基存就念
?語法與語義
?屬但S語文規(guī)則
6
E-E1+E2E.val:=E1.val+E2.val4.1.2屬性與語義規(guī)則(續(xù)2)
VM>屬但的是義**
定義4.1對手產(chǎn)女式A-Q,其中Q是由次法符號X1X2...Xn祖感
的不列,它的登叢現(xiàn)則可。表示,4〃所亦關(guān)于屬槌的函烈:
b:=f(d,c2,...,ck)(4.1)
語義規(guī)則中的屬槌點(diǎn)點(diǎn)下述楹質(zhì)與關(guān)系。
(〃若b是A的屬但,d,c2,...,ck是Q中次法符號的屬但,
或者A的其它屬槌,則稱b是A的然金&修。
⑵若b是Q中票文法符號Xi的屬楹,c1,c2,...,ck是A的
屬嘏,或者是Q中其它次法符號的屬槌,則稱b是Xi的犍星&修。
⑶稱4〃中屬但b儂獺立屬楹c1,c2,...,cko
⑨考語義規(guī)則的形式電下述4,劃,則可將其怨像,產(chǎn)眩式左
梯次法符號A的一個虛幽&帽。屬槌之間的保賴關(guān)系,點(diǎn)度料屬但
上儂蟻盛位O
f(d,c2,...,ck)(4.2)■
(4.1)中屬但之間的依賴關(guān)系,實(shí)質(zhì)上女缺了屬但必算的先后
法4,即所省屬槌ci被必算之后才怩刀一屬”?b。_____________
7
4.1.3語義規(guī)則的兩種形式
V7>語法制導(dǎo)定義
用抽象的屬槌和運(yùn)真符號衰東的語義規(guī)則公式,做什么,
<2>耕律方案
用具體屬但和運(yùn)算衰示的語義規(guī)則。(程本段,電何做)
?語義規(guī)則也被打慣上稱,語義劭作。
?忽略實(shí)現(xiàn)徇手,二者作用等價。(核行導(dǎo)實(shí)現(xiàn)J
8
4.1.3語義規(guī)則的兩種形式(續(xù)1)
例4.1桁中徽彬式的算術(shù)表達(dá)式挎換,后敘表聲的語法制
導(dǎo)定義和翩笄方案。成如屬槌print(E.post)可想象為
L.p:=print(E.post)
產(chǎn)女式語法喇導(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語義規(guī)則的兩種形式(續(xù)2)
語法制導(dǎo)定文-算法翻鋅方案中需要考慮的同奧;
翻等方案一程本實(shí)現(xiàn),1.采用什么件的語法今折方法,
方法系唯一2.,屬,合一方儲變問;
,考慮行事法不。
耕笄方案7,自下而上行算,LR今新。L
(“43+5+8%的,歸的時翻呼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語義規(guī)則的兩種形式(續(xù)3)
VM>屬秋作與臺折樹的灌琴
將屬槌附房點(diǎn)今折樹對反次法符號上,彬成灌琴今折樹。
例4.23+5+8的合折樹布灌琴臺折樹:
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)幺式語法制導(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語義規(guī)則的兩種形式(續(xù)4)
v分灌卷今新樹上看罐家屬性馬除合屬但
健豕屬槌是自上而下必算的
蹤合屬槌是自下而上必算的
提醵:除冰特別提醵,本章利信的語注制導(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è)計
LR今折中的語法制導(dǎo)耕笄實(shí)質(zhì)上是對LR語法今折的獷克:
</>獷充LR臺新器的功惚;劣執(zhí)行歸的產(chǎn)攻式的劭作時,也執(zhí)
行產(chǎn)女式對應(yīng)的語義劭作。由于是歸功時執(zhí)行語義劭作,因此
限制語義劭作奴犍放森產(chǎn)金式右部的景右邊/
V2>擴(kuò)充臺折極:靖加一個與今折棧并列的語義錢,用于塔及
合折棧中次法符號所對應(yīng)的屬但他。
例電:E-E1+E2vaI[top]:=vaI[top]+vaI[top+2];
對于表達(dá)式:5+3輸入記號流
有歸為,龍部E時,
同時也得到了他8。
13
4.1.4LR分析翻譯方案的設(shè)計(續(xù)1)
例4.33+5*8的語注制導(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è)計(續(xù)2)
(格局的變化)
今折棧輸入語文劭作
##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è)計
遞歸下降方法是用銀星實(shí)現(xiàn)對旅終秸符的展開和對終
秸符的匹配。翻鋅方案的核必需要解決兩個同奧:
1.電何森遢歸下海各程序中線人語義劭作;
產(chǎn)女式右部的值何假置,陽裱;步貢的例房”
2.犯何名次法符號的屬但核制點(diǎn)儲變用;
西劇返?他、參恭、變量萼。
例電函核念囹語言解琴器語法制導(dǎo)翻律核花(第三法上機(jī)裸,:
I,遢歸3程星可心微花,茁熟,用于返?於要的屬槌值;
2,逐劣微行3程4中的低時變量,用于保存屬槌值:
3將語義劭作嵌入在3程格的途咨假置,正確必算屬槌值。
佃手上機(jī)作業(yè)裸利徐
16
4.2.中間代碼商介
7,編笄器各階段的黨整輸出,物可。被私名是源程本的
票種中間―東。
2,奉章神備的是中間代雞皮感器輸出的中間表示,稱之
,中間代媽。
3中間代雞實(shí)際上應(yīng)起一個編鋅器端端S啟端臺水嶺的
作用O
4.要求中間代媽具嗡犯干特槌,心便于編笄器的許發(fā)移
植茄代碼的優(yōu)化:
?便手語法制導(dǎo)翻笄:
?就與機(jī)器指令的錯構(gòu)相近,又與具體機(jī)器無關(guān)。
5.中間代碼的2要彬式:樹、后徽式、三地址雞等。
17
4.2.1后綴式
V7>后徽式的特征
糅作劇在麻,搖作符紫成其后,無需用括號限喇運(yùn)案的
優(yōu)先行我給合但。
例電:中徽式后徽式
3+5*2/7352*7/+
(3+5)*(2/7)35+27/*
18
V2>行真后徽式的廢加機(jī)
算法4.1后徽式君爵
輸入后徽式
輸出行寓秸累
方法采用下述過程進(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ùn)算的表達(dá)式,可。稚廣割但何
語句,只要遵守糅作劇點(diǎn)嘛,糅作符緊砥其后的原則即可。
對語句:ifethenxeIsey
后做式可“4號考:exyif-then-eIse(1)
上述表示中,e、x介y均需引?賓。
而實(shí)際上,根據(jù)條件e的取值,x?y系犍都花爵:
ep1jezxp2jumpp1:yp2:(2)
其中;p1介p2今別是標(biāo)號:
p1jez表示e的給累,0(假)則挎向p1;
p2jump表示無條件挎向p2。
S⑴比較,(2)中的if-then-else被今解,首先引■豫e,根
據(jù)e的秸累是否,笈,決定君靠x迷是必算y。
21
4.2.2三地址碼
</>三地址碼的直吼表示
語法:
result:=arg1oparg2或
result:=oparg1或
oparg1
語義:
轉(zhuǎn)累點(diǎn)放在result中的二無運(yùn)爵arg1oparg2
轉(zhuǎn)累得數(shù)在result+一無運(yùn)案oparg1
一無運(yùn)爵oparg1
例如:
藏--x:=a+b*c的三地的法屋列:
T1:二b*c
T2:=a+T1
x:=T2
港意:直現(xiàn)表示昌源銀本中賦值句的區(qū)別。
22
V2>三地址碼的種類)
星號三地址媽四元式
(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);三無式S四無式
⑦三元式三無式:(i)(op,arg1,arg2)
三地址媽:(i):=arg1oparg2
例4.5表達(dá)式x:=a+b*c的三無式:
(1)(*,b,c)*標(biāo)鈉符a,b,c,x今別表
(2)(+,a,(1))求它們的落儲假置,
⑶(:=,x,(2))?4號⑴、⑵、⑶今別是
它們在三完式表中的假置。
序號的摳堂含義:就代表此三無式,又代表三無式存放的給累。
春及方式:鼎俎丘相,三完式在熟俎中的假置由下標(biāo)法定。
給代碼的優(yōu)化帶來國雍。
S名代碼優(yōu)化有使用的方法是刪除其也代碼或移劭菜也代雞
位置,而一里進(jìn)行了代媽的刪除或移劭,則衰東京三元式的星號
公安藝變化,從而使得其他三無式中對晨星號的引用無數(shù)。
24
上次課主要內(nèi)容
1.屬槌與語義規(guī)則
2語義規(guī)則的兩種衰示:語法制導(dǎo)定文與翻律方案
3.LR今折中翻笄方案的殘行;獷克語義核與獷充語法令折
4.遞歸下海今折中翻律方案的核花:腐槌的點(diǎn)儲變間與語
義規(guī)則的花爵
5.中間代碼
?中間代碼的作用
?中間代碼的彬式
a.后徽式
b.三地址媽與三地征碼的實(shí)現(xiàn)一三無式與四無式
25
語法制導(dǎo)翻鋅殘行的基域步驟:
1.次法符號屬槌的微行
2.於宴的基本糅作(西烈等)的微奸
3.語義規(guī)則的微行
26
②三無式的語法制導(dǎo)都鐸<M>三地址碼的實(shí)現(xiàn)(雨)
7,屬嵯.code;三無式代碼,猾示標(biāo)傭符的存儲單無
或三無式表中的序號,
2.屬嵯.name/標(biāo)傭符的名莊;
3,笛微trip(op,arg1,arg2):女感一個三元式,
返?三無式的序號/
4,―劇entry(id.name):返回標(biāo)/符在符號表中的假
置或存儲假費(fèi)。
生式:語義規(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))三無式序列:
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)(族切
③四完式
四無式是對三無式的改進(jìn),特表示制算錯累的三無式
序號用一個晶式的變量衰赤,從而避免了三無式的值號三
無式點(diǎn)三無獨(dú)中的假黃相關(guān)的隔支。
四無式的語法:三完式;
(op,arg1,arg2,resuIt)(i)(op,arg1,arg2)
所衰赤的祈靠;
result:=arg1oparg2(i):=arg1oparg2
29
V5>三地址雞的實(shí)現(xiàn)(掾句
7,四無式與三無式的唯一區(qū)別是將由本號所表赤的運(yùn)算
待累改,了由臨忖變量來表示。
2,此改變使得四無式具有了運(yùn)算秸零號四無式森四無式
本列中的位置無關(guān)的特支,它,代雞的優(yōu)化提供了極
大方便,因,送件可。刪除或移劭四無式而系會影響
運(yùn)算秸累。
3.三地址碼與四元式形式的一致但。四元式的種類
四完式;三地址碼:
(op,arg1,arg2,result)result:=arg1oparg2
30
@四完式的語法刷導(dǎo)翻用<3>三地址媽的實(shí)現(xiàn)(續(xù)5)
1.屬僧.code:表示存放運(yùn)靠秸累的變量,
2.2:newtemp:返回一個新的低時變量,電T1,T2,…等;
3.逑濯,emit(op,arg1,arg2,result);皮感一個四無式,
若名一無運(yùn)算,則arg2可變。
產(chǎn)女式與語義規(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í)反映句3秸構(gòu),對語法樹領(lǐng)加修改(加入德
義傳息J,即可。作辦中間代碼的一種彬式(灌琴語法樹九
例48賦值句x:=(a+b)*(a+b)的樹的中間代碼索東:
三元坎;
T4/(4)(1)(+,a,b)
(2)(+,a,b)
(3)(*,(1),(2))
(4)(:二,x,(3))
四無式;
abab
(1)(+,a,b,T1)
(2)(+,a,b,T2)
(3)(*,T1,T2,T3)
(4)(:=T3,T4,x)
32
VZ>樹的語法制導(dǎo)翻鋅
7,屬生nptr:猾向樹節(jié)支的猾針:
2.&^mknode(op,nptrl,nptr2):皮鼠一個根或內(nèi)部節(jié)
支,節(jié)支熬據(jù)是op,nptrl茄nptr2今別能向的左右就省
的3樹??鄡H嗡一個就3,則nptr2四變;
3函卻三完式、四完式導(dǎo)相的語義規(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>樹的優(yōu)化衰示一DAG
電黑樹上若干個節(jié)支嗡黨公相同的核3,則送也節(jié)支可。
指向同一個核3,彬朗一個有向無壞囹(DirectedAcycIic
Graph,DAG)。
DAG與樹的唯一區(qū)別是多個義親可。共享同一個核3,從而
達(dá)到資源(運(yùn)算、代雞等)共享的目的。:=T3/(3)
:=T4/(4)
x*T2/(2)
x*T3/(3)
ababab
DAG的語法制導(dǎo)翻鋅馬樹的語法制導(dǎo)翻律和以需要點(diǎn)
mknode^omkIeaf中懵加相應(yīng)的交詢功犍。
首先全看所要構(gòu)造的節(jié)支是否已經(jīng)卷芥,老卷點(diǎn)則無需構(gòu)
苴新的節(jié)支,直接返回指向已卷春節(jié)支的指針即可。
34
V分樹與其他中間代媽的關(guān)系
1.樹表示的中間代雞身后徽式和三地址雞之間嗡內(nèi)麻寐系;
2.對樹進(jìn)行睬度優(yōu)先后各遍歷,得到的俵槌本列就是后徽式
,或者說后徽式是樹的一個假槌化本列,
3樹的每個南部節(jié)支和它的核3對應(yīng)一個三無式或四無式。
35
V分樹與其他中間代媽的關(guān)系(續(xù))
例4.9賦值句x:二(a+b)*(a+b)的港琴語法樹:
?=T4/(4)啟獴式;xab+ab+*:=
/
(1b
三無式;\(+,a,
x*T3/(3)z\
(2b
\7(+,a,
z\?\
3/2
(7f1
\(*,⑴,k7
/\z\
f43
l)(7
\/(:=,x,\
/\
(1bT
四無式:\7(+,a,
z\\
l2b2)
\7(+,a,?/
3\Tc3K
\)
7(*,T1,F/
/4\3\
(TX)
\7(:=,T4,/
國此,現(xiàn)代的編笄器基砒架構(gòu)物用語法樹作卷中間表示。
36
4.3符號表簡介
符號表的作用;速接聲明導(dǎo)引用的橋梁,祀傕每個
符號的相關(guān)信息,電作用域介郵足萼,蹄助編鋅的各個
階段正確】數(shù)地工作。
符號表毅行的基本要求:目標(biāo)是合理存放信息和快
速率確t我。
?正確存儲各類信息,
?適應(yīng)系同階段的南靠/
?便4嗡數(shù)地進(jìn)行全我、插入、刪除和修改萼糅作,
?安間可。劭態(tài)獷克。
37
4.3.1符號表?xiàng)l目
■邃新上得.,每個聲明的名容點(diǎn)符號表中占據(jù)一桂,
稱,一個條目,用手盛放名莊的相關(guān)信息。
?符號表中的內(nèi)客;保留有、標(biāo)/符、特殊符號(包
括算符、合隔符等J等等。
?多個3表:系同類別的符號可。存放點(diǎn)系同的3表
中,的變量名表、過程名表、保留室表等。
?點(diǎn)數(shù)方式:關(guān)桂室+屬槌。
38
4.3.1符號表?xiàng)l目(續(xù))
關(guān)4組合關(guān)健室:
intx;
{doubIex;
structx{floaty,z;};
)
7,怒C構(gòu)造的符號表中,俎合關(guān)桂莊至夕應(yīng)該包括三項(xiàng);
名有+作用域+類型
2,劣一個名莊x點(diǎn)同一作用域中允許/多于一個的聲明,則
對x引用時需要根據(jù)上千次確定x割友屬于哪個對彖。
M因此大多程序微行語言在語法上規(guī)定了系允許送件的聲
朗,。簡化褊鐸時的處理。
39
4.3.2構(gòu)成名字的字符串的存儲
足衣熬據(jù)變衣劇提
直接卷放間接存放
名生(胤接商儲)屬槌屬但
(或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)成名字的字符串的存儲(續(xù))
?間接得儲的方法實(shí)際上解決了復(fù)點(diǎn)信息的希儲冏題
?粉其推廣到屬但,則值何一個復(fù)點(diǎn)的屬楹,均可。,其
另辟變間
?變間本身可。是G何復(fù)東秸構(gòu)(電熬組的肉精向量等)
?而以需要粉指向此變間的猾針數(shù)在此屬楹在符號表中的
對應(yīng)假置即可。
41
4.3.3名字的作用域
程本微行語言的名莊可。出現(xiàn)點(diǎn)系同的范砌內(nèi),并且可。
具嗡系同的意義。
1,兩種刻合范閶的方式:并列的和錢套的。
2,系同的語言采用系同的方式:的Pascal的還錢定文可。
是錢套的,而C的過程定義是并列的,便是C允許程本塊
是嵌套的。(冏奧,過程與程序塊的2要區(qū)別7)
5名莊的作用域:名莊點(diǎn)哪個范詞內(nèi)越作用。并列的兩個
范詞內(nèi)的名莊作用域段系相不,但是令別點(diǎn)嵌套的兩個
范閶內(nèi)的名莊,其作用域的間奧就需要刷足規(guī)則未限定,
。使得但何一個名有點(diǎn)值何范閶河涵義都是無二義的。
Q名莊的作用域規(guī)則;視定一個名莊點(diǎn)什么件的范詞內(nèi)應(yīng)
孩表示什么意義。
42
名室的作用域(族”
</>靜態(tài)作用域規(guī)則(static-scoperule):
編笄時就可。確定名室的作用域,也可。說,俱從靜態(tài)裱
程序就可確定名生的作用域。
<2>景近城套規(guī)則(mostcloselynested):
。在4塊,例,也適用4過程。
⑦程本塊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)所遢刎的第一個被名
有聲朗的作用域。
例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);/*錯累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)是一個棧,。正確反映名生的作用域,即符號的
加入和刪除,物在俵嘏表的一端進(jìn)行。
關(guān)楠生/名莊+作用域:
俵槌表上的操作:
圭我:從表決(錢頂,許胎,遢物的第一個名莊:
插入:克上找,森插入在表決,
一?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)粉時;粉在同一作用域的名生同時精走,適冬保點(diǎn);
(b)永久;粉在同一作用域的名莊同時精走,系毒保腐。
修改;S至找類何,修改第一個遢到的名莊的信息。
修改可。用刪除+插入代替。
俵喉表上糅作的致率3個條目)/
一個名有的全找;鼠功全我(平的九(n+1)/2;系周功全找:n+1
n
建克n個條目的符號表(景懷九£i-(n+1)n/2
Z=1
47
上次課主要內(nèi)容
1.中間代碼
b.三地址雞馬三地址碼的實(shí)現(xiàn)一三無式號四無式
c.囹彬表示一制與DAG
?樹與后徽式和三地征鳴的關(guān)系
2.符號表
?符號表的條目(名莊的特征J
?名莊的兩種卷儲方式(施廣)
?名莊的作用域(靜態(tài)與素近線春源則J
?俵嘏表
48
4.3.5散列表
v/>微列表的構(gòu)閥
粉俵但表今鼠m個小表。構(gòu)造hash笛烈,使名有靖勺微布點(diǎn)m
個3表中。若微列靖勺,則時間復(fù)集盛會海烈晨俵槌表的1/m。
1.薇列鋌(hashlink九鏈接所嗡具疇相同hash值的無素,
表要點(diǎn)表要破組中;
2,作用域錠(scopelink'鏈接所有在同一作用域中的完
素,表決點(diǎn)作用域鏈中。
49
V2>微列表上的糅作4.35枚列表(陵7)
1.全找:首先行算微列函烈,影后從微列西劇所猾示的人口
進(jìn)入某個俵嘏表,在彼槌表中沿hashlink,蒙全找單鏈
表中的名莊一件全找。
2插入:首先
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度泳池救生員安全責(zé)任管理與應(yīng)急處理協(xié)議
- 二零二五年度合作社土地入股與農(nóng)業(yè)廢棄物綜合利用合同
- 二零二五年度個體工商戶自愿退股及資產(chǎn)轉(zhuǎn)讓合同
- 二零二五年度工傷賠償協(xié)議書賠償條件分析
- 二零二五年度家校聯(lián)動勞動實(shí)踐家長與子女勞動協(xié)議
- 個人手房買賣合同(含房屋租賃權(quán)及使用權(quán)轉(zhuǎn)移)
- 訂貨合同范本模板
- 桉樹砍伐與2025年度生態(tài)保護(hù)補(bǔ)償協(xié)議
- 社交媒體與多肉植物社區(qū)的互動關(guān)系研究
- 二零二五年度車間承包與安全環(huán)保管理協(xié)議
- 2025年合肥職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 企業(yè)級軟件開發(fā)作業(yè)指導(dǎo)書
- 《中國古代文學(xué)史及作品選II》教學(xué)大綱
- 代工生產(chǎn)合同范本
- 瑜伽課程合同轉(zhuǎn)讓協(xié)議書范本
- 個人經(jīng)營性貸款合同模板
- 人教版英語2025七年級下冊 Unit1Animal Friends教師版 語法講解+練習(xí)
- DeepSeek新手入門教程
- 課件:《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》學(xué)習(xí)宣講
- 2025年山東化工職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
評論
0/150
提交評論