第九章符号表.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章 符号表 符号表(symbol table) 用来存放在词法分析过程中生成的有关标识符的语义特征属性信息 符号表中所登记的信息在编译的不同阶段都要用到。 例如作为语义检查的依据,目标代码生成阶段地址分配的依据等。 不同种类的表格所涉及的操作往往是不同的 符号表(symbol table) Symbol table is a data structure which is employed to associate identifiers with their attributes . An identifier’s attribute consists of information relevant to contextual analysis,and is obtained from the identifier’s declaration. 符号表的操作 在整个编译期间,对于符号表的操作大致可归纳为五类: 对给定名字,查询名字是否已在表中 往表中填入一个新的名字; 对给定名字,访问它的某些信息; 对给定名字,填写或更新它的某些信息; 删除一个或一组无用的项。 TABLE中的信息—表格管理 名字 类型 层次/值 地址 存储空间 9.1 符号表的作用和地位 1. 收集符号属性 在编译程序分析标识符说明部分时,收集有关标识符的属性,在符号表中建立符号的相应属性信息。 例如,说明语句: int a; 符号名为a,整型变量 float b[5]; 符号名为b,浮点型一维数组 具有5个元素,下标范围0~4 符号表的作用和地位 2.上下文语义的合法性检查的依据 在语义分析中,符号表所登记的属性记录将用于语义检查。 检查一个名字的使用和原先的说明是否一致,即标识符属性在上下文中的一致性与合法性。 符号表的作用和地位 例如,C语言中有变量说明: …… int i[3,5]; ‖定义说明 …… 一致性错误 extern float i; ‖引用说明 …… 重复定义导致的类型不一致是语义错误。 同一标识符的重复定义,即使类型一致,仍然是语义错误。 符号表的作用和地位 3. 作为目标代码生成阶段地址分配的依据 在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。 对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同,因为每遍所关心的信息各有差异。 9.2 符号表的主要属性和作用 不同的语言定义的标识符属性不尽相同,但以下几种通常都是需要的: 1. 符号名— 表示常量名、变量名、函数名、过程名等的标识符。用标识符在符号表中位置表示该标识符,通常是一个整数值,称之为内部代码。 对重名标识符,按照该标识符在程序中的作用域及可视性规则进行处理。 符号表的主要属性和作用 2. 符号的类型— 数据类型(data type),符号的类型决定了具有该类型的数据的存储格式 3. 符号的存储类别 关键字指定:C语言中的static—静态存储、extern—外部变量、regist—寄存器变量 说明语句的位置指定:C语言中的函数内部指定—局部变量、外部指定—全局变量。 符号表的主要属性和作用 4. 符号的作用域及可视性 作用域—在程序中起作用的范围 变量可视性的作用域规则—在作用域范围内是可引用的。 变量可视性还取决于: 函数形参:内部变量,可以和外部定义的变量重名,但应视为不同的变量。一般规定在函数内部,使用形参定义的变量。外部变量被屏蔽—成为不可视的。 符号表的主要属性和作用 (2) 分程序结构:由于分程序可以是多层次的嵌套结构,因此在各层次的分程序中定义的与外部重名的变量,在本层次中有效。即一旦重名,在本层外定义的变量被屏蔽—成为不可视的。 为了确立符号的作用域和可视性,符号表中除符号的存储类别外,还有该符号在程序结构上被定义的层次。 符号属性(信息) 5. 符号变量的存储分配信息 静态存储区—全局静态区、局部静态区 动态存储区—局部动态变量的生存周期是定义该变量的局部范围。 对变量存储分配还要确定其在存

文档评论(0)

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

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

1亿VIP精品文档

相关文档