吉林大學編譯原理課件第六章.ppt

上傳人:za****8 文檔編號:14279514 上傳時間:2020-07-15 格式:PPT 頁數(shù):26 大?。?71.51KB
收藏 版權申訴 舉報 下載
吉林大學編譯原理課件第六章.ppt_第1頁
第1頁 / 共26頁
吉林大學編譯原理課件第六章.ppt_第2頁
第2頁 / 共26頁
吉林大學編譯原理課件第六章.ppt_第3頁
第3頁 / 共26頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《吉林大學編譯原理課件第六章.ppt》由會員分享,可在線閱讀,更多相關《吉林大學編譯原理課件第六章.ppt(26頁珍藏版)》請在裝配圖網上搜索。

1、語義分析和符號表,主要內容: 語義分析概述(必要性、功能、描述方法) 符號表 類型表達式 聲明和程序體的語義分析,語義分析的必要性,語法和語義的區(qū)別; 語法:關于什么樣的字符串才是該語言 在組成結構上合法的程序的法則。 語義:關于結構上合法的程序的意義的 法則。,語義分析的分類,語義種類 靜態(tài)語義:在編譯階段(從程序文本上)可 以檢查的語義。 動態(tài)語義:通過程序的執(zhí)行才能檢查的語 義。,語義錯誤 各種條件表達式的類型是不是boolean型? 運算符的分量的類型是否相容? 賦值語句的左右部的類型是否相容? 形參和實參的類型是否相容? 下標表達式的類型是否為所允許的類型?

2、 變體記錄中表示情形的常量是否為合法類型? 函數(shù)說明中的函數(shù)類型和返回值的類型是否一致? VE中的V是不是變量,而且是數(shù)組類型? V.id中的V是不是變量,而且是記錄類型? id是不是該記錄類型中的域名? V中的V是不是指針或文件變量? y+f(....)中的f是不是函數(shù)名?形參個數(shù)和實參個數(shù)是否一致? p(....)語句中的p是不是過程名?形參個數(shù)和實參個數(shù)是否一致? 每個使用性標識符是否都有聲明?在同層內有無標識符被聲明多次? 標號是否有聲明?有無重復聲明和重復定位錯誤?有無非法轉入錯誤? 子界類型中的下界和上界類型是否相容?下界是否小于等于上界?,語義分析的內容: 類型分析; 標

3、識符相關信息; 語義分析的功能: 檢查語義錯誤 構造標識符屬性表(符號表) 語義分析的實現(xiàn): 與語法分析相結合,語義分析的功能圖示,語義分析,,語法分析樹,TokenList,,語義定義,,自然語言描述規(guī)定,,符號表,,判定,標識符的內部表示 類型的內部表示 值的內部表示,三種內部表示,Code,標識符的內部表示,標識符種類: 常量名、類型名、變量名、函數(shù)名、過程名、域名。 TYPE idkind=( consKind, typeKind, varKind, fieldKind, procKind,funcKind ) 內部表示(AttributeIR): 常

4、量: 類型: 變量: 域名*: 過函:,Value,Kind,TypePtr,,,,,,,Forward,Kind,TypePtr,,,,,,,Off,Level,Access,Kind,TypePtr,,,,,,,HostType,Off,Kind,TypePtr,,,,,,,Size,Forward,Class,Parm,Level,Kind,TypePtr,,,,,,,,Off,例有聲明如下: CONST pai= 3.14 ; TYPE vector=ARRAY1..10 OF integer; VAR x, y : real ; r, s : vector ; 設當

5、前層數(shù)和可用offset值分別為L和0,構造標識符 pai, vector, x, y, r 和s 的屬性表示。,類型的內部表示,類型的種類:標準、子界、枚舉、數(shù)組、記錄、 集合、文件、指針類型等等。 TypeKind=(intTy,boolTy,charTy,realTy,enumTy, subTy,arrayTy,recordTy,setTy,fileTy,pointerTy) 內部表示:(TypeIR) 標準類型: sub: enum: array:,Up,Low,HostType,Kind,Size,,,,,,,Leng,Elems,Kind,Size,,,,,,,E

6、lemType,IndexType,Kind,Size,,,,,,,Kind,Size,,,,,record: FixBody: VariBody: set: file: pointer:,,VariBody,FixBody,Kind,Size,,Next,Off,FixUnitType,id,,,,,,,VariUnits,CaseUnit,,,,,,Next,VariBody,FixBody,,,,,,,,,,BaseType,Kind,Size,,,,,CompType,Kind,Size,,,,,,TypeName,Kind,Size,,,,,,例有如下的類型定義: at

