符号表与错误处理.ppt

符号表与错误处理.ppt

ID:52516292

大小:427.05 KB

页数:72页

时间:2020-04-09

符号表与错误处理.ppt_第1页
符号表与错误处理.ppt_第2页
符号表与错误处理.ppt_第3页
符号表与错误处理.ppt_第4页
符号表与错误处理.ppt_第5页
资源描述:

《符号表与错误处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章符号表与错误处理8.1符号表8.2错误处理8.1符号表8.1.1符号表的作用在编译程序工作的过程中,需要不断收集、记录、查证和使用源程序中一些语法符号的类型与特征等相关信息。一般的做法是让编译程序在其工作过程中建立并保存一批表格,如常数表、变量名表、数组内情向量表、过程或子程序名表及标号表等,将它们统称为符号表或名字表。符号表中的每一项包括两个部分:(1)名字(标识符)(2)与名字有关的信息这些信息将全面地反映各个语法符号的属性,以及它们在编译过程中的特征,诸如名字的种属(常数、变量、数组、标号等)、类型(整型、实型、逻辑型、字符型等)、特征(当前是定义性

2、出现还是使用性出现等)、分配的存储单元地址及与此名语义有关的其它信息等。根据编译程序工作阶段的不同划分,符号表中的各种信息将在编译程序工作过程中的适当时候填入。词法分析阶段:建立符号表,与此名相关的其它信息,分别在语法分析、语义分析及中间代码生成等阶段陆续填入。语义分析阶段:符号表中的信息可以用于语义检查。代码优化阶段:编译程序利用符号表提供的信息选出恰当的代码进行优化。标代码生成阶段:编译程序将依据符号表中的符号名来分配目标地址。在编译程序工作的全过程中,都需要对符号表进行频繁地访问,耗费的时间在整个编译过程中占有很大比例。合理地组织符号表并选择好的查表、填表

3、方法是提高编译程序工作效率的有效办法。对于编译程序所用的符号表来说,所涉及的基本操作大致可以归纳为五类:(1)判断一个给定的名字是否在表中;(2)在表中填入新的名字;(3)对给定的名字访问它在表中的有关信息;(4)对给定的名字填入或更新它在表中的某些信息;(5)从表中删去一个或一组无用的项。8.1.2符号表的组织按照处理对象的特点,符号表的组织方式一般可分为直接方式和间接方式。直接方式是指在符号表中直接填入源程序中定义的标识符及相关信息。如图8-1,在符号表中,Name栏的长度是固定的,这种栏目长度固定的表格易于组织、填写或查找,是最简单的一种符号表组织方式,适

4、合于规定标识符长度的程序语言。NameInformationWan…che…xue………图8-1直接组织方式的符号表注意:并不是所有高级语言都规定标识符的长度,如果对标识符长度不加限制,则上述定长方式必须按最大长度来定长,显然浪费存储空间。因此,对不定长标识符一般采用间接方式来组织符号表。间接方式是指单独设置一个字符串数组来存放所有的标识符,并在符号表的名字栏中设置两项内容:指针:用来指向标识符在数组中的起始位置;一个整数值:用来表示该标识符的长度。图8–2给出了符号表的间接组织方式示意图:图8-2间接组织方式的符号表STUDENTGRANDAGE…NameIn

5、formation……………753另一种组织方式:按照标识符的种属,如简单变量、数组、过程等分别建立不同的符号表。例如:intf(inta,intb){intc;if(a>b)c=1;elsec=0;returnc;}图8-3按标识符种属组织的各种符号表NameabcInformation整型,变量,形参整型,变量,形参整型,变量value10(b)常数表NamefInformation二目子程序,入口地址(c)函数入口名表(a)简单变量名表根据符号表名字栏的组织特点,符号表信息栏的组织方式也分为两类:固定信息内容和记录信息存放地址。如果名字栏中的标识符按种属分

6、类:因同类标识符基本特征一致,故可将相关信息一一记录在信息栏中。如果名字栏中的标识符不分种属:由于不同种属的标识符其特征不一致,不容易确定一个固定长度的空间来统一安排,可在符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址。例如:对数组标识符需要存储有关数组维数,每维上、下界值,数组类型及数组存放的起始地址等信息。如果将信息与名字一起全部放在符号表中,则因维数不同而使记录该信息的空间大小不易确定,通常给它们另外安排一个内情向量表来记录数组的全部信息,同时在符号表的信息栏设置一指针指向内情向量的入口地址,如图8-4所示。对函数名、过程名等含

7、有较多信息且不容易规范信息长度的名字都可以采取这种办法。Name…aInformation数组………符号表维数首地址下界i1上界u1…内情向量表图8-4记录数组内情向量的符号表8.1.3分程序结构语言的符号表建立分程序结构语言:是指语言编写的分程序中可以再包含嵌套的分程序,并且可以定义属于它自己的一组局部变量。由于分程序的嵌套导致名字作用域的嵌套,故有时也将允许名字作用域嵌套的语言称为具有分程序结构的语言。典型的分程序结构语言是PASCAL;通常不把C语言视为嵌套分程序结构的语言,但在它的函数定义中,函数体可以是一个嵌套的分程序,因而其中所涉及的各个局部变量的作

8、用域也具有嵌套特征。对于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。