類型的語義表示_第1頁
類型的語義表示_第2頁
類型的語義表示_第3頁
類型的語義表示_第4頁
類型的語義表示_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、類型的語義表示第1頁,共42頁,2022年,5月20日,8點29分,星期二9.1 類型的語義表示 標識符的處理主要包括語義代碼化、作用域處理、符號表構造、單元分配等工作。 單詞是最小的語義單位。 第2頁,共42頁,2022年,5月20日,8點29分,星期二一、符號表的作用 表 格 管 理 錯 誤 處 理 詞法分析中間代碼生成 語法分析中間代碼優(yōu)化目標代碼生成 源程序 目標程序第3頁,共42頁,2022年,5月20日,8點29分,星期二在整個編譯階段都離不開符號表。二、符號表的內容 Pascal0有以下幾種類型:整 型:integer實 型:real布爾型:boolean 數組型:ARRAYN1

2、N2OF T 記錄型:RECORD id1:T1;idn;Tn END第4頁,共42頁,2022年,5月20日,8點29分,星期二類型表TYPEL結構形如: TYPELtp: TCLASS TPOINT 種類部分指針第5頁,共42頁,2022年,5月20日,8點29分,星期二TCLASS: i r b a d 整型實型布爾型數組型記錄型 TCLASS部分結構如下: 第6頁,共42頁,2022年,5月20日,8點29分,星期二 數組信息表 AINFL的結構形如: AINFLap: LOW UP CTP CLEN 下界上界指針類型的長度第7頁,共42頁,2022年,5月20日,8點29分,星期二記

3、錄信息表 RINFL的表項結構形如: RINFLrp:IDE OFF FTP 域名部分區(qū)距部分FTP是域類型部分第8頁,共42頁,2022年,5月20日,8點29分,星期二 一個記錄類型要占幾個RINFL表項,不同記錄類型所占表項個數不一,而在表項中沒有鏈接部分,因此在不同記錄的RINFL表之間可放置一條空項,以表示記錄類型的RINFL表中的結束。 第9頁,共42頁,2022年,5月20日,8點29分,星期二綜上所述,我們有: TYPEL表 integer:i nilreal: r nilboolean: b nil aarray:AINFL drecord:RINFL第10頁,共42頁,20

4、22年,5月20日,8點29分,星期二設一記錄類型的RINFL表為 :rp: id1 Off1 tp1id2 Off2 tp2 idn Offn tpn 假定integer,real,boolean為標準類型,其地址部分分別為itp,rtp,btp。 Leng(itp)=Leng(rtp)=Leng(btp)=1第11頁,共42頁,2022年,5月20日,8點29分,星期二例1:設有數組類型ARRAY110 OF ARRAY 15 OF integer 則其內部表示如下圖所示。 AINFLTYPELtp:aTCLASSTPOINTLOW UP CTP CLEN1 10 5a1 5 itp 1第

5、12頁,共42頁,2022年,5月20日,8點29分,星期二例2:記錄類型RECORD u:integer; a:ARRAY110 OF boolean; r:RECORD x,y:real END END 則表示如下圖所示。 drtp:TCLASSTPOINTu 0 itpa 1 atpr 11 rtpatp:aTCLASSTPOINTAINFL表1 10 btp 1第13頁,共42頁,2022年,5月20日,8點29分,星期二drtp:TCLASSTPOINTx 0 rtpy 1 rtp第14頁,共42頁,2022年,5月20日,8點29分,星期二9.2 標識符的語義表示 程序中標識符的出

6、現分為定義性的和使用性的。 標識符的定義部分確定標識符的語義,它主要包括種類、類型、地址等等內容。 標識符語義的內部表示稱為機內符(機器內部符號)或語義字。 第15頁,共42頁,2022年,5月20日,8點29分,星期二 在我們的PASCAL0語言中,標識符的種類有: 常量種類類型種類變量種類實在變量 賦值形參變量 引用形參變量 賦值形參變量 過函種類實在變量 第16頁,共42頁,2022年,5月20日,8點29分,星期二 標識符語義字的一種結構:ITYPE ICLASS IADDR類型部分種類部分地址部分第17頁,共42頁,2022年,5月20日,8點29分,星期二 ICLASS的具體結構如

7、下: ICLASS:c t v p d f r常量類型變量過函域名種類形參引用型形參第18頁,共42頁,2022年,5月20日,8點29分,星期二 從實際實現的角度來說,ICLASS的上述結構是很不經濟的,因為如果用編碼方法,三個二進位就夠了。但上述結構直觀、便于描述,因此還是采用這種結構。 IADDR部分的具體意義依賴于ICLASS內容。 1. 若ICLASS.c=1,則IADDR是CONSL表地址。 第19頁,共42頁,2022年,5月20日,8點29分,星期二2.若ICLASS.t=1,則IADDR是類型長度3.若ICLASS.v=1.則IADDR是形如: 的抽象地址,其中LEVEL 是

8、層數,OFF是區(qū)距部分。4.若ICLASS.d=1 ,則是域類型長度5.若ICLASS.p=1,則IADDR是過函信息表PFINFL的地址,該表的表項結構如下: LEVEL OFF第20頁,共42頁,2022年,5月20日,8點29分,星期二LEVEL OFF NOFF MOFF FN ENTRY PARAMS 層數區(qū)距DISSPLAY表的區(qū)距參數個數子程序入口地址參數處理完臨時變量時的第一個可用OFF值第21頁,共42頁,2022年,5月20日,8點29分,星期二標識符的語義字內容如下圖所示常量:ITYPE ICLASS ADDRtp cCONSL 類型:tp t lengtp v l of

