版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序的語義分析,主要內(nèi)容: 聲明的語義分析; 執(zhí)行體的語義分析: 表達(dá)式的語義分析; 語句的語義分析;,聲明的語義分析,語義分析工作: 建立符號(hào)表; 檢查標(biāo)識(shí)符的重復(fù)聲明; 聲明部分: 標(biāo)號(hào)聲明:LabelDecPart; 常量聲明:ConsDecPart; 類型聲明:TypeDecPart; 變量聲明:VarDecPart; 過函聲明:RoutDecPart;,LabelDecPart label , ; | ConstDecPart const id = C ; .; id = C ; | TypeDecPart type id = T ; .; id = T ; | VarDecPart
2、 var VarList: T ; .; VarList: T ; | RoutDecPart RoutDec ; .; RoutDec ; | RoutDec ProcHead ; Block | FuncHead ; Block ProcHead procedure id (ParamDecList) FuncHead function id (ParamDecList): Type ParamDecList ParamDec ; . ; ParamDec ParamDec VarList : Type | var VarList : Type | ProcHead | FuncHead,
3、標(biāo)號(hào)LabelPart,標(biāo)號(hào)出現(xiàn)的位置: 標(biāo)號(hào)聲明:label 1, 2, , n; 標(biāo)號(hào)定位(語句前):i:Statement; 標(biāo)號(hào)使用(Goto后):goto i; 標(biāo)號(hào)部分的語義錯(cuò)誤: 標(biāo)號(hào)重復(fù)聲明; 標(biāo)號(hào)重復(fù)定位; 標(biāo)號(hào)有定位而無聲明; 標(biāo)號(hào)有使用而無定位; Goto語句有非法轉(zhuǎn)入.,標(biāo)號(hào)部分語義分析原理,設(shè)置三種表:LDEC,LDEF,LUSE LDEC表:(Flag, Label)以子程序?yàn)榫植繂挝唬?LDEF、LUSE表:(Label) 以結(jié)構(gòu)體為局部單位 標(biāo)號(hào)聲明部分label 1, 2,n:(填寫LDEC表) 建立本層LDEC;令Flag:=0;檢查是否有重復(fù)聲明; 標(biāo)號(hào)定
4、位部分:Statement: (填寫LDEF表) 若LDEC中沒有,則表示該標(biāo)號(hào)未聲明; 否則:若的flag是1,則表示有重復(fù)定位錯(cuò)誤, 否則令flag:=1,并將填入LDEF表中。 標(biāo)號(hào)使用 goto : (填寫LUSE表) 若LDEF表中沒有,則將填入LUSE表中,表示的 定位可能在后。,進(jìn)入結(jié)構(gòu)語句時(shí):記錄本段LDEF和LUSE。 結(jié)束時(shí):將LUSE表中LDEF中的項(xiàng)刪除,刪除 本段LDEF表, LUSE表保留。 進(jìn)入過函時(shí):記錄本層LDEC、LDEF表; 退出時(shí):將LUSE表中LDEF中的項(xiàng)刪除,刪除 本層LDEC表和LDEF表,LUSE表保留。 進(jìn)入主程序時(shí):記錄本層LDEC 、LD
5、EF表; 結(jié)束時(shí):檢查LUSE是否為空,若非空表示有 非法轉(zhuǎn)入或使用了無定位的標(biāo)號(hào)。,常量聲明的語義處理,形式:ConsDecPart const ConsDecList ConsDecList ConsDec ;ConsDecList ConsDec id = C id = C 的語義處理原理: 求C.type , C.val 查符號(hào)表是否有標(biāo)識(shí)符id;若有則重復(fù) 聲明錯(cuò)誤 否則構(gòu)造 (id,C.type,consKind,C.value) 填寫到符號(hào)表中,類型聲明的語義處理, 形式:TypeDecPart type TypeDecList TypeDecList TypeDec ;Type
6、DecList TypeDec id = T id = T的語義分析要點(diǎn): 對(duì)T進(jìn)行類型分析返回內(nèi)部表示指針TPtr; 檢查符號(hào)表是否有重復(fù)聲明; 若無則構(gòu)造符號(hào)表: ( id , TPtr, typeKind, false/true) 當(dāng)整個(gè)類型聲明部分結(jié)束時(shí),進(jìn)行超前指針 類型結(jié)點(diǎn)的回填工作,變量聲明部分, 形式:VarDecPart var VarDecList VarDecList VarDec ; VarDecList VarDec idList : T id1,idK:T的語義分析要點(diǎn): 檢查符號(hào)表是否有重復(fù)聲明; 構(gòu)造符號(hào)表項(xiàng): 1 jK, (idj,tp,varKind,Acc
7、ept,Level,offj),其中tp 和offj的值等待回填; 對(duì)T進(jìn)行類型分析返回指針TPar; 回填符號(hào)表中的tp指針; off的確定:off:=off+ TPar.size;,過/函聲明的處理, 形式:RoutDec ProcHead;Block|FuncHead;Block ProHead procedure id (ParamDecList) FuncHead function id (ParamDecList):Type ParamDec idList : Type | var VarList : Type | ProcHead | FuncHead Block DecPart
8、;Body |forward 處理要點(diǎn): 子程序首部的處理 HeadProcess 聲明部分的處理 語句部分的處理,過函首部的處理, 過函名id:填寫符號(hào)表項(xiàng):(id,void/?,routKind,L,?,actual,?,?,?) 形參:進(jìn)入新的局部化區(qū)level:= L+1;第一個(gè)形參的offset 由系統(tǒng)確定設(shè)為off0;構(gòu)造第i個(gè)形參的符號(hào)表項(xiàng): 值參:(xi,tpi,varKind,dir,L+1,offi) offi := offi-1 + sizeof(tpi-1) 變參:(xi,tpi,varKind,indir,L+1,offi) offi := offi-1 + 1 過函
9、形參:(r,void/?,routKind,L+1,?,formal,offr) 進(jìn)入新的局部化區(qū)leve:= L+2,形參同上處理, 但off值為空。結(jié)束時(shí)結(jié)束局部化區(qū);回填值。 首部結(jié)束:回填類型及形參表地址。 forward值:如果過函體為forward則為1否則為0,子程序首部的處理例子,Procedure p(x:real ; var y : boolean ; function f(i ,j : integer) : integer) 當(dāng)前層數(shù)為L,InitOff=1.則:,程序體部分的語義分析,表達(dá)式的語義分析 賦值語句的語義分析 調(diào)用語句的語義分析 標(biāo)號(hào)語句的語義分析 結(jié)構(gòu)語句
10、的語義分析,表達(dá)式的語義分析,任務(wù):檢查運(yùn)算分量的類型相容性,求表 達(dá)式類型。 分析: C V: id、VarE、Var.id、Var E op E,賦值語句的語義分析,任務(wù):檢查賦值相容性 分析步驟: var 的類型分析 var.Type E 的類型分析 E.Type 判定var.Type和E.Type是否賦值相容,調(diào)用語句的語義分析,任務(wù):形實(shí)結(jié)合的相容性。函數(shù)求出返回類型。 原理:P(AE1, .,AEn ) 用P查符號(hào)表,找出無聲明錯(cuò) routkind?, 找出非過/函標(biāo)識(shí)符 Params保證個(gè)數(shù)相同,對(duì)應(yīng)類型相容,類別相同 。,結(jié)構(gòu)語句的語義分析,問題:結(jié)構(gòu)語句結(jié)束符對(duì)應(yīng)多個(gè)結(jié)構(gòu)語句結(jié)束。 解決辦法:對(duì)結(jié)構(gòu)化語句重新定義,使得每個(gè)結(jié)構(gòu)化語句都自帶結(jié)束符 。,for i = 1 to 10 do for j = 1 to 100 do begin A i , j = 0 ; end ;,修改后的結(jié)構(gòu)語句的定義,StatementIF Expr THEN Statement FI StatementIF Expr THEN Statement ELSE Statement FI StatementWHILE Expr DO Statement OD St
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 37863.1-2019軌道交通 牽引電傳動(dòng)系統(tǒng) 第1部分:城軌車輛》專題研究報(bào)告
- 《GBT 21789-2008石油產(chǎn)品和其他液體閃點(diǎn)的測(cè)定 阿貝爾閉口杯法》專題研究報(bào)告
- 《GBT 15825.6-2008金屬薄板成形性能與試驗(yàn)方法 第6部分:錐杯試驗(yàn)》專題研究報(bào)告
- 《GBT 2317.3-2008電力金具試驗(yàn)方法 第3部分:熱循環(huán)試驗(yàn)》專題研究報(bào)告
- 道路安全員初次培訓(xùn)課件
- 道路交通安全法課件
- 道縣摩托車安全駕駛培訓(xùn)課件
- 2021JACS指南:肺癌手術(shù)患者術(shù)前肺功能評(píng)估解讀課件
- 達(dá)州吉勤安全培訓(xùn)課件
- 邊檢業(yè)務(wù)培訓(xùn)課件
- 國家開放大學(xué)電大本科《流通概論》復(fù)習(xí)題庫
- 機(jī)關(guān)檔案匯編制度
- 2025年下半年四川成都溫江興蓉西城市運(yùn)營集團(tuán)有限公司第二次招聘人力資源部副部長等崗位5人參考考試題庫及答案解析
- 2026福建廈門市校園招聘中小學(xué)幼兒園中職學(xué)校教師346人筆試參考題庫及答案解析
- 2025年高職物流管理(物流倉儲(chǔ)管理實(shí)務(wù))試題及答案
- 中國古代傳統(tǒng)節(jié)日與民俗文化
- 高校申報(bào)新專業(yè)所需材料匯總
- (機(jī)構(gòu)動(dòng)態(tài)仿真設(shè)計(jì))adams
- NB-T 31053-2021 風(fēng)電機(jī)組電氣仿真模型驗(yàn)證規(guī)程
- GB/T 1048-2019管道元件公稱壓力的定義和選用
- 文化創(chuàng)意產(chǎn)品設(shè)計(jì)及案例PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論