第09章符号表.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  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文档。上传文档
查看更多
第09章符号表

第9章 符号表 9.1符号表的作用和地位 9.2符号的主要属性及作用 9.3符号表的组织 9.4符号表的管理 9.5PL/0编译器中的符号表管理 9.1 符号表的作用和地位 收集有关标识符的属性信息 符号表中所登记的信息在编译的不同阶段都要用到。 语义检查的依据 在语义分析中,编译程序根据说明信息收集有关标识符的属性登录到符号表中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。 目标代码生成阶段地址分配的依据 在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。 9.2 符号的主要属性及作用 下列几种符号属性信息通常都是需要的: 1 符号名 2 符号的类型 3 符号的存储类别 4 符号的作用域及可视性 5 符号变量的存储分配信息 6 符号的其它属性 (1)数组内情向量 (2)记录结构型的成员信息 (3)函数及过程的形参 在整个编译期间,对于符号表的操作大致可归纳为五类: ? 对给定名字,查询名字是否已在表中; ? 往表中填入一个新的名字; ? 对给定名字,访问它的某些信息; ? 对给定名字,填写或更新它的某些信息; ? 删除一个或一组无用的项。 不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。 9.3 符号表的组织 总体组织: 第一种: 把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表 第二种: 把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表 第三种折衷方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。 符号表项的排列 符号表作为一个多元组,表中元组的排列组织是构造符号表的重要成分。在编译程序的整个工作过程中,符号表被频繁地用来建立表项,找查表项,填充和引用表项的属性。因此表项的排列组织对该系统运行的效率起着十分重要的作用。在编译程序中,符号表项的组织传统上采用三种构造方法。即线性法,二分法及散列法。 关键字域的组织 符号表的关键字域(段)就是符号名称 等长关键字域(段)符号表 不等长关键字段符号表---采用关键字池的索引结构。 其它域的组织 等长属性值域组织 例如“数据类型”属性和符号之间的“关系”属性 不等长属性值域组织 数组等类型的标识符 下推链域的组织 用于处理某些分程序结构中出现的同名标识符的情况 9.4 符号表的管理 符号表的初始化 符号的登录 符号的查找 符号表中分程序结构层次的管理 分程序结构的符号表 对于具有分程序型结构的语言程序,不同层次分程序中定义的标识符号具有不同的作用域和不同的可视性规则。通常对于具有分程序结构的语言可用两种方式组织它们的符号表: (1)对每个分程序建立一个独立的分表结构的符号表; (2)把各分程序符号组织在一张单表结构的符号表中。 分表结构的组织管理 基本思想:每当编译程序扫描到一个分程序结构开始时,为该分程序建立一张符号表,在该分程序中定义的标识符,都被登录在该符号表中。 而当编译程序扫描到一个分程序的结束时,编译程序释放为该分程序所建立的符号表。 这种符号表的分表结构与源程序的分程序层次结构一一对应 单表结构的组织管理 基本思想:所有分程序中定义的标识符都集中在单张符号表中。为了实现分程序构造中标识符的作用域和可视性规则的要求,在符号表中可设立一个属性域用来登录符号所在分程序的层次。 进入分程序时,层次要增加一层。在退出一个分程序时,层次降低一层,且需要把符号表中,所有在退出的分程序中登录的符号项清除。 说明部分的分析与处理 对每个过程说明的对象(变量,常量和过程)造名字表 填写标识符的所在层次、属性和分配的相对位置。标识符的属性不同时,所需填入的信息也不同。登录信息由ENTER过程完成。 说明部分的分析与处理(程序) 说明类型的定义: object= (constant, variable,procedur) (定义纯量/枚举类型) 名字表的定义 table:array[0..txmax] of record name:alfa; case kind:object of constant:(val:integer); variable,procedur:(level,adr,size : integer); PL/0编译程序 Table表的下标指针tx补充说明: tx : table表的下标

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档