9、f變量:域名: tp d leng過函:tp pPFINFL 第22頁,共42頁,2022年,5月20日,8點29分,星期二例子:設有PASCAL過程說明段:PROCEDURE p(VAR x:real; y:boolean);CONST pai=3.14;TYPE arr=ARRAY110 OF integer;VAR m:integer; a:arr;FUNCTION f(Z:real;FUNCTION G(U,W:real):real;K:integer):integer;BEGINENDBEGINEND第23頁,共42頁,2022年,5月20日,8點29分,星期二TYPE CLASS

10、ADDR pfinfp1pp:24rtp v f rx:25btp v fy:rtp cpai:10ainfp tarr:2offmitp vm: 各標識符的語義字分別如下圖所示第24頁,共42頁,2022年,5月20日,8點29分,星期二pfinfp2itppf:34fvrtpZ:pfinfp3frtppG:37fvitpK: 實在過函標識符的OFF值為3,第一個形參的OFF值為4,ainfp表示AINFL表的一表項地址如下圖: 2offaainfp va:第25頁,共42頁,2022年,5月20日,8點29分,星期二 AINFLainfp= 1itp101Pinfp1 如所示:PFINFL

11、 PARINFL PARAMS ENTRY FN MOFF NOFF OFF LEVEL 2631SEMAN(y) SEMAN(x) 其他的情況類似第26頁,共42頁,2022年,5月20日,8點29分,星期二9.3 符號表的組織一、符號表的結構 符號表記為SYMBL,它是標識符的語義表,在語義學中,把這種表稱為環(huán)境。SYMBL表項的結構如下: SYMBLi: IDENT SEMAN 標識符部分語義字部分第27頁,共42頁,2022年,5月20日,8點29分,星期二二、定義性標識符 1.CONST Pi=3.14 2.TYPE A 3.VAR A,B,C 4.PROCEDURE X( A,B

12、) 5.FUNCINON X( A,B ):Tname 6.RECORD X:T;X END第28頁,共42頁,2022年,5月20日,8點29分,星期二三、標識符的作用域與處理程序段:PROGRAMEND過程段:PROCEDUREEND函數段: FUNCTIONEND記錄類型: RECORDEND具體實現方法可分為兩種:真刪除法 加標記法 第29頁,共42頁,2022年,5月20日,8點29分,星期二9.4 抽象地址的處理存儲分配分為靜態(tài)分配與動態(tài)分配。 在編譯時分配的稱靜態(tài)分配。 在目標程序運行時分配的稱動態(tài)分配。 編譯程序只能確定某種結構的形式地址,稱之為抽象地址。第30頁,共42頁,2

13、022年,5月20日,8點29分,星期二抽象地址通常采用如下結構:level off 層數部分區(qū)距部分主pq0層1層2層第31頁,共42頁,2022年,5月20日,8點29分,星期二每當一個過程說明的子程序被調用時,就要給其中的變量分配一串存貯單元,稱這一串單元為該過程的一個活動區(qū)。 從第3號單元開始分配給過函名、形參等。第32頁,共42頁,2022年,5月20日,8點29分,星期二活動區(qū)的分配情況如下圖所示:管理信息形式參數2形式參數1過函名DISPLAY表局部變量臨時變量l10-2453第33頁,共42頁,2022年,5月20日,8點29分,星期二(l,off) (l,off)(l,off

14、) (l,off)(l,off) (l,off)(l,off) (l,off+size(T) (l,off) (l,off)(l,off) (l,off)實在聲明:抽象地址的變化規(guī)律可圖示如下: var id:T第34頁,共42頁,2022年,5月20日,8點29分,星期二(l,off) (l +1,4)(l,off) (l +1,4)(l,off) (l +1,4)(l,off) (l +1,4)形參入口:proc p(func p(proc P(func F(第35頁,共42頁,2022年,5月20日,8點29分,星期二(l,off) (l ,off+Size(T)(l,off) (l ,

15、off+1)(l,off) (l ,off+2)(l,off) (l ,off+2)形參聲明:Id:TVar id:Tfunc F():Tproc P():形參出口:(l,off) (l,off+l+1)第36頁,共42頁,2022年,5月20日,8點29分,星期二 其中小寫字母的標識符表示實在標識符,大寫字母的標識符則表示形參標識符。Size(T)表示類型T的長度。 在形參出口,off+l+1中的l+1表示DISPLAY表的位置。第37頁,共42頁,2022年,5月20日,8點29分,星期二 例:在下面程序中,每個對偶(l,i)表示此刻的LEVEL和OFF值。(l,10)LABEL 100,

16、200;(l,10)CONST pai=3.14;(l,10)TYPE arr=ARRAY110OF integer;(l,10)VAR x:integer;(l,11) a:ARRAY15 OF integer;(l,16) FUNCTION f(l+1,4)VAR x:real;(l+1,5) a:arr; (傳值) 第38頁,共42頁,2022年,5月20日,8點29分,星期二(l+1,15)VAR c:arr; (傳地址)(l+1,16)PROCEDURE G( );(l+1,18)FUNCTION F( ):real(l+1,20) ):real;(l+1,20+l+2) (形參結束 off+(l+1)+1 ) BEGINEND;(l,16) 第39頁,共42頁,2022年,5月20日,8點29分,星期二9.5 標識符的處理算法例子:設有非形參過程首部(層數為l)。 PROCEDURE P(X,Y:integer; VAR Z: real; PROCEDURE G(U:real;J:integer); FUNCTION F( VAR W:real; FUNCTION H(M:integer):real): bool)最后得到下列一些表的內容:第40頁,共42頁,2022年,5月20日,8點29分,星期二Scopes:SE

溫馨提示

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

評論

0/150

提交評論