编译原理课程实践改革探索.ppt

上传人:小飞机 文档编号:6016588 上传时间:2023-09-15 格式:PPT 页数:35 大小:262.63KB
返回 下载 相关 举报
编译原理课程实践改革探索.ppt_第1页
第1页 / 共35页
编译原理课程实践改革探索.ppt_第2页
第2页 / 共35页
编译原理课程实践改革探索.ppt_第3页
第3页 / 共35页
编译原理课程实践改革探索.ppt_第4页
第4页 / 共35页
编译原理课程实践改革探索.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《编译原理课程实践改革探索.ppt》由会员分享,可在线阅读,更多相关《编译原理课程实践改革探索.ppt(35页珍藏版)》请在三一办公上搜索。

1、编译原理课程实践改革探索,中国科学技术大学 计算机科学技术系张昱 陈意云,http:/济南 山东大学,编译原理课程实践改革探索,2/35,提纲,引言课程实践方案规划与历程课程实验的组成要素实验平台与相关工具课程设计软件包的特点实验改革实践与经验教训课堂教学中与实际的联系,2,编译原理课程实践改革探索,3/35,计算机科学与技术学科的本科教学目标,计算机科学与技术学科的毕业生除了要掌握该学科的各个知识领域的基本知识和技术之外,还必须具有较扎实的数学功底,掌握科学的研究方法,熟悉计算机如何得以实际应用,并具有有效的沟通技能和良好的团队工作能力。中国计算机科学与技术教程2002(CCC2002),编

2、译原理课程实践改革探索,4/35,专业实践及其意义,专业实践的形式课程实践、实习、毕业设计、竞赛、专业实践的意义激发学生的学习兴趣巩固和消化课堂知识提高实践技能培养创新能力增强交流能力,编译原理课程实践改革探索,5/35,存在问题,毕业生在就业中暴露出的一些问题动手能力较差分析问题、解决问题能力较薄弱岗前技术培训:其中有些是学校可以做而没有做的 岗前工程意识、质量意识和团队精神的教育:学校也可以逐步培养的 课程实践中存在的问题各课程的课程实践各自独立内容陈旧、覆盖面窄、综合性不高、难度低、规模小不注重对学生工程、质量、团队等意识的培养学生数增加,检查力度和深度不够学生对课程实践的热情未调动起来

3、,拷贝风气增长,编译原理课程实践改革探索,6/35,专业实践改革,指导思想首先抓课程实践改革,课程实践要整体规划像讨论教学计划那样来讨论技术水平的培养:语言、工具、平台的覆盖范围和相互之间的衔接。其覆盖程度依赖于制度的保证、学科机构的资源、教职人员的利益软件类的课程实践学生至少参与完成一个有一定规模的软件项目的设计与开发,涉及对多门课程所学原理的综合运用遵循由小到大、循序渐进的原则整体规划课程实践涉及的语言、工具和环境注意培养工程意识、质量意识和团队意识,编译原理课程实践改革探索,7/35,专业实践改革,软件类的课程实践低年级的课程实践(如C语言、数据结构)以巩固课程知识的小实验为主训练学生基

4、本的程序设计技能高年级的课程实践(如编译原理、操作系统等)以综合运用的课程设计为主训练学生软件工程的能力,编译原理课程实践改革探索,8/35,提纲,引言课程实践方案规划与历程课程实验的组成要素实验平台与相关工具课程设计软件包的特点实验改革实践与经验教训课堂教学中与实际的联系,8,编译原理课程实践改革探索,9/35,课程实践的规划,定位:综合运用的课程设计(通过合作)为某个语言设计开发一个可运行的编译器为适应个性化学习,布局多个小型课程设计学生可针对自己的基础选择适合自己的课程设计,当然不同难度系数的课程设计的得分不一样。历程调研做UC Berkeley的编译课程设计设计适合国情的课程设计及其支

5、持软件与文档2007/2008年春:在04/05级本科生中开展编译实验目前仍在进一步改进和完善中,编译原理课程实践改革探索,10/35,课程实验的组成要素(1),源语言SimpleMiniJOOL语言(仅有一个main函数、整型)SkipOOMiniJOOL语言(非面向对象,有整型、布尔型、一维数组类型)MiniJOOL语言(面向对象)中间表示高级中间表示:Eclipse JDT中的AST低级中间表示:降低汇编代码生成的难度,开展优化目标机的选择X86:CISCMIPS:RISC编译器组件:分析器、解释器、优化器、汇编代码生成器汇编代码的内部表示统一表示,以此为基础设计实现寄存器分配器,编译原

6、理课程实践改革探索,11/35,课程实验的组成要素(2),MiniJOOL程序,转换器,优化器,低级中间表示(三地址码),X86汇编代码生成器,MIPS汇编代码生成器,寄存器分配器,分析器,编译原理课程实践改革探索,12/35,实验平台与相关软件(1),编译器开发所使用的语言:JavaJava SDK 1.5以上Eclipse IDE分析器的生成工具词法分析器的生成工具:JFlexLALR分析器的生成工具:CUPLL(k)分析器的生成工具:Java CC目标机X86汇编代码:GCC(MinGW),GDBMIPS汇编代码:SPIM模拟器编译工具:ant,编译原理课程实践改革探索,13/35,实验

