




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章符号表在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,属性信息集中反映了标识符的语义特征属性。9.1符号表的作用和地位9.2符号的主要属性及作用9.3符号表的组织9.3符号表的管理9.1符号表的作用和地位(1)收集符号属性。在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,符号表中所登记的信息在编译的不同阶段都要用到。(2)语义检查的依据。在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。(3)目标代码生成阶段地址分配的依据。在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。9.2符号的主要属性及作用在整个编译期间,对于符号表的操作大致可归纳为五类:•对给定名字,查询名字是否已在表中;•往表中填入一个新的名字;•对给定名字,访问它的某些信息;•对给定名字,填写或更新它的某些信息;•删除一个或一组无用的项。不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。符号的主要符号属性(信息)下述几项通常都是需要的:1符号名
2符号的数据类型
3符号的存储类别
4符号的作用域及可视性
5符号变量的存储分配信息6符号的其它属性(1)数组内情向量(2)记录结构型的成员信息(3)函数及过程的形参9.3符号表的组织9.3.1符号表的总体组织第1种:把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表。第2种:把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表。
第3种:折衷方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。
编译程序按名字的不同种属分别使用许多符号表,如常数表、变量名表、过程名表等等。SUBROUTINEINCWAP(M,N)10K=M+1M=M+4N=KRETURNEND经编译头三阶段后所产生的主要表格有:符号名表SNT;常数表CT;入口名表ENT;标号表LT;四元式表QT
符号名表SNTNAMEINFORMATION(1)M哑元,整数,变量(2)N哑元,整数,变量(3)K整数,变量
常数表CT
值(VALUE)
(1)1
(2)4
入口名表ENT
NAMEINFORMATION
(1)INCWAP二目子程序,入口QT(1)/*记录入口名INCWAP的入口地址*/标号表LT
LABLEINFORMATION
(1)10QT(4)/*记录了标号10对应的四元式序列号*/9.3.2符号表项的排列符号表作为一个多元组,表中元组的排列组织是构造符号表的重要成分。在编译程序的整个工作过程中,符号表被频繁地用来建立表项,找查表项,填充和引用表项的属性。因此表项的排列组织对该系统运行的效率起着十分重要的作用。在编译程序中,符号表项的组织传统上采用三种构造方法。(1)线性组织(2)排序组织及二分法(3)散列法。9.3.3关键字域的组织
符号表的关键字域(段)就是符号名称(1)等长关键字域(段)符号表(2)不等长关键字段符号表---采用关键字池的索引结构。9.3.4其他域的组织(1)等长属性值域组织(2)不等长属性值域组织9.3.5下推链域的组织9.4符号表的管理
9.4.1符号表的初始化
9.4.2符号的登录
9.4.3符号的查找
9.4.4符号表中分程序结构层次的管理对于具有分程序型结构的语言程序,不同层次分程序中定义的标识符号具有不同的作用域和不同的可视性规则。通常对于具有分程序结构的语言可用两种方式组织它们的符号表:一是对每个分程序建立一个独立的分表结构的符号表;一是把各分程序符号组织在一张单表结构的符号表中
分表结构的组织管理其基本思想是,每当编译程序扫描到一个分程序结构开始时,为该分程序建立一张符号表,在该分程序中定义的标识符,都被登录在该符号表中。而当编译程序扫描到一个分程序的结束时,编译程序释放为该分程序所建立的符号表。这种符号表的分表结构与源程序的分程序层次结构一一对应。单表结构的组织管理:其基本思想是,所有分程序中定义的标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于孩子抚养权的离婚合同书
- 货物采购合同补充协议
- 设备销售与购买合同范文
- 车险综合保险合同示例
- 服务合同预付款借款范本
- 歌手签约演出服务合同
- 服装采购代理合同
- 大型建筑机械租赁合同样本范本
- 城乡结合部三方共建项目合同
- 商铺租赁合同规范样本
- 西师版小学数学四年级下册教案
- 《管理学基础(第2版)》高职全套教学课件
- 2024年电力交易员(中级工)职业鉴定理论考试题库-下(多选、判断题)
- 国有企业“三定”工作方案-国有企业三定方案
- 清华大学2024年强基计划数学试题(解析)
- 建筑业投标师聘用合同
- 大学生新时代劳动教育教程全套教学课件
- 高一英语必修一试卷(含答案)(适合测试)
- 中国非遗文化傩戏详细介绍课件
- 语文八年级下册课后习题解析
- 2024年中央财政支持社会组织参与社会服务项目资金管理与财务管理指引
评论
0/150
提交评论