版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 符号表8.1 符号表的作用和地位8.2 符号表项结构及对符号表的操作8.3 符号的主要属性及作用8.4 符号表的组织8.5 符号表项的排列8.6 分程序结构的符号表8.7 表结构的组织管理8.8 PASCAL符号表结构8.1符号表的作用和地位1.符号表的地位 符号表中所登记的信息在编译的不同阶段都要用到。(1)语义检查的依据在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。(2)目标代码生成阶段地址分配的依据在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。(3)其他对一个多遍扫描的编译程序,不同遍所用的符号表
2、也往往各有不同。因为每遍所关心的信息各有差异。2.符号表的作用在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息.8.2符号表项结构及对符号表的管理一、符号表项结构1、符号表通常由表项构成。2、每一表项通常分为两部分:主栏和信息栏。3、主栏内容为标志符名,在整个程序中唯一。4、每一信息栏包含若干子栏和标志位,以记录与标志符名相关的各种属性信息。二、符号表的操作 在整个编译期间,对于符号表的操作大致可归纳为五类: 对给定名字,查询名字是否已在表中; 往表中填入一个新的名字; 对给定名字,访问它的某些信息; 对给定名字,填写或更新它的某些信息; 删除一个或一组无用的项。 不同种类的表格
3、所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。8.2符号表项结构及对符号表的操作通常用到的属性有:1 符号名:是每个表项的关键字,由它可找到每个标志符在符号表中的位置;此位置充当标识符的内部编码。2 符号的类型:变量的类型决定相应的存储方式和可施加的运算操作,常用于语义检查。 3 符号的存储类别:语义处理、检查和存储分配的重要依据。如C语言中的内部和外部变量可由声明变量的语句的位置表现出来。4 符号的作用域及可视性:作用域只是某符号在程序中的有效区域;在PASCAL中内层变量会覆盖外层同名变量,则外层该变量在内层不可视。这些属性是语义处理重要依据。8.3符号的主要属性及作用5
4、 符号变量的存储分配信息 :根据符号变量的存储类别定义及出现位置和次序确定的该变量对应的存区位置。6 符号的其它属性 (1)数组内情向量 含有数组的维数,各维上下界,元素类型,存储首地址,C值等。 (2)记录结构型的成员信息 含有元素属性和排列次序等 (3)函数及过程的形参 含有参数个数、排列次序和参数的属性等。8.3符号的主要属性及作用8.4 符号表的组织 按照处理对象的特点,符号表的组织方式通常可分为:直接方式和间接方式。1、直接方式: 把语言中所有符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表,这种符号表的各栏长度固定,结构简单,方便填写和查找。2、间接方式:对于可变长标
5、志符,需用间接方式组织符号表。把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表,各符号表的主栏包含两项:指针和整数;指针指向标志符在数组中位置,整数表示标志符长度。(2) 根据标志符的种属,如简单变量、数组、过程等,为同一种属的标志符建一张表,如常数表、变量名表、过程名表等等。3、信息栏的组织方式固定信息内容、信息地址8.4 符号表的组织4、例 SUBROUTINE INCWAP(M,N)10 KM1 MM4 NK RETURN END 经编译头三阶段后所产生的主要表格有:符号名表SNT、常数表CT、入口名表ENT、标号表LT和四元式表QT 8.4 符号表的组织 符号
6、名表SNT NAME INFORMATION(1)M 哑元,整数,变量(2)N 哑元,整数,变量(3)K 整数,变量 8.4 符号表的组织4、例 常数表CT 值(VALUE) (1) 1 (2) 4 入口名表ENT NAME INFORMATION(1)INCWAP 二目子程序,入口QT(1)/*记录入口名INCWAP的入口地址 标号表LT LABLE INFORMATION(1)10 QT(4)/*记录了标号10对应的四元式序列号8.4 符号表的组织四元式表QTOPR AGR1 AGR2 RESULTLINKactpar INCWAP 1 Mactpar INCWAP 2 N + M 1 K
7、 + N 4 M + K N paract INCWAP 1 M paract INCWAP 2 N reto8.4 符号表的组织8.5符号表项的排列 符号表作为一个多元组,表中元组的排列组织是构造符号表的重要成分。在编译程序的整个工作过程中,符号表被频繁地用来建立表项,找查表项,填充和引用表项的属性。因此表项的排列组织对该系统运行的效率起着十分重要的作用。在编译程序中,符号表项的组织传统上采用三种构造方法。即线性法,二分法及散列法。8.6分程序结构的符号表 对于具有分程序型结构的语言程序,不同层次分程序中定义的标识符号具有不同的作用域和不同的可视性规则。通常对于具有分程序结构的语言可用两种方
8、式组织它们的符号表: 一是对每个分程序建立一个独立的分表结构的符号表;一是把各分程序符号组织在一张单表结构的符号表中 1、分表结构的组织管理 基本思想: 每当编译程序扫描到一个分程序结构开始时,为该分程序建立一张符号表,在该分程序中定义的标识符,都被登录在该符号表中。而当编译程序扫描到一个分程序的结束时,编译程序释放为该分程序所建立的符号表。这种符号表的分表结构与源程序的分程序层次结构一一对应 。8.7 表结构的组织管理基本思想: 所有分程序中定义的标识符都集中在单张符号表中。为了实现分程序构造中标识符的作用域和可视性规则的要求,在符号表中可设立一个属性域用来登录符号所在分程序的层次。 进入分
9、程序时,层次要增加一层。在退出一个分程序时,层次降低一层,且需要把符号表中,所有在退出的分程序中登录的符号项清除。2、单表结构的组织管理8.7 表结构的组织管理 根据嵌套结构型程序设计语言(Pascal)的特点,可采用以下表结构:将其符号表设计为栈符号表,当新的名字出现总是从栈顶填入。查找操作从符号表的栈顶往底部查(保证先查最近出现的名字)。因为程序是分层的,并且一个过程结束时将释放相应的子符号表,因此查找范围与线性表比相对要小一些。引入一个显示(DISPLAY)层次关系表,称为过程的嵌套层次表。其作用是为了描述过程的嵌套层次,指出当前正在活动着的各嵌套的过程(或函数)相应的子符号表在栈符号表
10、中的起始位置(相对地址)。DISPLAY表也是一个栈,栈顶指针为level。当进入一个新过程时,level增加1;每当退出一个过程时,level减1。DISPLAY(level)总是指向当前正在处理的最内层的过程的子符号表在栈符号表中的起始位置。在符号表的信息栏中引入一个指针域(previous)用以链接它在同一过程内的前一域名字在表中的下标(相对位置)。每一层的最后一个域名字,其previous之值为0。这样,每当需要查找一个新名字时,就能通过DISPLAY找出当前正在处理的最内层的过程及所有外层的子符号表在栈符号表中的位置。然后,通过previous可以找到同一过程内的所有被说明的名字。8
11、.8 PASCAL符号表结构说明部分的分析与处理对每个过程说明的对象(变量,常量和过程)造名字表填写标识符的所在层次、属性和分配的相对位置。标识符的属性不同时,所需填入的信息也不同。登录信息由ENTER过程完成。8.8 PASCAL符号表结构说明部分的分析与处理(程序)说明类型的定义: object= (constant, variable,procedur) (定义纯量/枚举类型)名字表的定义 table:array0.txmax of record name:alfa; case kind:object of constant:(val:integer); variable:procedur:(level,adr,size: integer); 8.8 PASCAL符号表结构例程序说明部分为:CONST A=35,B=49;VAR C,D,E;PROCEDURE P;VAR G ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中英文设备维修合同范本(2024版)
- 2025年苗圃地租赁合同模板(含知识产权保护条款)
- 2025年度二手房交易房地产评估机构选择合同3篇
- 二零二五年度医疗设备销售佣金分红合同范本3篇
- 二零二五版电子商务知识产权保护合同签署4篇
- 二手房购买定金协议:2024年标准版版B版
- 二零二五版网络信息安全技术服务合同范本2篇
- 2025版新产品发布宣传片制作服务协议2篇
- 2025年度个人之间房屋买卖合同争议解决条款范本2篇
- 二零二五版月子中心婴儿早教及产后恢复服务合同2篇
- 光伏自发自用项目年用电清单和消纳计算表
- 量子计算在医学图像处理中的潜力
- 阿里商旅整体差旅解决方案
- 浙江天台历史文化名城保护规划说明书
- 逻辑思维训练500题
- 第八讲 发展全过程人民民主PPT习概论2023优化版教学课件
- 实体瘤疗效评价标准RECIST-1.1版中文
- 企业新春茶话会PPT模板
- GB/T 19185-2008交流线路带电作业安全距离计算方法
- DIC诊治新进展课件
- 公路工程施工现场安全检查手册
评论
0/150
提交评论