编译原理课程设计华东交通大学.docx
- 文档编号:4295993
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:13
- 大小:214.41KB
编译原理课程设计华东交通大学.docx
《编译原理课程设计华东交通大学.docx》由会员分享,可在线阅读,更多相关《编译原理课程设计华东交通大学.docx(13页珍藏版)》请在冰豆网上搜索。
编译原理课程设计华东交通大学
课程设计(论文)任务书
软件学院学 院 软件工程专 业10-4 班
一、课程设计(论文)题目 First集和Follow集生成算法模拟
二、课程设计(论文)工作自2013年6月17日起至2013年6月21日止。
三、课程设计(论文)地点:
软件学院实训中心
四、课程设计(论文)内容要求:
1.本课程设计的目的
进一步培养学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编
译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时,
强调好的程序设计风格,并综合使用程序设计语言、数据结构和编译原理的知识,熟
悉使用开发工具VC/JAVA/C#/.NET。
2.课程设计的任务及要求
1)课程设计任务:
设计一个由正规文法生成First集和Follow集的动态过程模拟
动态模拟算法的基本功能是:
1、输入一个文法G;
2、输出由文法G构造FIRST集的算法;
3、输出First集;
4、输出由文法G构造FOLLOW集的算法;
5、输出FOLLOW集。
2)创新要求:
在基本要求达到后,可进行创新设计,如改进算法效率。
3)课程设计论文编写要求
(1)课程设计任务及要求
(2)设计思路--工作原理、功能规划
(3)详细设计---数据分析、算法思路、功能实现(含程序流程图、主要代码及注
释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,
巩固了哪些知识,有哪些提高。
(6)报告按规定排版打印,要求装订平整,否则要求返工;
(7)课设报告的装订顺序如下:
封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(8)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:
(1)学习态度:
20分;
(2)系统设计:
20分;
(3)编程调试:
20分;
(4)回答问题:
20分;
(5)论文撰写:
20分。
5)参考文献:
(1)张素琴,吕映芝.编译原理[M].,清华大学出版社
(2)蒋立源、康慕宁等,编译原理(第2版)[M],西安:
西北工业大学出版社
6)课程设计进度安排
1.准备阶段(4学时):
选择设计题目、了解设计目的要求、查阅相关资料
2.程序模块设计分析阶段(4学时):
程序总体设计、详细设计
3.代码编写调试阶段(8学时):
程序模块代码编写、调试、测试
4.撰写论文阶段(4学时):
总结课程设计任务和设计内容,撰写课程设计论文
学生签名:
2013年6月21日
课程设计(论文)评审意见
(1)学习态度(20分):
优( )、良( )、中( )、一般( )、差( );
(2)系统设计(20分):
优()、良( )、中( )、一般( )、差( );
(3)编程调试(20分):
优( )、良( )、中( )、一般( )、差( );
(4)回答问题(20分):
优( )、良( )、中( )、一般( )、差( );
(5)论文撰写(20分):
优( )、良( )、中( )、一般( )、差( );
评阅人:
职称:
副教授
2013年6月日
中文摘要
随着计算机科学的飞速发展,形式语言与自动机理论和方法的研究也越来越受到人们的重视,但前者已经成为计算机科学的理论基础。
本课程设计主要研究自动机在编译方面的应用,并将讨论重点放在求First集和Follow集。
根据构造FIRST集的算法和FOLLOW集算法,编写一个程序,程序具有通用性,即编制的语法程序能够适用于不同文法。
基本思想描述,通过对输入的文法进行判断,进而根据构造算法计算FIRST集和FOLLOW集,并把计算所得的FIRST集和FOLLOW集输出。
构造FIRST集的算法和FOLLOW集算法的核心算法教材上已给出,因此所要做的事只是将其实现。
关键字:
FIRST集、FOLLOW集、算法
目 录
一、课程设计任务及要求1
二、需求分析2
三、设计思路3
四、详细设计6
五、运行调试与分析讨论7
六、设计体会与小结11
七、参考文献12
一、课程设计任务及要求
设计一个由正规文法生成First集和Follow集并进行简化的算法动态模拟。
动态模拟算法的基本功能是:
1、输入一个文法G;
2、输出由文法G构造FIRST集的算法;
3、输出First集;
4、输出由文法G构造FOLLOW集的算法;
5、输出FOLLOW集。
在基本要求达到后,可进行创新设计,如改进算法效率。
设计体会与小结中给出设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
二、需求分析
问题描述
设计一个由正规文法生成First集和Follow集并进行简化的算法动态模拟。
【基本要求】
动态模拟算法的基本功能是:
(1)输入一个文法G;
(2)输出由文法G构造FIRST集的算法;
(3)输出First集;
(4)输出由文法G构造FOLLOW集的算法;
(5)输出FOLLOW集。
【测试数据】
输入文法:
E->TE’
E’->+TE’|ε
T->FT’
T’->*FT’|ε
F->(E)|i
【实现提示】
用数据库存储多行文法,用LIST控件显示算法,用GRID类依据算法进行作图。
并实现算法与生成过程的关联。
首先文法G的获取通过用户自行输入,动态获取并运行。
程序用UI界面风格显示。
实现与实际软件的无差别性。
并且,为了方便做好的程序在任意地方运行。
可以将其做成exe安装程序,而不再依赖于编程环境。
程序能够对读取到的任意符合要求的文法进行识别,并能够计算出每一个非终结符的First集Follow集,并且能够将First集Follow集显示出来。
三、设计思路
1.各功能模块程序流程图
1)用户操作界面控制流图
图3-1UI用户操作界面控制流图
2).识别非终结符集和终结符集
图3-2识别非终结符集和终结符集
3).计算各个非终结符的First集
图3-3计算各个非终结符的First集
说明:
在求First集合时,主要用的思想是递归求解。
4.计算各个非终结符的Follow集
图3-4计算各个非终结符的Follow集
四、详细设计
核心类:
FF
FF类:
主要用于处理输入的文法,分析出文法中的终结符,非终结符,计算出每个非终结符的First集和Follow集。
两个核心算法函数如下:
add_First(chara[],Stringb,StringfirstVn[],intflag)
add_Follow(chara[],Stringb,StringfollowVn[],intflag)
其中textArea是用于动态显示算法求解过程的控件。
actionPerformed方法:
用于处理显示add_First、add_Follow方法计算得到的结果。
五、运行调试与分析讨论
1.程序启动运行
图5-1程序启动运行
2.从文本框输入文法
图5-2从文本框输入文法
3.判断是否正规文法并计算FIRST集和FOLLOW集
图5-3判断是否正规文法并计算FIRST集和FOLLOW集
4.显示相应文法的FIRST集和FOLLOW集
图5-4显示相应文法的FIRST集和FOLLOW集
注:
求解过程在下面的文本框中输出,并且,显示结果都是根据读取到的文法动态的生成。
并且动态更新显示在界面上。
六、设计体会与小结
下面总结此次课程设计的一些收获:
1.对程序设计的理解及算法的设计,有了进一步的提高。
2.对程序调试的技巧收获不小。
因为该程序主要是算法研究,所以程序分支较复杂。
断点调试是必不可缺并且很实用的工作。
3.加强了对编译原理的理解,能够很好地理解程序设计与编译原理的关系。
七、参考文献
[1]张素琴,吕映芝.编译原理[M].清华大学出版社
[2]付京周.JAVA程序设计语言[M].北京:
人民邮电出版社
[3]蒋立源、康慕宁等.编译原理(第2版)[M].西安:
西北工业大学出版社
[4]丁振凡.Java语言实用教程[M].北京邮电大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课程设计 华东 交通大学
![提示](https://static.bdocx.com/images/bang_tan.gif)