版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编编 译译 原原 理理第九章第九章 符号表符号表在编译程序工作的过程中在编译程序工作的过程中,需要需要。这些信息一般以这些信息一般以表格形式存储于系统中。如表格形式存储于系统中。如等等,统称为等等,统称为符号表符号表。对于对于符号表符号表方法的好方法的好坏会直接影响坏会直接影响的运行效率。的运行效率。第九章第九章 符号表符号表一、符号表的作用和功能一、符号表的作用和功能l收集符号属性收集符号属性l上下文语义的合法性检查的依据上下文语义的合法性检查的依据l作为目标代码生成阶段地址分配的依据作为目标代码生成阶段地址分配的依据 例:例:C语言程序段:语言程序段:int a; a=1;MOV #1,R
2、0MOV R0,memal词法分析:词法分析:a是一个单词;是一个单词;l语法分析:语法分析:a出现在一条变量声明语句和一条出现在一条变量声明语句和一条赋值语句中;赋值语句中;l语义分析:语义分析:a是一个整形变量,并分配地址。是一个整形变量,并分配地址。二、符号表的内容二、符号表的内容l标识符的名字标识符的名字l与标识符有关的信息与标识符有关的信息 类型信息(包括种类和属性)类型信息(包括种类和属性) 地址码地址码 层次信息层次信息 行号信息行号信息 二、符号表的内容二、符号表的内容例:例:Pascal语言的名字信息表语言的名字信息表nametabname kind lev typ norm
3、al ref adr/val/size link01tx名字标识符名字标识符名字种类,可以是常量名字种类,可以是常量(constant)、变量、变量(variable)、类、类型型(type)、过程、过程(procedure)名字所在的程序体的静态层次。规名字所在的程序体的静态层次。规定主程序的层次为定主程序的层次为1,主程序中定,主程序中定义的层次为义的层次为2,依次类推,依次类推名字的类型,类型有整型名字的类型,类型有整型(ints)、字符型、字符型(chars)、布尔型、布尔型(bool)、数组、数组(arrays),对,对于无类型的名字填入于无类型的名字填入notype一个布尔量,用于
4、标明名字是否为变量形参一个布尔量,用于标明名字是否为变量形参名,当名字是否为变量形参名时填入名,当名字是否为变量形参名时填入false,其他情况填入其他情况填入true或不填或不填当名字为数组类型或数组变量名时,当名字为数组类型或数组变量名时,ref指向该数组在数指向该数组在数组信息表中的位置;当名字为过程名时,组信息表中的位置;当名字为过程名时,ref指向该过程指向该过程在程序体表在程序体表(btab)中的位置;其他情况中的位置;其他情况ref为为0adr, 当名字为变量名时当名字为变量名时(包括形参,存入该变量包括形参,存入该变量(或形参或形参)在相应活动记录在相应活动记录中分类的存贮单元
5、的相对地址;对于过程名,填入他们相应代码的入口地中分类的存贮单元的相对地址;对于过程名,填入他们相应代码的入口地址址val, 当名字为变量名时,填入他们的相应值当名字为变量名时,填入他们的相应值size, 当名字为类型名时,填入该类型数据所需存贮单元的数目当名字为类型名时,填入该类型数据所需存贮单元的数目指向同一程序体中定义的上一个名字指向同一程序体中定义的上一个名字在在nametab中的位置,每个程序体在中的位置,每个程序体在nametab中登记的第一个名字的中登记的第一个名字的link为为0二、符号表的内容二、符号表的内容例:例:Pascal语言的名字信息表语言的名字信息表nametabt
6、ype a=array1.10, 1.10 of integer;name kindtypref katype arraysntxnametab例:例:Pascal语言的数组信息表语言的数组信息表atabinxtypeltyp elref lowhigh elsizesize12ax数组的下标类型数组的下标类型数组元素类型数组元素类型当元素为数组时,它指向当元素为数组时,它指向该元素数组信息在该元素数组信息在atab表表中的位置,其他情况为中的位置,其他情况为0数组下限数组下限数组上限数组上限数组元素的体积数组元素的体积数组本身的体积数组本身的体积二、符号表的内容二、符号表的内容type a=
7、array1.10, 1.10 of integer;name kindtypref katype arraysntxnametabinxtyp eltypelreflow high elsize size nintsarraysm11010100 mintsints0110110axatab三、符号表的组织三、符号表的组织l按照属性种类完全相同的那些符号组织按照属性种类完全相同的那些符号组织 在一起;在一起;l把所有语言中的符号都组织在一张符号把所有语言中的符号都组织在一张符号 表中;表中;l根据符号属性相似程度分类组织成若干根据符号属性相似程度分类组织成若干 张表,每张表中记录的符号都有比
8、较多张表,每张表中记录的符号都有比较多 的相同属性。的相同属性。三、符号表的组织三、符号表的组织假设有下列三类符号及其所需属性假设有下列三类符号及其所需属性第一类符号第一类符号属性属性1 1属性属性2 2属性属性3 3第二类符号第二类符号属性属性1 1属性属性2 2属性属性4 4第三类符号第三类符号属性属性2 2属性属性5 5属性属性6 6第一种组织法:按属性分类第一种组织法:按属性分类优点:管理一致,空间效率高优点:管理一致,空间效率高缺点:管理复杂缺点:管理复杂三、符号表的组织三、符号表的组织假设有下列三类符号及其所需属性假设有下列三类符号及其所需属性第一类符号第一类符号属性属性1 1属性
9、属性2 2属性属性3 3第二类符号第二类符号属性属性1 1属性属性2 2属性属性4 4第三类符号第三类符号属性属性2 2属性属性5 5属性属性6 6第二种组织法:单一组织第二种组织法:单一组织优点:管理一致,集中单一优点:管理一致,集中单一缺点:管理复杂缺点:管理复杂三、符号表的组织三、符号表的组织假设有下列三类符号及其所需属性假设有下列三类符号及其所需属性第一类符号第一类符号属性属性1 1属性属性2 2属性属性3 3第二类符号第二类符号属性属性1 1属性属性2 2属性属性4 4第三类符号第三类符号属性属性2 2属性属性5 5属性属性6 6第三种组织法:折中方法第三种组织法:折中方法四、符号表
10、的数据结构四、符号表的数据结构l线性表线性表符号表项按照符号被扫描到的先符号表项按照符号被扫描到的先 后顺序登录后顺序登录 a b a d c b 四、符号表的数据结构四、符号表的数据结构l有序表有序表符号表项按照符号的字符代码串符号表项按照符号的字符代码串 的值的大小排列的值的大小排列 a b a d c b 四、符号表的数据结构四、符号表的数据结构l散列表散列表符号表项的位置由对该符号进行符号表项的位置由对该符号进行 某种函数操作所得到的函数值来确定某种函数操作所得到的函数值来确定 a b a d c b 五、符号表与作用域五、符号表与作用域 int main()int a=0;int b=0;int b=1;int a=2;printf(“%d,%dn”,a,b);int b=3;printf(“%d,%dn”,a,b);printf(“%d,%dn”,a,b);printf(“%d,%dn”,a,b);B2B3B1B0 int main()int a=0; int b=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 普外科肺栓塞情景演练
- 椎间孔镜的治疗和护理
- 防范网络谣言传播的查证方法
- 微生物学检验技术 课件汇 胡生梅 项目21 弧菌科鉴定-33-5综合技能训练:尿液标本微生物检验
- 黑龙江省-2024年-社区网格员-下半年笔试真题卷
- 智能电力系统的智慧解决方案
- 2024年幼儿园中秋节活动总结范例(3篇)
- 班组长安全生产责任制与职责模版(2篇)
- 校园应急演练方案(3篇)
- 行政例会制度(2篇)
- 《彩虹》教案 省赛一等奖
- 2023年湖南建筑工程初中级职称考试基础知识
- 沈阳机场航站楼扩建工程安装施工组织设计
- 司法考试:证据法
- FLUENT6.3使用说明及例题
- 动物外科学基础第八章-四肢疾病课件
- 期末考试工作手册
- 街道火灾事故检讨
- 最新班组安全管理安全生产标准化培训课件
- 《一粒种子成长过程》的课件
- 学好语文贵在三个“多”:多读、多背、多写-浅谈语文学法指导
评论
0/150
提交评论