7、平台与相关软件(2),实验平台软件(当前的版本)实验平台接口:组件接口、异常类、中间表示访问接口实验运行平台配置文件根据配置加载、运行各编译器组件一些有用的工具包AST的图形显示低级中间表示汇编代码的内部表示寄存器分配器一些语言的分析器,编译原理课程实践改革探索,14/35,实验平台与相关软件(3),课程设计软件包(现有版本)http:/Lab1:一个SimpleMiniJOOL程序的解释器Lab2:词法分析用JFlex为MiniJOOL语言生成一个词法分析器手工编写一个简单的词法分析器编写一个NFA生成器编写一个词法分析器的生成器Lab3:语法分析手工编写一个语法分析器用CUP编写一个语法分

8、析器用JavaCC编写一个语法分析器编写一个语法分析器的生成器,编译原理课程实践改革探索,15/35,实验平台与相关软件(4),课程设计软件包(现有版本)http:/Lab4:语义分析为AST构造符号表对AST进行语义分析在语法分析的同时构造符号表在语法分析的同时做语义分析Lab5:MIPS汇编代码生成利用现有的寄存器分配器生成MIPS汇编代码独立实现完整的MIPS汇编代码生成器Lab6:x86汇编代码生成利用现有的寄存器分配器生成x86汇编代码独立实现完整的x86汇编代码生成器,编译原理课程实践改革探索,16/35,实验平台与相关软件(5),课程设计软件包(现有版本)http:/PB0501

9、1:综合性实验以SkipOOMiniJOOL语言作为要实现的源语言每个学生独立完成编译器的前端或后端每个学生自行选择完成后端或前端的合作伙伴前端要求:词法分析、语法分析、语义检查并生成AST后端要求:由AST生成x86汇编代码或MIPS汇编代码,不要求代码优化,但要求考虑寄存器分配等问题提交要求:一个完整的编译器,编译原理课程实践改革探索,17/35,实验平台与相关软件(6),课程设计软件包(未来版本)Lab1:一个SimpleMiniJOOL程序的解释器Lab2:词法分析Lab3:语法分析(增强对错误处理的指导)Lab4:语义检查(补充样例和指导说明)Lab5:低级中间代码生成Lab6:优化

10、器Lab7:MIPS汇编代码生成Lab8:x86汇编代码生成Lab9:面向对象程序的编译,编译原理课程实践改革探索,18/35,课程设计软件包的特点(1),规范性目录结构编译运行批处理脚本、配置文件Eclipse IDE工程文件指导性提供样例及其说明如:以赋值语句序列语言示意语法分析的实现提供一般性的处理规则如:语法结构与汇编代码的映射规则提供框架代码,编译原理课程实践改革探索,19/35,课程设计软件包的特点(2),整体性每个课程设计的实验内容着眼于局部点,但是课程设计的运行完成一个相对完整的功能,例如一个编译器、一个分析器的生成器,等等。灵活性对课程设计的选择,可根据实际情况灵活确定与课堂

11、教学同步进行:选择各个独立的课程设计综合性课程实验:前端/后端对编译、调试、运行方法的灵活选择Eclipse工程、命令控制台脚本、实验平台脚本组件实现方法的灵活选择编译器实现方法的灵活选择,编译原理课程实践改革探索,20/35,提纲,引言课程实践方案规划与历程课程实验的组成要素实验平台与相关工具课程设计软件包的特点实验改革实践与经验教训课堂教学中与实际的联系,20,编译原理课程实践改革探索,21/35,实验改革实践(1),课程实践及其任务去年春季,在04级编译原理教学中实施。每个学生独立完成SkipOOMiniJOOL语言编译器的前端或后端,并自行选择完成后端或前端的合作伙伴。时间节点3月底印

12、发编译原理实验教程安排两次课堂辅导:4月下旬和5月10日左右5月份开始上机6月下旬通过网络提交课程设计源代码、类库文件、测试程序、设计文档等6月下旬考评,编译原理课程实践改革探索,22/35,实验改革实践(2),考评方法学生分成若干组,每组约10人各组用一个上午、下午或晚上的时间进行现场测试、答辩和公开评分评委:教师、研究生助教、同组的所有同学教师主导测试过程,学生自己动手按老师要求操作,并用投影机当众显示测试过程老师和同学均可以提问,学生需当众回答所提问题主要围绕完成的设计和编程,以及测试中暴露出的设计或编程错误等展开,编译原理课程实践改革探索,23/35,实验改革实践(3),评分依据工程的

