




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、主要內(nèi)容:主要內(nèi)容:. 語義分析概述語義分析概述( (必要性、功能、描述方法必要性、功能、描述方法) ). 符號表符號表. 類型表達(dá)式類型表達(dá)式. 聲明和程序體的語義分析聲明和程序體的語義分析語法和語義的區(qū)別語法和語義的區(qū)別: : 語法:語法:關(guān)于什么樣的字符串才是該語言關(guān)于什么樣的字符串才是該語言 在組成結(jié)構(gòu)上合法的程序的法則。在組成結(jié)構(gòu)上合法的程序的法則。 語義:語義:關(guān)于結(jié)構(gòu)上合法的程序的意義的關(guān)于結(jié)構(gòu)上合法的程序的意義的 法則。法則。 語義種類語義種類 靜態(tài)語義:靜態(tài)語義:在編譯階段在編譯階段( (從程序文本上從程序文本上) )可可 以檢查的語義。以檢查的語義。 動態(tài)語義:動態(tài)語義:通
2、過程序的執(zhí)行才能檢查的語通過程序的執(zhí)行才能檢查的語 義。義。 語義的描述語義的描述語義形式化方法:語義形式化方法: 1. 1. 操作語義操作語義 2. 2. 指稱語義指稱語義 3. 3. 公理語義公理語義 4. 4. 代數(shù)語義代數(shù)語義 語義分析的內(nèi)容:語義分析的內(nèi)容: 類型分析類型分析 標(biāo)識符相關(guān)信息標(biāo)識符相關(guān)信息 語義分析的功能:語義分析的功能: 檢查語義錯(cuò)誤檢查語義錯(cuò)誤 構(gòu)造標(biāo)識符屬性表(符號表)構(gòu)造標(biāo)識符屬性表(符號表) 語義分析的實(shí)現(xiàn):語義分析的實(shí)現(xiàn): 與語法分析相結(jié)合與語法分析相結(jié)合語義分析語義分析語法分析樹語法分析樹TokenListTokenList語義定義語義定義自然語言描述規(guī)
3、定自然語言描述規(guī)定符號表符號表判定判定 標(biāo)識符的內(nèi)部表示標(biāo)識符的內(nèi)部表示 類型的內(nèi)部表示類型的內(nèi)部表示 值的內(nèi)部表示值的內(nèi)部表示三種內(nèi)部表示三種內(nèi)部表示CodeCodeZ 標(biāo)識符種類:標(biāo)識符種類: 常量名、類型名、變量名、函數(shù)名、過程名、域名。常量名、類型名、變量名、函數(shù)名、過程名、域名。 TYPE idkind=( consKind, typeKind, varKind, fieldKind, procKind,funcKind )Z 內(nèi)部表示(內(nèi)部表示(AttributeIR):): 常量:常量: 類型:類型: 變量:變量: 域名域名*: 過函:過函:ValueValueKindKindT
4、ypePtrTypePtrForwardForwardKindKindTypePtrTypePtrOffOffLevelLevelAccessAccessKindKindTypePtrTypePtrHostTypeHostTypeOffOffKindKindTypePtrTypePtrSizeSize ForwardForwardClassClassParmParmLevelLevelKindKindTypePtrTypePtrOffOffb 例有聲明如下:例有聲明如下: CONST CONST paipai= 3.14 ;= 3.14 ; TYPE vector=ARRAY1.10 OF i
5、nteger; TYPE vector=ARRAY1.10 OF integer; VAR x, y : real ; VAR x, y : real ; r, s : vector ; r, s : vector ; 設(shè)當(dāng)前層數(shù)和可用設(shè)當(dāng)前層數(shù)和可用offsetoffset值分別為值分別為L L和和0 0,構(gòu)造標(biāo)識符構(gòu)造標(biāo)識符 paipai, vector, x, y, r , vector, x, y, r 和和s s 的屬性表示。的屬性表示。Z 類型的種類:類型的種類:標(biāo)準(zhǔn)、子界、枚舉、數(shù)組、記錄、標(biāo)準(zhǔn)、子界、枚舉、數(shù)組、記錄、 集合、文件、指針類型等等。集合、文件、指針類型等等。 Ty
6、peKind=(intTy,boolTy,charTy,realTy,enumTy, subTy,arrayTy,recordTy,setTy,fileTy,pointerTy)Z 內(nèi)部表示:內(nèi)部表示:( (TypeIRTypeIR) ) 標(biāo)準(zhǔn)類型:標(biāo)準(zhǔn)類型: sub: enum: array: UpLowHostTypeKindSizeLengElemsKindSizeElemTypeIndexTypeKindSizeKindSizerecord: FixBody: VariBody:set: file:pointer: VariBodyFixBodyKindSizeNextOffFixUn
7、itTypeidVariUnitsCaseUnitNextVariBodyFixBodyOffCaseTypeidBaseTypeKindSizeCompTypeKindSizeTypeNameKindSizeb例有如下的類型定義:例有如下的類型定義: at = ARRAY 1.10 OF at = ARRAY 1.10 OF ARRAY1.100 OF integer; ARRAY1.100 OF integer; rtrt = RECORD x : real ; a : at; = RECORD x : real ; a : at; CASE u: CASE u: booleanboole
8、an OF OF false:(kfalse:(k : integer); : integer); true:(ytrue:(y: real; b: : real; b: booleanboolean) ) END END 構(gòu)造類型的內(nèi)部表示。構(gòu)造類型的內(nèi)部表示。Z 非結(jié)構(gòu)類型值的內(nèi)部表示:非結(jié)構(gòu)類型值的內(nèi)部表示: 實(shí)型實(shí)型 指針指針 有序類型:整數(shù)形式有序類型:整數(shù)形式 有序類型的常量表示:有序類型的常量表示: Z 整型常量:整型常量:ord(Nord(N) = N) = NZ 布爾常量:布爾常量:ord(falseord(false)=0, )=0, ord(trueord(true) =
9、 1) = 1Z 字符常量:字符常量:ord(Cord(C) = ASC (C) = ASC (C)Z 枚舉常量:枚舉常量:設(shè)有枚舉類型設(shè)有枚舉類型( (D,A,B),D,A,B),則有則有 ord(Dord(D)=0,ord(A)=1,ord(B)=2)=0,ord(A)=1,ord(B)=2Z 子界常量:子界常量:設(shè)有子界類型設(shè)有子界類型C C1 1.C.C2 2, ,則值空間則值空間 為為 ord(Cord(C1 1).ord(C).ord(C2 2)Z 標(biāo)識符的作用:標(biāo)識符的作用: 聲明部分:定義了各種對象及對應(yīng)的屬性和聲明部分:定義了各種對象及對應(yīng)的屬性和 使用規(guī)則。使用規(guī)則。 程序
10、體:對所定義的對象進(jìn)行各種操作。程序體:對所定義的對象進(jìn)行各種操作。$ $idididnameidnameIdnameIdname AttributeIRAttributeIRZ 必要性必要性 TokenToken: 新表符號表(種類、類型等信息):新表符號表(種類、類型等信息):Z 有關(guān)符號表的操作:有關(guān)符號表的操作: 添加、作用域刪除、查詢添加、作用域刪除、查詢Z 處理符號表的模塊:處理符號表的模塊: 定義符號表數(shù)據(jù)結(jié)構(gòu)定義符號表數(shù)據(jù)結(jié)構(gòu) 定義符號表上的操作定義符號表上的操作符號表的作用:符號表的作用:為語義檢查和代碼生成提供為語義檢查和代碼生成提供 標(biāo)識符的語義信息。標(biāo)識符的語義信息。標(biāo)
11、識符的處理思想:標(biāo)識符的處理思想: 遇到定義性標(biāo)識符時(shí),在符號表中填寫遇到定義性標(biāo)識符時(shí),在符號表中填寫 被定義標(biāo)識符的符號項(xiàng);被定義標(biāo)識符的符號項(xiàng); 當(dāng)遇到使用性標(biāo)識符時(shí),用該標(biāo)識符查當(dāng)遇到使用性標(biāo)識符時(shí),用該標(biāo)識符查 符號表求得其屬性。符號表求得其屬性。標(biāo)識符的作用域:標(biāo)識符的作用域:標(biāo)識符有效的最大程序段標(biāo)識符有效的最大程序段嵌套作用域規(guī)則:嵌套作用域規(guī)則:當(dāng)存在標(biāo)識符的嵌套聲明當(dāng)存在標(biāo)識符的嵌套聲明時(shí),最近定義的屬性為標(biāo)識符的當(dāng)前屬性時(shí),最近定義的屬性為標(biāo)識符的當(dāng)前屬性局部化單位:局部化單位:允許有聲明的程序段允許有聲明的程序段P:P:VarVar x ,y,z x ,y,zVarVa
12、r x,m,n x,m,nx:=1;x:=1;m:=x+1;m:=x+1;y:=x+1;y:=x+1;x:=0;x:=0;Q:Q:lProc p(lFunc f(l形式過形式過/函函 p( f(lRecord begin符號表的種類:符號表的種類:全局符號表、局部符號表全局符號表、局部符號表原則:原則: 進(jìn)入一個(gè)局部化區(qū)時(shí),記錄本層符號表的進(jìn)入一個(gè)局部化區(qū)時(shí),記錄本層符號表的位置位置 遇到定義性標(biāo)識符時(shí),構(gòu)造其語義信息,遇到定義性標(biāo)識符時(shí),構(gòu)造其語義信息,查本層符號表,若存在,則有重復(fù)聲明錯(cuò)查本層符號表,若存在,則有重復(fù)聲明錯(cuò)誤,否則將語義信息填入表中誤,否則將語義信息填入表中 遇到一個(gè)使用性
13、標(biāo)識符時(shí),查表(從里層遇到一個(gè)使用性標(biāo)識符時(shí),查表(從里層到外層),查不到則有未定義標(biāo)識符錯(cuò)到外層),查不到則有未定義標(biāo)識符錯(cuò)誤,否則構(gòu)造新的誤,否則構(gòu)造新的TOKENTOKEN 退出一個(gè)局部化區(qū)時(shí),作廢本層符號表退出一個(gè)局部化區(qū)時(shí),作廢本層符號表標(biāo)識符處理的原則標(biāo)識符處理的原則用局部符號表實(shí)現(xiàn)用局部符號表實(shí)現(xiàn)proc proc p:x,y,zp:x,y,zproc p1:x,y1,z1proc p1:x,y1,z1proc p2:yproc p2:yy,zy,zx,y1,z1,yx,y1,z1,yproc p3:z,aproc p3:z,ax,y,ax,y,ax,zx,z用全局符號表實(shí)現(xiàn)用全
14、局符號表實(shí)現(xiàn)proc p0:x,yproc p0:x,yproc p1:x,zproc p1:x,zy yproc p2:x1,y1proc p2:x1,y1y yx,zx,z program p()program p()type at=array1.100 of array1.10 of type at=array1.100 of array1.10 of inteterintetervarvar x:realx:real; ; a:ata:at; ; i:integeri:integer; ;proc p1(var a1:atproc p1(var a1:at; a2:at)a2:at)v
15、arvar x:integerx:integer; ; a:reala:real; ;proc p2(n:integer)proc p2(n:integer)varvar m:1.50; m:1.50; x:realx:real; ;m,n,xm,n,x( (使用性出現(xiàn)使用性出現(xiàn)) )endenda1,a2,x,a,ia1,a2,x,a,i(使用性出現(xiàn))(使用性出現(xiàn))endendx,a,ix,a,i(使用性出現(xiàn))(使用性出現(xiàn))endendZ 標(biāo)號出現(xiàn)的位置:標(biāo)號出現(xiàn)的位置: 標(biāo)號聲明:標(biāo)號聲明:label label 1 1, , 2 2, , , , n n; ; 標(biāo)號定位標(biāo)號定位(語句前)
16、:語句前):i i:StatementStatement; 標(biāo)號使用(標(biāo)號使用(GotoGoto后):后):gotogoto i i; ;Z 標(biāo)號部分的語義錯(cuò)誤:標(biāo)號部分的語義錯(cuò)誤: 標(biāo)號重復(fù)聲明;標(biāo)號重復(fù)聲明; 標(biāo)號重復(fù)定位;標(biāo)號重復(fù)定位; 標(biāo)號有定位而無聲明;標(biāo)號有定位而無聲明; 標(biāo)號有使用而無定位;標(biāo)號有使用而無定位; GotoGoto語句有非法轉(zhuǎn)入。語句有非法轉(zhuǎn)入。 設(shè)置五種表:設(shè)置五種表:LDECLDEC,LDEFLDEF,LUSELUSE,SLSL,PLPL LDECLDEC表表:( (Flag, LabelFlag, Label,); LDEFLDEF、LUSELUSE表:表:(
17、 (Label)Label); SLSL表:表:(kind(kind,LDEFaddrLDEFaddr,LUSEaddrLUSEaddr) ); PLPL表:表:( (LDECaddrLDECaddr,LDEFaddrLDEFaddr) );標(biāo)號的語義分析原理標(biāo)號的語義分析原理1 1)進(jìn)入一個(gè)進(jìn)入一個(gè)過過/ /函函時(shí),將本層時(shí),將本層LDECLDEC和和LDEFLDEF的地址填入的地址填入PLPL表。表。2 2)遇到一個(gè)標(biāo)號聲明遇到一個(gè)標(biāo)號聲明“l(fā)abel label 1 1, , 2 2, , ,n n”時(shí),建立本層時(shí),建立本層LDECLDEC表(檢表(檢查重復(fù)聲明錯(cuò)誤),其中的查重復(fù)聲明錯(cuò)
18、誤),其中的FlagFlag標(biāo)志均設(shè)置為標(biāo)志均設(shè)置為0 0。3 3)遇到定位性標(biāo)號遇到定位性標(biāo)號“:Statement:Statement”時(shí):時(shí):l檢查在檢查在LDECLDEC表中有無表中有無 ,若無則表示無標(biāo)號聲明錯(cuò)誤;,若無則表示無標(biāo)號聲明錯(cuò)誤;l若有,則檢查其若有,則檢查其FlagFlag位,若是位,若是1 1,則有重復(fù)定位錯(cuò)誤;,則有重復(fù)定位錯(cuò)誤;l若若Flag=0Flag=0,令其,令其FlagFlag位為位為1 1,并將,并將 填入填入LDEFLDEF表中;表中;l查看查看LUSELUSE表,若其中有表,若其中有則將其刪除掉。則將其刪除掉。4 4)進(jìn)入一個(gè)進(jìn)入一個(gè)結(jié)構(gòu)語句結(jié)構(gòu)語句時(shí),將本語句的時(shí),將本語句的LDEFLDEF和和LUSELUSE表位置填表位置填入入SLSL表。表。5 5)遇到一個(gè)遇到一個(gè)“gotogoto ” 時(shí):時(shí):l查看查看LDEFLDEF表,看其中是否有表,看其中是否有;l若無,將填入若無,將填入LUSELUSE表。表。6 6)退出一個(gè)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 門窗店合作合同范本
- 2025至2030年中國液位控制計(jì)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國海產(chǎn)品包裝袋數(shù)據(jù)監(jiān)測研究報(bào)告
- 售房合同和定金合同范本
- 直播免責(zé)合同范本
- 2025年02月貴州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院公開招聘25人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 臨時(shí)網(wǎng)絡(luò)編輯合同
- 廣告播出合同范本
- 2025至2030年中國三丁基甲基氯化銨數(shù)據(jù)監(jiān)測研究報(bào)告
- 圖文駐場服務(wù)合同范本
- 火電機(jī)組整套啟動前安全技術(shù)交底卡
- 菲斯特轉(zhuǎn)子秤的
- 藥學(xué)專業(yè)教學(xué)資源庫建設(shè)申報(bào)書
- 解讀《泰州市市區(qū)城市排水管理辦法》
- 人教版五年級下冊口算題大全(全冊齊全)
- 林則徐課件完整版
- 旅行社運(yùn)營實(shí)務(wù)電子課件 6.1 初涉旅行社管理
- 電力承裝安全生產(chǎn)安全安全培訓(xùn)制度完整優(yōu)秀版
- 2020年交安A、B、C證(公路)考試題庫1088題(含答案)
- GB/T 5532-2008動植物油脂碘值的測定
- GB/T 29286-2012紙漿保水值的測定
評論
0/150
提交評論