編譯原理-第二章 一個簡單的語法指導編譯器-2.7 符號表
符號表:數據結構
- 定義:是一種供編譯器用於保存有關源程序構造的各類信息的數據結構
- 用途:在綜合階段用於生成目標代碼
- 存儲信息:符號表的每一個條目中包含與一個標識符相關的信息,好比它的字符串、類型、存儲位置等
- 構建:
- 符號表條目是在分析階段由詞法分析器、語法分析器和語義分析器建立並使用的
- 一個聲明的做用域是指該聲明起做用的那一部分程序,將爲每一個做用域創建一個單獨的符號表來實現做用域,例如每一個類能夠擁有本身的符號表,它的每一個域和方法都在表中有一個對應的條目
- 標識符x的做用域:實際上指的是x的某個聲明的做用域
- 做用域:自己是指一個或多個聲明起做用的程序部分
- 最近嵌套規則:一個標識符x在最近的x聲明的做用域中,即從x出現的塊開始,從內到外檢查各個塊時找到的第一個對x的聲明
- 例:
- 由於會有多個語句塊嵌套在同一外圍語句塊中,因此將這些符號表連接起來能夠造成一個樹形結構

- 建立一個新符號表,包含一個名爲table的散列表
- 在當前表中加入一個新的條目,散列表保存了鍵-值對;鍵是一個字符串,也能夠說是一個指向字符串的引用,值是一個Symbol類的條目
- 獲得一個新的標識符的條目,從當前塊的符號表開始搜索連接符號表,返回一個符號表條目或Null
- 使用:
- 做用:從效果上看,是將信息從聲明的地方傳遞到實際使用的地方
- 例:
參考——《編譯原理(第二版)》spa
歡迎關注本站公眾號,獲取更多信息