13、规范性编译器的正确性 错误定位与恢复能力 所生成的目标代码质量回答问题时所表现出的对本课程设计所涉及知识的掌握程度 对自己设计和编码的前端(后端)的熟悉程度 操作的熟练程度提交物的完整性、条理性及其中反映的分析和设计的思想,编译原理课程实践改革探索,24/35,实验改革实践(4),评分方法每个评委当场给该组的全部同学排名次由助教根据所有有效排名表,给出最终的排名由老师根据本组的情况确定本组的最高分和最低分,并依据排名,主要按等间隔确定每个同学的分数,编译原理课程实践改革探索,25/35,实验改革实践(5),其他评分细则如被老师、助教和过半数同学认为所提交的不是自己的课程设计成果时,为0分;未按

14、时提交也是0分;独自完成整个编译器,分组评定成绩后降10分;当前后端人数比例严重失调,则抬高少数人一端分数若所开发的前端(或后端)被多个同学(开发的合作伙伴除外)采用,则在分组评分的基础上加分,加分原则是:每增加两个采用者加1分课程设计和平时作业合计不超过50分,编译原理课程实践改革探索,26/35,实践效果,反响BBS CompilerTech版:07.5.10(978)07.6(+300)学生1(张昊中)收益加深了对LALR分析的理解;大概了解了一个编译器(特别是前端)的结构和工作流程积累了一些做工程的经验。存在问题对实验中要处理的语言的定义不清晰;实验指导不足。,编译原理课程实践改革探索

15、,27/35,实践效果,学生2(李勋浩)收益了解了编译器的基本运行方式,以及经典程序语言运行的基本方式一些一直以来未能理解的概念和疑问,在自己的摸索中明朗了在这样相对较为开放的实验环境中,一定程度上激发了我创造的热情。实现中我会不断假想,假如用另一种方法去实现,会怎么样?假如增加某种功能,是否容易?如果不容易,需要加入什么样的内容?不足之处大三下课程较紧,实验周期不长,学生不易在已完成结果上扩展实验中能够找到的非常相关的阅读材料不足,能找到的也大多是英文的,这对大多数学生来说是个障碍;抄袭现象较严重,这也是跟本次实验相对其它课程实验来说更难入门有关。,编译原理课程实践改革探索,28/35,经验

16、教训,经验提供程序框架和文档说明:既有挑战性又有好的效果以中间表示作为编译器组件间信息传递的接口:既控制了学生开发的规模又允许有自行设计的空间提供AST图形显示并要求生成汇编码,便于测试和考评合作开发、自主推销和选择、整体评测,既培养了团队精神,又增强了质量意识规定了统一的版本提交截止时间,既有公平性和工程性,又易于评测教师主导的集体公开评分方式,既有公平性又易评测由学生参与评分,既能弥补教师对学生实际情况了解的局限性,又能调动学生的参与热情,编译原理课程实践改革探索,29/35,经验教训,教训及改进之处多种开发工具和环境加宽了学生的技术层面,但导致学生不能集中精力到和编译有关的技术上来。前导

17、软件课程实践中逐步熟悉掌握其中的部分工具,提供对这些工具的文档说明和样例。对要实现的语言描述不够=形式化语言规范对提交环境目录和编写能编译运行编译器的批处理文件等要求发布太迟。增加相关的要求与指南,平时注意对学生强调它们。只有提交截止时间=多时间节点和多次提交的过程管理与控制需要配备技术水平高的软件实验师,研究生助教承担不好这样的实验指导,编译原理课程实践改革探索,30/35,提纲,引言课程实践方案规划与历程课程实验的组成要素实验平台与相关工具课程设计软件包的特点实验改革实践与经验教训课堂教学中与实际的联系,30,编译原理课程实践改革探索,31/35,课堂教学策略,总体策略涉及的基本理论必须了

18、解对编译原理和技术的宏观理解及全局把握比了解一些局部的算法重要得多准备了很多从实际程序编译和运行时碰到的问题中抽象出来例子选择 C 语言作为实例语言引导用所学知识去分析、解决、理解实际编程中遇到的问题规模较大的课程设计:两个合作完成一个Java小子集的编译器,编译原理课程实践改革探索,32/35,例题1:类型系统,在X86/Linux机器上,编译器报告最后一行有错误:incompatible types in returntypedef int A110;|A2*fun1()typedef int A210;|return(C语言对除结构类型以外的所有类型都使用结构等价,而对结构类型使用名字等

19、价。,编译原理课程实践改革探索,33/35,例题2:局部存储分配,在SPARC/Solaris工作站上,下面两个结构的size分别是24和16,为什么不一样?typedef struct _a typedef struct _b char c1;char c1;long i;char c2;charc2;long i;double f;double f;a;b;,编译原理课程实践改革探索,34/35,例题2:局部存储分配,在SPARC/Solaris工作站上,下面两个结构的size分别是24和16,为什么不一样?typedef struct _a typedef struct _b char c1;0 char c1;0long i;4 char c2;1charc2;8 long i;4double f;16 double f;8 a;b;数据在存储分配时有对齐问题,编译原理课程实践改革探索,35/35,35,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号