- 1、本文档共17页,可阅读全部内容。
- 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章 错误的诊察与校正 一 错误分类 二 出错处理 三 PL/0语言编译程序中参数错误的处理 四 一些语义错误的处理 本章要点 一、错误分类 对于源程序,由于种种原因,往往含有或多或少的错误,因此,一个好的编译程序应具有较强的查错和改错能力。 1、语法错误 指程序结构、单词和拼写不符合语法要求的规则。都是在词法分析阶段和语法分析阶段发现的。 如 关键字拼写错误;某些语法成分未按语言的语法规则编写等。 2、语义错误 指程序不符合语义规则或超越具体计算机系统的限制。包括以下几种类型: 说明错:对变量未说明就引用,某些量被重复说明,或不符合有关作用域的规定。 类型不相容错:某些运算的操作数的类型不相容,形一实参在种属或类型上不相对应等。 对某些值超越限制错:如对各类变量数值范围的限制;对数组维数、形参个数、循环嵌套数的限制。 另外,我们将在编译阶段就能发现的错误,称为静态错;到目标代码运行时才能发现的错误称为动态错,如溢出,动态数组的下标越界。 二、出错处理 主要有两种处理方法 1、校正法 试图对错误进行校正。 当编译程序发现错误时,给用户指出错误的性质、错误的位置,以及如何校正等方面的信息。 2、局部化法 当发现错误时,跳过错误所在的语法单位,继续往下分析。以便把错误限制在尽可能小的局部范围内。只需给用户报告出错误位置,出错性质即可。 三、PL/0语言编译程序中参数错误的处理 1、校正法 对于一些易于校正的错误,如丢了逗号、分号、常量说明中把等号错成赋值号等,则指出出错位置具体的错误性质和如何校正等信息。 如 CONST a:=3 在调用过程constdeclaration中,执行 procedure constdeclaration begin if sym=ident then begin getsym; if sym in [eql, becomes] then begin if sym=becomes then error (1); ┆ 指出错误性质1,即常数说明中的“=”写成“:=” 2 、局部化法 ①测试程序test过程 当语法分析进入某一语法单元时,则用测试程序test检查当前单词符号是否属于该语法单元的开始符号集合,若不是则出错。 当语法分析退出某一语法单元时,则用测试程序test检查当前单词符号是否属于该语法单元的后继符号集合,若不是,则出错。 非终结符名 开始符号集合 后继符号集合 分程序 const var procedure ident if call begin while read wite . ; 语 句 ident call begin if while read write . ; end 条 件 odd + - ( ident number then do 表达式 + - ( ident number . ; ) rop end then do 项 ident number ( . ; ) rop + - end then do 因 子 ident number ( . ; ) rop + - * / end thendo 下面是PL/0文法非终结符的开始符号与后继符号集合表。 *注:表2.3中‘rop’表示关系运算符集合,如=,#,,=,,=。 其中的三个参数。 S1:当语法分析进入或退出某一语法单元时,当前单词符号应属于的集合,它可能是该语法单元的开始符号集合或后继符号集合。 S2:是补充单词符号集,若当前单词符号不属于S1则出错,为了把错误尽量局限在一个局部的语法单位中,需跳过一些后面输入的单词符号,为了尽早恢复语法分析继续正常工作,给出了补充单词符号集合S2。 n:出错信息编号 test的功能: 测试当前单词符号是否属于S1,若不属于,则输出第n号错误,并跳过后边输入的单词符号,直到所输入的单词符号属于S1或S2时为止。 procedure test (s1, s2: symset; n: integer); begin if not (sym in s1) then begin erro
您可能关注的文档
- 刘新昱《计算机信息技术教程》第3章3.1 软件概述.ppt
- 刘新昱《计算机信息技术教程》第3章3.2 操作系统.ppt
- 刘新昱《计算机信息技术教程》第3章3.3 算法和程序设计.ppt
- 刘新昱《计算机信息技术教程》第3章3.4 常用应用软件.ppt
- 刘新昱《计算机信息技术教程》第4章4.1 计算机网络基础.ppt
- 刘新昱《计算机信息技术教程》第4章4.2 计算机局域网.ppt
- 刘新昱《计算机信息技术教程》第4章4.3 计算机广域网.ppt
- 刘新昱《计算机信息技术教程》第4章4.4 Internet.ppt
- 刘新昱《计算机信息技术教程》第4章4.5 Internet服务.ppt
- 刘新昱《计算机信息技术教程》第4章4.6 网络信息安全.ppt
最近下载
- 四川超高层商务楼脚手架专项施工方案(三排落地式脚手架).doc VIP
- NexION1000-2000系列简易操作指南.doc VIP
- 领导力测试附有答案.docx
- 2025年时事政治热点题库及完整答案(历年真题).docx VIP
- HOLLiAS MACS V6.5.2用户操作手册(火电版).pdf
- 肿瘤专科护士理论知识考试题库600题(含答案).docx
- 第17课:第二次世界大战与战后国际秩序的形成高一历史下学期统编版(2019)必修中外历史纲要下.pptx
- 广东自考09235设计原理重点知识点汇总速记宝典.docx
- (市质检二检)莆田市2025届高中毕业班第二次教学质量检测生物试卷(含答案).docx
- 草方格沙障横向铺草机构及装置设计.doc
文档评论(0)