符号表的结构-probability-2 shiryaev,gtm95,2019年英文第三版

上传者: 26706567 | 上传时间: 2021-09-16 11:38:59 | 文件大小: 3.02MB | 文件类型: PDF
第六章 符号表管理与语义分析 155 是在编译程序的工作过程中,建立并保持一系列的表格,如常数表、变量名表、数 组名表、过程名表以及标号表等,习惯上将它们统称为符号表或名字表。符号表的 每一登记项,将填入名字标识符以及与该名字相关联的一些信息。这些信息,全面 的反映各个符号的属性及它们在编译过程中的特征,诸如名字的种属(常数、变量、 数组、标号等),名字的类型(整型、实型、逻辑型、字符型等),名字的特征(当 前是定义性出现还是使用性出现等),给该名字分配的存储单元地址以及与该名字的 语义有关的其他信息等等。符号表中的各类信息将在编译程序工作过程中的适当时 候填入。对在语义分析阶段建造符号表的编译程序,当遇到标识符声明部分时,每 当遇到一个名字声明,就以此名字查符号表;若表中无此登记项,则将该名字填入 表中;若该表中已有此登记项,则说明该名字是重复声明,报告语义错误。至于与 该名字相关的一些信息,可视工作的方便,分别在编译程序工作过程中的适当时候 填入:种属,类型,特征等信息可在语义分析阶段完成;名字的存储地址等信息则 要在代码生成阶段完成。几乎在编译程序工作的全部过程中,都需要对符号表进行 频繁的访问,查表和填表等操作,是编译程序的一笔很大的开销。因此,合理地组 织符号表,并相应地选择好查表和填表的方法,是提高编译程序工作效率的重要一 环。 6.2.1 符号表的内容 一般而言,即使对于同一类符号表,例如变量名表,它的结构以及表中的每一 登记项所包含的内容,由于程序设计语言和目标计算机的不同,都可能有较大差异。 然而抽象地看,各类符号表一般都具有如表 6.1 所示的形式。由表 6.1 可以看出,符 号表的每一记录项都由两个数据项组成:第一个数据项为名字,用来存放标识符; 第二个数据项为信息,一般由若干子项(或域)组成,用来记录与该名字相对应的 各种属性和特征。 名字项 信息项 Name1 Name1_info Name2 Name2_info …… …… Namen Namen_info 表 6.1 符号表的结构 对于标识符的长度有限制或长度变化范围不大的语言而言,每一登记项名字栏 的大小可以取标识符的 大允许长度。例如,SNL 语言规定每个标识符 多可包含 10 个字符,因此可用 10 个字符的空间作为名字栏的长度。 在源程序中,由于不同种属的标识符起着不同的作用,因而相应于各类标识符 所需记录的信息也就可能有很大的差异。如果根据标识符的不同种属,在编译程序 中分门别类地组织多种表格,如常数表、变量名表、数组名表、过程名表、标号表 等等,对于表格的使用将非常方便。但是,如果能合理组织符号表信息项各个子项 所存信息的内容(例如适当地增加标志位),则在编译程序中为各类标识符设置一张

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明