第7章符号表分析.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章符号表分析

编译原理 第7章 符号表 安庆师范学院计算机与信息学院 本章目标 解释符号表的作用 阐明符号表的内容 介绍符号表的基本操作 介绍符号表的组织结构 说明符号表的构造与查找方法 解释名字的作用范围 教学内容 7.1 符号表的作用与内容 7.2 符号表的组织与管理 7.3 名字的作用范围 7.4 本章小结 7.1 符号表的作用与内容 符号表的作用 1 符号表的内容与操作 2 1、 符号表的作用 在编译程序工作的过程中,需要不断收集、记录、查证和使用源程序中的一些语法符号(简称为符号)的类型和特征等相关信息。为方便起见,一般的做法是让编译程序在其工作过程中建立并保存一批表格,如常数表、变量名表、数组内情向量表、过程或子程序名表及标号表等,将它们统称为符号表或名字表。 语义分析时,符号表中的信息可用于语义检查;代码优化时,编译程序利用符号表提供的信息选出恰当的代码进行优化;目标代码生成时,编译程序将依据符号表中的符号名来分配目标地址。可见,几乎在编译程序工作的全过程中,都需要对符号表进行频繁地访问(查表或填表),其耗费的时间在整个编译过程中占有很大的比例。因此,合理地组织符号表并选择好的查表、填表方法是提高编译程序工作效率的有效办法。 返回 2、 符号表的内容与操作 (1)符号表的组成 一张符号表的每一项(入口)包含两大栏(区段,字域),即名字栏和信息栏。 名字(NAME) 信息(INFORMATION) …… …… 第1项(入口1) 第2项(入口2) 第n 项(入口n) …… 2、 符号表的内容与操作 (2)符号表的基本操作 对给定名字,查询此名是否已在表中(查表) 填入新名(填表) 对给定名字,访问它的信息(访表信息) 对给定名字,往表中填写或更新它的某些信息(更新) 删除一个或一组无用的项(删除) 返回 7.2 符号表的组织与管理 符号表的组织结构 1 符号表的构造与查找 2 1、 符号表的组织结构 (1)名字栏组织方式 按照处理对象的特点,符号表的组织方式一般可分为直接方式和间接方式。也按标识符的种属分别建立不同的符号表。 ①直接方式 直接方式是指在符号表中直接填入源程序中定义的标识符及相关信息。在下图所示的符号表中,名字栏的长度是固定的,这种栏目长度固定的表格易于组织、填写或查找,因而是最简单的一种符号表组织方式, 它适合于规定标识符长度的程序语言。 名字 信息 Sentence … Data … … … 1、 符号表的组织结构 ②间接方式 用一个独立的字符串数组,把所有标识符都连续存放在其中。在符号表的主栏放一个指示器和一个整数,或在主栏仅放一个指示器,在标识符前放一个整数。指示器指出标识将在字符串数组中的位置,整数代表此标识符的长度。 1、 符号表的组织结构 ③按标识符的种属建立不同的符号表 如对简单变量、数组、过程等分别建立简单变量名表、数组名表、过程名表等。例如,下面的函数: int f(int a,int b) { int c; if(ab) c=1; else c=0; return c; } (a)简单变量名表 (b)常数表 (c)函数入口名表 1、 符号表的组织结构 (2)信息栏组织方式 根据符号表名字栏的组织特点,符号表信息栏的组织方式也分为两类:固定信息内容和仅记录信息存放地址。 如果名字栏中的标识符按种属分类,则因同类标识符其基本特征一致,故可将这些信息一一记录在信息栏中。 如果符号表的名字不分种属,则由于不同种属的标识符其特征不一致,也即它们所需存储的信息不一致,因而不容易确定一个固定长度的空间来统一安排。这时,可在符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址。 1、 符号表的组织结构 例如,对数组标识符需要存储有关数组维数,每维上、下界值,数组类型及数组存放的起始地址等信息。如果将信息与名字一起全部放在符号表中,则因维数不同而使记录该信息的空间大小不易确定,因此,通常给它们另外安排一个内情向量表来记录数组的全部信息,同时在符号表的信息栏设置一指针指向内情向量的入口地址(见图8-4)。此外,对像函数名、过程名等含有较多信息且不容易规范信息长度的名字都可以采取这种办法。 返回 2、 符号表的构造与查找 符号表

文档评论(0)

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

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

1亿VIP精品文档

相关文档