编译原理-第二章 一个简单的语法指导编译器-2.7 符号表
符号表:
- 定义:是一种供编译器用于保存有关源程序构造的各种信息的数据结构
- 用途:在综合阶段用于生成目标代码
- 存储信息:符号表的每个条目中包含与一个标识符相关的信息,比如它的字符串、类型、存储位置等
- 构建:
- 符号表条目是在分析阶段由词法分析器、语法分析器和语义分析器创建并使用的
- 一个声明的作用域是指该声明起作用的那一部分程序,将为每个作用域建立一个单独的符号表来实现作用域,例如每个类可以拥有自己的符号表,它的每个域和方法都在表中有一个对应的条目
- 标识符x的作用域:实际上指的是x的某个声明的作用域
- 作用域:本身是指一个或多个声明起作用的程序部分
- 最近嵌套规则:一个标识符x在最近的x声明的作用域中,即从x出现的块开始,从内到外检查各个块时找到的第一个对x的声明
- 例:
- 因为会有多个语句块嵌套在同一外围语句块中,所以将这些符号表链接起来可以形成一个树形结构
- 创建一个新符号表,包含一个名为table的散列表
- 在当前表中加入一个新的条目,散列表保存了键-值对;键是一个字符串,也可以说是一个指向字符串的引用,值是一个Symbol类的条目
- 得到一个新的标识符的条目,从当前块的符号表开始搜索链接符号表,返回一个符号表条目或Null
- 使用:
- 作用:从效果上看,是将信息从声明的地方传递到实际使用的地方
- 例:
参考——《编译原理(第二版)》
作者:方知有
Motto: 热爱可抵岁月漫长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
所有评论和私信都会在第一时间处理,如有问题或建议,请多多赐教!
支持博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!