编译原理课程设计
编译原理课程设计(精选9篇)
编译原理课程设计 第1篇
2010-2011学年第二学期
《编译原理》课程设计报告
院系:计算机科学与技术
班级:10级计科专升本1班学生姓名:赵鹏斐
学号:103210129
指导老师:李永明
计算机科学与技术学院监制
2011年6月
目录
1.课程设计的目的2.课程设计的内容和要求
3.问题分析和相关知识介绍
4.设计思路和关键问题及其解决方案
5.测试和结果分析
6.总结和心得体会
附件1:参考文献
附件2:核心源代码
编译原理课程设计 第2篇
课程设计的具体内容以传至QQ群共享《编译原理课程设计具体内容.ppt》中,由于学校没有足够大的机房供我们课程设计,所以课程设计采取单独辅导形势,同学们有任何问题,可以来我办公室答疑。
设计报告提交要求
1提交的内容:
验收经过测试的程序
提交设计报告。报告可以包括以下内容:
<1> 任务与目的<2> 软件设计
a.软件的总体结构与模块划分
b.关键算法与重要数据结构
<3> 测试例程设计与测试结果分析
<4> 总结、体会、改进建议等
2.课程设计报告的字数(包括图表)不得少于10000字。
3. 禁止课程设计抄袭,发现原文抄袭网站或报刊内容以零分记。
4.禁止课程设计雷同,发现雷同以零分记。
提交方式
1.要求提交《课程设计报告》打印稿。
2.A4纸张排版,格式参考学年论文规范。
3.在提交论文时填写课程设计封面,详细注明课程名称、题目、学号、姓名、年级、专业班级等基本信息。
4.解释程序源程序(由各班班长统一用U盘拷贝给我)。
时间要求
第19周周五前,按班为单位,各班班长负责提交,过期不再受理,不记成绩。
《编译原理》网络课程设计探讨 第3篇
1 特点
编译原理网络课程设计具有资源共享性、开放性、即时更新性、时空不限性、交互性、自主性、协作性、非线性、多维性、整合性的特点。
2 制作软件和编程语言的使用
编译原理网络课程设计用到网页制作三剑客Dreamweaver MX、Flash、Fireworks。还用到其它工具如:SnagIt、Colorkey、EditPlus2、Ulead VideoStudio等,并使用了ASP技术和Access数据库实现。
3 基本结构及主要功能
3.1 基本结构
1) 首页
首页应该对这个网站的性质与所提供的内容做个扼要说明与导引,让别人判断要不要继续点击。首页要有很清楚的类别栏目选项,而且尽量人性化,让浏览者可以很快找到需要的东西。在设计上,坚持干净而清爽的原则。首页中,我们采用清晰的导航和简洁的页面设计,没有复杂过多的内容。登陆系统,和调查系统,保持一个完整的网站程序,友情连接具有一定的参考价值。打开首页能够清晰的了解到进入的是一个“编译原理”网络课程。
2) 课程简介
主要是对本课程的一些说明,方便学生从整体上去把握学习的内容,这是十分重要的。课程针对编译原理文本教程的内容,让学生了解到网上学习的主要内容,从而有选择性的去学习。
3) 网上学习
这是编译原理网络课程设计的主要内容。网上学习共分为三个部分:一部分是网上课堂;一部分是动画教程;最后一部分为课后习题。在网上学习首页上提示重点难点和学习建议,有助于学生对课程的文本学习有个充分的认识。
4) 信息公布
信息公布是对当前的编译原理网络课程改版、更新以及其它消息以公告的形式让学生知道,方便学生及时的关注网络课程的最新变化,从而让学生全面掌握课程动态,有利于进一步学习。这个栏目也是更新的主要内容之一,编译原理网络课程的学习离不开信息的公布,同时也是网站的维护重点,要注意到更新及时性。
5) 学习资源
编译原理网络课程应当提供一定数量的学习资源,学习包括图像、声音、视频等媒体素材,也包括与学习有关的网站地址,并要为学生提供一定数量的参考文献,供学生在自主学习中使用,也为学生进行研究和探索提供条件。在网络课程中,我们将会提供教师的课件、学生的作品还有网上收集的其它学习素材,做好收集方便学生学习。在学习资源的设计中,我们采用了一套教师管理系统,主要是通过教师将收集内容上传到服务器,提供给学生下载。同时这里也提供学生作业的下载文本,详细的说明作业的基本要求。这个网页的设计比较简单,主要是针对教师的管理课件和发布课件。
6) 习题集
学生在进行一段编译原理网络课程学习之后,应当通过做练习题以加深对所学知识的理解。我们不仅提供与编译原理课程相关的习题,还在网上收集了大量的习题,整理成一个习题库,让学生在学习编译原理课程内容的同时还能增长知识。这里我们让教师管理习题库,教师可以增加、删除、修改习题库的内容。同时系统还提供参考答案和任意选择答题,使得答题的方式更加灵活。习题集栏目中还有一个作业上传专区,这样让学生能够通过学习和完成习题,以及上传作业的形式达到一个与教师相互交流的目的。
7) 交流讨论
在编译原理课程设计中,网上讨论以论坛形式出现。网上讨论是传统教学中课堂讨论的另一种实现方式,是协作学习编译原理课程必备的一项功能。分为教师答疑专区和学生自由讨论专区。
8) 帮助系统
编译原理课程设计应当有完整的帮助系统,告诉学生如何利用此网站进行学习,如何利用网络资源。帮助学生解决在学习中遇到的问题,以及有特殊问题能够联系站长等信息。
3.2 主要功能
1) 网上学习功能
编译原理网络课程中提供了网上学习功能,只要是能正常上网就能访问网络课程页面,通过浏览器,正常观看网上学习,网络课程通过文本、动画形式把网络课程的知识展现给学生,给学生轻松的学习环境。
2) 网上测试功能
编译原理网络课程中提供了课后练习:我们是用“模拟练习”这个栏目来实现这个功能的,在这一栏目中给出要求完成的练习,覆盖基本知识点,学生可以网上完成作业,可打开答案自己核对。
在习题集中提供了在线练习,收集了许多有关编译原理知识,在习题中配有正确答案,方便及时检查和纠正错误。同时对某些作过以前习题的学生,可以通过跳转的方式选择性的练习,这样就节约了练习时间。
网上测试不仅让学生能够轻松愉快的练习,而且教师在这里也扮演了十分重要的角色。习题集中,教师通过验证后,可以对习题进行添加、删除和修改操作,很方便地对习题进行管理。
3) 作业提交功能
在我们以前的课程中,总是要经过一定的程序把自己的作品或者作业交给老师。我们开发的网络课程中作业上传功能方便了学生在完成作业后的上交程序,我们只需要把做好的作业或作品,压缩后就能很快上传,实现了在老师规定的期限内异地随时交作业。根据不同的时候网速可能不一样,增加了测速功能,这样可以在网速快的时候上传。
4) 师生交流功能
设置网上论坛环境,实现教学的跨时空交流。增强了师生之间网上交流,并且设置常见问题专区方便了学生快速查找常见问题。
5) 资源下载功能
网络课程学习资料栏目中提供学生下载功能。这里都是老师推荐的学习资源、教学课件。这个系统方便老师对资源的管理。每个老师都有自己单独的管理资源。从老师的注册、确认、登陆,教师可以把自己的整理的资料发送上传到网络课程中供学生下载使用,这个系统不仅方便了老师的管理还让学生拥有更多的学习资源,老师可以再这里布置作业文档,很方便让学生按照老师的要求去完成作业。
4 结束语
编译原理网络课程设计能提高学生对专业知识的深入理解,拓宽学生视野,引导学生自主学习,提高学习的主动性和培养独立思考问题的习惯,以期达到更好的教学效果。
参考文献
[1]廖常武.网站建设与维护[M].西安:西安电子科技大学出版社, 2004.
[2]李禹生.ASP实用技术:网络数据库应用系统设计[M].北京:中国水利水电出版社, 2004.
编译原理课程设计 第4篇
关键词:编译原理;网络;作业提交
中图分类号:TP311.52 文献标识码:A 文章编号:1674-7712 (2012) 12-0085-01
一、系统的主要功能分析
《编译原理》课程作业网上提交系统主要为《编译原理》课程提供网上的作业管理功能,主要分为管理员、教师和学生三个部分。
(一)管理员部分的主要功能
1.管理员登录功能:根据管理员权限进入管理员相应的页面。2.公告管理功能:管理员可以对公告进行查看、增加、删除、修改等功能。3.修改密码功能:管理员可以修改密码。4.作业管理功能:实现作业信息的删除、修改、查询的功能。5.教师管理:实现教师信息的增加、删除、修改、查询的功能
(二)教师部分的主要功能
1.教师登录功能:根据教师权限进入教师相应的页面的功能。2.修改个人资料功能:可以修改个人的信息。3.学生管理功能:能够实现学生信息的查看、添加、修改、删除、搜索的功能。4.在线布置作业功能:发布作业信息。5.在线批改作业的功能:在线给出相应的作业的点评和分数
(三)学生部分的主要功能
1.学生登录功能:根据学生权限进入学生相应的页面的功能。2.查看公告的功能:可以查看公告信息。3.修改个人资料的功能:修改个人信息。4.作业信息列表:学生查看、下载老师发布的作业题目。5.上传作业:上传做好的作业。1.4管理员信息表和作业信息表
二、教师模块的设计与实现
(一)教师修改个人信息模块的设计与实现
1.教师修改个人信息的功能描述:功能描述:本模块主要实现的功能是教师能够对自己的信息进行修改。2.教师对自己的信息进行修改的输入、输出:输入:更改的教师的基本信息。输出:个人信息修改成功或者失败的页面。
(二)教师布置作业模块的设计与实现
1.教师布置作业模块的功能设计:功能设计:用户登录确定为教师后,teacherlist.do对数据库进行查询,将查询值绑定给request转发到显示界面上。2.教师布置作业模块的输入输出设计:输入:作业标题、出题教师、作业上传截止日期、作业内容等。输出:作业发布成功或者失败的页面。3.教师批改作业模块的功能描述:功能设计:教师点击批改链接,查询数据库,显示该题答案和题号,做出批改,保存到数据库的correst表中。4.教师批改作业模块的输入输出设计:输入:教师批改作业后所给出的评语和分数。输出:成功批改的页面
三、学生模块的设计与实现
(一)学生查看公告和个人信息模块的设计与实现
功能设计:在用户登录后确认为学生后,跳转到answer.do,查询数据库work表,把查询结果显示到页面上。
(二)学生上传作业模块的设计与实现
1.学生上传作业模块的功能描述:功能设计:学生点击做题链接,进行做题,并把做题结果和题号存入到answer表中,通过addwork添加到数据库。
2.学生上传模块的输入输出设计:输入:上传作业。输出:完成作业
四、结语
《编译原理》课程作业网上提交系统是学校信息化教学环境的基础设施之一,是全面实现素质教育的重要手段,是教育技术装备现代化的主要体现和教育现代化的重要标志之一。
参考文献:
[1]孙卫琴,李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2003,6
[2]孙一林,彭波.Java数据库编程实例[M].北京:清华大学出版社,2002,8
[3]飞思科技产品研发中心.JSP应用开发详解[M].北京:电子工业出版社,2003,9
[4]赛奎春.JSP工程应用与项目实践[M].北京:机械工业出版社,2002,8
[5]Kven Genet.SQL Server database development Case Study Analysis.Tsinghua University Press,2006,12
[6]Steven Nath.SQL SERVER 2000 Development and Application,Mechanical Industry Press,July,2003
99《编译原理》课程设计 第5篇
《编译原理》课程设计
一、课程设计的目的通过课程设计,真正掌握设计和构造编译程序的基本原理和常用的编译技术,具备系统软件调试能力和开能力,培养分析问题和解决问题的能力。
二、课程设计的要求
根据选择的课程设计题目提交一份课程设计报告,内容包括:设计要求,算法描述,程序结构,主要变量说明,程序清单,设计技巧,结果分析,心得体会等。
三、课程设计题目
(一)、编制和调试一个程序,它将用户从键盘上输入的正规式转换为以状态和矩阵形式表示的确定的有穷自动机。
1、将正规式转换为NFA2、把NFA确定化为DFA
# 号作为输入正规式的终止符。
考虑复合正规式。
例如,从键盘输入10|(01|1)*0|1*#,输出为矩阵形式表示的DFA和状态
图。
开始符号为0。
(二)、1、试编写一个程序,用来计算给定文法的全部FIRST集及FOLLOW集,并判定所给文法是否LL(1)方法。
2、试编写一个程序,以给定文法作为输入,由程序自动生成文法的LL(1)分析表M。 确定文法的机内表示。
确定LL(1)分析表的存放方式。
(三)、1、试编写一个程序,用来计算机给定文法的FIRST集,LASTVT集,并判定所给文法是否算符优先文法。
2、试编写一个程序,以给定的方法作为输入,由程序自动生成文法的优先关系矩阵。 确定文法的机内表示。
确定优先关系矩阵的存放方式。
(四)、对以下文法,采用算符优先分析法,对G[S]所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。
1、直接输入根据已知文法构造的算符优先关系矩阵。
2、输入已知文法的FIRSTVT集和LASTVT集合,由程序自动生成该文法的算符优先
关系矩阵。
SA
AV := E
EE+T | T
TT * F | F
F(E)| i
Vi
确定所给文法的机内表示。
确定算符优先关系矩阵的存放方式。
(五)、设有文法G[P]:
Pbegin Z end
ZZ;S|S
SI:=E | if B then S else S
| while B do S
EE+E | E-E
| E*E
| E/E
|(E)
| I
| C
BE ROP E
ROP< | <= | = | > | >= | <>
IIL | ID | L
LA | B | C |……| X | Y | Z | a | b | c | ……| x | y | z
CCD | D
D0 | 1 | 2 | ……| 9
试采用SLR分析法,对G[P]所定义的语言进行语法分析,并生成四元式(逆波兰式)中间代码。
1、直接输入根据已知文法构造的SLR(1)分析表。
2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自
动生成SLR(1)分析表。
为便于进行语法制导翻译,对上述文法进行改写。
确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。
设置分析栈
确定文法存放形式。
词法分析中造标识符表。
(六)、设有如下文法:
SA
AV:=E
EE+T|T
TT*F|F
F(E)|digit
Vi
试采用SLR分析法,对所定义 的赋值语句进行语法分析,并在分析过程中将所输入的赋值语句翻译为伪代码并解释执行。
1、直接输入根据已知文法构造的SLR分析表。
2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自动生
成SLR(1)分析表。
确定文法的机内表示。
确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。
伪代码和寄存器个数由自己定。
(七)、根据(六)所给的文法,采用LL(1)分析法对所定义的赋值语句进行语法分析,并在语法分析过程中将所输入 的赋值语句翻译成四元式。
1、直接输入根据已知文法构造的分析表M。
2、输入已知文法的FIRST集和FOLLOW集,由程序自动生成分析表M。
3、输入已知文法,由程序自动生成分析表M。
文法左递归应改写文法的规则式。
确定文法的机内表示。
确定LL(1)分析表的存放方式。
四、参考文献:
1.《编译原理》,陈火旺等,国防工业出版社,1984
2.《编译程序构造方法》,邱玉圃等,科学出版社,1991
3.《数字计算机编译程序构造》,D.格里斯,科学出版社,1976
联系方式:Email:huhuaijin@21cn.com
编译原理课程设计实验报告 第6篇
学 生 姓 名:
学 号:
班 级:同 组 人 :
(姓名、班级、学号)
大连理工大学
Dalian University of Technology
1.3 论文正文格式 ........................................................................................................... 2
1.4 章节标题格式 ........................................................................................................... 2
1.5 各章之间的分隔符设置 ........................................................................................... 3
1.6 正文中的编号 ........................................................................................................... 3
2 词法分析程序的实现 .......................................................................................................... 4
2.1 图的格式说明 ........................................................................................................... 4
2.1.1 图的格式示例 ................................................................................................ 4
2.1.2 图的格式描述 ................................................................................................ 4
2.2 表的格式说明 ........................................................................................................... 5
2.2.1 表的格式示例 ................................................................................................ 5
2.2.2 表的格式描述 ................................................................................................ 6
2.3 公式的格式说明 ....................................................................................................... 7
2.3.1 公式的格式示例 ............................................................................................ 7
2.3.2 公式的格式描述 ............................................................................................ 7
2.4 参考文献的格式说明 ............................................................................................... 7
2.4.1 参考文献在正文中引用的示例 .................................................................... 7
2.4.2 参考文献在正文中引用的书写格式 ............................................................ 7
2.4.3 参考文献的书写格式 .................................................................................... 7
2.4.4 参考文献的书写格式示例 ............................................................................ 8
2.5 量和单位的使用 ....................................................................................................... 8
2.5.1 使用方法 ........................................................................................................ 8
2.5.2 中华人民共和国法定计量单位 .................................................................... 8
2.6 规范表达注意事项 ................................................................................................. 12
2.6.1 名词术语 ...................................................................................................... 12
2.6.2 数字 .............................................................................................................. 12
2.6.3 外文字母 ...................................................................................................... 12
2.6.4 量和单位 ...................................................................................................... 13
2.6.5 标点符号 ...................................................................................................... 13
编译原理课程设计2011级 第7篇
一、课程设计的性质和目的编译原理课程设计是计算机专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握编译程序编写的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事高层次的计算机软件开发工作打下一定的专业基础。
二、设计课题
课题一:应用编译原理的方法实现带括号的四则混合运算
给定条件:
1、词法符号定义如下:
INTC D+
FLOATC (D+.D+)|(D+.)|(.D+)
FLOATC ((D+.D+)|(D+.)|(.D+)|(D+))(E | e)(+ | − | λ)D+
OPADD +
OPSUB −
OPMUL *
OPDIV /
LPAREN ‘(’
RPAREN ‘)’
LINE ‘n’
ASSIGN =
2、表达式文法定义如下:
01.S E
02.E T
03.E EOPADDT
04.E EOPSUBT
05.T P
06.T TOPMULP
07.T TOPDIVP
08.P INTC
09.P FLOATC
10.P LPARENERPAREN
基本要求:
1、以ASSIGN作为文法结束符号;
2、应用词法分析技术识别单词;
3、应用SLR(1)分析技术判别表达式的合法性;
4、应用尾动作文法技术计算表达式的类型与值;
5、要求表达式的类型与值严格一致。
课题二:Micro语言词法语法分析
给定条件:
1、词法符号定义如下:
ID L(L|D)*
INTC D+
REALC D+ D+
PLUS +
MULT *
LPAREN (RPAREN )
COLON :
ASSIGN :=
SEMI ;
LINE ’n’
STOP
FEOF EOF2、表达式文法定义如下:
01.PROG BEGINDECLBODYENDSTOP
02.DECL DECLVARIDCOLONTYPESEMI
03.DECL VARIDCOLONTYPESEMI
04.TYPE REAL
05.TYPE INTEGER
06.BODY BODYSEMISTM
07.BODY STM
08.STM IDASSIGNEXP
09.STM WRITELPARENEXPRPAREN
10.STM READLPARENIDRPAREN
11.EXP EXPPLUSFACT
12.EXP FACT
13.FACT FACTMULTPRIM
14.FACT PRIM
15.PRIM ID
16.PRIM INTC
17.PRIM REALC
18.PRIM LPARENEXPRPAREN
基本要求:
1、以FEOF作为文法结束符号;
2、应用词法分析技术识别单词;
3、应用SLR(1)分析方法进行语法分析;
4、报错要指明所在行。
三、课程设计报告要求
1、课程设计报告必须按本系规定的格式要求打印成册;
2、课程设计报告每人一份,正文必须包含如下几个方面的内容:
1)基本设计思想;
2)主要数据结构;
3)总结与体会。
3、课程设计报告装订顺序:封面、任务书、目录、正文、源程序清单。
四、选题及考核办法
1、一人一组,学号为奇数者做课题一,学号为偶数者做课题二。
2、成绩考核按个人课题完成情况、设计报告质量及对课程设计的态度等综合评定。
五、设计进度安排
1、讲课时间安排:
待定
2、上机调试时间安排:
待定
3、答辩时间安排:
待定
编译原理实验课程教学设计的改进 第8篇
1 编译课程实验的问题
1.1 学生对课程实验定位存在认知误区
在教学实践中发现很多学生对编译原理实验课程的认识上存在很多误区,这些认识误区如果不加以及时纠正,加上课程内容抽象、逻辑性强等特点,很容易加重学生的畏难情绪,产生一系列不利于课程学习的消极负面影响。
一种认识误区是简单地认为编译原理的学习目的就是设计和开发编译器,认为毕业后很少有从事编译器研发的机会,所以得出课程学了没用的错误结论。实际上编译原理包括的形式语言、自动机理论等语言定义、翻译与实现的基础知识,可以让学生领悟到计算机理论的精髓,可以让学生从程序编译的角度重新审视软件的开发,有助于提高学生对软件设计开发的认识,对于今后从事应用软件、语言开发平台甚至系统软件的开发等都是非常有好处的。
另一种认识误区是将编译的实验混淆于普通的程序设计实验,将实验重点没有放在算法的设计、原理的理解上,而是迷失在具体代码实现的细节上。编译原理课程是一个综合性的专业课,编译程序使用的一些数据结构和算法是“数据结构”、“离散数学”以及“算法设计与分析”等课程相关知识的典型应用,能够进一步加深了学生对相关课程知识的综合运用和专业素质的提升。
1.2 实验内容设计缺少层次性
通常的编译原理实验课的教学设计,是将学生已经学过的一种高级语言的词法和语法进行简化,作为实验的模型语言。针对编译过程的词法分析、语法分析、语义分析与中间代码生成、目标代码生成的四个重要阶段,每个阶段分别设计一个或多个实验题目,最终合成一个完整的编译程序。这样设计实验的好处是与授课内容紧密结合,模块分解清晰。但存在的问题是尽管对高级语言进行了简化,每个实验仍然存在着一系列的“难度阶梯”需要学生跨越,如果在实验的设计上仅从学科的理论体系上考虑,忽视了学生知识和能力水平的不同层次,只是一种理想化的设计,执行起来势必难以达到预期的实验效果。
以词法分析的实验设计为例:实验要求是给出某模型语言的文法规范,要求编写该语言的词法分析程序。输入源程序文件,输出关键词、专用符号以及其它标记。实验过程是编写主函数getToken,通过从文件中读取字符到缓冲区中并由C语言字符的状态转换图流程判断返回一个字符(Token)。分析出来的单词主要分为关键词,专用符号,标记符号等。
这个实验是编译阶段的第一个实验,在学生对编译程序理解不深,很多思维方式和知识框架还没有建立起来的情况下,给很多学生设置了一系列障碍,如形式化语言、有穷自动机的理论等,每一个障碍对于初学者都难度不小,这些问题同时出现在一个实验中,会使相当大一部分学生因难度过大而失去学习兴趣。实际教学中学生对编译程序的认知是循序渐进的,很多概念和原理的理解不可能一步到位。而且学生的知识结构、能力水平参差不齐,有的学生的先导课程如《数据结构》、《高级程序设计语言》等知识学得不牢固,有些甚至已经淡忘,因此在设计实验时需要首先弄清楚学生的情况,然后再“对症下药”有侧重点地进行实验内容的设计。
1.3 实验的组织形式比较单一
编译原理的实验组织形式通常是在机房每个学生一台计算机,实验课程开始后教师介绍实验内容、实验目的和实验要求等,然后每人独立完成,从设计到实现都由学生自己进行,教师在实验过程中随时解答学生的疑问,最后学生调试完成程序后撰写实验报告,教师根据学生的程序和实验报告给出分数。这样的实验组织和成绩的评判形式比较单一,整个过程由教师主导,能够训练学生个体的独立思考能力和动手能力,但学生之间的交流不够,实验课的大部分时间都是学生埋头写程序,实验课气氛比较枯燥沉闷,对学生团队协作能力的训练不够。
2 实验教学设计的改进
2.1 消除学生的认识误区
针对学生简单地把编译原理课程局限在编译器设计上的认识误区,教师在授课和实验过程中需要注意结合实际中运用编译技术的实例,比如常用的文本编辑工具中,很多带有字词的检查和校验功能,这就是编译原理技术中词法分析技术的具体应用;很多应用系统中对用户输入的字符串进行规则检查时常用正则表达式;网络搜索引擎对文档资源进行特征分析、提取与描述等工作中都用到编译的相关知识通过各种现实生活中的实例让学生明确编译原理所学习的知识不仅是计算机专业理论知识的重要组成,而且编译程序所使用的一些原理、方法和技术在非编译系统的实际应用中也发挥了很大作用。
在进行实验设计时,除了原理性实验,可以根据学生的兴趣,安排一些应用型的实验,如简单的智能输入法的实现、识别某些单词的简单聊天机器人程序等,这样的小实验可以激发学生的学习兴趣,学生在这些应用性趣味实验中遇到了困难,自然会进一步深入学习教材中的原理,这样对基础理论的掌握也会更加牢固。
2.2 实验内容的改进
国内外的一些经典教材中,通常会采用一种模型语言的编译程序作为实例,如吕映芝等人编著的《编译原理》是以PL/0语言的编译程序为范例,Alfred V.Aho等人编著的《编译原理》先通过一个小的编译程序范例给学生带来对编译程序的直观感受。通过实例的学习,可以降低学生的学习难度,也可以辅助学生对原理加深理解。在设计实验时,可以更大地发挥这些实例的作用,事先让学生阅读这些实例的源代码,然后增加一个准备性的实验,要求学生结合已经学习过C、C++或JAVA等高级程序设计语言,自行对词法规则和语法规则的简化和裁减,设计出适合自己实验难度的模型语言,并给出文档描述。通过安排这个准备实验,促使学生复习必须的基础知识,增加学生查阅资料的能力和阅读源代码的能力,在学生的认知结构上起一个铺垫的作用。
词法分析、语法分析试验是编译原理实验的重点。在实验内容上,对一些比较复杂的实验进行拆解。词法分析实验可以拆分成三个小实验:设计源程序扫描器,去除空格和注释及其他无关字符后得到单词的集合;用自动机识别无符号数或某类单词;设计识别关键词、标识符等其他类型单词的识别程序。对语法分析实验,可以首先以典型的算术表达式文法为例,设计一个算术表达式文法的递归子程序分析实验,然后在此基础上安排其他的语法分析实验。这样在内容上也分成了若干层次,更加符合由简单到复杂、由特殊到一般的认知规律,也能够满足不同知识结构和能力水平的学生在实验中都能得到锻炼提高的目的。
实验难度的设计上应该体现出层次性,形成“阶梯状”的难度层次。每个实验要求分为基本要求、较高要求和探索性实验要求三个层次,基本要求即最低要求,所有学生都能完成的难度,鼓励成绩中上的学生完成较高要求,采用成绩加分、表扬等一些激励机制,提高兴趣,为一些学有余力的同学准备探索性实验。既能让优秀的学生“吃得饱”,也保证让所有学生“吃得了”,避免一部分学生因缺乏难度挑战失去兴趣而另一部分学生因门槛太高而无从下手的情况发生。比如在“利用自动机识别无符号数”的实验设计上,基本要求是能够识别整数,较高要求是识别带小数的无符号数,更高要求是能识别带指数形式的无符号数,将这一实验题目分成三个层次后,不同学习水平的学生都能够在一个学时内完成实验,对自动机这一重要工具也有了初步认识,达到了实验目的。
2.3 实验组织形式的改进
在实验的组织上可以采用协同式学习,以小组为单位,通过教师所提供的实验任务进行分析、讨论,明确需要解决问题的方法,经过一系列的协同学习活动,完成既定的任务,加深对所学知识的理解。这种组织形式可以培养学生的团队协作能力和学生之间的相互交流和相互学习。因为学生之间的年龄相仿、认知水平相似,交流起来会更加顺畅和有效。在这个过程中能够提高学生的参与感,而且通过团队协作解决困难,会给学生更多的积极反馈和成就感。
在实验内容的设计上,要便于学生进行协同工作,具有可操作性和合作性,确保小组中每个成员的任务饱满。在小组分配上,根据学生的兴趣让其自由结合小组,再根据学生的学习能力做适当调整,根据学生的性格特质等不同特点让其在小组中承担不同角色,如设计人员、开发人员、文档撰写人员以及兼任的汇报答辩人员等。实验实施阶段是协同模式中最重要的一个阶段,在这个阶段小组要对下达的实验任务进行分析,明确任务的基本要求,掌握解决问题的方法及需要具备的知识,在教师的帮助指导下进行小组的内部分工及职责的落实,进行协同学习,同时教师要对学生实验完成情况进行及时的检查和指导,直到最终共同完成小组的任务。
传统的独立模式的实验中对学生的评定比较简单,根据个人的完成情况给出成绩。采用分组式协同模式后,实验成绩的评判要做相应的调整,不仅要考核每个学生自己承担的任务完成情况,还要考核小组共同完成情况。考核的内容仍然包括程序和实验报告,但除了对每个学生独立完成的程序模块进行检查外,还需要对小组共同完成的整个任务情况进行验收,可以采用汇报和答辩的形式进行,每个小组推选答辩人在面对所有学生进行汇报,然后接受教师和其他小组的提问并进行答辩,最终成绩的评定除了个人评定之外还有小组评定,对小组成绩进行排序以鼓励小组间的竞争。
3 总结
为了在编译原理实验课中达到教学目标,根据发现的问题对实验课教学设计进行改进:采用应用型实验激发学生的兴趣,消除对课程的认识误区;重新设计和组织实验内容,更加符合学生的学习规律;采用协同方式组织实验培养学生的团队合作能力。这些改进措施已经在教学实践中采用,结果表明有助于降低学生学习过程中的困难,增强学习兴趣,提高实验教学的质量。
摘要:目前,编译原理实验课程中存在的一些问题影响了教学效果。主要原因是:学生的认识存在误区,实验内容和要求层次性不够明显,实验的组织形式比较单一。提出了改进方法:设计应用型实验提高学生的学习兴趣;重新设计实验内容和实验难度,更好地符合学生的认知规律;通过协同学习,提高学生的团队协作能力。
关键词:编译原理,实验课程,教学设计,协同学习
参考文献
[1]张素琴,吕映芝,蒋维杜,等.编译原理[M].第2版.北京:清华大学出版社,2005.
[2]Alfred VAho,Ravi Sethi,Jeffrey D.Ullman.Compilers:Principles,Techniques,and Tools[M].北京:人民邮电出版社,2002.
《编译原理》教学方法初探 第9篇
关键词:编译原理;教学方法
TP314-4
编译原理是计算机相关专业的核心课程,是一门公认比较难学的课程。通过学习编译知识,有助于学生从宏观上把握编程语言;编译技术涉及到计算机的系统结构、指令集结构以及相关的操作系统,掌握编译技术有助于更进一步地理解计算机系统;从软件工程的角度来看,编译器是一个很好的系统软件,它所涉及的算法和技术可直接复用于软件开发的实践[1]。
一、教学现状
编译原理课程的理论性和实践性较强,在该课程的学习过程中涉及到大量抽象的理论知识,而实践动手环节的教学效果受制于对理论的理解程度。教学过程中,存在的问题有以下几个。
首先,学生对编译原理课程不够重视,缺乏学习动力。大多数的同学认为,编译原理课程的学习,与今后的就业没有多大的联系。而且就目前计算机领域的发展现状而言,并不需要重复编写构造编译器;课程本身的难度较大,有同学反应,课堂上老师讲授的知识可以理解,但是下课后往往想不起来;从而导致学生在学生过程中,学习积极性不够,动力不足。
其次,编译原理课程综合性较强,难度较大。涉及到的先修课程包括离散数学、程序设计基础、算法与数据结构、汇编语言、操作系统等,学生对这些先修课的基础知识的掌握程度参差不齐,甚至于有些学生根本没有掌握必要的基础知识;另外,该课程涉及的理论知识抽象,难以理解,如自动机理论等,涉及到的算法复杂,不容易实现,如语法分析阶段的自下而上的分析算法等,对于编译程序这个系统软件,各模块之间接口复杂,学生从整体上理解编译程序也存在一定困难。
第三,实践效果不理想。该课程的实践涉及许多其他相关课程的知识,因此,需要学生有较高的综合运用知识的能力,对于大多数同学,实践具有较大难度,对于基础知识较差的同学来说,很难达到课程的要求。
二、教学思路
(一)明确课程学习目标及其重要性
编译原理课程理论性较强,在讲授过程中,理论性的知识是授课的重点和难点。因此,整个上课过程中要让同学们明确学习该课程的意义,以及为什么要开设该课程,即学习编译原理的重要性,在整个课程的讲授过程中,可以多采用启发式教学方法,以期提高学生的学习兴趣。编译原理课程能够提高学生计算机思维能力。所谓计算机思维能力指的是具有抽象化与形式化思维的能力,编译器在设计过程中就运用了计算机思维的思想与方法,对学生进行计算机思维能力培养将有助于其更好地把握编译原理的目标[2]。另外,编译技术应用广泛,如软件系统安全、现有程序理解和软件工程的逆向工程等方面。
(二)精選教学内容
我们可以借鉴国内外知名大学在编译原理教学方面积累的宝贵的经验,如教学内容、教学方式以及教学手段等。但是,对于应用型普通本科院校而言,我们需要从自身的实际出发,根据我们的学生水平、课时的多少以及学校的办学特点,对编译原理的教学内容适当的选择,突出重点,是学生能够把握编译技术的核心内容。现在多数同学的注意力集中在一些细节的算法上,因此教学内容的选取原则是让学生宏观把握编译原理和技术。
编译原理主要包括五个阶段的讲解,即:词法分析阶段、语法分析阶段、语义分析与中间代码产生、代码优化和目标代码产生。
词法分析阶段,这部分内容的主线是正规式与有限自动机的相互转换,以及将有限自动机最小化。通过介绍正规式和有限自动机的概念,为什么需要转换,以及如何转换,让学生对有限自动机的识别功能,有个更深刻的理解。
语法分析阶段,该内容包括自上而下语法分析和自下而上语法分析两种。根据两类分析方法的特点,指出每种分析方法面临的问题或者说所需解决的关键问题,每种分析方法适用的文法环境,然后讲解如何实现每种分析方法。这一部分主要讲解两种具体的分析方法,即LL(1)分析方法和LR(0)分析方法。
自上而下的分析方法关键的问题是,非终结符有多个候选时,如何选择的问题,因此相关知识点较多,如消除递归(包括直接和间接)、消除回溯和求FIRST集FOLLOW集。对于这部分知识,学生容易把注意力集中在以上的具体算法上,所以,我们在教学中,需要重点讲述LL(1)分析方法的判别和预测分析表的构造,预测分析程序的构造和实现过程。可以采用案例教学法,以一个具体的小程序为例,讲解预测分析程序的实现过程,增强学生的直观感。
自下而上的分析方法关键的问题是,寻找句柄。对于上下文无关文法的分析,LR分析方法是一种高效的方法,包括:LR(0)、SLR、规范LR和LALR方法。LR分析表的生成算法较为复杂,因此讲解时重点应放在LR实现的关键问题,即如何确定栈顶符号是否构成句柄。对于这部分内容,重点让学生掌握LR(0)的分析方法。因为SLR(1)已经能够适应大多数的文法,所以规范LR和LALR方法部分,只需要让学生了解即可。
(三)加强实践环节
编译原理是一门理论性和实践性较强的课程。理论知识抽象难懂,我们可以通过实践,使学生加深对理论知识的理解。在实践教学中,我们可以从基本的验证试验开始,让学生循序渐进的学习,避免一开始就要求学生完成很难的任务,打击学生的信息和积极性。试验内容方面,比如对于词法分析,让学生先练习LEX的使用,之后设计编制调试一个具体的语法分析程序,要求功能简单,能把源程序中的关键字、标识符、运算符、常量和分隔符等识别出来即可,旨在加深学生对词法分析基本原理的理解。最后可以交给学生一个综合性的试验任务,让学生将零散的知识点串接起来,形成一个整体概念。
三、结束语
《编译原理》课程是计算机专业的核心课程之一,针对当前编译原理教学中存在的问题,就如何提高学生学习兴趣、合理安排教学内容等方面作了一些研究和探索。
参考文献:
[1]何炎祥,伍春香.计算机专业不需要开设编译原理课程吗?[J].计算机教育,2009,(4):61-62
编译原理课程设计
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