7、= ARRAY 1..10 OF ARRAY1..100 OF integer; rt = RECORD x : real ; a : at; CASE u: boolean OF false:(k : integer); true:(y: real; b: boolean) END 構造類型的內部表示。,值的內部表示,非結構類型值的內部表示: 實型: 指針: 有序類型:整數(shù)形式,有序類型的常量表示: 整型常量:ord(N) = N 布爾常量:ord(false)=0, ord(true) = 1 字符常量:ord(C) = ASC (C) 枚舉常量:設有枚舉類

8、型(D,A,B),則有 ord(D)=0,ord(A)=1,ord(B)=2 子界常量:設有子界類型C1..C2,則值空間 為ord(C1)...ord(C2),符號表,標識符的作用: 聲明部分:定義了各種對象及對應的屬性和 使用規(guī)則。 程序體:對所定義的對象進行各種操作。,$id,idname,Idname,AttributeIR,必要性 Token: 新表符號表(種類、類型等信息):,有關符號表的操作: 添加、作用域刪除、查詢 處理符號表的模塊: 定義符號表數(shù)據(jù)結構 定義符號表上的操作,符號表,符號表的作用:為語義檢查和代碼生成提供 標識符的語

9、義信息。 標識符的處理思想: 遇到定義性標識符時,在符號表中填寫 被定義標識符的符號項; 當遇到使用性標識符時,用該標識符查 符號表求得其屬性。,標識符的特點,標識符的作用域:標識符有效的最大程序段 嵌套作用域規(guī)則:當存在標識符的嵌套聲明時,最近定義的屬性為標識符的當前屬性 局部化單位:允許有聲明的程序段,,,,P:,Var x ,y,z,,,,Var x,m,n,x:=1; m:=x+1;,y:=x+1;,x:=0;,Q:,局部化區(qū)入口,Proc p( Func f( 形式過/函 p( f( Record begin,符號表的種類:全局符號表、局部符號表 原則: 進入一個局

10、部化區(qū)時,記錄本層符號表的位置 遇到定義性標識符時,構造其語義信息,查本層符號表,若存在,則有重復聲明錯誤,否則將語義信息填入表中 遇到一個使用性標識符時,查表(從里層到外層),查不到則有未定義標識符錯誤,否則構造新的TOKEN 退出一個局部化區(qū)時,作廢本層符號表,標識符處理的原則,符號表的實現(xiàn),用局部符號表實現(xiàn) proc p:x,y,z proc p1:x,y1,z1 proc p2:y y,z x,y1,z1,y proc p3:z,a x,y,a x,z,,,,,,,,,,,,,符號表的實現(xiàn),用全局符號表實現(xiàn) proc p0:x,y proc p1:x,z y proc p2:x1,y1

11、 y x,z,,,,,,,,,,語義分析例子,program p() type at=array1..100 of array1..10 of inteter var x:real; a:at; i:integer; proc p1(var a1:at; a2:at) var x:integer; a:real; proc p2(n:integer) var m:1..50; x:real; m,n,x(使用性出現(xiàn)) end a1,a2,x,a,i(使用性出現(xiàn)) end x,a,i(使用性出現(xiàn)) end,,,,,,,,,,標號的語義分析,標號出現(xiàn)的位置: 標號聲明:label 1, 2, ,

12、 n; 標號定位(語句前):i:Statement; 標號使用(Goto后):goto i; 標號部分的語義錯誤: 標號重復聲明; 標號重復定位; 標號有定位而無聲明; 標號有使用而無定位; Goto語句有非法轉入.,標號部分語義分析原理,設置五種表:LDEC,LDEF,LUSE,SL,PL LDEC表:(Flag, Label,); LDEF、LUSE表:(Label); SL表:(kind,LDEFaddr,LUSEaddr); PL表:(LDECaddr,LDEFaddr); 標號的語義分析原理 1)進入一個過/函時,將本層LDEC和LDEF的地址填入PL表; 2)遇到

13、一個標號聲明“l(fā)abel 1, 2,,n”時,建立本層LDEC表(檢查重復聲明錯誤),其中的Flag標志均設置為0; 3)遇到定位性標號“:Statement”時: 檢查在LDEC表中有無 ,若無則表示無標號聲明錯誤; 若有,則檢查其Flag位,若是1,則有重復定位錯誤; 若Flag=0,令其Flag位為1,并將 填入LDEF表中。 查看LUSE表,若其中有則將其刪除掉。,4)進入一個結構語句時,將本語句的LDEF和LUSE表位置填入SL表; 5)遇到一個“goto ” 時: 查看LDEF表,看其中是否有; 若無,將填入LUSE表; 6)退出一個結構化語句時: 清查本層LUSE表(若有定位則刪除該項):用本層的LUSE中標號查本層定位表,若查到,則把該項從LUSE中刪除; 作廢本層的LDEF。 7)退出一個過/函時: 清查本層LUSE表; 作廢本層的LDEC和LDEF。 8)程序結束時,清查LUSE表,若非空,則說明有標號為定位的錯誤。,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!