网站大量收购独家精品文档,联系QQ:2885784924

柳青《编译技术》Comp-Cha9.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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 章 符号表 9.1 符号表的作用 9.2 符号表的内容 9.3 符号表的组织 9.4 符号表的管理 本章要点 * * 9.1 符号表的作用 编译程序在词法分析到代码生成的各阶段,不断地积累和更新表中的信息,并按各自的需要从表中获取信息。符号表的功能归结为以下三个方面: 1、收集符号属性 在分析语言程序中标识符说明部分时,编译程序根据说明信息收集有关标识符的属性,并在符号表中建立符号的相应属性信息。如PL/0语言编译的符号表。 2、上下文语义的合法性检查的依据 通过符号中属性记录可检查标识符属性在上下文中的一致性和合法性。如:是否未说明就引用,说明与引用,其属性、类型是否一致。是否有重复定义。运算量间运算类型是否一致等。 * * 3、作为目标代码生成阶段地址分配的依据 源程序中的变量在目标代码生成时需要确立其在存储分配的位置(主要是相对位置)。而地址分配主要根据变量的类型,在源程序中被说明的位置。 如在第几层分程序,是静态区还是动态区等,分配其在相应数据区中的相对地址,而这些地址分配的依据都是作为变量的语义信息被收集在该变量的符号表属性中。 * * 9.2 符号表的内容 1、符号名 源程序中一个标识符可以是一个变量名、常量名、函数名或过程名,登记在符号表中,通常把一个标识符在符号表中的位置(通常是一个整数)称之为该标识符的内部代码,从而取代该标识符。 2、符号的类型信息 符号的种类:如常量、变量、数组、标号、函数或过程等,符号的类型,如整型、实型、字符型、布尔型等。 数组:应包括维数、上下界、计算下标地址时涉及的常量等,放在数组信息向量表即内情向量表中,用于确定存储分配时所占空间,确定数组元素的位置。 * * 过程或函数:应包括参数的个数、类型、排列次序等用来作调用过程的匹配处理和语义检查。 记录结构:应包括其成员的类型、个数、排列次序等信息。以便确定结构型变量应分配的空间及结构成员的位置。 3、符号变量的存储分配信息 存储类别:如全局量还是局部量,静态存储变量,还是动态存储变量等,作为存储分配的依据。 地址表示:简单变量或常量,一般是该量在数据区所占单元的绝对或相对地址。数组,是该数组在数据区中的首地址,过程或函数,是该过程或函数的分程序入口地址。 4、层次信息 对于分程序嵌套或过程嵌套结构型程序设计语言,还应包括每个标识符所属分程序(过程)的层次。 * * 9.3 符号表的组织 符号表的组织直接关系到语义功能的实现和语义处理的时空效率,关于符号表的组织可从符号表的总体组织和表项属性信息组织来分别讨论。 1、符号表的总体组织 有三种选择 第一种:按照属性完全相同的那些符号组织在一起。假设有下列三类符号及其所需之属性。 * * 第二种:把语言中的所有符号都组织在一张符号表中。 如上例,将三类符号放一张符号表中的符号表如下: 优点:总体管理集中单一。 缺点:若各表项相等,则增加了无用的属性空间,从而增加了空间开销。 若各表项不等长,则增加 了对符号表管理的复杂度。 第三种:折中方式 根据符号属性相似程度分类组织成若干张表,使管 理复杂性及时空效率方面都取得折中的效果。 * * 2、符号表项的排列 在编译程序的整个工作中,符号表被频繁地用来建立表项,找查表项,填充和引用表项的属性,因此表项的排列组织对该系统运行的效率起着十分重要的作用。 传统上采用三种构造方法: (1)线性组织 表项按它的符号被扫描到的先后顺序建立。 例如: 程序中出现 相应的符号表中表项的排列如下: 符号的情况下: …a………………… ……………………… ……………b……… …a………………… ……………d……… …c………………… ……………b……… …… 线性组织管理简单但运行效

文档评论(0)

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

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

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档