- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1.2 符号表中的属性 7.1.2 符号表中的属性 * * * * * * * * * * * * * * * * * * 第7章 符号表管理 School of Software Harbin Institute of Technology 重点:符号表的作用,符号表的组织结构,符号表与作用域。 难点:符号表的组织结构及其性能评价。 * * 第7章?符号表管理 7.1 符号表的作用 7.2 符号表中存放的信息 7.3 符号表的组织结构 7.4 符号表与作用域 7.5 本章小结 * * 7.1 符号表的作用 编译的各个阶段都有可能会用到符号表中登记的信息 协助进行语义检查(如检查一个名字的引用和之前的声明是否相符)和中间代码生成 在目标代码生成阶段,当需要为名字分配地址时,符号表中的信息将是地址分配的主要依据 编译器用符号表来记录、收集和查找出现在源程序中的各种名字及其语义信息。 * * 7.1 符号表的作用 符号表是以名字为关键字来记录其信息的数据结构,其上支持的两个最基本操作应该是填加表项和查找表项,这两个操作必须是高效的 * * 7.2 符号表中存放的信息 记录源程序中出现的各种名字及其属性信息是符号表的首要任务。 显然同一个名字在一段程序中应该表示同一个对象,即同一个符号表中不能出现相同的名字,因此名字可以作为符号表的关键字。于是,每一个符号表表项中需要存放的基本信息就是符号的名字及其属性 。 图7.1 符号表的基本格式 * * 7.1.1 符号表中的名字 名字字段长度固定 名字项的长度大小取决于标识符允许的最大长度 不适于标识符长度变化范围较大的语言 空间浪费 名字字段长度可变 标识符的长度没有限制 符号表上的操作复杂而低效 引入一个单独的字符串表,将符号表中的全部标识符集中放在这个字符串表中,而在符号表表项的名字部分只要给出相应标识符的首字符在字符串表中的位置即可 * * 7.1.1 符号表中的名字 标识符长度放在符号表中 * * 7.1.1 符号表中的名字 (b) 标识符长度放在字符串中 * * 7.1.1 符号表中的名字 (c) 用’\0’表示标识符的结束 * * 7.1.2 符号表中的属性 符号所表达的含义不同,符号表中需要存放的属性也就不同 数组名字需要存放的属性信息应该包括数组的维数、各维的维长等 函数(或过程)的名字应该存放其参数个数、各参数的类型、返回值的类型等 * * 7.1.2 符号表中的属性 建立多个符号表来管理源程序中出现的各种符号,如常数表、变量表、函数表、数组表等 可能出现不同种类符号出现重名的问题 建立一张共用的大表来管理各种符号,此时需要在符号表中增设一个标志来表明符号的种属 不同种类符号所需存放属性信息在数量上的差异将会造成符号表的空间浪费 图7.3 多种符号共用符号表的一种实现结构 * 图7.4 用扩展属性链组织函数形参的符号表 * * * 7.1.3 符号的地址属性 如果采用静态存储分配策略,则符号x绑定的地址等于静态分配的基址base加上符号x的偏移量offset 如果采用的是栈式存储分配或堆式存储分配等动态分配策略,则符号是在程序执行过程中和地址动态绑定的。 如栈式存储分配时,i的地址是以栈指针sp为基址加上i相对于活动记录起始地址的偏移量offseti 符号表中各符号的地址属性就是该符号相对于第一个符号的偏移地址 * * 7.3 符号表的组织结构7.3.1 符号表的线性表实现 用线性表实现符号表较为直观 数组实现:插入n个符号、执行e次查找操作的时间复杂度为T(n, e) = O(n(n+e)) 有序数组实现:插入n个符号、执行e次查找操作的时间复杂度为T(n, e) = e?log n+ + ≤ (n+e)log n+O(n2) 有序符号表结构只有在下面的情况下才能取得较好效果:和插入操作次数相比,符号表表项上的查找操作次数占绝对多数,即en。 * * 7.3.2 符号表的散列表实现 引入散列表不仅可以提高lookup操作的效率,同时也可以提高insert操作的效率,所以在许多实际编译器的符号表实现中均采用了散列技术 图7.6 一个符号表的散列表实现 * * 7.3.2 符号表的散列表实现 引入散列表不仅可以提高lookup操作的效率,同时也可以提高insert操作的效率,所以在许多实际编译器的符号表实现中均采用了散列技术 插入n个符号,查找e个符号的lookup操作和insert操作的时间复杂度T(n,e)还将与m有关,记为T(n,e,m) ,T(n,e,m)≈n(n+e)/m S(
您可能关注的文档
最近下载
- 2024年甘肃陇南成县招聘司法协理员17人考试备考题库及答案解析.docx VIP
- 2025年正高面审答辩-正高069面审答辩全科医学历年参考题库含答案解析.docx
- 2025消防宣传月消防安全知识培训课件PPT.pptx
- 5.2 主视图、左视图以及俯视图(附答案).docx VIP
- 25秋电大大作业:如何理解“作风建设永远在路上,永远没有休止符”?我们应如何加强作风建设?.doc VIP
- 23S516 混凝土排水管道基础及接口 .docx VIP
- 2025政治高考河北省真题试卷+解析及答案.docx VIP
- (2021-2025)中考语文 古诗文阅读之文言句子翻译 高频考点+易错点.docx VIP
- 2025年中考语文复习知识清单专题30文言文翻译及断句(3份思维导图+文言翻译10法+文言断句知识梳理+文言翻译10大陷阱+文言断句5大陷阱)(原卷版+解析).docx VIP
- 2025至2030中国特性水泥行业发展分析及前景趋势与投资报告.docx
原创力文档


文档评论(0)