版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四章:語義分析
符號表管理
goto語句1.1語義分析部分三個(gè)核心知識點(diǎn)檢查語義錯(cuò)誤抽象地址的分配(層數(shù)、偏移)符號表局部化、標(biāo)識符的作用域intmain(){inta;floatb,d;{intc;floata;{intd;floatc;{floatd;//...a=b+c+d;}}{chard;...d=d+1;
} }return0;}此處的a,b,c,d對應(yīng)的是什么d對應(yīng)的是什么1.2處理原則符號表局部化處理的本質(zhì):在程序的某一個(gè)點(diǎn)P上,判斷符號表的哪些信息是有效的因此有以下原則:每進(jìn)入一個(gè)局部化區(qū),記錄本層符號表的首地址遇到聲明性標(biāo)識符時(shí),構(gòu)造其語義字,查本層的符號表,檢查是否有重名,有則出錯(cuò),否則就把其語義字填到符號表里。遇到使用性出現(xiàn),查符號表,如果查到則讀取其語義字,否則出現(xiàn)語義錯(cuò)誤。退出一個(gè)局部化區(qū),'作廢'本層的符號表。1.3Pascal語言的符號表的管理Pascal語言的最大特點(diǎn)就是允許嵌套的過程聲明。規(guī)定Pascal主程序的層數(shù)為0,在主程序中聲明的標(biāo)識符(包括過/函標(biāo)識符)的層數(shù)為1,在第i層過/函中聲明的標(biāo)識符(包括形參和局部標(biāo)識符)的層數(shù)為i+1(i≥1)。用一個(gè)Scope棧來實(shí)現(xiàn)標(biāo)識符的嵌套作用域。Scope棧的每項(xiàng)指向當(dāng)前仍有效的某層符號表的首項(xiàng),具體說Scope(0)指向0層符號表的首項(xiàng),Scope(i)指向i層符號表的首項(xiàng)。
Pascal語言的符號表的實(shí)例(刪除法)procedureP1()vari,j,k:integer;{t1}procedureQ2()vara,b:real;procedureR3(){t2}vara,b:boolean;{t3}beginR的過程體(a,b,i)endbeginQ的過程體(a,b,i)
end;procedureS2()var
c,e:char;{t4}beginS的過程體(a,b,i,Q)end;{t5}beginP的過程體(a,b,i,P,Q,S)20.end;21begin..P();..end.PijkQabRabSceScope棧PROGRAMexample;符號表
關(guān)于Pascal語言的符號表的實(shí)例(跳轉(zhuǎn)法)procedureP()vari,j,k:integer;{t1}procedureQ()vara,b:real;procedureR(){t2}vara,b:boolean;{t3}beginR的過程體(a,b,i)
end;beginQ的過程體(a,b,i)
end;procedureS()var
c,e:char;{t4}beginS的過程體(a,b,i)
end;{t5}beginP的過程體(a,b,i)endbegin.....end.P….
ijkQabRab
#
#Sce
#Scope棧符號表PROGRAMexample;1.4C語言的符號表的管理C語言不允許函數(shù)的嵌套聲明。一個(gè)C程序是由若干個(gè)函數(shù)并列組成的(其中一定要有main函數(shù)),這些函數(shù)的地位都是相同的。從main函數(shù)調(diào)用開始執(zhí)行,在后面聲明的函數(shù)可以調(diào)用在它之前聲明的函數(shù)。C語言的每個(gè)標(biāo)識符的層次只有兩個(gè),即0層和1層。全局標(biāo)識符和所有的函數(shù)標(biāo)識符的層數(shù)是0,函數(shù)的形式參數(shù)和局部標(biāo)識符的層數(shù)是1。xvarKindintPtrdir00swaproutKindNULLactual0sizefalseavarKindatptrindir1offobvarKindbtptrindir1offo+1tmpvarKindintPtrdir1offo+2#mainroutKindNULLactual0nullsizeFalse##yvarKindintPtrdir01intx,y;voidswap(int*a,int*b){inttmp;tmp=*a;*a=*b;*b=tmp;}voidmain(){x=10;y=20;swap(&x,&y);}(1)簡單的C語言符號表_駐留法atptr→
btptr→1pointerTyintPtrbtptr→1pointerTyintPtr1.main()2.{13. inta;4. floatb,d;5.{26intc;7.floata;8.{39. intd;10. floatc;11.{412. floatd;13.……14.a=b+c+d;15.}4
16.}317.{518.chard;19.}520.}221.}1mainroutKindNULLactual0NULLfalseavarKindintPtrdir10bvarKindrealPtrdir11dvarKindrealPtrdir13avarKindrealPtrdir16dvarKindintPtrdir18cvarKindrealPtrdir19dvarKindrealPtrdir111cvarKindintPtrdir15##dvarKindcharPtrdir113(8)##(2)帶有分程序的C語言全局符號_駐留法
(假定off(偏移)為0)#voidmain(){}inta=1;B1intb=1;{}printf(“a=%d,b=%d\n”,a,b);intb=2;B2{}{}inta=3;B3printf(“a=%d,b=%d\n”,a,b);intb=4;B4printf(“a=%d,b=%d\n”,a,b);(3)帶有分程序的C語言全局符號_刪除法a=3,b=2a=1,b=4a=1,b=1………1a…….1b…….2b………3a…….4b1.5嵌套式語言并列式語言的比較特殊情形,從程序設(shè)計(jì)語言的角度來說有嵌套式語言和并列式語言從處理難度角度來說,可能嵌套式語言復(fù)雜,并列式簡單。嵌套式語言里還要考慮變量運(yùn)行環(huán)境。并列式語言的局部化區(qū)比較固定,層數(shù)分成兩層,全局量定義成0層,局部量定義成1層。分配地址特殊情形就是分程序結(jié)構(gòu),分程序可以是嵌套的,他的層數(shù)都是看成同一層,查局部化區(qū)每個(gè)分程序看成一個(gè)獨(dú)立的局部化區(qū)。分配抽象地址的時(shí)候?yàn)榱斯?jié)省空間,并列的分程序可以是并行的分配,嵌套的分程序必須要連續(xù)的往下分,前一個(gè)分程序從10~100,并列的可以還是10~100。2.goto語句和標(biāo)號處理2.1goto語句及"goto之爭"2.2標(biāo)號的出現(xiàn)形式2.3可能出現(xiàn)的錯(cuò)誤2.4實(shí)現(xiàn)方式2.5實(shí)現(xiàn)算法2.1goto語句及"goto之爭"goto標(biāo)號標(biāo)號:在上世紀(jì)70年代,曾經(jīng)發(fā)生過關(guān)于goto語句的一場大辯論,主題就是要不要在高級程序設(shè)計(jì)語言中把goto語句保留下來例如:r1:x1=f(x0);if(abs(x1-x0)<0.0001)gotor2;x0=x1;gotor1;r2:;2.2標(biāo)號的出現(xiàn)形式標(biāo)號在程序中出現(xiàn)共有三種形式聲明性出現(xiàn)在程序的聲明部分給出一個(gè)聲明,聲明哪些標(biāo)識符是標(biāo)號。例如:labelR1,R2定位性出現(xiàn)起到定位的作用,例如:R1:s,s是一個(gè)語句,R1是一個(gè)語句標(biāo)號,表示R1這個(gè)語句標(biāo)號定位在s語句前面轉(zhuǎn)移性出現(xiàn)例如gotoR1,即把程序的控制結(jié)構(gòu)轉(zhuǎn)到標(biāo)號為R1的位置上開始去執(zhí)行2.3可能出現(xiàn)的錯(cuò)誤標(biāo)號的重復(fù)聲明標(biāo)號的重復(fù)定位使用的標(biāo)號未聲明(語言決定的)有轉(zhuǎn)移但是無定位2.4實(shí)現(xiàn)方式一般有兩種實(shí)現(xiàn)方式:gotoRJumpR效率較高但實(shí)現(xiàn)困難,難以定位跳轉(zhuǎn)地址gotoRJump*R為標(biāo)號分配一個(gè)存儲(chǔ)單元,跳轉(zhuǎn)指令采用間接尋址方式,從對應(yīng)存儲(chǔ)單元中讀取該標(biāo)號定位的地址。通常采用第二種實(shí)現(xiàn)方式2.4實(shí)現(xiàn)方式要做好兩部分工作:1.分配存儲(chǔ)單元2.檢查語義錯(cuò)誤因此需要構(gòu)建兩個(gè)表標(biāo)號表:未找到定位標(biāo)號表:狀態(tài)有定位填1無定位填0地址狀態(tài)標(biāo)志標(biāo)號名標(biāo)號名標(biāo)號名標(biāo)號名2.5實(shí)現(xiàn)算法遇到聲明性標(biāo)號時(shí)查標(biāo)號表1.如果表中有該標(biāo)號,說明該標(biāo)號被重復(fù)聲明2.如果沒有,則將標(biāo)號填到符號表里,狀態(tài)填0遇到定位性標(biāo)號時(shí)查標(biāo)號表1.沒查到,報(bào)錯(cuò)(標(biāo)號未聲明)2.查到,狀態(tài)位為0,則將其變?yōu)?,生成目標(biāo)代碼時(shí)回填地址。狀態(tài)位為1,報(bào)錯(cuò)(標(biāo)號重復(fù)定位)遇到轉(zhuǎn)移性標(biāo)號時(shí)查標(biāo)號表查到,則建立指針;查不到,將該標(biāo)號填入'未找到定位標(biāo)號表'程序單位結(jié)束時(shí),復(fù)查'未找到定位標(biāo)號表',確定是否存在錯(cuò)誤。例子:labler1,r2;【1】r1【2】:x1=f(x0);if(abs(x1-x0)<0.0001)gotor2【3】;x0=x1;gotor1【4】;r2【5】:;地址0r1地址0r2【1】地址1r1地址0r2【2】地址1r1地址0r2【3】地址1r1地址0r2【4】r2地址1r1地址1r2【5】r2r2使用駐留法中的跳轉(zhuǎn)方法給出下面類C程序(嵌套式)處理結(jié)束時(shí)的全局符號表。(采用順序表結(jié)構(gòu))表項(xiàng)為層數(shù)和偏移voidP(){inti,j,k;voidP1(){realm;intn;voidP2(){boola,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度寵物貓寵物用品線上商城合作合同4篇
- 二零二五年度土地儲(chǔ)備開發(fā)土地征用補(bǔ)償合同
- 2025年銷售總監(jiān)勞動(dòng)合同模板:業(yè)績提升與團(tuán)隊(duì)建設(shè)策略3篇
- 2025年度健康醫(yī)療大數(shù)據(jù)應(yīng)用合同范本2篇
- 二手房買賣協(xié)議規(guī)范文本2024版版B版
- 二零二五年度工業(yè)用地收儲(chǔ)補(bǔ)償合同3篇
- 二零二五年度女方離婚協(xié)議書制作參考模板
- 2025年度農(nóng)民工職業(yè)培訓(xùn)合作服務(wù)合同模板
- 二零二五年度交通事故精神撫慰金賠償協(xié)議3篇
- 二零二五年度醫(yī)療器械加工與測試協(xié)議規(guī)范3篇
- 《數(shù)學(xué)課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版(原版)
- 農(nóng)機(jī)維修市場前景分析
- 2024-2030年中國假睫毛行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報(bào)告
- HG+20231-2014化學(xué)工業(yè)建設(shè)項(xiàng)目試車規(guī)范
- 匯款賬戶變更協(xié)議
- 電力系統(tǒng)動(dòng)態(tài)仿真與建模
- 蝦皮shopee新手賣家考試題庫及答案
- 四川省宜賓市2023-2024學(xué)年八年級上學(xué)期期末義務(wù)教育階段教學(xué)質(zhì)量監(jiān)測英語試題
- 價(jià)值醫(yī)療的概念 實(shí)踐及其實(shí)現(xiàn)路徑
- 2024年中國華能集團(tuán)燃料有限公司招聘筆試參考題庫含答案解析
- 《紅樓夢》中的男性形象解讀
評論
0/150
提交評論