第9章符号表√.pptVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章符号表√.ppt

第9章 符号表 教学内容: 9.1 符号表的作用和地位 9.2 符号的主要属性及作用 9.3 符号表的组织 9.4 符号表的管理 9.5 本章小结 教学方式: 讲授式+启发式+自学式 教学目的: 要求掌握编译程序的组成部分之一符号表管理的基本方法。 教学重点: 符号表的作用与内容 教学难点: 符号表的内容 教学时数: 2学时 9.1 符号表的作用和地位 在编译程序中符号表用来存放语言程序 中出现的有关标识符的属性信息,这些信息 集中反映了标识符的语义特征属性。在词法 分析及语法分析过程中不断积累和更新表 中的信息,并在词法分析到代码生成的各阶 段,按各自的需要从表中获取不同的属性信 息。不论编译策略是否分趟,符号表的作用 和地位是完全一致的。 符号表的功能: 1、收集符号属性 2、上下文语义的合法性检查的依据 3、作为目标代码生成阶段地址分配的 依据(主要是相当地址) 9.2 符号的主要属性及作用 1、符号名 变量名、函数名、过程名等,重载信息 符号名不容许重复,唯一。 一个标识符在符号表中的位置的整数称为内部代码。 2、符号类型 int、float等,函数的类型看返回值 3、符号的存储类型 Common、Static、Auto、Regist 4、符号的作用域及可视性 Public、Private等 5、符号变量的存储分配信息 静态存储区(静态单元在整个语言程序运行过程中不可改变,如Static) 动态存储区(局部动态变量) 6、符号的其他属性 数组内情向量、结构成员信息、函数及过程的形参 9.3 符号表的组织 一、符号表的总体组织 二、符号表项的排列 三、关键字域的组织 四、其他域的组织 五、下推链域的组织 一、符号表的总体组织 1 把属性完全相同的符号组织在一起 优点:表项等长、单个表容易管理 缺点:表较多、总体管理较复杂 2 把所有符号放在一张表中 优点:相同属性处理一致、总体管理简单 缺点:表项不等长、表项复杂、空间浪费 3 根据属性相似程度进行分类组织成若干张表 二、符号表项的排列(元组) 1. 线性组织 根据扫描到的符号先后顺序建立 优点:管理简单;缺点:运行效率低 适合于较少符号的组织 2. 排序组织及二分法 将符号按名称排序(词典排序) 优点:查找迅速;缺点:算法复杂 如:搜索到新符号后,将其插入到表中, 必须采用链表组织 3. 散列组织 用hash函数将符号名映射成整数 优点:运行效率高、算法复杂度比 排序组织低 缺点:对变量表难以找到高效的 hash函数(关键) 三、关键字域的组织 标识符的内部规则(长度)是符号表关键字组织的基础和依据。 如:C语言内部变量长度最大为31个字符 可设置关键字段最大长度为32个字符(包含结束符号)。 或:考虑空间的节约(字符不等长),将名称字符串放在“关键字池”中,关键字段变为整数(指针)。 书P216图9.10 四、其他域的组织(类型相同) 1. 等长属性值域组织 是否已被定义标记(1bit) 数据类型编号(3bit) 存储类别编号(n bit) 相对存储区头的位移量(整型量) 符号之间的关系(指针、指针链) 如:函数名和它的参数之间的关系,结构 与成员之间的关系 (P217图9.11、9.12) 2. 不等长属性值域的组织 如:数组(一维、多维) 表项中存放数组信息(内情向量)的指针,内情向量存放于内情向量的空间中 五、下推链域的组织 相同的变量名具有不同的作用域,但可以同时存在。 如:同名的全局变量和局部变量,嵌套的语句块的内外层的同名变量的声明。 使用指针将它们链在一起,符号表中只存放最内层的变量,其他变量放在下推链(表)中;当扫描退出一层时,从下拉链中回推到符号表中。书P223图9.18 9.4 符号表的管理 一、符号表的初始化 二、符号的登录 三、符号的查找 四、符号表中分程序结构层次的管理 一、符号表的初始化 符号表反映了在编译过程中的某个时刻,程序正被编译的位置的状态,即此时程序中可视标识符的状态。 符号表的初始状态应该没有任何可视标识符。 符号表的初始化:就是在对语言程序开始编译的时刻,定义建立符合表的初始状态。 1 符号表的表长是渐增变化的情况 表项指针为0 2 符号表的表长是确定的情况(散列组织) 清除关键字段内容 二、符号的登录 确定登录位置(有的要建立新表项,可能涉及移动其他表项) 登录符号的名字和属性(可能要处理其他相关表) 三、符号的查找 查找的目的: 建立或确认符号的语义属性 查找算法与该符号表的组织方法密切相关。 四、符号表中分程序结构层次的管理 对于具

您可能关注的文档

文档评论(0)

2837587390 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档