编译方法课程设计任务书_第1页
编译方法课程设计任务书_第2页
编译方法课程设计任务书_第3页
编译方法课程设计任务书_第4页
编译方法课程设计任务书_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理》课程设计指导书一、课程设计的目的本次课程设计的时间为2周,目的是通过实际的题目如:词法分析、语法分析、代码优化等,使学生了解和掌握编译程序的工作原理,同时培养学生用相关的程序设计语言进行程序设计,实现编译的功能,从而提高学生的综合能力。二、设计名称:小型语言编译器的设计/编译技术的计算机实现。三、设计要求本次课程设计有两种选择:合作完成与独立完成。若选择合作完成,则需自行组合5位学生成为一个小组,小组成员合作完成一个小型编译器(见设计内容题目一)。若选择独立完成,则从设计内容题目二的13个题目中任选一个独立实现。这13个题目,都有一定的工作量,涵盖本课程内容和实际应用相关的主要技术。四、设计内容题目一:小型语言编译器的设计。1、通过设计、编制、调试一个对于小型语言词法的词法分析程序,加深对词法分析原理的理解,并实现输出单词序列的词法检查和分析。(建议1名学生完成)2、 设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解。(建议1名学生完成)3、 设计、编制、调试一个布尔表达式的语法及语义分析程序,加深对语法及语义分析原理的理解。(建议1名学生完成)4、 设计、编制、调试一个条件语句的语法及语义分析程序,加深对语法及语义分析原理的理解。(建议1名学生完成)5、 设计、编制、调试一个循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解。(建议1名学生完成)6、将前5个要求得到的程序合并成一个小型语言的语法制导的三地址代码生成器。(5名学生共同完成)题目二:下列13个题目任选。选题说明:可以从下列题目中任选一题,每个题目按难度设定不同的参考分数,上机成绩采用100分制。题目指定的参考分数仅适用于上机程序部分,实验报告成绩有自己的标准1.文法的计算机表示设计要求:可以使用任何语言来完成,例如:Java、C、C++。文法中的空字符串统一使用@表示。包括各种可能出现的文法描述方法。使用定义描述文法只用产生式描述文法用大写字母和小写字母分别表示非终结符和终结符用带尖括号的和不带尖括号分别表示非终结符和终结符产生式可以使用->或::=表示的方法对给定文法判断是乔姆斯基文法中的哪一种文法文法要求以文本文件方式输入,不同的文法只要修改文件即可。不允许使用键盘输入文法。将文法中不可到达和不可终止的非终结符去除,化简文法。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~4功能得60分。完成5,加10分。完成6,加10分。2.自动机的形式定义设计要求:可以使用任何语言来完成,例如:Java、C、C++。自动机中的空字符串统一使用@表示。分别使用定义和状态转换矩阵方法表示自动机,并且两种表示方法可以相互转化。自动机的状态个数和状态转换函数的个数可以任意指定并随意修改,即可以增加或减少状态或状态转换函数。判定是确定的自动机还是不确定的自动机。采用文本文件方式存储自动机,若修改自动机可以仅通过修改该文本文件即可完成。程序可以读取文本文件保存的自动机。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~4,得60分完成5,加10分完成6,加10分3.自动机的图形表示设计要求:可以使用任何语言来完成,例如:Java、C++。自动机中的空字符串统一使用@表示。自动机的状态个数和状态转换函数的个数可以任意指定并随意修改,即可以增加或减少状态或状态转换函数。使用状态转换图表示自动机。要求设计一个具有简单的绘图功能的程序,可以手工绘制自动机。采用文本文件方式存储自动机,若修改自动机可以仅通过修改该文本文件即可完成。程序可以读取文本文件保存的自动机。附加要求(可以不完成):自动机的定义形式、状态转换图和状态转换矩阵三种形式可以相互转化。参考资源:《编译原理》,清华大学,吕映芝相关语言的关于如何绘图的参考书或数据。参考分数:完成1~5,得100分完成6,加10分4.自动机的确定化和最小化设计要求:可以使用任何语言来完成,例如:Java、C++。文法中的空字符串统一使用@表示。以文件方式读取自动机。判断读取的自动机是确定的还是不确定的自动机若是不确定的自动机,将自动机确定化。将确定化后的自动机最小化。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~6,得70分5.有穷自动机与正规文法的相互转换设计要求:可以使用任何语言来完成,例如:Java、C、C++文法和自动机中的空字符串统一使用@表示。以文件方式读取自动机和正规文法。判断读取的文法是否是正规文法。完成有穷自动机与正规文法的相互转换。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~5,得70分LL(1)文法的实现设计要求:可以使用任何语言来完成,例如:Java、C、C++。文法采用常用的方式进行描述,例如:S-aA。以文件方式读取文法。分别求出每一个非终结符FIRST集FOLLOW集和SELECT集。画出预测分析表。判定读入的文法是否是LL(1)文法。给定的任意符号串判定是否是文法中的句子,将分析过程用计算机打印出来。查出文法中是否含有左递归或左公因子。若有则消除左公因子和左递归,并给出分析过程。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~7,得90分完成8,加10分算符优先分析法的实现设计要求:可以使用任何语言来完成,例如:Java、C、C++。文法采用常用的方式进行描述,例如:S-aA。以文件方式读取文法。分别求出每一个非终结符的FIRSTVT和LASTVT集。画出算符优先关系表。判定读入的文法是否是算符优先文法。给定的任意符号串判定是否是文法中的句子,将分析过程用计算机打印出来。参考资源:编译原理》,清华大学,吕映芝参考分数:完成1~7,得90分若功能完善,接口友好,操作简单酌情加分LR(O)分析法的实现设计要求:可以使用任何语言来完成,例如:Java、C、C++。文法采用常用的方式进行描述,例如:S-aA。以文件方式读取文法。求出项目集规范族(即所有的状态)。给出状态间的关系。给出LR(O)分析表。给定的任意符号串判定是否是文法中的句子,将分析过程用计算机打印出来参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~7,得90分若功能完善,接口友好,操作简单酌情加分循环查找算法的实现设计要求:可以使用任何语言来完成,例如:Java、C、C++。程序流图可以采用一种简单的方法进行描述以文件方式读取程序流图。求出所有结点的必经结点集。找出回边。找出循环。附加要求:1.以实际语言的简单程序为例,如:C语言等,确定基本块,求出流图,进行循环查找的分析。参考资源:《编译原理》,清华大学,吕映芝参考分数:完成1~6,得60分完成附加要求1,加20分若功能完善,接口友好,操作简单酌情加分。10.PL/0语言编译器的分析和研究设计要求:1.PL/0语言的词法规则。2.PL/0语言的语法规则。3.PL/0语言的代码生成规则。分析PL/0编译器的词法分析、语法分析、语义分析、出错处理等编译过程每一步骤的实现方法。解释执行PL/O语言的程序。对原编译器进行改进。参考资源:《编译原理》第二版,清华大学,张素琴参考分数:完成1〜5,调试并成功运行PL/0的编译器,解释清楚PL/0编译器的运行过程,写出PL/0程序经过编译器的调试能正确执行,得100分完成6,加10分若在理解源代码的基础上设计成图形接口,酌情加分。11.TEST语言编译器的分析和研究设计要求:TEST语言的词法规则。TEST语言的语法规则。TEST语言的代码生成规则。分析TEST语言编译器的词法分析、语法分析、语义分析、出错处理等编译过程每一步骤的实现方法。解释执行TEST语言的程序。对给出源代码的编译器进行改进。参考资源:《编译原理及实现》,孙悦红参考分数:完成1~5,调试并运行TEST的编译器,解释清楚TEST编译器的运行过程,得90分完成6,加10分若在理解源代码的基础上设计成图形接口,酌情加分。12.TINY语言编译器的分析和研究设计要求:TINY语言的词法规则。TINY语言的语法规则。TINY语言的代码生成规则。分析TINY语言编译器的词法分析、语法分析、语义分析、出错处理等编译过程每一步骤的实现方法。解释执行TINY语言的程序。对给出源代码的编译器进行改进。参考资源:《编译原理及实现》,孙悦红参考分数:完成1~5,调试并运行TINY的编译器,解释清楚TINY编译器的运行过程,得90分完成6,加10分若在理解源代码的基础上设计成图形接口,酌情加分。13.Java语言编译器GJC的分析和研究设计要求:1. Java语言的词法规则。2. Java语言的语法规则。3. Java语言的代码生成规则。4. 调试GJC使之能正确运行可以选择GJC的一部分作为课程设计,只分析相应的部分,并对源代码进行注释。词法分析和语法分析语义分析和错误处理代码生成对给出源代码的编译器进行改进。参考资源:《编译原理课程设计》,王雷等参考分数:完成1〜5,调试并运行GJC,得90分完成6,加10分五、设计细则序号设计内容完成时间备注1课程设计动员。布置题目,提出要求,安排时间。19周周五上午2书面设计和上机调试第20周和第21周的前二天,在实验室上机或自行上机3检查运行程序课程设计第21周的周五在教室检查课程设计程序和设计报告。周五上午:计科一班周五下午:计科二班六、设计成果要求1.课程设计报告。要求提交规定格式的课程设计报告书。2.运行程序。指导教师在机房检查每个学生的程序运行情况。3.说明设计思路和实现方法。学生在运行程序时,向指导教师介绍说明自己的设计思路和实现方法。4.课程设计报告电子版、源程序、可执行档等打包成一个压缩文件,压缩文件以下列形式命名:科1-26陈轩,并发送到邮箱donggf@。邮件标题注明班级、学号和姓名。七、考核方式1.成绩分为100分制。满分为100分,包括设计报告、上机程序和学习态度。2.设计报告成绩占40%,上机成绩占50%,学习态度占10%。3.检查上机程序不及格,总成绩不及格。4.设计报告和上机程序发现类同,抄袭者和被抄袭者一律不合格。5.设计报告严格按格式要求完成。检查不合格,重新修改,直到符合要求。八、报告的撰写规范及要求1.版面要求课程设计报告统一用计算机录入并打印。纸张规格为A4,版面上、下空2.54cm,左、右空3.17cm、装订线0.5cm,位置为左装订正文用小四号宋体字。页数用小五号宋体,在页脚处居中标明。页数从正文开始计数。2.结构及要求课程设计报告的组成及装订顺序:封面、目录、正文。1.封面包括题目、姓名、班级、指导教师等2.目录目录要求层次清晰,且与正文中标题一致,包括正文主要层次标题。3.正文(1)正文的内容正文部分包括:前言、报告主体和结论。要求文章结构严谨,语言流畅,内容正确。前言作为开场白,要以简短的篇幅,说明(1)选题的要求;(2)课程设计工作的基本原理。报告主体是核心部分,占主要篇幅,要求文字简练,条理分明,重点突出,概念清楚,论证充分,逻辑性强。分别阐述自己在课程设计过程中是如何实现的,相关的数据结构、分析过程、存在问题等要阐述清楚,报告正文中的不允许使用的源程序代码,在进行详细设计的算法实现时,以数据流程图的方式说明程序的算法。报告中要求有程序运行时的界面,界面直接从计算机屏幕上抓图获得,程序运行示例2个以上(通过示例可以说明程序的功能),及相应的运行结果。结论是整个毕业设计报告的总结,应以简练的文字说明通过课程设计,对编译原理课程的理解和新的认识,在课程设计中实现的功能和取得的成果,以及存在的问题等。(2)对正文内容及篇幅的要求课程设计的汉.字.的数量要求在2000字以上。(3)正文的层次划分和编排方法正文是论文的主要组成部分,题序层次是文章结构的框架。章条序码统一用阿拉伯数字表示,题序层次可以分为若干级,各级号码之间加一小圆点,末尾一级码的后面不加小圆点,层次分级一般不超过4级为宜,各级与上下文间均单倍行距。示例如下:报告题目:居中放置,并且距下文双倍行距。(黑体一号字)正文各层次内容:单倍行距。正文中,汉字使用宋体小四号字,英文用TimesNewRoman字体小四题序层次的题序和题名:黑体小二号字)第一级(章)1.2.3.„黑体小二号字)黑体小三号字)第二级(条)1.1,1.2,„2.1,2.2,„3.1,3.2,„黑体小三号字)第三级(条)1.1.1,1.1.2,„1.2.1,1.2.2,„(黑体四号字)第四级(条),,„,,„„(黑体小四号字)各级标题的段落均设置为:段前段后18磅,无缩进。题序层次编排格式为:章条编号一律左顶格,数字编号后空一个字距,再写章条题名。如在条以下仍需分层,则通常用1.,2.,„或1),2),„编序,左空2个字距。4.图表和公式(1)图表报告中的选图及制图力求精炼。所有图表均应精心设计并用绘图笔绘制,不得徒手勾画

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论