普通本科院校编译原理实践教学改革探讨
来源:岁月联盟
时间:2010-08-16
【关键词】编译原理 教学内容 课程实验
1 引言
编译原理课程是机与技术专业的重要专业课,它不仅能帮助学生更深入地了解计算机以及计算机程序的本质,还能提高学生进行问题求解的能力。本课程的理论性和实践性都很强。国外和国内分别从二十世纪六十和八十年代开始设置“编译原理”课程,从[1,2]两本专著的内容可以看出,几十年来,“编译原理”课程可以讲授的内容越来越多。设置该课程的目的在于系统地向学生讲叙编译程序设计的基本理论、编译系统的结构及编译程序各部分的设计原理和实现技术。通过对这些知识的学习,使学生既能掌握编译理论和编译方法等方面的基本知识,又具有设计、分析、实现和维护编译程序等各方面的综合能力。该课程一般包括理论教学和实验教学两部分。编译原理理论知识包括形式语言、有穷自动机等抽象内容及大量的算法,较难理解和掌握,因此“编译原理”的实验教学对于深化学生对所学理论知识的理解,提高学生的理论联系实践的能力和编程水平具有重要的作用。
本文根据编译原理课程的特点,结合自己的教学经验与我院的实际情况,探讨了普通本科院校编译原理的实践教学内容的设置。
2 课程实验的重要性
编译原理是集理论与实践于一体的一门课程,在理论课中所介绍的基本概念、原理、方法和算法,一定要通过实验加以理解和吸收,才能能够达到真正的理解、吸收和掌握。编译原理课程实验的内容主要放在对词法分析、语法分析和语义分析、中间代码生成、中间代码优化和目标代码生成的方法上。由于编译原理课程有很强的理论性与实践性,在学习时普遍感到内容抽象,不易理解,掌握起来难度很大。因此通过教学实践和对学生所做的调查表明,设计一组与理论内容相配套的实验是十分必要的。
3 课程实验的设计
针对编译原理课程的特点及要求,共设置了五个实验项目。这组实验既和理论课内容相辅相承,同时相互之间又互相关联,构成了一个实验整体。
实验一
题目:消去C、C++程序中的注释(2学时,必做)
实验目的: 掌握C语言文件的基本操作,消除源C语言程序中的注释,为以后的编译提供方便。
实验要求:对给定的带注释的C语言源程序,利用该程序去掉注释,输出去除注释的源程序。
实验二
题目:词法分析(必做,4学时)
目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
要求:编写程序对输入的源程序字符串进行词法分析,对符合下述文法描述的字符串,建立单词符号表,不符合的字符串给出错误信息。
内容:用扩充的BNF表示如下:
<标识符>→<字母>{<字母> <数字>}
<整型常数>→<数字>{<数字>}
<算符>→+ - * / ( ) =
<字母>→a b c … y A B C … Y
<数字>→1 2 3 4 5 6 7 8 9 0
实验三
题目:递归下降分析法(4学时,选做)
目的:根据给定的文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。
要求:对给定的文法,利用递归下降分析法对任意输入的符号串进行分析语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。 内容:用扩充的BNF表示如下:
<赋值语句>→<标识符>=<表达式>
<表达式>→<表达式>{+<项> -<项>} <项>
<项>→<项>{*<因子> /<因子>} <因子>
<因子>→<标识符> (<表达式>)
即:S→i=E
E→E+T E-T T
T→T*F T/F F
F→i (E)
实验四
题目:语法分析程序LL(1) (4学时,必做)
目的:通过该实验使学生掌握描述语法规则的文法,以及加深对语法分析中自顶向下分析法中的预测分析法的理解。
要求:对给定的文法建立预测分析表,利用预分析法对实验一中词法分析产生的符号进行语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。
内容:用扩充的BNF表示(同实验三)。
实验五
题目:语法分析程序LR(1) (4学时,必做)
目的:通过该实验使学生加深对语法分析中自下而上分析法中的LR分析法的理解。
要求:对给定的文法手工建立LR(1)分析表;利用LR分析法对实验二中词法分析产生的符号进行语法分析,对符合实验中文法描述的字符串(表达式或赋值语句)给出中间代码;不符合的字符串给出错误信息。
内容:用扩充的BNF表示(同实验三)
4 小结
编译原理课程在机课程体系中的重要地位,决定了其课程建设和改革的长期性,对培养计算机专业的人才也有着重要的作用,探索该课程的教学方法,提高教学质量是从事计算机工作者的必须重视的问题,也是一个永远值得探讨的问题,我们根据我系的实际情况合理的运用手段,综合考虑多种因素,将该课程的教学改革推向更的道路。
[1] Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman. Compilers:principles,techniques,and tools[M]. New York:Addison Wesley,1986.
[2] Alfred V.Aho,Monica S.Lam,Ravi Sethi,Jeffrey D.Ullman..Compilers: principles, techniques, and tools[M]. 2nd edition.New York:Addison-Wesley,2007.
[3] 孟亚辉.关于《编译原理》课程教学的思考.科技信息,2008年第16期.
[4] 程序设计语言编译原理(第三版)[M].陈火旺,刘春林等.国防出版社2008.9.
下一篇:培养高职高专学生学习英语的兴趣











