欢迎来到天天文库
浏览记录
ID:57428283
大小:365.00 KB
页数:43页
时间:2020-08-17
《编译原理课设报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、北华航天工业学院《编译原理》课程设计课程设计题目:编译程序构造作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:B08512作者学号:作者姓名:陈程指导教师姓名:李建义完成时间:2011年6月8日课程设计任务书课题名称《编译原理》课程设计完成时间2011.6.8指导教师李建义职称副教授学生姓名陈程班级B08512总体设计要求总体设计要求:课程设计内容共给定1个题目,每个学生按照课程设计要求,在规定的两周时间内独立完成。题目:编译程序构造涉及内容:词法分析、语法分析、语义分
2、析生成中间代码工作内容及时间进度安排第一周、周1:设计动员,布置课程设计任务,查阅资料,制定方案,进行程序方案设计。第一周、周2-周5:编写和调试程序第二周、周1-周3:编写和调试程序第二周、周4:整理,撰写设计报告。第二周、周5:验收,提交设计报告,评定成绩。毕业设计成果1、课程设计报告书一份2、源程序清单一份3、成果使用说明书一份目录第一章课程设计目的1第二章课程设计内容22.1课设题目22.2课设内容22.3具体要求22.3.1基本要求:22.3.2高级要求:22.4程序设计提示32.5测试
3、数据:32.5.1程序运行情况32.6程序扩展要求4第三章设计方案53.1模块划分53.1.1词法分析53.1.2语法分析53.1.3语义分析63.1.4错误处理63.2模块调用63.3模块程序流程图83.3.1词法分析流程图83.3.2语法分析流程图93.3.3语义分析流程图10第四章程序源代码11第五章程序测试数据和结果315.1源文件内容315.2文法分析表315.2.1文法语义函数语法树315.2.2分析表335.3测试结果35第六章总结376.1设计体会376.1.1程序不足及改进376
4、.1.2系统特色376.2结束语38第七章程序使用说明39第一章课程设计目的《编译原理》课程设计是编译原理课程必不可少的一个环节,通过课程设计,加深对编译原理的教学内容的了解,以及实现编译原理各部分知识的融合。进而提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力。《编译原理》是一门理论性和实践性非常强的课程,特别是其中涉及的文法理论、自动机理论和优化方法等内容都比较抽象,仅仅通过课堂教学不足以深刻理解和掌握这方面的知识。另一方面,虽然,所培养的学生今后真正从事编译程序的开发的机会并不
5、多,但是,编译原理作为计算机科学与技术专业知识体系中为数不多的大型系统软件开发的理论方法的介绍,其意义决不仅仅局限在开发编译系统本身。本课程设计的目的是要求学生运用《编译原理》重点章节的相关知识和思想方法,结合《高级语言程序设计》等相关课程的知识,去解决实际问题。通过这样的实践,训练学生理论联系实际的能力,特别是引导学生在面临实际问题时候进行发散思维,开拓思路,解决问题。同时也对学生进行复杂程序设计的技能训练和培养良好程序设计的习惯。第二章课程设计内容2.1课设题目编译程序构造2.2课设内容涉及词
6、法分析、自下而上语法分析程序的实现:SLR(1)分析器的实现以及生成中间代码。2.3具体要求根据LR分析算法构造SLR(1)分析程序,并完成语法分析动作(当需要一个单词时,调用词法分析程序获取),同时完成语义分析生成四元式输出。要求程序具有通用性,改变文法时只需改变程序的数据初值,无需改变程序主体;2.3.1基本要求:完成1条说明语句、2条算数表达式和赋值语句的翻译,生成中间代码。2.3.2高级要求:在完成基本要求的基础上,实现if语句和布尔表达式的翻译。if语句的文法和翻译方案参见课本。变量说明
7、语句的文法及相应的语义子程序:.att表示数据类型属性,fill函数表示将单词id及其类别属性填写符号表。(0)S→D;{acc}(1)D→intid{fill(id,int);D.att=int;}(2)D→floatid{fill(id,float);D.att=float;}(3)D→D(1),id{fill(id,D(1).att);D.att=D(1).att;}算数表达式和赋值语句的文法及相应的语义子程序。(1)A→id=E;{p=lookup(id.name);emit(E.PALC
8、E,,p);}(2)E→E(1)+T{E.PALCE=newtemp();emit(+,E(1).PALCE,T.PALCE,E.PALCE)}(3)E→T{E.PALCE=T.PALCE;}(4)T→T(1)*F{T.PALCE=newtemp();emit(+,T(1).PALCE,F.PALCE,T.PALCE)}(5)T→F{T.PALCE=F.PALCE;}(6)F→(E){F.PALCE=E.PALCE;}(7)F→id{P=LOOKUP(id.name)F.PALCE
此文档下载收益归作者所有