版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章語法制導(dǎo)翻譯生成中間代碼
語法制導(dǎo)耕笄是處理語義的基域方法,它。語法令折,
基砒,森德法令折得到語言錯構(gòu)的錯累時,對附房4此給構(gòu)
的語文進行處理,電行爵表達(dá)式的假、皮鼠中間代雞等。
與語法今折郎今的商檢系同,域章的內(nèi)容更灌量4實際
方法的利譽。
;要向密包括:
</>德法喇導(dǎo)翻笄的基本梳念
<2><間代雞簡介
<5>符號表簡介
<4>典型聲明語句號可執(zhí)行語句的題鋅
<5>上機作業(yè)—第三4nl語法制導(dǎo)耕鐸松制晶劇囹彬
4.1語法制導(dǎo)翻譯簡介
4.1.1語法與語義
</>語法S語文的關(guān)t
語法是指語言的秸構(gòu)、即語言的“陰3〃,,語文是指附房4
語言秸構(gòu)上的實際含意,即語言的“意義”。
對于語法和語義:
?語義系犍離開德法獨更腐森;
?語義逐此語法復(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ī)則實現(xiàn)屬槌行案。
語義規(guī)則的㈱行;森語法今折的適劣時刻(電推導(dǎo)或歸釣)
執(zhí)行時房點對應(yīng)產(chǎn)皮式上的語義規(guī)則,心實現(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ī)則中的屬槌點點下述楹質(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)系,點度料屬但
上儂蟻盛位O
f(d,c2,...,ck)(4.2)■
(4.1)中屬但之間的依賴關(guān)系,實質(zhì)上女缺了屬但必算的先后
法4,即所省屬槌ci被必算之后才怩刀一屬”?b。_____________
7
4.1.3語義規(guī)則的兩種形式
V7>語法制導(dǎo)定義
用抽象的屬槌和運真符號衰東的語義規(guī)則公式,做什么,
<2>耕律方案
用具體屬但和運算衰示的語義規(guī)則。(程本段,電何做)
?語義規(guī)則也被打慣上稱,語義劭作。
?忽略實現(xiàn)徇手,二者作用等價。(核行導(dǎo)實現(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)定文-算法翻鋅方案中需要考慮的同奧;
翻等方案一程本實現(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>屬秋作與臺折樹的灌琴
將屬槌附房點今折樹對反次法符號上,彬成灌琴今折樹。
例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)耕笄實質(zhì)上是對LR語法今折的獷克:
</>獷充LR臺新器的功惚;劣執(zhí)行歸的產(chǎn)攻式的劭作時,也執(zhí)
行產(chǎn)女式對應(yīng)的語義劭作。由于是歸功時執(zhí)行語義劭作,因此
限制語義劭作奴犍放森產(chǎn)金式右部的景右邊/
V2>擴充臺折極:靖加一個與今折棧并列的語義錢,用于塔及
合折棧中次法符號所對應(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è)計
遞歸下降方法是用銀星實現(xiàn)對旅終秸符的展開和對終
秸符的匹配。翻鋅方案的核必需要解決兩個同奧:
1.電何森遢歸下海各程序中線人語義劭作;
產(chǎn)女式右部的值何假置,陽裱;步貢的例房”
2.犯何名次法符號的屬但核制點儲變用;
西劇返?他、參恭、變量萼。
例電函核念囹語言解琴器語法制導(dǎo)翻律核花(第三法上機裸,:
I,遢歸3程星可心微花,茁熟,用于返?於要的屬槌值;
2,逐劣微行3程4中的低時變量,用于保存屬槌值:
3將語義劭作嵌入在3程格的途咨假置,正確必算屬槌值。
佃手上機作業(yè)裸利徐
16
4.2.中間代碼商介
7,編笄器各階段的黨整輸出,物可。被私名是源程本的
票種中間―東。
2,奉章神備的是中間代雞皮感器輸出的中間表示,稱之
,中間代媽。
3中間代雞實際上應(yīng)起一個編鋅器端端S啟端臺水嶺的
作用O
4.要求中間代媽具嗡犯干特槌,心便于編笄器的許發(fā)移
植茄代碼的優(yōu)化:
?便手語法制導(dǎo)翻笄:
?就與機器指令的錯構(gòu)相近,又與具體機器無關(guān)。
5.中間代碼的2要彬式:樹、后徽式、三地址雞等。
17
4.2.1后綴式
V7>后徽式的特征
糅作劇在麻,搖作符紫成其后,無需用括號限喇運案的
優(yōu)先行我給合但。
例電:中徽式后徽式
3+5*2/7352*7/+
(3+5)*(2/7)35+27/*
18
V2>行真后徽式的廢加機
算法4.1后徽式君爵
輸入后徽式
輸出行寓秸累
方法采用下述過程進行行算,景於給累留在錢中。
x:=first_token;
whilenotend_of_exp
I°°Pifxinoperators
thenpushx;一糅作照進錢
eIsepop(operators);一兵符,彈出糅作劇
push(evaIuate);一行算,弄渴給累進錢
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;一猱作熬進校
eIsepop(operators);一喜符,禪出猱作劇
push(evaIuate);—/我彳蔣話:—一
endif;
next(x);
endIoop;
20
4.2.1后綴式(續(xù)2)
V分粉啟讖式推廣到其他語句
后做式并系局限于二無運算的表達(dá)式,可。稚廣割但何
語句,只要遵守糅作劇點嘛,糅作符緊砥其后的原則即可。
對語句:ifethenxeIsey
后做式可“4號考:exyif-then-eIse(1)
上述表示中,e、x介y均需引?賓。
而實際上,根據(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)累點放在result中的二無運爵arg1oparg2
轉(zhuǎn)累得數(shù)在result+一無運案oparg1
一無運爵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>三地征鴻的實現(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)化有使用的方法是刪除其也代碼或移劭菜也代雞
位置,而一里進行了代媽的刪除或移劭,則衰東京三元式的星號
公安藝變化,從而使得其他三無式中對晨星號的引用無數(shù)。
24
上次課主要內(nèi)容
1.屬槌與語義規(guī)則
2語義規(guī)則的兩種衰示:語法制導(dǎo)定文與翻律方案
3.LR今折中翻笄方案的殘行;獷克語義核與獷充語法令折
4.遞歸下海今折中翻律方案的核花:腐槌的點儲變間與語
義規(guī)則的花爵
5.中間代碼
?中間代碼的作用
?中間代碼的彬式
a.后徽式
b.三地址媽與三地征碼的實現(xiàn)一三無式與四無式
25
語法制導(dǎo)翻鋅殘行的基域步驟:
1.次法符號屬槌的微行
2.於宴的基本糅作(西烈等)的微奸
3.語義規(guī)則的微行
26
②三無式的語法制導(dǎo)都鐸<M>三地址碼的實現(xiàn)(雨)
7,屬嵯.code;三無式代碼,猾示標(biāo)傭符的存儲單無
或三無式表中的序號,
2.屬嵯.name/標(biāo)傭符的名莊;
3,笛微trip(op,arg1,arg2):女感一個三元式,
返?三無式的序號/
4,―劇entry(id.name):返回標(biāo)/符在符號表中的假
置或存儲假費。
生式:語義規(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>三地征雞的實現(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>三地址雞的實現(xiàn)(族切
③四完式
四無式是對三無式的改進,特表示制算錯累的三無式
序號用一個晶式的變量衰赤,從而避免了三無式的值號三
無式點三無獨中的假黃相關(guān)的隔支。
四無式的語法:三完式;
(op,arg1,arg2,resuIt)(i)(op,arg1,arg2)
所衰赤的祈靠;
result:=arg1oparg2(i):=arg1oparg2
29
V5>三地址雞的實現(xiàn)(掾句
7,四無式與三無式的唯一區(qū)別是將由本號所表赤的運算
待累改,了由臨忖變量來表示。
2,此改變使得四無式具有了運算秸零號四無式森四無式
本列中的位置無關(guān)的特支,它,代雞的優(yōu)化提供了極
大方便,因,送件可。刪除或移劭四無式而系會影響
運算秸累。
3.三地址碼與四元式形式的一致但。四元式的種類
四完式;三地址碼:
(op,arg1,arg2,result)result:=arg1oparg2
30
@四完式的語法刷導(dǎo)翻用<3>三地址媽的實現(xiàn)(續(xù)5)
1.屬僧.code:表示存放運靠秸累的變量,
2.2:newtemp:返回一個新的低時變量,電T1,T2,…等;
3.逑濯,emit(op,arg1,arg2,result);皮感一個四無式,
若名一無運算,則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>樹作,中間代碼
語法制奠實反映句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á)到資源(運算、代雞等)共享的目的。:=T3/(3)
:=T4/(4)
x*T2/(2)
x*T3/(3)
ababab
DAG的語法制導(dǎo)翻鋅馬樹的語法制導(dǎo)翻律和以需要點
mknode^omkIeaf中懵加相應(yīng)的交詢功犍。
首先全看所要構(gòu)造的節(jié)支是否已經(jīng)卷芥,老卷點則無需構(gòu)
苴新的節(jié)支,直接返回指向已卷春節(jié)支的指針即可。
34
V分樹與其他中間代媽的關(guān)系
1.樹表示的中間代雞身后徽式和三地址雞之間嗡內(nèi)麻寐系;
2.對樹進行睬度優(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ù)地進行全我、插入、刪除和修改萼糅作,
?安間可。劭態(tài)獷克。
37
4.3.1符號表條目
■邃新上得.,每個聲明的名容點符號表中占據(jù)一桂,
稱,一個條目,用手盛放名莊的相關(guān)信息。
?符號表中的內(nèi)客;保留有、標(biāo)/符、特殊符號(包
括算符、合隔符等J等等。
?多個3表:系同類別的符號可。存放點系同的3表
中,的變量名表、過程名表、保留室表等。
?點數(shù)方式:關(guān)桂室+屬槌。
38
4.3.1符號表條目(續(xù))
關(guān)4組合關(guān)健室:
intx;
{doubIex;
structx{floaty,z;};
)
7,怒C構(gòu)造的符號表中,俎合關(guān)桂莊至夕應(yīng)該包括三項;
名有+作用域+類型
2,劣一個名莊x點同一作用域中允許/多于一個的聲明,則
對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ù))
?間接得儲的方法實際上解決了復(fù)點信息的希儲冏題
?粉其推廣到屬但,則值何一個復(fù)點的屬楹,均可。,其
另辟變間
?變間本身可。是G何復(fù)東秸構(gòu)(電熬組的肉精向量等)
?而以需要粉指向此變間的猾針數(shù)在此屬楹在符號表中的
對應(yīng)假置即可。
41
4.3.3名字的作用域
程本微行語言的名莊可。出現(xiàn)點系同的范砌內(nèi),并且可。
具嗡系同的意義。
1,兩種刻合范閶的方式:并列的和錢套的。
2,系同的語言采用系同的方式:的Pascal的還錢定文可。
是錢套的,而C的過程定義是并列的,便是C允許程本塊
是嵌套的。(冏奧,過程與程序塊的2要區(qū)別7)
5名莊的作用域:名莊點哪個范詞內(nèi)越作用。并列的兩個
范詞內(nèi)的名莊作用域段系相不,但是令別點嵌套的兩個
范閶內(nèi)的名莊,其作用域的間奧就需要刷足規(guī)則未限定,
。使得但何一個名有點值何范閶河涵義都是無二義的。
Q名莊的作用域規(guī)則;視定一個名莊點什么件的范詞內(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)俗地講,名莊聲明點離其景近的南層起作用,即
點名有引用處從向向外看,它處點所遢刎的第一個被名
有聲朗的作用域。
例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)是一個棧,。正確反映名生的作用域,即符號的
加入和刪除,物在俵嘏表的一端進行。
關(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)粉時;粉在同一作用域的名生同時精走,適冬保點;
(b)永久;粉在同一作用域的名莊同時精走,系毒保腐。
修改;S至找類何,修改第一個遢到的名莊的信息。
修改可。用刪除+插入代替。
俵喉表上糅作的致率3個條目)/
一個名有的全找;鼠功全我(平的九(n+1)/2;系周功全找:n+1
n
建克n個條目的符號表(景懷九£i-(n+1)n/2
Z=1
47
上次課主要內(nèi)容
1.中間代碼
b.三地址雞馬三地址碼的實現(xiàn)一三無式號四無式
c.囹彬表示一制與DAG
?樹與后徽式和三地征鳴的關(guān)系
2.符號表
?符號表的條目(名莊的特征J
?名莊的兩種卷儲方式(施廣)
?名莊的作用域(靜態(tài)與素近線春源則J
?俵嘏表
48
4.3.5散列表
v/>微列表的構(gòu)閥
粉俵但表今鼠m個小表。構(gòu)造hash笛烈,使名有靖勺微布點m
個3表中。若微列靖勺,則時間復(fù)集盛會海烈晨俵槌表的1/m。
1.薇列鋌(hashlink九鏈接所嗡具疇相同hash值的無素,
表要點表要破組中;
2,作用域錠(scopelink'鏈接所有在同一作用域中的完
素,表決點作用域鏈中。
49
V2>微列表上的糅作4.35枚列表(陵7)
1.全找:首先行算微列函烈,影后從微列西劇所猾示的人口
進入某個俵嘏表,在彼槌表中沿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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024電腦監(jiān)控系統(tǒng)軟件銷售合同書模板
- 冀教版四年級下冊數(shù)學(xué)第八單元 小數(shù)加法和減法 測試卷附解析答案
- 2024年冷彎型鋼項目合作計劃書
- 中國LTCC行業(yè)投資前景分析及未來發(fā)展趨勢研究報告(智研咨詢發(fā)布)
- 鹽城師范學(xué)院《設(shè)計美學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 鹽城師范學(xué)院《嵌入式系統(tǒng)及應(yīng)用》2022-2023學(xué)年期末試卷
- 2024設(shè)備檢修工程合同
- 2024年美甲工具項目合作計劃書
- 綜合測試三(OSG)試題
- 醫(yī)療康復(fù)服務(wù)質(zhì)量評估合同
- 食品安全自查、從業(yè)人員健康管理、進貨查驗記錄、食品安全事故處置保證食品安全的規(guī)章制度
- 抗高血壓藥物-課件
- 英語四級單詞4500
- 神經(jīng)病學(xué)課件:癲癇
- 縣人民醫(yī)院藥事管理與藥物治療學(xué)委員會會議紀(jì)要五篇
- 酒店預(yù)訂確認(rèn)函
- 2023年歷史競賽題
- 泵的選型原則、依據(jù)及步驟
- 走開大黑兔“十校聯(lián)賽”一等獎
- 教養(yǎng):曾仕強給中國父母的教子忠告
- 拆船業(yè)安全隱患及防范措施
評論
0/150
提交評論