第六章(2)符号表的管理.pptVIP

  • 8
  • 0
  • 约5.99千字
  • 约 48页
  • 2018-10-19 发布于山东
  • 举报
6.3 符号表的管理 符号表是存放标识符信息的一种表. 标识符的信息= 标识符的属性 = 标识符的语义 符号表 = 标识符的属性表 = 标识符的词典 =名字表 符号表在编译的不同阶段都要用到 在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的声明是否一致); 在产生中间代中,用于类型检查及转换; 在目标代码生成阶段,当对名字进行地址分配时,符号表是地址分配的依据; 合理地组织符号表的意义: 在编译程序工作的过程中,需要对符号表进行频繁的访问(查表和填表等操作),因此,合理地合理地组织符号表,并相应地选择好查表和填表的方法,是提高编译程序效率的重要一环。 6.3.2 符号表的组织 一、符号表的总体组织 符号表的每一项包含两部分:标识符的名字;该名字的信息。 不同类别的标识符所包含的信息是不同的。 符号表的总体组织既可以采用多表结构,也可以采用单表结构,也可以二者折中。究竟采用哪种结构并没有统一的规定,编译程序可根据实际处理语言的需要进行选择。 1、多表结构 是将属性完全相同的那些符号存放在一张符号表中,从而有常量表、类型表、变量表等。 多表结构的优点:每个符号表的属性个数和结构完全相同,各个表项是等长的,并且表项中的每个属性都是有效的,管理起来方便一致,空间效率高。 多表结构的缺点:编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度。并且对各类标识符的共同属性如类型的管理必须设置重复的运行机制。 2、单表结构 是将所有符号都组织在一张符号表中。 单表结构的优点:总体管理集中单一,且不同种类符号的共同属性可一致地管理和处理。 单表结构的缺点:由于符号属性的不同,为完整表达各类符号的全部属性必将出现不等长的表项,以及表项中属性位置交错重叠的复杂情况,极大地增加了符号表管理的复杂度。 可行的解决方法:把所有符号的可能属性作为符号表表项属性。 忧点:有助于降低符号表管理的复杂度; 缺点:对于某些类具体符号可能增加无用的属性空间,从而增加了空间开销。 二、符号表表项的排列 研究符号表项排列的意义:编译过程中,每当遇到一个名字都要查找符号表。如果发现一个新名字,或者发现已有名字的新信息,则要修改符号表,填入新名字和新信息。符号表被频繁地用来建表、查表、填充和引用表的属性,因此表项的排列组织对系统运行的效率起着十分重要的作用。 由于符号表的建立是一次性的,符号表的查找是重复性的,因此查表的方法更为重要, 对查表效率的要求决定了建表的方法。 线性组织的优点 没有空白项,存储空间效率高。 线性组织的缺点 运行效率低,特别当表项数目较大后效率就非常低。对于符号个数无法确定的情况下,无法确定符号表的总长度,但当事先能确定符号个数且个数不大(公认小于20)的情况下,使用线性组织是非常合适的。 6.3.1 符号表的建立和查找 一.符号表的初始化 在编译过程中某个时刻,符号表的状态反映了该时刻被编译的语言程序正被编译的位置的状态.具体来说主要是反映了在该时刻被编译的语言程序中可视标识符的状态. 符号表的初始化,在对语言程序开始编译的时刻,定义建立符号表的初始状态. 6.3.3 符号表的局部化处理 2.在语言程序的局部化单位中,标识符的出现分为定义性出现和使用性出现。 ⑴定义性出现的标识符:局部化单位的声明部分出现的标识符,其作用是确定该标识符的属性信息,如名字,类型,存储位置等。一个标识符在一个局部化单位只能被声明一次。 ⑵使用性出现的标识符:在语句部分出现的标识符。 一个局部化单位所建立的所有符号表表项称为该局部化单位的符号表。(局部化单位符号表的表项的存储位置不一定相邻) 一个局部化单位的符号表的有效范围是该局部化单位。 在程序的点P处,对它有效的符号表是包含点P的那些嵌套外层的局部化单位的符号表。 在点P处遇使用性出现的标识符查符号表时,只能按着由内层到外层的次序(体现标识符的可视性作用域)查在此处有效的那些局部化单位的符号表,而不访问在此无效的那些符号表,这就要求编译程序合理组织符号表,使其能够在程序的每点判断出哪些局部化单位的符号表是有效的,这就是符号表局部化处理的本质。 3.编译程序针对定义性出现和使用性出现的标识符所做的处理工作: ⑴ 针对定义性出现的标识符:首先查找当前局部化单位的符号表中有无与此同名者,若有,则报告重复定义的语义错误;若无,则将该标识符的名字及其属性填入符号表。 ⑵ 针对使用性出现的标识符:局部化单位中使用性出现的标识符可以是其所有嵌套外层中声明的标识符,所以按由内到外的次序依次查其嵌套外层的局部化单位的符号表,若有,则根据查得的属性判断对其使用是否合法;若无,则报告有使用而无声明的语义错误。 例1.( 注:

文档评论(0)

1亿VIP精品文档

相关文档