编译原理中的LR类分析方法的教学研究.docVIP

编译原理中的LR类分析方法的教学研究.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文档。上传文档
查看更多
编译原理中的LR类分析方法的教学研究   摘要:编译原理课程的教学不仅要介绍编译的基本原理和技术,还要培养学生的学习兴趣、专业思维和科学研究的方法及能力,文章以LR类分析方法为例,以还原知识的发现过程为主线,重现解决问题的思路与方法,以期培养学生的专业学习兴趣和科研能力。   关键词:编译原理;重现知识;LR分析方法      编译原理是计算机专业标志性的一门课程,Alfred V.Aho编著的《Compilers: Principles, Techniques and Tools》,一直以来被认为是编译领域里的经典教材,开篇的第一句话写的非常好:“编写编译器的原理和技术具有十分普遍的意义,以至于在每个计算机科学家的研究生涯中,本书的原理和技术都会反复用到”[1]。也曾有一位学者讲过,不懂得编译的基本理论和方法的人,算不上是一个真正的计算机专业人,无论是做科学研究的专家学者,还是做一个普通的计算机工作者,甚至只是一个计算机用户,都应该懂一些编译的原理和方法。因为它是从系统的观点和高度来分析计算机软件,能让学生从根本上理解软件系统、理解算法和程序,是计算机软件人员必须掌握的“硬”课程。编译原理课程确实是计算机专业本科阶段难教难学的课程,我校经过课题组多年的探索和研究,编译原理的教学情况有了较大的改进,学生对这门课程也表现出极大的兴趣,积累了一些教学心得,本文将以编译原理课程中较难讲解的LR类分析方法为例,讨论如何在编译原理课程应用启发式教学――还原大师们的研究思想,逐步解决科学问题的思路,进行LR类分析方法的教学。   1编译原理的教学思路   教育部高等学校计算机科学与技术教学指导委      员会主任蒋宗礼教授把编译原理称为是计算机专业的一门好课程,确实如此。计算学科问题求解的基本思路是“问题、形式化描述、计算机化”,对问题进行抽象和设计,是本科学生专业能力培养、可持续能力培养非常重要的内容。编译原理涉及的是一个抽象层面的数据变换,输入的是高级语言程序,输出的是低级语言程序,这其中经过了词法分析、语法分析、语义分析、中间代码生成、目标代码生成和代码优化等阶段的工作,使学生在系统的级别重新认识算法和程序,培养学生的形式化描述能力,领悟自动计算的奥秘和乐趣。但这是有难度的,特别对于普通高校的学生来说,要在抽象层面理解这些复杂而又精细的工作,需要授课的教师下大力气才行[2-4]。   首先,让学生明白课程的重要性。如果说算法与程序设计是告诉学生怎样编写程序,怎样用计算机来解决问题,那么编译原理就是告诉学生为什么要那样解决问题,前者是“知其然”,后者是“知其所以然”。编译理论是计算机专业显著区别于其他专业的知识领域,学好这门课程,是计算机专业学生历史的责任,是成为一名真正的计算机专业人必须跨越的一个门槛。   第二,从系统的高度分析高级语言的研发过程。从编译的角度看,只要定义了一个文法,就定义了一种语言,简单语言的文法简单,复杂语言的文法相应要复杂一些。通过对文法的初步分析,让学生懂得高级语言的产生过程。比如,在讲C语言时,告诉学生变量名的定义只能以字母或下划线开头,字母和数字组合形成的字符串才能作为变量名,当时告诉学生这是规定,但到了编译原理中,可以把这个问题解释得很清楚,那是因为文法的规则定义的,不这样编写变量名,编译器进行词法分析时,它就不会停留在自动机的终态。让学生从一个更高的高度来重新理解程序设计的问题,使得原来不清楚的内容变得清晰,既能说明课程的重要性,又能很快培养起学生学习编译原理的兴趣,这对上好这门课程是非常重要的。   第三,应用启发式课程教学。兴趣的培养只是个开始,因为编译工作是复杂而又精细的,要学好编译原理,还得有细心和耐心。编译器有一项非常重要的工作就是查找程序错误,这项工作就是程序员来完成,也是很复杂的事情,必须一个句子,一个句子的检查,何况这个工作要计算机来自动完成,显然是一个复杂而又细致的问题。   如何利用形式语言和自动机的理论作为工具,道出编译的原理和技术,课题组有一些心得和大家做个交流,我们把它称为:还原大师们的研究思想,逐步解决科学问题。下面以LR类语法分析方法为例进行启发式教学的讨论。   2LR分析方法   2.1提出问题   在前面的课程教学中,已经讲解过LL(1)分析方法,但一个文法要能用LL(1)分析方法来做语法分析,要求的条件是文法要满足LL(1)文法的条件,即:对文法的每个非终结符A的两个不同产生式,A→α,A→β,满足   SELECT(A→α)∩SELECT(A→β)=φ (1)   但是在文法不满足这个条件,而算符优先分析方法主要是针对表达式的语法分析,也不能解决多数文法分析的问题时,能否找到一种对文法的要求不那么高的语法分析方法,来解决自底

文档评论(0)

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

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档