第9章节符号表(2学时).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 符号表的作用和地位 符号表的作用:存放程序中标识符的属性。 收集符号属性 如:符号的名称、类型、数组维数、每一维长度等 作为上下文语义的合法性检查的依据 作为目标代码生成阶段地址分配的依据 因为每个符号变量在目标代码生成阶段需要确定其在存储分配的相对位置。 9.2 符号的主要属性及作用 符号名 变量名、函数名、过程名等,重载信息 符号类型 整型、实型、字符型、布尔性、位组型等,函数的类型看返回值。还有扩充的符合数据类型:数组、记录等 类型决定了该变量的数据存储格式、可以施加的运算操作 符号的存储类型 common、static、auto、regist(寄存器变量) 符号类型属性是编译过程语义处理、检查和存储分配的重要依据;还决定了符号变量的作用域、可视性和生命周期等。 9.2 符号的主要属性及作用 符号的作用域及可视性 作用域:一个符号变量在程序中起作用的范围 可视性:变量可以出现的场合 某变量作用于范围内,该变量是可视的 函数的形参影响变量可视性(P207两个例子) 复合语句分程序结构影响变量可视性 注意public、private等 符号变量的存储分配信息 静态存储区、动态存储区 符号的其他属性 数组内情向量、结构成员信息、函数及过程的形参 9.3 符号表的组织 符号表的总体组织 符号表项的排列 关键字域的组织 其他域的组织 下推链域的组织 一、符号表的总体组织 把属性完全相同的符号组织在一起 优点:表项等长、单个表容易管理 缺点:表较多、总体管理较复杂 把所有符号放在一张表中 优点:相同属性处理一致、总体管理简单 缺点:表项不等长、表项复杂、空间浪费 根据属性相似的符号组织在一张表中 总体管理的复杂性和时空效率都取得了折衷的良好效果。 二、符号表项的排列 线性组织 根据扫描到的符号先后顺序建立 优点:管理简单 缺点:运行效率低,符号表长度不能确定 适合于较少符号的组织 ......................... ......a................. ...........b........... .....a................. .................d..... .....c................. ................b...... 符号 属性 a b d c 排序组织及二分法 将符号按名称排序(词典排序) 优点:查找迅速(二分法查找) 缺点:算法复杂 如:搜索到新符号后,将其插入到表中,须采用链表组织 散列组织及杂凑法 用hash函数将符号名映射成整数 优点:运行效率高、算法复杂度比排序组织低 缺点:对变量符号很难找到高效的hash函数 三、关键字域的组织 关键字域就是符号本身,包括保留字、操作符和标识符。 关键字域的组织: 等长关键字段符号表:P215 图9.9 关键字池组织的符号表:符号表中的关键字段为指向该关键字在池中位置的指针。P215-216 图9.10 关键字池的结构: 字符数组:符号表中的关键字段是该关键字在池中的位置; 字符串:符号表中的关键字段是指向该关键字在池中位置的指针。 四、其他域的组织 等长属性值域组织 是否已被定义标记(1bit) 数据类型编号(3bit) 存储类别编号(n bit) 相对存储区头的位移量(整型量) 符号之间的关系(指针、指针链) 如:函数名和它的参数之间的关系,结构与成员之间的关系 不等长属性值域的组织 如:数组(一维、多维) 表项中存放数组信息(内情向量)的指针,内情向量存放于内情向量的空间中 五、下推链域的组织 用于分程序结构 相同的变量名具有不同的作用域,但可以同时存在 如:同名的全局变量和局部变量,嵌套的语句块的内外层的同名变量的声明。 使用指针将它们链在一起,符号表中只存放最内层的变量,其他变量放在下推链(表)中;当扫描退出一层时,从下拉链中回推到符号表中。 9.4 符号表的管理 符号表的初始化 符号的登录 符号的查找 符号表中分程序结构层次的管理 一、符号表的初始化 符号表反映了在编译过程中的某个时刻,程序正被编译的位置的状态。 即此时程序中可视标识符的状态。 符号表的初始状态应该没有任何可视标识符。 符号表的初始化方法: 1)符号表的表长渐增变化的情况 对于线性组织和排序组织,初始表长为0,随着符号的逐步登录,表长渐增。 2)符号表的表长确定的情况 对于散列组织的符号表,表长确定。 二、符号的登录 对于不同组织的符号表,登录方法也不同 线性组织的符号表 排序组织的符号表 散列组织的符号表 三、符号的查找 查找的目的 建立或确认符号的语义属性 查

文档评论(0)

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

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

1亿VIP精品文档

相关文档