电子信息工程专业嵌入式教学改革尝试.docVIP

电子信息工程专业嵌入式教学改革尝试.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理中处理语法错误问题的研究 摘要:本文分析了编译系统以及其错误处理能力对于程序设计语言的重要性,对其中处理语法错误问题进行了深入研究,并从语法错误的诊察与报告,到利用递归下降分析法对错误进行恢复和纠正处理,直至最后的限制重复报告错误信息及其中涉及的关键技术进行了介绍,从而帮助学习者和开发者牢固掌握相关的理论和技术。br  关键词br本文来自:计算机毕业网 :编译系统;语法错误处理;递归下降分析法br      br  1 前言br  br  在计算机应用领域,目前多数用户都是通过高级语言实现所需要的计算。而对于任何高级语言来说,其编译系统内容丰富,具有严密的逻辑性,对提高学习者和开发者的计算机软件素质具有很大作用,使其不但能认识计算机信息处理的实质,还可以综合运用所学的软件设计技术来分析解决问题[1]。因此,编译系统是计算机系统软件最重要的组成部分之一,也是用户最直接关心的工具之一,它不但要接受程序语言的所有标准定义,以便源代码实现跨平台的可移植性,还必须生成高效、正确的目标代码。因此编译系统本身是一个大而复杂的程序,值得我们深入分析研究。br  我们知道,在编译原理的学习和编译系统的构建过程中,语法分析是其中最为重要的一个组成部分。而在实际的编译系统中,语法分析器的错误处理能力与其构造原理和技术一样重要,这通常是编译原理教学环节中容易忽视的地方,不利于学习者进行实际的编译系统的开发工作。因此,本文对C++编译系统中递归下降的语法分析过程进行了研究,找到了发现并纠正语法错误问题的有效方法。br  br  2 语法错误br  br  编程人员在编写程序时,很难一次就将程序写的完美无误,尤其是一些比较复杂的程序,往往会存在程序错误。程序错误的种类有很多,比如违反语言的语法和语义规定的错误,源程序超出了计算机系统的某种限制而引发的错误,等等。其中语法错误是指源程序中含有不符合语法规则的成分时所产生的错误,一般是有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。br  语法分析结果的质量将直接影响到编译系统后期各阶段的工作,因此,为了帮助编程人员发现并纠正这一阶段可能出现的错误,编译系统的语法分析器应该具有错误处理的能力,其不但可以对语法上正确的源程序进行正确的编译,同时还能够对有错误的源程序报错,甚至在一定程度上对错误进行改正[2]。当然,进行出错处理是件很麻烦的事,想象一个设计良好的编译调试环境,比如Visual Studio,我们在用它开发编译程序时,不光可以知道哪一句错了,而且可以获得出错的原因。br  br  3 语法错误处理技术br  br  3.1 错误的诊察与报告br  语法错误可以采用系统的方式解决,不依赖于出现的上下文。这些错误比较容易发现,通常出现在表1所示的翻译代码error中。br  br  表1分析函数翻译代码br  br  这里,编译系统使用EBNF文法描述语言,为每个非终结符计算FIRST集合和FOLLOW集合,编写分析函数将非终结符的每个产生式翻译成可执行代码。翻译的规则可由文法产生式的可能形式导出。对每一种产生式形式α,用T(α)表示α的翻译代码,全局变量t表示从词法分析器读入的当前单词,调用函数gettok可以获取下一个输入单词,此外,br  br  当然,表1的代码也可用其他代码序列表示,以解决有时会出现的代码冗长问题。br  编译系统在查找到源程序中的语法错误后,要对这些错误进行报告,报告的主要内容是错误发生的位置以及错误的性质。有了这两点内容,编程人员就可以比较方便地确定错误的性质并对其进行改正。文本所采用的错误报告方式为:每发现一处错误,就把该错误信息打印出来,包括源程序的名字、错误所在行、错误的具体内容等,同时用箭头指向出错的位置。例如,对于程序段:br  for (i=0; i100, i++)br  coutibr  其中的错误,编译系统将报告如下错误信息:br  Test.cpp: 15: missing ; before )br  location: class PrintTestbr   for (i=0; i100, i++)br   ^br  Test.cpp: 16: missing ;br  location: class PrintTestbr   coutibr   ^br  2 errorsbr  其中,“Test.cpp”是上述程序段所在的C++源程序的名字,后面的“15”是错误所在的行的号码,“missing ; before )”表示具体的错误信息,下面的“location”指错误在PrintTest类中,接下来该信息还显示了源程序中含有错误的代码行,并用箭头“

文档评论(0)

神话 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5203223011000000

1亿VIP精品文档

相关文档