- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
九符号表
符号表的初始化,就是在对语言程序开始编译的时刻,定义建立符号表的初始状态 9.4 符号表的管理 9.4.1 符号的初始化 初始化方法与符号表的组织方式有关 第64页/共81页 线性组织和二分法组织的符号表,其表的长度在编译开始时通常为0,而随着符号的逐步登录,表长增长 也叫线性方式组织的符号表,其初始化为表尾和表头位置相同 增长 一.变长符号表 第65页/共81页 散列组织的符号表的表长是确定的,其是否已有表项登录仅取决于该符号表中是否存在已有表项值的表项 也叫散列方式组织的符号表,其初始化要清除表中所有表项值。 二.定长符号表 第66页/共81页 下图表示定长符号表初始化的状态: 第67页/共81页 通过查找符号表,如果编译程序从语言程序中获得的一个标识符符号不在符号表中,就要将此符号登录在符号表中 登录符号到符号表中,首先要确定登录的位置 特别指出:线性方法和二分方法组织的符号表,首先要在符号表中创立一个新的表项,通常该表的尾指针指向的表项是作为新创建的表项,登录一个符号表项后尾指针推向下一个备用表项 9.4.2 符号的登录 一. 符号登录的条件 二.符号登录的位置 第68页/共81页 无序线性表:在线性表尾部增加一个表项 有序线性表:将增加的表项插入到线性表相应的位置 散列表:根据散列函数寻找插入位置 第69页/共81页 线性组织符号表新创建的表项就是登录符号的表项。下图表示登录新符号symbol i的前后情况: 第70页/共81页 根据登录符号在符号表中按词典排序所确定的位置,把该位置以后的所有原表项下移一个表项的位置,然后在选定位置登录新符号。如下图表示登录新符号symbol k的前后情况 第71页/共81页 符号的名字 符号的属性 大都取决于编译程序获得某个符号时编译所处的程序扫描点的状态 ①类型属性 ②存储类别属性 ③符号作用域属性 ④存储分配属性 ⑤数组内情向量属性 三.符号登录的内容 第72页/共81页 查找符号表的目的是建立或确认该符号的语义属性 符号表的查找算法:顺序查找、折半查找、杂凑查找 9.4.3 符号的查找 第73页/共81页 9.4.4 符号表中分程序结构层次的管理 对于具有嵌套结构或分程序结构的语言,不同层次 程序中定义的标识符有不同的作用域和可视性规则。 一般有两种组织符号表的方式 为每个过程或分程序建立独立的符号表 把各分程序符号组织在一张符号表中 第74页/共81页 1.分表结构 编译程序扫描到嵌套结构或分程序结构开始时,建立一张对应的符号表 2.单表结构 在符号表中设立一个属性域用来登录符号所在分程序的层次 用下推链来组织同名标识符 第75页/共81页 第76页/共81页 分表结构 第77页/共81页 单表结构 进入第1层分程序 第78页/共81页 进入第2层分程序 第79页/共81页 进入第3层分程序 第80页/共81页 进入第4层分程序 第81页/共81页 入口名表ENT NAME INFORMATION ?(1)INCWAP 二目子程序,入口QT(1) /*记录入口名INCWAP的入口地址*/ 标号表LT? LABLE INFORMATION ? (1)10 QT(4) /*记录了标号10对应的四元式序列号*/ 四元式表 第32页/共81页 9.3.2 符号表项的排列 线性法 二分法 散列法 效率高,被多数编译程序采用 第33页/共81页 一.线性组织 这种方法规定符号表中表项按它的符号被扫描到的先后顺序登录 例如: ………………… …a…………… //第一次出现a的地方 …………b…… //第一次出现b的地方 …a…………… //第二次出现a的地方 …………d…… //第一次出现d的地方 …c…………… //第一次出现c的地方 …………b…… //第二次出现b的地方 第34页/共81页 则符号表中表项排列将如下图所示: h表示该符号表之表头,是表的开始位置 p表示该符号表的表项是符号表当前的结束位置 线性组织的符号表 第35页/共81页 二.排序组织及二分法 排序组织的符号表,就是在符号表中的表项按其符号的字符代码串(可以看成一个整数值)的值的大小从大到小(或从小到大)排列的 关于排序表的表项建立及符号查找,通常采用“二分法” 第36页/共81页 对上述例子中的符号出现情况按排序组织得到的符号表将如下图所示: 排序组织的符号表 第37页/共81页 三.散列组织 一个符号在散列表中的位置,是由对该符号进行某种函数操作(杂凑函数)所得到的函数值来确定的 假设选定杂凑函数fhash,对符号代码值杂凑运算之后得到杂凑值是
原创力文档


文档评论(0)