第9章 符号表.pptx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 符号表?§9.1 符号表的作用 在编译程序中,符号表是用来存放程序中出现的标识符的有关信息的,它除了记录名字本身外,还记录了与该名字相关联的各种属性信息。 例如,名字的种属、名字的数据类型、为名字分配的存储单元地址以及其他有关信息。 根据对编译程序工作阶段的划分,符号表中的各种信息将在编译程序工作过程中的适当时候填入,并且在编译各阶段每当需要引用名字及相关信息时,只要查询符号表便可获得。 由于在编译程序工作的过程中,对符号表进行频繁访问所需的时间开销占编译时间不小的比例,所以合理地组织符号表,选择好的查填表方法,是提高编译效率不可忽视的问题。§9.2 符号的主要属性1. 符号名; 2. 符号的类型; 3. 符号的存储类别; 4. 符号的作用域及可视性; 5. 符号变量的存储分配信息; 6. 符号的其它属性 :数组内情向量; 记录结构型的成员信息; 函数及过程的形参。 §9.3 符号表的组织一、符号表的一般组织形式 名字域用来存放符号或标识符本身。 信息域,一般由若干个子域组成,用来记录与该项名字相对应的各种属性和特征。名字信息…………表项1表项2……表项n问题及解决方法 名字的长度、信息域的组成及长度可能使各不相同的,除非给出某种约定,否则符号表项各域的长度很难一致,因此常采用间接表技术。 例如,对于名字域:对标识符的长度有限制: 按标识符的最大允许长度来确定。对标识符的长度无限制: 另外设置一个字符串表。二、符号表的总体组织 在程序设计中,不同种类的符号的属性信息不完全相同,而且可能有很大的差异。所以,一个编译程序对符号表的总体组织可以采用不同的方法。第一种:按属性分类组织 把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表。符号属性1属性2属性3符号属性1属性2属性4 符号表分得太散,对符号表的管理和运行,增加了很大工作量,所以实际中很少采用。符号属性2属性5属性6第二种:单一组织 把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表。 符号属性1属性2属性3属性4属性5属性6 使符号完全集中,因而对符号表的管理也集中,但是对属性值相差很大的符号组织在一张表时,必然使表的结构及相应处理增加了复杂度,在实际中很少采用。第三种:折衷方式 根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。 符号属性1属性2属性3属性4符号属性1属性2属性34符号属性2属性5属性6三、符号表项的排列 在编译程序的整个工作过程中,对符号表的操作可以概括如下: 1.判定一给定的名字是否在符号表中; 2. 在符号表中填入一个新的名字; 3. 为给定的名字填入或更新它的某些信息; 4. 访问与给定名字相关的信息; 5. 从符号表中删除一个或一组名字。 在编译程序的整个工作过程中,符号表被频繁地用来建立表项,查找表项,填入和引用表项的属性。因此表项的排列组织对该系统运行的效率起着十分重要的作用。 在编译程序中,符号表项的组织传统上采用三种构造方法。即线性法,二分法及散列法。1. 线性组织:符号表中的表项按它的符号被扫描到的先后顺序建立。2. 排序组织及二分法:符号表中的表项按其符号的字符代码串的值的大小从大到小(或从小到大)排列的。关于排序表的表项建立及查找,通常采用“二分法”。3. 散列组织:散列表中的表项位置是由对表项的符号值进行某种函数操作(杂凑)所得到的函数值来确定的。三种方法的比较线性法简单直观,易于实现;低效,平均查找次数:E=n/2;适合于表项不多的表。二分法高效,平均查找次数上界:E=log2n+1;插入时需要保持表项的有序性;适合于比较固定的表。杂凑法平均查找次数与表的填满程度密切相关;要求有足够长的定长存储空间;特别适合大容量的表。§9.4 分程序结构符号表的管理符号表中分程序结构层次的管理 对于具有分程序型结构的语言程序,不同层次分程序中定义的标识符号具有不同的作用域和不同的可视性规则。 通常对于具有分程序结构的语言可用两种方式组织它们的符号表: 1. 对每个分程序建立一个独立的分表结构的 符号表; 2. 把各分程序符号组织在一张单表结构的符 号表中 。分表结构的组织管理 其基本思想是,每当编译程序扫描到一个分程序结构开始时,为该分程序建立一张符号表,在该分程序中定义的标识符,都被登录在该符号表中。 而当编译程序扫描到一个分程序的结束时,编译程序释放为该分程序所建立的符号表。这种符号表的分表结构与源程序的分程序层次结构一一对应。 单表结构的组织管理 其基本思想是,所有分程序中定义的标识符都集中在单张符号表中。为了实现分程序构造中标识符的作用域和可视性规则的要求,在符号表中可设立一个属性域用来登录符号所在分程序的层次。 进入分程序时,

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档