歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

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

  • 資源ID:14279514       資源大小:271.51KB        全文頁數(shù):26頁
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

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

語義分析和符號表,主要內(nèi)容: 語義分析概述(必要性、功能、描述方法) 符號表 類型表達式 聲明和程序體的語義分析,語義分析的必要性,語法和語義的區(qū)別; 語法:關(guān)于什么樣的字符串才是該語言 在組成結(jié)構(gòu)上合法的程序的法則。 語義:關(guān)于結(jié)構(gòu)上合法的程序的意義的 法則。,語義分析的分類,語義種類 靜態(tài)語義:在編譯階段(從程序文本上)可 以檢查的語義。 動態(tài)語義:通過程序的執(zhí)行才能檢查的語 義。,語義錯誤 各種條件表達式的類型是不是boolean型? 運算符的分量的類型是否相容? 賦值語句的左右部的類型是否相容? 形參和實參的類型是否相容? 下標表達式的類型是否為所允許的類型? 變體記錄中表示情形的常量是否為合法類型? 函數(shù)說明中的函數(shù)類型和返回值的類型是否一致? VE中的V是不是變量,而且是數(shù)組類型? V.id中的V是不是變量,而且是記錄類型? id是不是該記錄類型中的域名? V中的V是不是指針或文件變量? y+f(.)中的f是不是函數(shù)名?形參個數(shù)和實參個數(shù)是否一致? p(.)語句中的p是不是過程名?形參個數(shù)和實參個數(shù)是否一致? 每個使用性標識符是否都有聲明?在同層內(nèi)有無標識符被聲明多次? 標號是否有聲明?有無重復(fù)聲明和重復(fù)定位錯誤?有無非法轉(zhuǎn)入錯誤? 子界類型中的下界和上界類型是否相容?下界是否小于等于上界?,語義分析的內(nèi)容: 類型分析; 標識符相關(guān)信息; 語義分析的功能: 檢查語義錯誤 構(gòu)造標識符屬性表(符號表) 語義分析的實現(xiàn): 與語法分析相結(jié)合,語義分析的功能圖示,語義分析,語法分析樹,TokenList,語義定義,自然語言描述規(guī)定,符號表,判定,標識符的內(nèi)部表示 類型的內(nèi)部表示 值的內(nèi)部表示,三種內(nèi)部表示,Code,標識符的內(nèi)部表示,標識符種類: 常量名、類型名、變量名、函數(shù)名、過程名、域名。 TYPE idkind=( consKind, typeKind, varKind, fieldKind, procKind,funcKind ) 內(nèi)部表示(AttributeIR): 常量: 類型: 變量: 域名*: 過函:,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 ; 設(shè)當前層數(shù)和可用offset值分別為L和0,構(gòu)造標識符 pai, vector, x, y, r 和s 的屬性表示。,類型的內(nèi)部表示,類型的種類:標準、子界、枚舉、數(shù)組、記錄、 集合、文件、指針類型等等。 TypeKind=(intTy,boolTy,charTy,realTy,enumTy, subTy,arrayTy,recordTy,setTy,fileTy,pointerTy) 內(nèi)部表示:(TypeIR) 標準類型: sub: enum: array:,Up,Low,HostType,Kind,Size,Leng,Elems,Kind,Size,ElemType,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 = 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 構(gòu)造類型的內(nèi)部表示。,值的內(nèi)部表示,非結(jié)構(gòu)類型值的內(nèi)部表示: 實型: 指針: 有序類型:整數(shù)形式,有序類型的常量表示: 整型常量:ord(N) = N 布爾常量:ord(false)=0, ord(true) = 1 字符常量:ord(C) = ASC (C) 枚舉常量:設(shè)有枚舉類型(D,A,B),則有 ord(D)=0,ord(A)=1,ord(B)=2 子界常量:設(shè)有子界類型C1.C2,則值空間 為ord(C1).ord(C2),符號表,標識符的作用: 聲明部分:定義了各種對象及對應(yīng)的屬性和 使用規(guī)則。 程序體:對所定義的對象進行各種操作。,$id,idname,Idname,AttributeIR,必要性 Token: 新表符號表(種類、類型等信息):,有關(guān)符號表的操作: 添加、作用域刪除、查詢 處理符號表的模塊: 定義符號表數(shù)據(jù)結(jié)構(gòu) 定義符號表上的操作,符號表,符號表的作用:為語義檢查和代碼生成提供 標識符的語義信息。 標識符的處理思想: 遇到定義性標識符時,在符號表中填寫 被定義標識符的符號項; 當遇到使用性標識符時,用該標識符查 符號表求得其屬性。,標識符的特點,標識符的作用域:標識符有效的最大程序段 嵌套作用域規(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,符號表的種類:全局符號表、局部符號表 原則: 進入一個局部化區(qū)時,記錄本層符號表的位置 遇到定義性標識符時,構(gòu)造其語義信息,查本層符號表,若存在,則有重復(fù)聲明錯誤,否則將語義信息填入表中 遇到一個使用性標識符時,查表(從里層到外層),查不到則有未定義標識符錯誤,否則構(gòu)造新的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 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, , n; 標號定位(語句前):i:Statement; 標號使用(Goto后):goto i; 標號部分的語義錯誤: 標號重復(fù)聲明; 標號重復(fù)定位; 標號有定位而無聲明; 標號有使用而無定位; Goto語句有非法轉(zhuǎn)入.,標號部分語義分析原理,設(shè)置五種表:LDEC,LDEF,LUSE,SL,PL LDEC表:(Flag, Label,); LDEF、LUSE表:(Label); SL表:(kind,LDEFaddr,LUSEaddr); PL表:(LDECaddr,LDEFaddr); 標號的語義分析原理 1)進入一個過/函時,將本層LDEC和LDEF的地址填入PL表; 2)遇到一個標號聲明“l(fā)abel 1, 2,n”時,建立本層LDEC表(檢查重復(fù)聲明錯誤),其中的Flag標志均設(shè)置為0; 3)遇到定位性標號“:Statement”時: 檢查在LDEC表中有無 ,若無則表示無標號聲明錯誤; 若有,則檢查其Flag位,若是1,則有重復(fù)定位錯誤; 若Flag=0,令其Flag位為1,并將 填入LDEF表中。 查看LUSE表,若其中有則將其刪除掉。,4)進入一個結(jié)構(gòu)語句時,將本語句的LDEF和LUSE表位置填入SL表; 5)遇到一個“goto ” 時: 查看LDEF表,看其中是否有; 若無,將填入LUSE表; 6)退出一個結(jié)構(gòu)化語句時: 清查本層LUSE表(若有定位則刪除該項):用本層的LUSE中標號查本層定位表,若查到,則把該項從LUSE中刪除; 作廢本層的LDEF。 7)退出一個過/函時: 清查本層LUSE表; 作廢本層的LDEC和LDEF。 8)程序結(jié)束時,清查LUSE表,若非空,則說明有標號為定位的錯誤。,

注意事項

本文(吉林大學編譯原理課件第六章.ppt)為本站會員(za****8)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


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