编译原理-第二章 一个简单的语法指导编译器-2.7 符号表
符号表:数据结构
- 定义:是一种供编译器用于保存有关源程序构造的各类信息的数据结构
- 用途:在综合阶段用于生成目标代码
- 存储信息:符号表的每一个条目中包含与一个标识符相关的信息,好比它的字符串、类型、存储位置等
- 构建:
- 符号表条目是在分析阶段由词法分析器、语法分析器和语义分析器建立并使用的
- 一个声明的做用域是指该声明起做用的那一部分程序,将为每一个做用域创建一个单独的符号表来实现做用域,例如每一个类能够拥有本身的符号表,它的每一个域和方法都在表中有一个对应的条目
- 标识符x的做用域:实际上指的是x的某个声明的做用域
- 做用域:自己是指一个或多个声明起做用的程序部分
- 最近嵌套规则:一个标识符x在最近的x声明的做用域中,即从x出现的块开始,从内到外检查各个块时找到的第一个对x的声明
- 例:
- 由于会有多个语句块嵌套在同一外围语句块中,因此将这些符号表连接起来能够造成一个树形结构

- 建立一个新符号表,包含一个名为table的散列表
- 在当前表中加入一个新的条目,散列表保存了键-值对;键是一个字符串,也能够说是一个指向字符串的引用,值是一个Symbol类的条目
- 获得一个新的标识符的条目,从当前块的符号表开始搜索连接符号表,返回一个符号表条目或Null
- 使用:
- 做用:从效果上看,是将信息从声明的地方传递到实际使用的地方
- 例:
参考——《编译原理(第二版)》spa
欢迎关注本站公众号,获取更多信息