符号表的组织与管理.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文档。上传文档
查看更多
§6.1 符号表的作用 符号表的作用 作用一:收集符号属性 作用二:上下文语义的合法性检查的依据 作用三:目标代码生成阶段地址分配的依据 符号的主要属性及作用 1、符号名 2、符号的类型 3、符号的存储类别 4、符号的作用域及可视性 其它两种情况影响到一个变量的可视性 怎么确立符号的作用域和可视性? 5、符号变量的存储分配信息 6、符号的其它属性 对于编译程序所用的符号表来说, 它所涉及的基本操作大致可以归纳为 §6.2 符号表的组织 1.1 直接方式 1.2 间接方式 2.按照标识符的种属 3.1 固定信息内容 3.2 仅记录信息存放地址 ★分程序结构语言的符号表建立 (1) 分表结构 (2) 单表结构 进入第二层分程序后单表结构的符号表情况 进入第三层分程序后单表结构的符号表情况 进入第四层分程序后单表结构的符号表情况 §6.3 符号表的建立和查找 1.线性符号表 2.二分查找和二叉树 排序表有很多变体结构方式,如二叉树结构 3. 散列表 间接组织方式的符号表 把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表。 如简单变量、数组、过程等分别建立不同的符号表,如简单变量名表、数组名表、过程名表等。 int f(int a,int b) { int c; if(ab) c = 1; else c = 0; return c; } 按标识符种属组织的各种符号表 (a) 简单变量名表;(b) 常数表;(c) 函数入口名表 根据符号表名字栏的组织特点,符号表信息栏的组织方式也可以分为两类: 固定信息内容和仅记录信息存放地址。 3.符号表信息栏的组织方式 固定信息内容 如果名字栏中的标识符按种属分类。 仅记录信息存放地址 如果符号表的名字不分种属。 如果名字栏中的标识符按种属分类, 则因同类标识符其基本特征一致,故可将这些信息一一记录在信息栏中。 类型:整、实、布尔、字符、指针等。 长度:所需的存储单元数。 相对地址:存储单元的相对地址。 c1 b1 a1 相对地址 1 2 10 长度 布尔 c 整数 b 字符串 a 类型 Name 如果符号表的名字不分种属, 则由于不同种属的标识符其特征不一致,也即它们所需存储的信息不一致,因而不容易确定一个固定长度的空间来统一安排。 这时,可在符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址。 对数组标识符需要存储有关数组维数,每维上、下界值,数组类型及数组存放的起始地址等信息。 如果将信息与名字一起全部放在符号表中,则因维数不同而使记录该信息的空间大小不易确定, 因此,通常给它们另外安排一个内情向量表来记录数组的全部信息,同时在符号表的信息栏设置一指针指向内情向量的入口地址。 此外,对像函数名、过程名等含有较多信息且不容易规范信息长度的名字都可以采取这种办法。 记录数组内情向量的符号表 这样组织的最大优点是每个符号表的属性个数和结构完全相同。 则表项是等长的,并且表项中的每个属性栏都是有效的,对于单个符号表示来说,这样使得管理方便一致,空间效率高。 但这样组织的主要缺点是一个编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度。而且对各类符号共同属性的管理必须设置重复的运行机制。使得符号表的管理显得臃肿。 所谓分程序结构的语言,是指用这种语言编写的分程序中可以再包含嵌套的分程序,并且可以定义属于它自己的一组局部变量。 由于分程序的嵌套导致名字作用域的嵌套,故有时也将允许名字作用域嵌套的语言称为具有分程序结构的语言。 典型的分程序结构语言是 PASCAL; 虽然通常不把 C 语言视为嵌套分程序结构的语言,但在它的函数定义中,函数体可以是一个嵌套的分程序,因而其中所涉及的各个局部变量的作用域也具有嵌套特征。 源程序的形式 { //第一层分程序 int a; float b,d; { //第二层分程序 int c; float a; { //第三层分程序 int d; float c; { //第四层分程序 float d; ┊ a = b + c + d; ┊ }                           } } } 通常对于具有分程序结构的语言可用两种方式组织它们的符号表: 分程序结构语言符号表的两种组织方式 一是对每个分程序建立一个独立的分表结构的符号

文档评论(0)

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

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

1亿VIP精品文档

相关文档