- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第8章 符号表管理
第7章小结 典型的中间代码有逆波兰表示、三地址码、图表示; 声明语句的主要作用是为程序中用到的变量或常量名指定类型。类型可以具有一定的层次结构,可以用类型表达式来表示; 声明语句的翻译工作就是将名字的类型及相对地址等有关信息填加到符号表中; 赋值语句的语义是将赋值号右边算术表达式的值保存到左边的变量中,其翻译主要是算术表达式的翻译。要实现数组元素的寻址,需要计算该元素在数组中的相对位移; 第7章小结 类型检查在于解决运算中类型的匹配问题,根据一定的规则来实现类型的转换; 控制语句的翻译中既可以通过根据条件表达式改变控制流程,也可以通过计算条件表达式的逻辑值的方式实现条件转移的控制; 回填技术是解决单遍扫描的语义分析中转移目标并不总是有效的问题; 第7章小结 switch语句的翻译通过对分支的实现来完成; 过程调用与返回语句的翻译主要在于实现参数的有效传递和相应的存储管理; I/O语句要求输出参数都是有效的。 第8章?符号表管理 8.1 符号表的作用 8.2 符号表中存放的信息 8.3 符号表的组织结构 8.4 符号表与作用域 8.5 本章小结 8.1 符号表的作用 编译的各个阶段都有可能会用到符号表中登记的信息 协助进行语义检查(如检查一个名字的引用和之前的声明是否相符)和中间代码生成 在目标代码生成阶段,当需要为名字分配地址时,符号表中的信息将是地址分配的主要依据 编译器用符号表来记录、收集和查找出现在源程序中的各种名字及其语义信息。 8.1 符号表的作用 符号表是以名字为关键字来记录其信息的数据结构,其上支持的两个最基本操作应该是填加表项和查找表项,这两个操作必须是高效的 8.2 符号表中存放的信息 记录源程序中出现的各种名字及其属性信息是符号表的首要任务。 显然同一个名字在一段程序中应该表示同一个对象,即同一个符号表中不能出现相同的名字,因此名字可以作为符号表的关键字。于是,每一个符号表表项中需要存放的基本信息就是符号的名字及其属性 。 8.1.1 符号表中的名字 名字字段长度固定 名字项的长度大小取决于标识符允许的最大长度 不适于标识符长度变化范围较大的语言 空间浪费 名字字段长度可变 标识符的长度没有限制 符号表上的操作复杂而低效 引入一个单独的字符串表,将符号表中的全部标识符集中放在这个字符串表中,而在符号表表项的名字部分只要给出相应标识符的首字符在字符串表中的位置即可 8.1.1 符号表中的名字 8.1.1 符号表中的名字 8.1.1 符号表中的名字 8.1.2 符号表中的属性 符号所表达的含义不同,符号表中需要存放的属性也就不同 数组名字需要存放的属性信息应该包括数组的维数、各维的维长等 函数(或过程)的名字应该存放其参数个数、各参数的类型、返回值的类型等 8.1.2 符号表中的属性 建立多个符号表来管理源程序中出现的各种符号,如常数表、变量表、函数表、数组表等 可能出现不同种类符号出现重名的问题 建立一张共用的大表来管理各种符号,此时需要在符号表中增设一个标志来表明符号的种属 不同种类符号所需存放属性信息在数量上的差异将会造成符号表的空间浪费 8.1.2 符号表中的属性 8.1.2 符号表中的属性 8.1.3 符号的地址属性 如果采用静态存储分配策略,则符号x绑定的地址等于静态分配的基址base加上符号x的偏移量offset 如果采用的是栈式存储分配或堆式存储分配等动态分配策略,则符号是在程序执行过程中和地址动态绑定的。 如栈式存储分配时,i的地址是以栈指针sp为基址加上i相对于活动记录起始地址的偏移量offseti 符号表中各符号的地址属性就是该符号相对于第一个符号的偏移地址 8.3 符号表的组织结构8.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。 8.3.2 符号表的散列表实现 引入散列表不仅可以提高lookup操作的效率,同时也可以提高insert操作的效率,所以在许多实际编译器的符号表实现中均采用了散列技术 8.3.2 符号表的散列表实现 引入散列表不仅可以提高lookup操作的效率,同时也可以提高insert操作的效率,所以在许多实际编译器的符号表实现中均采用了散列技术 插入n个符号,查找e个符号的lookup操作和insert操作的时间复杂
您可能关注的文档
- [工学]第4章 物位检测.ppt
- [工学]第4章 立体及其表面交线2011新.ppt
- [工学]第4章 计算机的输入输出接口技术.ppt
- [工学]第4章+管式反应器.ppt
- [工学]第4章vc的文本输出2.ppt
- [工学]第4章上OFDM调制.ppt
- [工学]第4章S7-300的指令系统及编程.ppt
- [工学]第4章三相交流电路.ppt
- [工学]第4章之演示文稿.ppt
- [工学]第4章受压构件.ppt
- 《致青年教师》读书笔记.ppt
- 2024年-人教版英语七上练习卷-Unit 6 Do you like bananas.docx
- 2024年-小学语文一年级语文阅读练习题附答案(36).doc
- 2024年-【推荐】人教版初中英语九年级上册Unit11 Sad movies make me cry.(学案4).doc
- 【第一章】动漫人物的头部比例画法—美术课件.pptx
- 2024年-幼儿园-小班 《网鱼》文字稿.doc
- 2024年-人教版PEP英语四年级上册Unit 4 My home 单元过关检测卷.doc
- 2024年-人教部编版历史八年级上册-知识点归纳.doc
- 帕特里克·考尔菲尔德的艺术课—美术课件.ppt
- 2024年-部编版三年级语文期末专项 积累与运用.doc
文档评论(0)