




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、LOGO1廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO2v 符號表作為編譯系統(tǒng)的重要設施,貫穿于符號表作為編譯系統(tǒng)的重要設施,貫穿于文法分析文法分析、檢檢查查和和語義處理語義處理的編譯全過程。的編譯全過程。v 在編譯程序中符號表用來存放源程序中出現的在編譯程序中符號表用來存放源程序中出現的有關名字有關名字的屬性信息的屬性信息,這些信息集中反映了,這些信息集中反映了名字的語義特征屬性名字的語義特征屬性。v 符號表總體結構的設計和實現下列因素有關:符號表總體結構的設計和實現下列因素有關: 源語言的復雜性(包括詞法結構、語法結構的復雜性)源語言的復
2、雜性(包括詞法結構、語法結構的復雜性) 對于編譯系統(tǒng)在時間效率和空間效率方面的要求對于編譯系統(tǒng)在時間效率和空間效率方面的要求廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO3知知識識結結構構 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO4v9.1 符號表的作用和地位符號表的作用和地位v9.2 符號的主要屬性及作用符號的主要屬性及作用v9.3 符號表的組織符號表的組織v9.4 符號表的管理符號表的管理廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO5v符號表中所登記的信息在編譯的不同階段都要用符號表中所登記的信息在編譯的不同階段都要用到。例如:在到。例如:在詞法分析詞法分析及及語
3、法分析語法分析過程中不斷更過程中不斷更新表中的信息,新表中的信息,v另外,在詞法分析到代碼生成的各階段則會從表另外,在詞法分析到代碼生成的各階段則會從表中獲取不同的屬性信息。中獲取不同的屬性信息。v符號表的功能主要歸結為以下幾個方面:符號表的功能主要歸結為以下幾個方面:v 收集符號屬性收集符號屬性 v 作為上下文語義的合法性檢查的依據作為上下文語義的合法性檢查的依據v 作為目標代碼生成階段地址分配的依據作為目標代碼生成階段地址分配的依據 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO6v編譯程序掃描說明部分收集有關標識符的屬性,編譯程序掃描說明部分收集有關標識符的屬性,并在符號表中建立符
4、號的相應屬性信息。并在符號表中建立符號的相應屬性信息。v例如例如:編譯程序分析到下述兩個說明語句:編譯程序分析到下述兩個說明語句: int A; float B5;v則在符號表中收集到關于符號則在符號表中收集到關于符號A的屬性是一個整的屬性是一個整型變量,關于符號型變量,關于符號B的屬性是具有的屬性是具有5個浮點型元個浮點型元素的一維數組。素的一維數組。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO7v通過符號表中屬性記錄可進行相應通過符號表中屬性記錄可進行相應上下文的語義檢查上下文的語義檢查。v例如:例如:在一個在一個C語言程序中出現語言程序中出現int i3,5; /定義整型數組定義
5、整型數組ifloat i4,2; /定義實型數組定義實型數組i,重定義沖突,重定義沖突int i3,5; /定義整型數組定義整型數組i,重定義沖突,重定義沖突 v從本例還可以看出,無論在后面兩句中從本例還可以看出,無論在后面兩句中i的其它屬性的其它屬性與前一句是否完全相同,只要與前一句是否完全相同,只要標識符名標識符名重定義重定義,就將,就將產生產生重定義重定義沖突的語義錯誤。沖突的語義錯誤。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO8v 每個符號變量在目標代碼生成時需要確定其每個符號變量在目標代碼生成時需要確定其在存儲分在存儲分配中的位置配中的位置(主要是相對位置)。(主要是相對位
6、置)。v 要確定一個變量在目標代碼生成時的地址,需要:要確定一個變量在目標代碼生成時的地址,需要:v 首先要確定其被分配的區(qū)域。首先要確定其被分配的區(qū)域。例如例如,在,在C語言中有語言中有公公共區(qū)、文件靜態(tài)區(qū)、函數靜態(tài)區(qū)、函數運行時的動態(tài)共區(qū)、文件靜態(tài)區(qū)、函數靜態(tài)區(qū)、函數運行時的動態(tài)區(qū)區(qū)等。等。v 其次是根據其次是根據變量出現的次序變量出現的次序。通常使用在該區(qū)域中。通常使用在該區(qū)域中相相對于區(qū)頭的相對位置對于區(qū)頭的相對位置來決定該變量在某個區(qū)中所處的來決定該變量在某個區(qū)中所處的具體位置。具體位置。cba動態(tài)區(qū)頭位置動態(tài)區(qū)頭位置廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO9v9.1 符
7、號表的作用和地位符號表的作用和地位v9.2 符號的主要屬性及作用符號的主要屬性及作用v9.3 符號表的組織符號表的組織v9.4 符號表的管理符號表的管理廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO10v信息欄信息欄包含許多子欄和標志位,用來記錄相應名包含許多子欄和標志位,用來記錄相應名字和各種屬性。字和各種屬性。v名字欄名字欄也稱主欄。主欄的內容稱為也稱主欄。主欄的內容稱為關鍵字關鍵字(key word)。)。名字欄名字欄類型欄類型欄作用域欄作用域欄v符號表包括符號表包括名字欄名字欄和和信息欄信息欄(可有多列可有多列)。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO11v在整個編
8、譯期間,對于符號表的操作大致可歸納在整個編譯期間,對于符號表的操作大致可歸納為五類:為五類:v對給定名字,對給定名字,查詢查詢名字是否已在表中;名字是否已在表中;v往表中往表中填入填入一個新的名字;一個新的名字;v對給定名字,對給定名字,訪問訪問它的某些信息;它的某些信息;v對給定名字,對給定名字,填寫填寫或或更新更新它的某些信息;它的某些信息;v刪除刪除一個或一組無用的項。一個或一組無用的項。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO12v雖然不同的語言定義的標識符屬性不盡相同,下雖然不同的語言定義的標識符屬性不盡相同,下列幾種屬性通常都是需要的:列幾種屬性通常都是需要的:v 符號
9、名符號名 v 符號的存儲類別符號的存儲類別 v 符號變量的存儲分配信息符號變量的存儲分配信息 v 符號的其它屬性符號的其它屬性:數組內情向量、記錄結構型:數組內情向量、記錄結構型的成員信息、函數及過程的形參的成員信息、函數及過程的形參 符號的類型符號的類型 符號的作用域及可視性符號的作用域及可視性廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO13v大多數語言對變量的存儲類別定義采用兩種方式:大多數語言對變量的存儲類別定義采用兩種方式:v(1) 用用關鍵字關鍵字指定。指定。v例如在例如在C語言中用語言中用static定義是屬于文件的靜態(tài)定義是屬于文件的靜態(tài)存儲變量或屬于函數內部的靜態(tài)存儲變
10、量。存儲變量或屬于函數內部的靜態(tài)存儲變量。v(2) 根據根據變量聲明在程序中的位置變量聲明在程序中的位置來決定。來決定。v例如例如在在C語言中,在函數體外定義的變量是缺省是語言中,在函數體外定義的變量是缺省是程序的程序的公共存儲變量公共存儲變量,而在函數體內定義的變量,而在函數體內定義的變量是是該函數所獨有的私有存儲變量該函數所獨有的私有存儲變量。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO14v 一個變量的作用域即一個變量的作用域即該變量可以出現的場合該變量可以出現的場合,也就是說在,也就是說在某個變量作用域范圍內該變量是某個變量作用域范圍內該變量是可引用的可引用的,這就是,這就是變
11、量可變量可視性的作用域規(guī)則。視性的作用域規(guī)則。v 但是變量可視性但是變量可視性不僅僅不僅僅取決于它的作用域,還有兩種情況取決于它的作用域,還有兩種情況影響到一個變量的可視性。影響到一個變量的可視性。v 函數的形式參數函數的形式參數:影響變量可視性的舉例:影響變量可視性的舉例int a; / 外部定義的整型變量外部定義的整型變量aint func(a, b)float a; / 函數內部定義的局部整型變量函數內部定義的局部整型變量a, int b; b = b + a; / 引用的是哪一個引用的是哪一個a? 在函數在函數func中可看中可看到的是到的是float a,看不到看不到int a。廣東
12、工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO15v 在在C語言的最新文本中增加了一個語法記號語言的最新文本中增加了一個語法記號 ,使得可,使得可以在函數內部顯式地引用外部的同名變量。以在函數內部顯式地引用外部的同名變量。v 上例可改寫如下:上例可改寫如下:v int a = 2;int func (a, b)float a = -1;int b = 1; b = b + a; b = b + a v 則則b = ?2引用引用float a引用引用int a廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO16v 分程序分程序(或復合語句或復合語句)結構結構: 影響變量可視影響變量可視性的
13、舉例性的舉例v int a; / 第一層開頭第一層開頭,定義局部整型變量定義局部整型變量achar a; / 第二層開頭第二層開頭,定義局部字符型變量定義局部字符型變量a / 第三層開頭第三層開頭float a; / 第四層頭第四層頭,定義局部實型變量定義局部實型變量a / 第四層尾第四層尾a / 引用的是哪個引用的是哪個a? / 第三層尾第三層尾 / 第二層尾第二層尾 / 第一層尾第一層尾 第二層的第二層的char a所以,在符號表屬性中需要所以,在符號表屬性中需要記錄表示記錄表示該符號在程序結構該符號在程序結構上被定義的層次上被定義的層次。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOG
14、O17v 可以根據以下因素來確定每一個變量應分配到哪一個存儲可以根據以下因素來確定每一個變量應分配到哪一個存儲區(qū),以及在該區(qū)中的具體位置:區(qū),以及在該區(qū)中的具體位置: 符號變量的存儲類別定義符號變量的存儲類別定義 這些變量出現的位置和次序這些變量出現的位置和次序v 在符號表中用在符號表中用相對區(qū)頭的位移量相對區(qū)頭的位移量表示。表示。v 例如有以下程序段例如有以下程序段(C語言語言)int a; float b; struct cc int d; float e; c; .標識標識符符類型類型位置屬位置屬性性aint0bfloat4dint0efloat4ccc8廣東工業(yè)大學計算機學院廣東工業(yè)大
15、學計算機學院LOGO18v符號表中的其它重要屬性:符號表中的其它重要屬性:v 數組內情向量數組內情向量 數組類型數組類型 維數和各維的上、下界維數和各維的上、下界 數組首地址數組首地址v 記錄結構型的成員信息記錄結構型的成員信息v 函數及過程的形參函數及過程的形參 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO19v9.1 符號表的作用和地位符號表的作用和地位v9.2 符號的主要屬性及作用符號的主要屬性及作用v9.3 符號表的組織符號表的組織v9.4 符號表的管理符號表的管理廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO20v 假設假設一個語言程序發(fā)現有下列一個語言程序發(fā)現有下列3
16、類符號及其所需之屬性:類符號及其所需之屬性:第第1類符號類符號 屬性屬性1屬性屬性2 屬性屬性3第第2類符號類符號 屬性屬性1屬性屬性2 屬性屬性4第第3類符號類符號 屬性屬性2屬性屬性5 屬性屬性6v 第一種造表方式:構造第一種造表方式:構造等長表項等長表項的多個表的多個表v 注意:各屬性注意:各屬性不一定不一定等長等長廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO21v 假設假設一個語言程序發(fā)現有下列一個語言程序發(fā)現有下列3類符號及其所需之屬性:類符號及其所需之屬性:第第1類符號類符號 屬性屬性1屬性屬性2 屬性屬性3第第2類符號類符號 屬性屬性1屬性屬性2 屬性屬性4第第3類符號類
17、符號 屬性屬性2屬性屬性5 屬性屬性6v 第二種造表方式:第二種造表方式:構造一張構造一張包括所有包括所有屬性屬性的表的表v 缺點:可能會造成缺點:可能會造成存儲空間的存儲空間的浪費浪費廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO22v 假設假設一個語言程序發(fā)現有下列一個語言程序發(fā)現有下列3類符號及其所需之屬性:類符號及其所需之屬性:第第1類符號類符號 屬性屬性1屬性屬性2 屬性屬性3第第2類符號類符號 屬性屬性1屬性屬性2 屬性屬性4第第3類符號類符號 屬性屬性2屬性屬性5 屬性屬性6v 第三種造表方式:第三種造表方式:據符號據符號屬性相似程度屬性相似程度分類造若干分類造若干個表。個
18、表。v 缺點:仍然存在可缺點:仍然存在可能的存儲空間能的存儲空間浪費浪費廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO23v 下面單獨考察下面單獨考察“第一,二類符號之符號表第一,二類符號之符號表”第第1類符號類符號 屬性屬性1屬性屬性2 屬性屬性3第第2類符號類符號 屬性屬性1屬性屬性2 屬性屬性4第第3類符號類符號 屬性屬性2屬性屬性5 屬性屬性6v 對第對第1類符號來說,類符號來說,屬性值屬性值4欄欄是冗余的,而對于第是冗余的,而對于第2類符號,類符號,則則屬性值屬性值3欄是冗余的。欄是冗余的。v 把把屬性值屬性值3和和屬性值屬性值4合并成合并成屬屬性值性值34。v 在當該表項符號
19、是屬第在當該表項符號是屬第1類時,類時,屬性值屬性值34中收集的是中收集的是屬性值屬性值3的值;若是第的值;若是第2類符號時,類符號時,屬性屬性值值34中收集的是中收集的是屬性值屬性值4的值。的值。C語言中可用語言中可用UNION來實現。這樣來實現。這樣的組織結構會增加符號表管理和運的組織結構會增加符號表管理和運行的行的復雜性復雜性,但減少了,但減少了空間開銷空間開銷。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO24造表方式造表方式第一種:第一種:構造等構造等長表項的多個表長表項的多個表第二種:第二種: 構造一張構造一張包括所有屬性包括所有屬性的表的表第三種:第三種:據符號屬性相據符號
20、屬性相似程度似程度分類造若干個表分類造若干個表優(yōu)點優(yōu)點缺點缺點對于單個表,對于單個表,管管理方便一致,空理方便一致,空間效率高。間效率高。 編譯程序將同時編譯程序將同時管理若干個表,管理若干個表,而且對各類符號而且對各類符號的共同屬性的管的共同屬性的管理必須設置重復理必須設置重復的運行機制的運行機制。 管理集中單一,不管理集中單一,不同種類符號的共同同種類符號的共同屬性可一致地管理屬性可一致地管理和處理。和處理。 由于屬性各有不同,由于屬性各有不同,為完整表達各類符為完整表達各類符號的全部屬性必將號的全部屬性必將出現不等長的表項,出現不等長的表項,以及表項中屬性位以及表項中屬性位置的交錯重疊,
21、這置的交錯重疊,這就極大地增加了管就極大地增加了管理復雜度。理復雜度。在管理復雜性及時空在管理復雜性及時空效率方面都取得折衷效率方面都取得折衷的效果。的效果。 無法制定形式化的構無法制定形式化的構造規(guī)則,依賴于符號造規(guī)則,依賴于符號表構造者的經驗。未表構造者的經驗。未必能適應編譯過程中必能適應編譯過程中出現的所有情況。出現的所有情況。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO25v 在編譯程序中,符號表項的組織傳統(tǒng)上采用三種構造方法:在編譯程序中,符號表項的組織傳統(tǒng)上采用三種構造方法:線性法線性法,二分法二分法和和散列法散列法。v 1. 線性組織線性組織v 這種方法規(guī)定符號表中表項按
22、它的符號這種方法規(guī)定符號表中表項按它的符號被掃描到的先后順序被掃描到的先后順序登錄。例如有一程序中出現符號的情況如下:登錄。例如有一程序中出現符號的情況如下:a /第第1次出現次出現ab /第第1次出現次出現ba /第第2次出現次出現ad /第第1次出現次出現dc /第第1次出現次出現cb /第第2次出現次出現bv h:表頭,是表的開始位置;:表頭,是表的開始位置;v p:符號表當前的結束位置。:符號表當前的結束位置。優(yōu)點優(yōu)點:缺點缺點:無空白項,存儲空間效率無空白項,存儲空間效率高高查找效率查找效率低下低下廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO26v2. 排序組織及二分法排序組
23、織及二分法 v符號表中的表項按其符號的字符代碼串符號表中的表項按其符號的字符代碼串(可以看成可以看成一個一個整數值整數值)的值的大小的值的大小從大到小從大到小(或從小到大或從小到大)排排列。列。優(yōu)點優(yōu)點:缺點缺點:查找效率查找效率高高造表過程需要耗費較大的造表過程需要耗費較大的代價代價(表項的表項的比較比較和和移動移動)廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO27v散列組織散列組織(哈希表哈希表)具有具有較高的運行效率,因而較高的運行效率,因而絕大多數編譯程序中的絕大多數編譯程序中的符號表采用符號表采用散列組織散列組織。v關鍵在于采用適當的關鍵在于采用適當的哈哈希函數希函數以及以及
24、沖突解決辦沖突解決辦法法。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO28v符號表符號表的的關鍵字域關鍵字域就是就是符號本身符號本身,它可以是,它可以是語言的語言的保留字保留字,操作符號操作符號或或標識符標識符(包括包括變量變量名名,函數名函數名,記錄結構標志記錄結構標志等等)。v關鍵字域的組織有兩種方式:關鍵字域的組織有兩種方式:v(1) 等長關鍵字域等長關鍵字域(段段)符號表符號表 v(2) 不等長關鍵字段符號表不等長關鍵字段符號表-采用采用關鍵字池關鍵字池的索引結構。的索引結構。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO29v為使得符號表中存放標識符的關鍵字段等長,需要
25、為使得符號表中存放標識符的關鍵字段等長,需要將關鍵字段設置為將關鍵字段設置為標識符的最大長度標識符的最大長度。v例如例如C語言的關鍵字段長度是語言的關鍵字段長度是32個字節(jié),其中前個字節(jié),其中前31個是存放名字,第個是存放名字,第32個是存放字符串結束標志。個是存放字符串結束標志。由于程序由于程序中的標識中的標識符長短不符長短不一,用等一,用等長結構會長結構會產生產生溢出溢出或或冗余冗余。凵凵 凵凵 凵凵 凵凵 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO30v如果希望既保證關鍵字段的等長,又要減少甚至如果希望既保證關鍵字段的等長,又要減少甚至消除冗余,可采用消除冗余,可采用關鍵字池的
26、索引結構關鍵字池的索引結構。 v 假設有一組假設有一組標識符標識符 anexemplerof key-wrdsfieldv 關鍵字段的組織結關鍵字段的組織結構如右圖:構如右圖:廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO31v符號表屬性域的組織,根據屬性性質大致分成兩符號表屬性域的組織,根據屬性性質大致分成兩類:類:v一類是一類是符號的屬性值符號的屬性值的的類型類型相同,并且是相同,并且是等長的等長的,則該屬性域的類型結構就可用其則該屬性域的類型結構就可用其長度長度及及類型類型來定來定義。義。v例如例如boolean,int,float等基本數據類型等基本數據類型v另一類另一類符號的屬
27、性值符號的屬性值的的類型類型相同,但相同,但不不等長等長,則,則該屬性域的定義該屬性域的定義不能不能用簡單的數據類型來定義。用簡單的數據類型來定義。v例如:例如:數組內情向量。數組內情向量。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO32v 下面我們討論一些典型的下面我們討論一些典型的等長等長屬性值域的組織。屬性值域的組織。 v (1) 表示某個符號的表示某個符號的布爾性質的屬性域布爾性質的屬性域,可用,可用1個個bit位來位來表示;也可用表示;也可用1個布爾量來表示。如個布爾量來表示。如 defined 1 /* defined true */ 表示已定義表示已定義 defined
28、0 /* defined false */ 表示尚未定義表示尚未定義符號類型符號類型3個個bit位表示位表示整數值表示整數值表示char0000short0011int0102long0113unsigned1004float1015double1116v(2) 表示表示符號的符號的數據類型數據類型可以用可以用若干個若干個bit位來位來表示;也可用表示;也可用1個整型量來表示。個整型量來表示。v以以C語言為例:語言為例:廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO33v 對于對于表示符號之表示符號之間關系的屬性間關系的屬性,可,可用用指針指針或或指針鏈指針鏈來來構造。構造。v如如函數符
29、號函數符號與它的與它的形參符號形參符號之間的關之間的關系屬性:系屬性:“函數函數-形形參參”指針域。例:指針域。例:v func1 (para1, para2, para3);v func2 () 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO34v 設有一個設有一個C語言的結語言的結構體變量結構構體變量結構:v struct tag1 memb1; memb2; struct tag2 memb3; memb4; memb5; memb6; memb7; stv; 標識標識符符結構結構定義定義結構結構-成成員域員域tag1m1m2tag2m3m4m5m6m7stv“空空”“空空”廣東工
30、業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO352v符號的某些屬性值符號的某些屬性值是是不等長不等長的,的,例如例如數組內情向量數組內情向量。v設有下列兩個數組設有下列兩個數組array1(subscrip1, subscrip2)array2(subscrip3, subscrip4, subscrip5, subscrip6)“0”值用來表示值用來表示下標到此為止下標到此為止廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO36v 在某些程序語言的結構中,分程序的分層結構允許同在某些程序語言的結構中,分程序的分層結構允許同名標識符具有的生存期發(fā)生名標識符具有的生存期發(fā)生重疊重疊,即存在
31、,即存在同名標識符同名標識符。v 為實現這種同名標識符的語義功能,符號表中需要設為實現這種同名標識符的語義功能,符號表中需要設立立下推鏈域的組織下推鏈域的組織。v 下推鏈域要求:在進入內層結構并發(fā)生下推鏈域要求:在進入內層結構并發(fā)生重名標識符定重名標識符定義義時,時,v (1) 把當前符號中外層的該符號下把當前符號中外層的該符號下推到推到下推鏈中,下推鏈中,v (2) 在符號表被下推的表項處,建立內層的同名標識在符號表被下推的表項處,建立內層的同名標識符表項。符表項。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO37v 例:例: int i ; .(1)v .v func( ) (2)v
32、 v float i; . (3)v . (4)v int i5 ;(5)v . (6)v int i;(7)v v i(8)v v .i(9)v 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO38v9.1 符號表的作用和地位符號表的作用和地位v9.2 符號的主要屬性及作用符號的主要屬性及作用v9.3 符號表的組織符號表的組織v9.4 符號表的管理符號表的管理廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO39v符號表的行為主要包括:符號表的行為主要包括:v1. 符號表的符號表的初始化初始化v2. 符號的符號的登錄登錄v3. 符號的符號的查找查找v4. 有關分程序結構的符號表層次有關
33、分程序結構的符號表層次管理管理v對符號表的這些管理除初始化之外,其它都是對符號表的這些管理除初始化之外,其它都是動動態(tài)態(tài)進行的。進行的。 廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO40v 不同組織方法的符號表有不同的初始化方法。不同組織方法的符號表有不同的初始化方法。v 符號表的表長是漸增變化的情況符號表的表長是漸增變化的情況v 只需將表尾推向表頭,表示該符號表中還沒有任何表項。只需將表尾推向表頭,表示該符號表中還沒有任何表項。v 符號表的表長是確定的情況符號表的表長是確定的情況v對這類符號表的初始化方法,需對這類符號表的初始化方法,需要將表中全部表項值清除。要將表中全部表項值清除。
34、廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO41v 一個符號表項的登錄最基本的是該符號的一個符號表項的登錄最基本的是該符號的名字名字登錄登錄。此外。此外還有關于該還有關于該名字的屬性名字的屬性的的登錄登錄。v (1) 對于對于線性方法線性方法組織的組織的符號表符號表,通常把該表的,通常把該表的尾指針尾指針p指向的表項是作為新創(chuàng)建的表項,之后將指向的表項是作為新創(chuàng)建的表項,之后將p推向下一個備推向下一個備用表項。用表項。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO42v (2) 對于二分法組織的符號表,在創(chuàng)建了新的表項后,根對于二分法組織的符號表,在創(chuàng)建了新的表項后,根據登錄符號
35、在符號表中按用二分法選定一個位置,把據登錄符號在符號表中按用二分法選定一個位置,把該位該位置以后的所有原表項置以后的所有原表項下移下移一個表項的位置,然后在一個表項的位置,然后在選定位選定位置置登錄新符號。登錄新符號。symbol kv 對于散列表,新符對于散列表,新符號的登錄是通過號的登錄是通過雜雜湊算法湊算法決定登錄表決定登錄表項的位置。項的位置。v 如果產生沖突,則如果產生沖突,則應用應用沖突解決沖突解決算法。算法。廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO43v 名字屬性大都取決于編譯程序獲得某個符號時,編譯程序名字屬性大都取決于編譯程序獲得某個符號時,編譯程序所處的所處的程
36、序掃描點的狀態(tài)程序掃描點的狀態(tài)。 v 例如例如在下面的程序段中獲取到的符號在下面的程序段中獲取到的符號a的屬性,是取決于的屬性,是取決于編譯程序掃描到編譯程序掃描到“anm,”時的有關狀態(tài)。時的有關狀態(tài)。v func(x, y)struct tag int anm, t;關鍵關鍵字域字域類型類型屬性屬性存儲類別存儲類別屬性屬性符號作用域符號作用域屬性屬性存儲分配屬存儲分配屬性性數組內情向數組內情向量屬性量屬性aintAuto(動動態(tài)存儲區(qū)態(tài)存儲區(qū))LEVEL = 1相對于相對于tag的位移量的位移量n*m的二的二維數組維數組廣東工業(yè)大學計算機學院廣東工業(yè)大學計算機學院LOGO44v 查找的一般步驟為:查找的一般步驟為:v (1) 在在保留字表保留字表和和運算符表運算符表中查找該符號是否中查找該符號是否保留字保留字或或運算符運算符。若是,轉向。若是,轉向(2),否則轉向,否則轉向(3)v (2) 把該符號轉換為保留字或運算符的內部代碼把該符號轉換為保留字或運算符的內部代碼(表示表示)。v (3) 在在標識符表標識符表中進行查找。若在查找到則表示該符號中進行查找。若在查找到則表示該符號已在符號表中登錄,檢查是否需要登錄新屬性;否則表已在符號表中登錄,檢查是否需要登錄新屬性;否則表示該符號是一個新的需要登錄的符號。示該符號是一個新的需要登錄的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券質押典當業(yè)務合同書
- 工業(yè)廠房租賃安全合同范本
- 銷售合同專業(yè)模板
- 機電安裝工程合同標準格式
- 房地產開發(fā)合同糾紛案例分析
- 兼職臨時工雇傭合同
- 農村合作社租賃合同糾紛解決策略
- 煤炭購銷長期合同范本參考
- 年度合作協(xié)議范文:標識標牌制作合同
- 綠化養(yǎng)護合同模板
- 糖尿病肌少癥
- 江蘇書記員考試歷年題庫
- 2024年浙江省中考數學試卷含答案
- 激光切割價格報價表
- 友情 創(chuàng)可貼 課件 綜合實踐活動四年級下冊
- 《冠心病病人的護理》課件
- 紅樓夢閱讀單選題100道及答案解析
- 2024年知識競賽-中小學財務管理知識考試近5年真題集錦(頻考類試題)帶答案
- 產后康復課件完整版
- 牧場物語-礦石鎮(zhèn)的伙伴們-完全攻略
- ??翟诰€測評題
評論
0/150
提交評論