编译第9章研讨.pptVIP

  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文档。上传文档
查看更多
编译第9章研讨

理解符号表的基本概念; 理解符号表的数据结构和组织; 了解符号表的作用及生存期, 符号表的内容; 了解符号表的操作。 目录 编译过程中编译程序需要不断汇集和反复查证出现在源程序中各种名字的属性和特征等有关信息。这些信息通常记录在一张或几张符号表中。 符号表的每一项包括两部分:一部分是名字(标识符);另一部分是此名字的有关信息。每个名字的有关信息是指种属(如简单变量、数组、过程等)、类型(如整、实、布尔等)。 这些信息将用于语义检查、产生中间代码以及最终生成目标代码等不同阶段。 9.1符号表的作用和地位 1、收集符号属性。根据说明语句收集有关标识符的类型属性。在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,符号表中所登记的信息在编译的不同阶段都要用到。 2、上下文语义的合法性检查的依据。如对标识符属性在上下文中的一致性和合法性检查。 3、目标代码生成阶段地址分配的依据。通过存储类别确定分配的区域,根据变量出现的次序决定变量再某个区域中的具体位置。对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。 符号表的构成 一张符号表的每一项(或称入口包含两大栏(或称区段、字域),即名字栏和信息栏。表的格式:? 名字栏(NAME) 信息栏(INFORMATION) 第1项(入口1)? 第2项(入口2) ? … ? 第n项(入口n) ? 信息栏包含许多子栏和标志位,用来记录相应名字和种种不同属性,由于查填符号表一般是通过匹配名字来实现的,因此,名字栏也称主栏。主栏的内容称为关键字(key word)。 符号表的操作 在整个编译期间,对于符号表的操作大致可归纳为五类: ? 对给定名字,查询名字是否已在表中; ? 往表中填入一个新的名字; ? 对给定名字,访问它的某些信息; ? 对给定名字,填写或更新它的某些信息; ? 删除一个或一组无用的项。 不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。 9.2 符号的主要属性(信息)及作用 几种通常都是需要的。 1 符号名 作为标识符在表中唯一区别一般不允许重名。 对于重载可以通过参数类型、个数和返回值类型来区分。 通常把一个标识符在符号表中的位置的整数值称之该标识符的内部代码。 2 类型 定义一个标识符的基本类型或它的组合类型都是符号表中表示标识符属性的重要信息。 3 存储类别 变量存储类别的两种定义方式: 用关键字指定;如static,regist…… 根据定义变量说明在程序中的位置来决定;如全局,局部 区分符号存储类别属性是编译过程语义处理、检查和存储分配的重要依据。 变量存储类别还决定了变量的作用域、可视性和它的生命期等问题。 4 作用域及可视性 作用域即变量起作用的范围或可以出现的场合。 在变量的作用域中该变量是可以引用的,这就是变量可视性 的作用域规则。 除了作用域外,以下两种情况也要影响一个变量的可视性 : 函数的形式参数 分程序结构 5 存储分配信息 根据存储类别及它们出现的位置和次序来确定每个变量的具体位置。 有静态存储区和动态存储区。 6 其它属性 数组内情向量 记录结构型的成员信息 函数及过程的形参 9.3 符号表的组织 一、总体组织 1: 把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表 。 优点:每个符号表的属性个数和结构完全相同。空间效率高。 缺点:同时管理若干个不同的符号 表,增加了总体管理的工作量和复杂性。 2、 把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表 。 优点:整体管理集中,单一,管理一致。 缺点:增加了空间开销。 3、折衷方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。 在管理复杂性和空间效率方面都取得折中的效果。 符号表举例 编译程序按名字的不同种属分别使用许多符号表,如常数表、变量名表、过程名表等等。 SUBROUTINE INCWAP(M,N) 10 K=M+1 M=M+4 N=K RETURN END 经编译头三阶段后所产生的主要表格有:符号名表SNT、常数表CT、入口名表ENT、标号表LT和四元式表QT 符号名表SNT ? NAME INFORMATION (1)M 形参,整数,变量 (2)N 形参,整数,变量 (3)K 整数,变量 入口名表ENT ?

文档评论(0)

有一二三 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档