版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 符號表8.1 符號表的作用和地位8.2 符號表項結構及對符號表的操作8.3 符號的主要屬性及作用8.4 符號表的組織8.5 符號表項的排列8.6 分程序結構的符號表8.7 表結構的組織管理8.8 PASCAL符號表結構8.1符號表的作用和地位1.符號表的地位 符號表中所登記的信息在編譯的不同階段都要用到。(1)語義檢查的依據(jù)在語義分析中,符號表所登記的內容將用于語義檢查(如檢查一個名字的使用和原先的說明是否一致)和產生中間代碼。(2)目標代碼生成階段地址分配的依據(jù)在目標代碼生成階段,當對符號名進行地址分配時,符號表是地址分配的依據(jù)。(3)其他對一個多遍掃描的編譯程序,不同遍所用的符號表
2、也往往各有不同。因為每遍所關心的信息各有差異。2.符號表的作用在編譯程序中符號表用來存放語言程序中出現(xiàn)的有關標識符的屬性信息.8.2符號表項結構及對符號表的管理一、符號表項結構1、符號表通常由表項構成。2、每一表項通常分為兩部分:主欄和信息欄。3、主欄內容為標志符名,在整個程序中唯一。4、每一信息欄包含若干子欄和標志位,以記錄與標志符名相關的各種屬性信息。二、符號表的操作 在整個編譯期間,對于符號表的操作大致可歸納為五類: 對給定名字,查詢名字是否已在表中; 往表中填入一個新的名字; 對給定名字,訪問它的某些信息; 對給定名字,填寫或更新它的某些信息; 刪除一個或一組無用的項。 不同種類的表格
3、所涉及的操作往往也是不同的。上述五個方面只是一些基本的共同操作。8.2符號表項結構及對符號表的操作通常用到的屬性有:1 符號名:是每個表項的關鍵字,由它可找到每個標志符在符號表中的位置;此位置充當標識符的內部編碼。2 符號的類型:變量的類型決定相應的存儲方式和可施加的運算操作,常用于語義檢查。 3 符號的存儲類別:語義處理、檢查和存儲分配的重要依據(jù)。如C語言中的內部和外部變量可由聲明變量的語句的位置表現(xiàn)出來。4 符號的作用域及可視性:作用域只是某符號在程序中的有效區(qū)域;在PASCAL中內層變量會覆蓋外層同名變量,則外層該變量在內層不可視。這些屬性是語義處理重要依據(jù)。8.3符號的主要屬性及作用5
4、 符號變量的存儲分配信息 :根據(jù)符號變量的存儲類別定義及出現(xiàn)位置和次序確定的該變量對應的存區(qū)位置。6 符號的其它屬性 (1)數(shù)組內情向量 含有數(shù)組的維數(shù),各維上下界,元素類型,存儲首地址,C值等。 (2)記錄結構型的成員信息 含有元素屬性和排列次序等 (3)函數(shù)及過程的形參 含有參數(shù)個數(shù)、排列次序和參數(shù)的屬性等。8.3符號的主要屬性及作用8.4 符號表的組織 按照處理對象的特點,符號表的組織方式通??煞譃椋褐苯臃绞胶烷g接方式。1、直接方式: 把語言中所有符號都組織在一張符號表中。組成一張包括了所有屬性的龐大的符號表,這種符號表的各欄長度固定,結構簡單,方便填寫和查找。2、間接方式:對于可變長標
5、志符,需用間接方式組織符號表。把屬性種類完全相同的那些符號組織在一起,構造出表項是分別為等長的多個符號表,各符號表的主欄包含兩項:指針和整數(shù);指針指向標志符在數(shù)組中位置,整數(shù)表示標志符長度。(2) 根據(jù)標志符的種屬,如簡單變量、數(shù)組、過程等,為同一種屬的標志符建一張表,如常數(shù)表、變量名表、過程名表等等。3、信息欄的組織方式固定信息內容、信息地址8.4 符號表的組織4、例 SUBROUTINE INCWAP(M,N)10 KM1 MM4 NK RETURN END 經編譯頭三階段后所產生的主要表格有:符號名表SNT、常數(shù)表CT、入口名表ENT、標號表LT和四元式表QT 8.4 符號表的組織 符號
6、名表SNT NAME INFORMATION(1)M 啞元,整數(shù),變量(2)N 啞元,整數(shù),變量(3)K 整數(shù),變量 8.4 符號表的組織4、例 常數(shù)表CT 值(VALUE) (1) 1 (2) 4 入口名表ENT NAME INFORMATION(1)INCWAP 二目子程序,入口QT(1)/*記錄入口名INCWAP的入口地址 標號表LT LABLE INFORMATION(1)10 QT(4)/*記錄了標號10對應的四元式序列號8.4 符號表的組織四元式表QTOPR AGR1 AGR2 RESULTLINKactpar INCWAP 1 Mactpar INCWAP 2 N + M 1 K
7、 + N 4 M + K N paract INCWAP 1 M paract INCWAP 2 N reto8.4 符號表的組織8.5符號表項的排列 符號表作為一個多元組,表中元組的排列組織是構造符號表的重要成分。在編譯程序的整個工作過程中,符號表被頻繁地用來建立表項,找查表項,填充和引用表項的屬性。因此表項的排列組織對該系統(tǒng)運行的效率起著十分重要的作用。在編譯程序中,符號表項的組織傳統(tǒng)上采用三種構造方法。即線性法,二分法及散列法。8.6分程序結構的符號表 對于具有分程序型結構的語言程序,不同層次分程序中定義的標識符號具有不同的作用域和不同的可視性規(guī)則。通常對于具有分程序結構的語言可用兩種方
8、式組織它們的符號表: 一是對每個分程序建立一個獨立的分表結構的符號表;一是把各分程序符號組織在一張單表結構的符號表中 1、分表結構的組織管理 基本思想: 每當編譯程序掃描到一個分程序結構開始時,為該分程序建立一張符號表,在該分程序中定義的標識符,都被登錄在該符號表中。而當編譯程序掃描到一個分程序的結束時,編譯程序釋放為該分程序所建立的符號表。這種符號表的分表結構與源程序的分程序層次結構一一對應 。8.7 表結構的組織管理基本思想: 所有分程序中定義的標識符都集中在單張符號表中。為了實現(xiàn)分程序構造中標識符的作用域和可視性規(guī)則的要求,在符號表中可設立一個屬性域用來登錄符號所在分程序的層次。 進入分
9、程序時,層次要增加一層。在退出一個分程序時,層次降低一層,且需要把符號表中,所有在退出的分程序中登錄的符號項清除。2、單表結構的組織管理8.7 表結構的組織管理 根據(jù)嵌套結構型程序設計語言(Pascal)的特點,可采用以下表結構:將其符號表設計為棧符號表,當新的名字出現(xiàn)總是從棧頂填入。查找操作從符號表的棧頂往底部查(保證先查最近出現(xiàn)的名字)。因為程序是分層的,并且一個過程結束時將釋放相應的子符號表,因此查找范圍與線性表比相對要小一些。引入一個顯示(DISPLAY)層次關系表,稱為過程的嵌套層次表。其作用是為了描述過程的嵌套層次,指出當前正在活動著的各嵌套的過程(或函數(shù))相應的子符號表在棧符號表
10、中的起始位置(相對地址)。DISPLAY表也是一個棧,棧頂指針為level。當進入一個新過程時,level增加1;每當退出一個過程時,level減1。DISPLAY(level)總是指向當前正在處理的最內層的過程的子符號表在棧符號表中的起始位置。在符號表的信息欄中引入一個指針域(previous)用以鏈接它在同一過程內的前一域名字在表中的下標(相對位置)。每一層的最后一個域名字,其previous之值為0。這樣,每當需要查找一個新名字時,就能通過DISPLAY找出當前正在處理的最內層的過程及所有外層的子符號表在棧符號表中的位置。然后,通過previous可以找到同一過程內的所有被說明的名字。8
11、.8 PASCAL符號表結構說明部分的分析與處理對每個過程說明的對象(變量,常量和過程)造名字表填寫標識符的所在層次、屬性和分配的相對位置。標識符的屬性不同時,所需填入的信息也不同。登錄信息由ENTER過程完成。8.8 PASCAL符號表結構說明部分的分析與處理(程序)說明類型的定義: object= (constant, variable,procedur) (定義純量/枚舉類型)名字表的定義 table:array0.txmax of record name:alfa; case kind:object of constant:(val:integer); variable:procedur:(level,adr,size: integer); 8.8 PASCAL符號表結構例程序說明部分為:CONST A=35,B=49;VAR C,D,E;PROCEDURE P;VAR G ;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 策劃公司前臺工作總結
- 運輸物流行業(yè)顧問工作總結
- 2024新年寄語匯編(32篇)
- 制冷技術轉讓協(xié)議書(2篇)
- 創(chuàng)業(yè)合作投資協(xié)議書(2篇)
- 2024年計算機專業(yè)實習心得體會
- 易錯點08 中國近代史時間問題-備戰(zhàn)2023年中考歷史考試易錯題(解析版)
- 地理中國的世界遺產課件中圖版選修
- 2025屆陜西省咸陽市武功縣中考生物全真模擬試題含解析
- 《公共政策過程》課件
- 房地產估計第八章成本法練習題參考
- 2023年廣東羅浮山旅游集團有限公司招聘筆試題庫及答案解析
- 《社會主義核心價值觀》優(yōu)秀課件
- DB11-T1835-2021 給水排水管道工程施工技術規(guī)程高清最新版
- 《妊娠期糖尿病患者個案護理體會(論文)3500字》
- 解剖篇2-1內臟系統(tǒng)消化呼吸生理學
- 《小學生錯別字原因及對策研究(論文)》
- 便攜式氣體檢測報警儀管理制度
- 酒店安全的管理制度
- (大潔王)化學品安全技術說明書
- 2022年科學道德與學術規(guī)范知識競賽決賽題庫(含答案)
評論
0/150
提交評論