编译原理教程第三版教学课件作者胡元义全书第章.pdfVIP

编译原理教程第三版教学课件作者胡元义全书第章.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 第八章 符号表与错误处理 8.1 符号表 8.2 错误处理 2      8.1 符 号 表 8.1.1 符号表的作用   在编译程序工作的过程中,需要不断收集、记录、查 证和使用源程序中的一些语法符号(简称为符号) 的类型和 特征等相关信息。为方便起见,一般的做法是让编译程序 在其工作过程中建立并保存一批表格,如常数表、变量名 表、数组内情向量表、过程或子程序名表及标号表等,将 它们统称为符号表或名字表。 3 符号表中的每一项包括两个部分:一部分填入名字(标识符 ) ;另一部分是与此名字有关的信息,这些信息将全面地反 映各个语法符号的属性以及它们在编译过程中的特征,诸 如名字的种属(常数、变量、数组、标号等) 、名字的类型( 整型、实型、逻辑型、字符型等) 、特征(当前是定义性出 现还是使用性出现等) 、给此名字分配的存储单元地址及与 此名语义有关的其他信息等。   根据编译程序工作阶段的不同划分,名字表中的各种 信息将在编译程序工作过程中的适当时候填入。对于在词 法分析阶段就建立符号表的编译程序,当扫描源程序识别 出一个单词(名字)时,就以此名字查找符号表; 4 若表中无此名字的登记项,就将此名字填入符号表中;至 于与此名字相关的其它信息,可视工作方便分别在语法分 析、语义分析及中间代码生成等阶段陆续填入。在语义分 析时,符号表中的信息可以用于语义检查;在代码优化时 ,编译程序则利用符号表提供的信息选出恰当的代码进行 优化;而目标代码生成时,编译程序将依据符号表中的符 号名来分配目标地址。几乎在编译程序工作的全过程中, 都需要对符号表进行频繁的访问(查表或填表) ,其耗费的 时间在整个编译过程中占有很大的比例。因此,合理地组 织符号表并相应选择好的查、填表方法是提高编译程序工 作效率的有效办法。 5   对于编译程序所用的符号表来说,它所涉及的基本操 作大致可以归纳为五类:   (1) 判断一个给定的名字是否在表中;   (2) 在表中填入新的名字;   (3) 对给定的名字访问它在表中的有关信息;   (4) 对给定的名字填入或更新它在表中的某些信息;   (5) 从表中删去一个或一组无用的项。 6 8.1.2 符号表的组织   由于处理对象的作用和作用域可以有多种,因而符号 表也有多种组织方式。按照处理对象的特点,符号表的组 织方式一般可分为直接方式和间接方式。 7    图8-1 直接组织方式的符号表 8   直接方式是指在符号表中直接填入源程序中定义的标 识符及相关信息(如图8-1所示) 。在图8-1所示的符号表中, Name(名字)栏的长度是固定的,这种栏目长度固定的表格 易于组织、填写或查找,因而是最简单的一种符号表组织 方式,它适合于规定标识符长度的程序语言。   然而,并不是所有高级语言都规定标识符的长度。如 果对标识符长度不加限制,则上述定长方式必须按最大长 度来定长,这显然浪费存储空间。因此,对不定长标识符 一般采用间接方式来组织符号表。

文档评论(0)

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

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

1亿VIP精品文档

相关文档