符號表和總復習_第1頁
符號表和總復習_第2頁
符號表和總復習_第3頁
符號表和總復習_第4頁
符號表和總復習_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、9.1 符號表的作用和地位符號表的作用和地位 名字欄名字欄 屬性欄屬性欄表項1表項n表項2 其中其中, 名字欄名字欄 : 存放標識符的具體的名字存放標識符的具體的名字 屬性欄屬性欄 : 相應標識符的各種屬性相應標識符的各種屬性 9.1 符號表的作用和地位符號表的作用和地位符號表的作用(功能):符號表的作用(功能):1. 收集符號(標識符)屬性收集符號(標識符)屬性 當標識符定義性出現時,建立符號表。如:當標識符定義性出現時,建立符號表。如: int A; float B5;則有:則有: A 簡變 整型 k B 數組 實型 0:1: 名字欄名字欄 種類種類 類型類型 地址地址 0 4 5 1 C

2、=0 float B=k+1 內情向量內情向量2. 上下文語義的合法檢查的依據上下文語義的合法檢查的依據當標識符引用性出現時,查符號表。如:當標識符引用性出現時,查符號表。如: int i,a10 ; /定義性出現定義性出現 extern float i; /引用性出現引用性出現 ai; /引用性出現引用性出現則有:則有: i 簡變 整型 外部 k a 數組 整型 外部 0 1名字名字 種類種類 類型類型 存儲類存儲類 地址地址 0 9 10 1 C=0 int a=k+1 內情向量內情向量又如:又如: int i 3,5 ; /定義性出現定義性出現 float i 4,2; /定義性出現定義

3、性出現 int i 3,5 ; /定義性出現定義性出現 則后兩次定義均為重復性定義:則后兩次定義均為重復性定義:即:在填表之前首先要查表。即:在填表之前首先要查表。 內情向量內情向量 i 數組 整型 自動 0 1名字名字 種類種類 類型類型 存儲類存儲類 地址地址 0 2 3 0 4 5 2 C=0 int i=k 依據是:依據是:(1) 相對地址(位置相對地址(位置/序號)序號) (2) 各存儲區大小各存儲區大小 (3) 確定存儲區區域,以確定存儲區區域,以C語言為例:語言為例: 公共區公共區(extern): 各文件的函數均可訪問的外部存儲區各文件的函數均可訪問的外部存儲區 文件靜態區文件

4、靜態區(extern static): 本文件的函數可訪問的外部本文件的函數可訪問的外部 存儲區存儲區 函數靜態區函數靜態區(static): 本函數可訪問的內部靜態存儲區本函數可訪問的內部靜態存儲區 動態區動態區(auto): 本函數可訪問的內部棧式動態存儲區本函數可訪問的內部棧式動態存儲區 注:由存儲類屬性來決定注:由存儲類屬性來決定9.1 符號表的作用和地位符號表的作用和地位存儲類別:分配存儲區存儲類別:分配存儲區9.2 4. 符號的作用域及可視性符號的作用域及可視性作用域:一個符號變量在程序中起作用的范圍。一般來作用域:一個符號變量在程序中起作用的范圍。一般來 說,定義該符號的位置及存

5、儲類關鍵字決定了說,定義該符號的位置及存儲類關鍵字決定了 該符號的作用域。該符號的作用域。可視性:可用性,即在作用域范圍內可視(用),在作可視性:可用性,即在作用域范圍內可視(用),在作 用域范圍外不可視(用)。用域范圍外不可視(用)。(1) 函數的形參:作用域局部于該函數函數的形參:作用域局部于該函數. 舉例:舉例: 基本基本C 擴展擴展C int a; int a; int func(float a,int b) int func(float a,int b) a /引用形參引用形參float a a /引用形參引用形參float a :a /引用引用int a (2) 分程序結構分程序結

6、構: 塊嵌套結構塊嵌套結構舉例:舉例: int a; char a; float a; a /引用引用char a t1t2t4t3 l t1+1 a int auto 0 l+1 t2+1 a char auto 0 l+2 0 l+3 t4+1 a real auto 0 名字名字 屬性屬性 5. 符號變量的存儲分配信息符號變量的存儲分配信息存儲區:根據符號變量的存儲類屬性存儲區:根據符號變量的存儲類屬性位置位置(地址地址):根據符號的出現順序:根據符號的出現順序存儲區包括:存儲區包括:(1) 靜態存儲區(全程存儲區)靜態存儲區(全程存儲區) 靜態存儲區靜態存儲區=公共靜態區公共靜態區+局

