计算机软件名称用什么符号,[计算机软件及应用]第九章符号表.ppt
[計算機軟件及應用]第九章符號表
第9章 符號表 符號表 用來存放在詞法分析過程中生成的有關標識符的語義特征屬性信息 符號表中所登記的信息在編譯的不同階段都要用到。 例如作為語義檢查的依據,目標代碼生成階段地址分配的依據等。 不同種類的表格所涉及的操作往往是不同的 符號表的操作 在整個編譯期間,對于符號表的操作大致可歸納為五類: 對給定名字,查詢名字是否已在表中 往表中填入一個新的名字; 對給定名字,訪問它的某些信息; 對給定名字,填寫或更新它的某些信息; 刪除一個或一組無用的項。 TABLE中的信息—表格管理 9.1 符號表的作用和地位 1. 收集符號屬性 在編譯程序分析標識符說明部分時,收集有關標識符的屬性,在符號表中建立符號的相應屬性信息。 例如,說明語句: int a; 符號名為a,整型變量 float b[5]; 符號名為b,浮點型一維數組 具有5個元素,下標范圍0~4 符號表的作用和地位 2.上下文語義的合法性檢查的依據 在語義分析中,符號表所登記的屬性記錄將用于語義檢查。 檢查一個名字的使用和原先的說明是否一致,即標識符屬性在上下文中的一致性與合法性。 符號表的作用和地位 例如,C語言中有變量說明: …… int i[3,5]; ‖定義說明 …… 一致性錯誤 extern float i; ‖引用說明 …… 重復定義導致的類型不一致是語義錯誤。 同一標識符的重復定義,即使類型一致,仍然是語義錯誤。 符號表的作用和地位 3. 作為目標代碼生產階段地址分配的依據 在目標代碼生成階段,當對符號名進行地址分配時,符號表是地址分配的依據。 對一個多遍掃描的編譯程序,不同遍所用的符號表也往往各有不同,因為每遍所關心的信息各有差異。 9.2 符號表的主要屬性和作用 不同的語言定義的標識符屬性不盡相同,但以下幾種通常都是需要的: 1. 符號名— 表示常量名、變量名、函數名、過程名等的標識符。用標識符在符號表中位置表示該標識符,通常是一個整數值,稱之為內部代碼。 對重名標識符,按照該標識符在程序中的作用域及可視性規則進行處理。 符號表的主要屬性和作用 2. 符號的類型— 數據類型(data type),符號的類型決定了具有該類型的數據的存儲格式 3. 符號的存儲類別 關鍵字指定:C語言中的static—靜態存儲、extern—外部變量、regist—寄存器變量 說明語句的位置指定:C語言中的函數內部指定—局部變量、外部指定—全局變量。 符號表的主要屬性和作用 4. 符號的作用域及可視性 作用域—在程序中起作用的范圍 變量可視性的作用域規則—在作用域范圍內是可引用的。 變量可視性還取決于: 函數形參:內部變量,可以和外部定義的變量重名,但應視為不同的變量。一般規定在函數內部,使用形參定義的變量。外部變量被屏蔽—成為不可視的。 符號表的主要屬性和作用 (2) 分程序結構:由于分程序可以是多層次的嵌套結構,因此在各層次的分程序中定義的與外部重名的變量,在本層次中有效。即一旦重名,在本層外定義的變量被屏蔽—成為不可視的。 為了確立符號的作用域和可視性,符號表中除符號的存儲類別外,還有該符號在程序結構上被定義的層次。 符號屬性(信息) 5. 符號變量的存儲分配信息 靜態存儲區—全局靜態區、局部靜態區 動態存儲區—局部動態變量的生存周期是定義該變量的局部范圍。 對變量存儲分配還要確定其在存儲區的具體位置的屬性信息。 出現先后次序、存儲區表頭相對位移量。 符號屬性(信息) 6. 符號的其它屬性: (1) 數組內情向量 (2) 記錄結構型的成員信息 成員所占存儲空間、排列次序 (3) 函數及過程的形參 每個函數或過程的形參個數、排列次序、形參的類型。 9.3 符號表的組織 符號表是連貫上下文進行語義檢查、語義處理、生成代碼和存儲分配的主要依據。 符號表的整體組織 表項信息組織 9.3.1 符號表的總體組織 第一種:把屬性種類完全相同的那些符號組織在一起,構造出表項是分別為等長的多個符號表 第二種:把所有語言中的符號都組織在一張符號表中。組成一張包括了所有屬性的龐大的符號表 第三種:折衷方式,根據符號屬性相似程度分類組織成若干張表,每張表中記錄的符號都有比較多的相同屬性。 9.3.2 符號表項的排列 符號表作為一個多元組,表中元組的排列組織是構造符號表的重要成分。 在編譯程序的整個工作過程中,符號表被頻繁地用來建立表項,找查表項,填充和引用表項的屬性。因此表項的排列組織對該系統運行的效率起著十分重要的作用。 符號表項的排列 在編譯程
總結
以上是生活随笔為你收集整理的计算机软件名称用什么符号,[计算机软件及应用]第九章符号表.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python高效处理文件_使用Pytho
- 下一篇: 视图的数据存放在哪里_分布式 | DBL