西安电子科技大学 编译原理 省级精品课程
刘坚
“编译原理”课程是一门理论与实践并重的课程,也往往是学生认为比较难学的课程。积近20年教学经验,我们总结了以下方法。这些方法是逐步采用和成熟的,均收到了良好效果。
a. 启发式教学:利用有限课时讲授重点内容,给出重要结论之前先让学生回答,并给出相关领域的参考资料和提出一些问题,让学生课时外思考。
b. 理论教学与课程实践有机结合:将上机实践题目与理论教学的知识点紧密结合,理论教学结束之后立即启动上机作业,使得理论学习与课程实践同步。
c. 鼓励学生创造性思维:习题和上机题解答中仅给出最一般的解,鼓励学生用更好的方法解题和做上机题,并且对做得好的同学在考试成绩中给予适当的加分,从而调动学生的学习和创造性思维的积极性。
d. 复习与习题课:教材每章后附有本章的内容要点,学期结束前进行一次课程总复习,帮助学生理出一条清晰的主线。作业讲评指出作业中存在的问题和所反映出的知识理解上的偏差;表扬好的学生;对具有代表性的、学生做出的好的解题方法和存在问题的习题,给出题目的详细讲解。
e. 发挥课题组作用:课程实施之前,课程组进行讨论,统一教学内容与课程实施方案;课程实施中遇到问题,课程组随时讨论解决;期末考试统一命题。从而保证了教学进度、内容、质量的一致性。
本课程的主要任务是介绍程序设计语言编译器构造的基本原理和技术。通过对本课程的学习,使学生了解程序设计语言的基本结构和语言翻译的基本原理,并通过上机实习初步掌握语言翻译的基本方法。
课程分为理论学习和上机实习两部分。
理论学习以课堂讲授为主,并布置适当的习题以帮助学生消化所学内容。课程着重论述与编译相关的
5大知识点:词法分析、语法分析、语法制导翻译生成中间代码、运行环境、以及代码优化与目标代码生成。所讲授的内容包括:
概述:介绍程序设计语言特征与不同的程序设计范型及其应用、编译器的作用和基本工作原理、语言翻译的基本方法和编译器的编写工具等。
词法分析:从构词规则和词法分析两个方面讨论词法分析器的构造,内容包括:模式的描述与记号的识别,状态转换图与词法分析器,正规表达式与有限状态自动机。
语法分析:从原理上和方法上详细讨论文法和不同的语法分析方法,内容包括:语法分析器在编译器中的位置和作用;上下文无关文法与上下文无关语言、文法的二义性及其消除;自上而下的
LL分析和自下而上的LR分析。
语法制导翻译生成中间代码:讨论语法制导翻译的一般方法,内容包括:语法与语义、属性与语义规则;中间代码的表现形式;名字信息的保存;声明性语句的语法制导翻译;可执行语句的语法制导翻译。
运行环境:讨论程序运行时的存储分配,内容包括:过程的动态特性、活动树与控制栈、名字的绑定;存储分配策略、栈式存储分配与非本地数据的访问。
代码优化与目标代码生成:在本科阶段,作为了解内容。本科:生成目标代码所需解决的问题、简单代码生成器的工作原理及方法、如何实现运行时的存储管理和如何进行简单的代码优化。
上机实习的题目是“函数绘图语言解释器的构造”,通过学生自己动手编写它的解释器来达到两个目的:理论与实践的结合、培养学生思考与创新的能力。上机题包括三个子题目,紧扣“编译原理”课程中三个最重要的知识点:构造绘图语言的词法分析器、语法分析器、语法制导翻译绘制函数图形。上机实习的实施采用讲课与辅导相结合的方式,并为学生提供两种解决方案-递归下降子程序方法和lex/yacc方法,以适应不同程度学生的学习需求。