- 1、本文档共92页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 1 第6章 符号表的组织与管理 6.1 符号表的作用 6.2 符号表的组织 6.3 符号表的建立和查找 本章小结 6.1 符号表的作用 一.符号表作用 存放语言程序中出现的有关标识符的属性信息。 编译程序护理标识符时主要涉及两部分信息: 标识符本身 与标识符相关的信息,如标识符的类型、种属、作用域等等 二.符号表的功能 收集有关标识符的属性,并在符号表中建立符号的相应属性信息 例如:int A; float B[5]; 上下文语义的合法性检查的依据: 检查标识符属性在上下文中的一致性和合法性 例如,在C语言中同一个标识符可作引用说明和定义说明 ┇ int i[3,5]; //定义说明i ┇ extern float i; // 引用说明i ┇ 符号的主要属性及作用 语言符号可分为:关键字符号、操作符符号、标识符符号 1.符号名: 标识符:变量的名字、函数的名字、过程的名字 通常把一个标识符在符号表中的位置的整数值称之为该标识符的内部代码 在经过分析处理的语言程序中标识符不再是一个字符串而是一个整数值 6.2 符号表的组织 一.符号表的总体组织 第1种:按照属性种类完全相同的那些符号组织在一起 优点:每个符号表中存放符号的属性个数和结构完全相同 缺点:一个编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度 6.3 符号表的建立和查找 一.符号表的初始化 在编译过程中某个时刻,符号表的状态反映了该时刻被编译的语言程序正被编译的位置的状态。具体来说主要是反映了在该时刻语言程序中可视标识符的状态 符号表的初始化,就是在对语言程序开始编译的时刻,定义建立符号表的初始状态 五.下推链域的组织 为实现这种同名标识符的语义功能,符号表中需要设立下 推链域的组织 下推链域的组织要求在进入一个内层结构并发生重名标识 符定义时,需把当前符号表中外层的该符号表项下推到 下推链中而在符号表被下推的表项处建立内层的同名识 符的表项 例如,设有一个程序(C语言程序)如图9.17所示: 当逐个退出分程序时,下推链被逐次回推到符号表项中, 其具体结构如图9.18所示: 例如,有一程序中出现符号的情况如下: ……………… …a………… ………b…… …a………… ………d…… …c………… ………b…… …… 则符号表中表项排列将如图9.6所示: h表示该符号表之表头,是表的开始位置 p表示该符号表的表项是符号表当前的结束位置 2.排序组织及二分法: 排序组织的符号表,就是在符号表中的表项按其符号的字 符代码串(可以看成一个整数值)的值的大小从大到小 (或从小到大)排列的 关于排序表的表项建立及符号查找,通常采用“二分法” 对上述例子中的符号出现情况按排序组织得到的符号表将 如图9.7所示: 3.散列组织: 一个符号在散列表中的位置,是由对该符号进行某种函数 操作(杂凑函数)所得到的函数值来确定的 假设选定杂凑函数fhash,对符号代码值杂凑运算之后得 到杂凑值是Vhash,可表示为: Vhash=fhash(符号代码值) 设符号的散列位置Lhash则有:Lhash=mod(Vhash,N), 其中N为散列表的表长 一个具有符号代码值为Vsymbol的表项散列如图9.8: 散列冲突:不同符号散列到同一表项位置的现象 解决办法:表长N取一个素数、多次散列 杂凑函数的选取是构造散列表的关键 目前编译程序中,一般采用对符号代码的位操作作为杂凑 函数,见得最多的是符号代码的字符段叠加或加权叠加 以及符号代码的对折或多折等位操作 三.关键字域的组织 在编译程序中,符号表的关键字域就是符号本身,它可以 是语言的保留字,操作符号或标识符(包括变量名、函 数名、记录结构标志等) 规定外部规则的目的是考虑到操作系统、汇编程序及其需 要联系的系统之间的匹配,而规定内部规则的目的是考 虑到编译程序本身对标识符的识别和区分 比如上述C语言的关键字段长度可以是32个(其中31个是 存放名字,余下一个是存放字符串结束标志︼,这是C 语言处理所需要的),如图9.9所示: 既要保证关键字段的等长,又要减少甚至消除冗余,采用 关键字池的索引结构是可取的 例如,一组标识符: an exemplar of key-words field 关键字段的组织结构如图9.10所示: 四.其他域的组织 1.等长属性值域组织: 可以取相应的数据类型表达属性值 表示该符号布尔性质的属性域,可用1个bit位来表示,也 可用1个布尔量表示: defined 1表示已定义 defined 0表示没定义 defined true 表示已定义 defined false表示没定义 表示符号的基本数据类型可以用3个bit位来表示,也可用 1个整型量来
您可能关注的文档
最近下载
- GB50863-2013 尾矿设施设计规范.docx VIP
- 2025年陕西省二级造价工程师职业资格考试《基础知识》真题及答案.docx VIP
- 人教版PEP三年级英语下册全册同步练习随堂练习一课一练版(有答案).pdf VIP
- 彩钢管理房单元工程施工质量评定表(1).doc VIP
- 江西婺源篁岭民俗文化村发展规划--规划说明.pdf
- IATF16949-2016事态升级控制规范.doc VIP
- 新收入准则对电商企业运营的影响及应对策略.docx VIP
- 东莞市地图含区县可编辑可填充动画演示矢量分层地图PPT模板.pptx VIP
- XX县2022年度自然资源统一确权登记项目技术设计书模版.docx VIP
- 女儿墙维修工程施工方案(3篇).docx VIP
文档评论(0)