7、部靜態區局部靜態區 以以C語言為例語言為例 公共靜態區:公共靜態區:extern 局部靜態區:局部靜態區:static 特點:特點: a. 編譯階段即可直接分配該存儲區編譯階段即可直接分配該存儲區 b. 該存儲區在程序運行的整個時期均存在該存儲區在程序運行的整個時期均存在目目標標程程序序區區靜靜態態區區 (2) 動態存儲區(臨時存儲區)動態存儲區(臨時存儲區) 以以C語言為例語言為例 動態存儲區動態存儲區: auto 或或 regist(當寄存器不夠用時當寄存器不夠用時) 特點:特點:a. 編譯階段,給出存儲方案且產生進行單元分配編譯階段,給出存儲方案且產生進行單元分配 的目標程序段,目標運行

8、時由該段程序負責進的目標程序段,目標運行時由該段程序負責進 行單元分配。行單元分配。 b. 該存儲區在程序運行時期時有時無,即在其作該存儲區在程序運行時期時有時無,即在其作 用域內有,在其作用域外無用域內有,在其作用域外無例如:對于函數編譯的結果可圖示如下:例如:對于函數編譯的結果可圖示如下: 一個函數對應的目標程序一個函數對應的目標程序單元分配單元分配目標程序段目標程序段函數執行部分對應的目標程序段函數執行部分對應的目標程序段舉例:對于如下舉例:對于如下C的的auto變量變量 int a; float b; struct cc int d; float e; c , s; 標識符標識符 位置

9、位置 a 0 b 2 d 0 e 2 c 6 s 12 6. 符號的其他屬性符號的其他屬性其他屬性包括:其他屬性包括:(1) 數組內情向量數組內情向量(2) 記錄結構型的成員信息記錄結構型的成員信息 例:有如下結構類型及變量例:有如下結構類型及變量 struct int x; char y; flout z; A; 則有:則有: 名字欄名字欄 種類種類 類型類型 地址地址 A 對象 結構 成員信息表成員信息表成員名 類型 位置 x int 0 y char 2 z float 3 (3) 函數及過程的形參函數及過程的形參例:有如下函數聲明例:有如下函數聲明 int f (int x,char

10、y, float z) 則有:則有: 名字欄名字欄 種類種類 類型類型 地址地址 f 函數 整形 函數信息表函數信息表 3 N 形參個數形參個數活動區長度活動區長度入口地址入口地址 形參表首址形參表首址形參表形參表Attrib(x)Attrib(y)Attrib(z)10.1 數據空間的三種不同使用方法和管理方法數據空間的三種不同使用方法和管理方法數據空間的使用和管理方法分成兩類三種:數據空間的使用和管理方法分成兩類三種:一、一、二、二、10.2 棧式存儲分配的實現棧式存儲分配的實現局部變量局部變量機器狀態信息機器狀態信息存取鏈存取鏈控制鏈控制鏈實參實參返回地址返回地址 局部量區局部量區形式單

11、元形式單元返回地址返回地址控制鏈(老控制鏈(老SP)SPTOPQ的活動的活動 記錄記錄Q的活動的活動 記錄記錄R的活動的活動 記錄記錄R2的活的活動記錄動記錄Q的活動的活動 記錄記錄R1的活的活動記錄動記錄局部量區局部量區DISPLAY表表形式單元形式單元返回地址返回地址控制鏈(老控制鏈(老SP)SPTOP:動態鏈動態鏈:靜態鏈靜態鏈R的的DISPLAY表表Q的的DISPLAY表表P的的DISPLAY表表設有如下設有如下C函數函數struct T int x; flout z; ;fun() int a,b; strct T s; float c,d10; 試構造基于層次結構的符號表試構造基于

12、層次結構的符號表補充作業:補充作業:總復習內容 一、概念題一、概念題 選擇填空(單項選擇)選擇填空(單項選擇) 參見參見WORD文檔文檔 二、文法和語言二、文法和語言 1. 文法的基本概念文法的基本概念 包括:什么是文法?文法的作用、特點和種類等包括:什么是文法?文法的作用、特點和種類等 2. 文法構造文法構造 給定語言構造文法(給定語言構造文法(2型、型、3型)型) 給定文法識別語言給定文法識別語言 L(G) 3. 文法應用文法應用 最左推導最左推導 最右(規范)推導且能夠指出歸約的句柄最右(規范)推導且能夠指出歸約的句柄 構造語法樹且求其短語、簡單短語和句柄構造語法樹且求其短語、簡單短語和句柄 4. 文法分析和變換文法分析和變換 刪除空產生式、刪除空產生式、提取公因子、消除左遞歸提取公因子、消除左遞歸三、詞法分析 1. 詞法分析的基本概念 詞法分析的任務、加工的對象和結果 2. 實現技術 正則文法(3型文法)、正則式與正則集 正則式的構造、正則文法到正則式的轉換 有限自動機FA 有限自動機構造 正則式到FA、3型文法到FA、FA到3型文

溫馨提示

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

評論

0/150

提交評論