- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 符号表与错误处理 8.1 符号表 8.1 符 号 表 在编译程序工作的过程中,需要不断收集、记录、查证和使用源程序中的一些语法符号(简称为符号)的类型和特征等相关信息。为方便起见,一般的做法是让编译程序在其工作过程中建立并保存一批表格,如常数表、变量名表、数组内情向量表、过程或子程序名表及标号表等,将它们统称为符号表或名字表。 符号表中的每一项包括两个部分:一部分填入名字(标识符);另一部分是与此名字有关的信息,这些信息将全面地反映各个语法符号的属性以及它们在编译过程中的特征,诸如名字的种属(常数、变量、数组、标号等)、名字的类型(整型、实型、逻辑型、字符型等)、特征(当前是定义性出现还是使用性出现等)、给此名字分配的存储单元地址及与此名语义有关的其它信息等。 对于编译程序所用的符号表来说,它所涉及的基本操作大致可以归纳为五类: (1) 判断一个给定的名字是否在表中; (2) 在表中填入新的名字; (3) 对给定的名字访问它在表中的有关信息; (4) 对给定的名字填入或更新它在表中的某些信息; (5) 从表中删去一个或一组无用的项。 ? 由于处理对象的作用和作用域可以有多种,所以符号表也有多种组织方式。按照处理对象的特点,符号表的组织方式一般可分为直接方式和间接方式。 (1)直接方式是指在符号表中直接填入源程序中定义的标识符及相关信息(如图8-1所示)。 (2)间接方式是指单独设置一个字符串数组来存放所有的标识符,并在符号表的名字栏中设置两项内容:一是指针,用来指向标识符在数组中的起始位置;二是一整数值,用来表示该标识符的长度。图8–2给出了符号表的间接组织方式。 (3)按标识符的种属,如简单变量、数组、过程等分别建立不同的符号表,如简单变量名表、数组名表、过程名表等。例如,下面的函数: int f (int a,int b) { int c; if(ab) c=1; else c=0; return c; } 根据符号表名字栏的组织特点,符号表信息栏的组织方式也分为两类:固定信息内容和仅记录信息存放地址。 如果名字栏中的标识符按种属分类,则因同类标识符其基本特征一致,故可将这些信息一一记录在信息栏中。 如果符号表的名字不分种属,则由于不同种属的标识符其特征不一致,也即它们所需存储的信息不一致,因而不容易确定一个固定长度的空间来统一安排。这时,可在符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址。 所谓分程序结构的语言,是指用这种语言编写的分程序中可以再包含嵌套的分程序,并且可以定义属于它自己的一组局部变量。由于分程序的嵌套导致名字作用域的嵌套,故有时也将允许名字作用域嵌套的语言称为具有分程序结构的语言。函数体可以是一个嵌套的分程序,因而其中所涉及的各个局部变量的作用域也具有嵌套特征。 对于嵌套的作用域,同名的变量在不同层次出现可能有不同的类型。因此,为了使编译程序在语义及其它有关处理上不致于发生混乱,可采用分层建立和处理符号表的方式。 在PASCAL程序中,标识符的作用域是包含说明(定义)该标识符的一个最小分程序;也即PASCAL程序中的标识符(或标号)的作用域总是与说明(定义)这些标识符的分程序的层次相关联。为了表征一个PASCAL程序中各个分程序的嵌套层次关系,可将这些分程序按其开头符号在源程序中出现的先后顺序进行编号。 这样,在从左至右扫描源程序时就可以按分程序在源程序中的这种自然顺序(静态层次),对出现在各个分程序中的标识符进行处理,具体方法如下: (1) 当在一个分程序首部某说明中扫描到一个标识符时,就以此标识符查找相应于本层分程序的符号表,如果符号表中已有此名字的登记项,则表明此标识符已被重复说明(定义),应按语法错误进行处理;否则,应在符号表中新登记一项,并将此标识符及有关信息(种属、类型、所分配的内存单元地址等)填入。 (2) 当在一分程序的语句中扫描到一个标识符时,首先在该层分程序的符号表中查找此标识符;若查不到,则继续在其外层分程序的符号表中查找。如此下去,一旦在某一外层分程序的符号表中找到此标识
您可能关注的文档
- 第7章办公自动化.ppt
- 粤教版八年级1.1.ppt
- 第7章国际商务谈判技巧.ppt
- 第7章多媒体创作工具.ppt
- 第7章安全协议和安全标准.ppt
- 第7章市场秩序管理法.ppt
- 粤教版初中地理课件《非洲》.ppt
- 第7章建筑工程事故调查分析.ppt
- 粤教版调控情绪课件.ppt
- 粤教选修之《传记选读》之《陆文学自传》课件.ppt
- jmag申注释电磁阀吸引力分析内容概述2attraction.pdf
- horner版培训-至案例讲解四讲.pptx
- 模块深南文化角落任务1ookmodule 1 cultrual corner task 1CultrualCorne.pptx
- 高炉除尘技术介绍版.pptx
- 二章离散时间信号与系统后加包售后.pdf
- 人教版英语八级下优质课unit2 sb.pptx
- nsd3系统模块uf4d pams技术问题诺基亚手机nokia-6185NSD.pdf
- 参考说明详解m reline service inc and subs ut it tr 20M Inc.pdf
- p4ibad atx主板规格ver cs精英.pdf
- 随堂八上人教语文期中综合检测题.pdf
文档评论(0)