




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章符号表管理及错误诊断本章主要内容:符号表的作用符号表的主要属性符号表的组织及管理符号表的管理词法、语法、语义错误处理1/1/20241第五章:语法制导翻译和中间代码8.1符号表的作用符号表有多种(如保留字表、运算符表、常数表等),在这里主要关注标识符表,标识符表用来记录标识符的特征属性粗略地说,编译的分析阶段收集和更新符号表中信息,综合阶段从符号表中获取信息符号表的作用:收集标识符的属性信息如类型信息语义检查的依据如类型检查代码生成时地址分配的依据相对位置OFFSET存储区域标志(如C语言中的extern、static、auto)目标代码生成之后,符号表就无用了1/1/20242第五章:语法制导翻译和中间代码8.2符号表的主要属性标识符名是一个变量、函数或过程的唯一标识,在符号表中符号名作为表项的唯一区别,一般不允许重名标识符的类型过程无类型函数、变量有数据类型标识符的存储类别Fortran语言
COMMON—公共存储区
SAVE—函数或过程内部静态存储区C语言Static—文件或函数内部的静态存储Regist—寄存器存储1/1/20243第五章:语法制导翻译和中间代码8.2符号表的主要属性标识符的存储类别往往决定变量的作用域变量的作用域:一个变量在程序中起作用的范围如:(1)inta(2)intfunc(a,b)(3)floata;(4)intb(5){…(6)…a…(7)…(8)}
在(6)这一点上,不是inta的作用域,而是floata的作用域,引用的是floata,而不是inta1/1/20244第五章:语法制导翻译和中间代码8.2符号表的主要属性标识符的存储分配信息如OFFSET数组的内情向量维数及每维的长度记录型变量的成员信息成员所占总空间及成员排列顺序函数或过程的形参形参个数、排列次序、形参类型1/1/20245第五章:语法制导翻译和中间代码8.3符号表的组织总体组织符号不同,属性信息不同有的差别大,如保留字和变量标识符有的差别较大,如变量符号和函数符号有的差别较小,如不同的变量标识符(简单变量和数组、记录)编译程序对符号表的总体组织方式有三种:1、属性相同的符号组织在一起 空间效率高,但表多,难管理2、所有符号组织在一张表中 只有一张表,管理集中统一,但管理复杂,空间开销大3、根据属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性1/1/20246第五章:语法制导翻译和中间代码8.3符号表的组织单张符号表的组织线性方式用一个线性表来存储符号信息,线性表中的每一个元素是一个记录,包含一个符号的属性信息具体实现可以是数组、链表等线性表又可分为有序和无序,各有优缺点散列方式用一个散列表来存储符号信息,散列表中的每一个元素是一个记录,包含一个符号的属性信息散列函数h(s):s是符号,返回一个0—m-1的整数,n是符号各数,m是散列表的大小,一般n>=m例子:见P314图6.281/1/20247第五章:语法制导翻译和中间代码8.4符号表的管理符号表的初始化初始化方法与符号表的组织方式有关线性方式:表尾和表头的位置相同散列方式:清除表中的所有表项值符号的查找无序线性表:折半查找有序线性表:顺序查找散列表:散列查找符号的登录先查找,再登录无序线性表:在线性表尾部增加一个表项有序线性表:将增加的表项插入到线性表的相应位置散列表:根据散列函数寻找插入位置1/1/20248第五章:语法制导翻译和中间代码8.4符号表的管理嵌套过程或分程序结构中符号表的管理对于具有嵌套过程或分程序结构的语言,不同层次程序中定义的标识符有不同的作用域和可视性规则一般有两种组织符号表的方式,一是为每个过程或分程序建立独立的符号表;一是把各分程序符号组织在一张符号表中1、分表结构编译程序在扫描到嵌套过程或分程序的开始时,建立一张对应的符号表2、单表结构在符号表中设立一个属性域用来登录符号所在分程序的层次用下推链来组织同名标识符:下推链组织要求在进入一个内层分程序并发生重名标识符定义时,将当前符号表中外层的该符号表项下推到下推链中而在符号表被下推的表项处建立内层的同名标识符表项,推出分程序时,恢复下推链1/1/20249第五章:语法制导翻译和中间代码8.4符号表的管理下推链中存放的是嵌套分程序中同名标识符的外层定义属性,这种结构不但符合作用域规则,也实现了可视性规则例子:{
inta;floatb,d;{intc;floata;{intd;floatc;{floatd;…a=b+c+d;…}}}}1/1/202410第五章:语法制导翻译和中间代码8.5错误诊断概述错误的种类:词法错误:源程序中的拼写错误,主要在词法分析阶段发现(单词符号不符合词法规则)关键字拼写错分界符错标识符错语法错误:语法分析阶段发现的源程序错误(语法结构不符合语法规则)BEGIN与END不匹配(和)不匹配IF与ELSE之间缺少THEN等变量未说明或重定义语义错误:静态语义错误:编译时刻发现的语义错误如类型不一致或不相容动态语义错误:运行时刻发现的语义错误(逻辑或算法上的错误)
1/1/202411第五章:语法制导翻译和中间代码8.5错误诊断概述编译器中的查错和改错查错:编译程序能在编译时刻准确及时地发现源程序中的错误,并能以简明的方式向用户(程序书写者)报告错误的性质和出现的确切位置不能一发现问题就停下来,而应在一次编译中发现尽可能多的错误株连信息的遏止:株连信息是因为某个错误而导致编译程序向用户(程序书写者)发出的虚假错误信息,如:将P(a,b)写成了P(a.b),则有可能报错,1、是不合法符号(假设删除.);2、标识符未定义(ab);3、参数个数少重复信息的遏止:重复信息是指同一个错误在源程序的多处发生,如:一个未定义的标识符号,在每次引用时都报错,其实只需报错一次即可改错(校正):是指编译程序在其翻译过程中发现源程序的错误时能适当地对源程序作修正1/1/202412第五章:语法制导翻译和中间代码8.6词法错误处理词法错误主要是拼写错误,如拼错一个字符、遗漏一个字符、多拼一个字符等单词符号用正规式表示,用有限自动机识别,在识别单词时,通常采用最长子串匹配策略,如果当前的余留输入字符序列的任何前缀不能与所有的词型相匹配,则表明存在错误词法错误的校正:一般不能在词法分析阶段校正,可在以后的分析阶段进行校正如:IFbTHEM…知道在b后应接关键字,因此到关键字表中去寻找一个最接近THEM的关键字(THEN)代替THEM又如:x:=sim(a)在符号表中找不到sim,于是用sin代替sim1/1/202413第五章:语法制导翻译和中间代码8.7语法错误处理程序设计语言的语法用上下文无关文法描述,源程序可由基于某种分析技术的识别程序来精确地识别,源程序中的语法错误总可以自动地查出不同的分析技术发现错误的手段和方式是不同的LL(1)、LR分析技术都是当栈顶状态与当前输入符号配对所对应的分析表元素为空白时发现错误算符优先分析,是当前栈顶符号和当前输入符号之间不存在优先关系时发现错误1/1/202414第五章:语法制导翻译和中间代码8.7语法错误处理语法错误的校正:在语法分析部分已经介绍了预测分析法和算符优先分析法的出错处理(P134P156)发现错误,根据错误类别,调用错误处理子程序LR分析的出错处理:例:i:=i+);
扫描到+时进入状态Sk,ACTION(Sk,))为出错(空白),这时调用错误处理子程序,删除当前字符,给出出错信息,“不合法的输入符号:)”,继续扫描,ACTION(Sk,;),出错,调用另一错务处理子程序,将一假想的标识符号i及相应状态Sl推入栈中,并给出出错信息,“缺少运算分量”,语句最终被校正为i:=i+i;1/1/202415第五章:语法制导翻译和中间代码8.8语义错误处理主要考虑在编译时发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统计学公式应用技巧试题及答案
- 食品质检员日常工作技能要求试题及答案
- 商业分析师选拔试题及答案
- 2025个体餐馆雇佣合同范本
- 2025《管道铺设合同》
- 2025企业员工宿舍租赁合同
- 残疾人服务知识与技巧
- 2025企业员工竞业禁止合同
- 2025 与护工签订的合同范本
- 体育产业未来趋势与市场潜力深度解析
- 华北电力大学丁肇豪:多主体数据中心算力-电力跨域协同优化
- 科技公司费用报销制度及流程比较
- 2024年绍兴诸暨市水务集团有限公司招聘考试真题
- 2025年新版供电营业规则考试题库
- 2025年长白山职业技术学院单招职业技能测试题库带答案
- 2025年公务员遴选考试公共基础知识必考题库170题及答案(四)
- 2024年内蒙古呼和浩特市中考物理试题【含答案、解析】
- DL-T-1878-2018燃煤电厂储煤场盘点导则
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 《礼仪培训》PPT课件
- 超星尔雅学习通《时间管理》章节测试含答案
评论
0/150
提交评论