课程设计(论文)任务书
软 件 学 院 学 院 软件测试 专 业 2 班
一、课程设计(论文)题目 First集和Follow集生成算法模拟 二、课程设计(论文)工作自 2016 年 6 月 20 日起至 2016 年 6 月 24 日止。 三、课程设计(论文) 地点: 软 件 学 院 实 训 中 心 四、课程设计(论文)内容要求: 1.本课程设计的目的
进一步培养学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编 译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时, 强调好的程序设计风格,并综合使用程序设计语言、数据结构和编译原理的知识, 熟 悉使用开发工具VC /JAVA/C#/.NET 。 2.课程设计的任务及要求 1)课程设计任务:
设计一个由正规文法生成First集和Follow集并进行简化的算法动态模拟
2)创新要求:
动态模拟算法的基本功能是: (1) 输入一个文法G
(2)输出由文法G构造的FIRST集算法 (3)输出FIRST算法
(4)输出由文法G构造的FOLLOW集算法 (5)输出FOLLOW集 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学时):总结课程设计任务和设计内容,撰写课程设计论文
学生签名: 2016 年 6 月 24 日
课程设计(论文)评审意见
(1)学习态度(20分):优( )、良( )、中( )、一般( )、差( ); (2)系统设计(20分):优( )、良( )、中( )、一般( )、差( ); (3)编程调试(20分):优( )、良( )、中( )、一般( )、差( ); (4)回答问题(20分):优( )、良( )、中( )、一般( )、差( ); (5)论文撰写(20分):优( )、良( )、中( )、一般( )、差( );
评阅人: 职称: 副教授
2016 年 6 月 日
-第 2 页 -
杨彪:first集和follow集生成算法模拟
中文摘要
此次的课程设计主要是应用计算机实验对自动机求first集follow集,这次课程设计的题目是“first集和follow集生成算法模拟”主要任务是研究自动机在编译方面的应用,并将重点放在求first集和follow集。
本次课程设计是应用C++语言编写的,通过构造first集的算法和follow集的算法,编写一个程序,程序具有通用性,即该程序能够识别不同的文法。基本思想描述,通过对输入的文法进行判断,通过构造的算法对产生式进行扫描,进而根据构造的求first集和follow集的算法。并把计算所得的first集和follow集输出。构造first集的算法和follow集的算法的核心算法是通过查找书籍找到的,因此要做的事只是将他们实现。
本程序实现的功能是只要输入相应正确的的文法,就可以输出该文法对应的first集和follow集。
-第 3 页 -
编译原理课程设计
目 录
一、课程设计任务及要求 .................................................................. 1
1.1 课程设计任务 ........................................................................................... 1 1.2 课程设计要求 ........................................................................................... 1 1.3 课程设计的内容 ....................................................................................... 2
二、需求分析 ...................................................................................... 3 三、设计思路 ...................................................................................... 4 四、详细设计 ...................................................................................... 8 五、运行调试与分析讨论 .................................................................. 9 六、设计体会与小结 ........................................................................ 11 七、参考文献 .................................................................................... 12 附录 ..................................................................................................... 13
-第 4 页 -
杨彪:first集和follow集生成算法模拟
一、课程设计任务及要求
1.1 课程设计任务
本次课程设计的任务是设计一个由正规文法生成First集和Follow集并进行简化的算法动态模拟。它要实现的功能是当我们输入一个正规文法的产生式,程序可以输出该正规文法的First集和Follow集。
First集和Follow集生成模拟算法的基本功能: (1)输入一个文法G
(2)输入由文法G构造First集的算法 (3)输出First集
(4)输入由文法G构造Follow集的算法 (5)输出Follow集
1.2 课程设计要求
当输入任何一个正规文法时,程序输入该正规文法的First集和Follow集。
First 集合的定义:
令X 为一个文法符号(一个终结符或非终结符)或,则集合First (X) 由终结符组成,此外可能还有,它的定义如下:
(1)若X 是终结符或,则First (X) = {X}。
(2)若X 是非终结符,则对于每个产生式X →X1 X2. . . Xn ,First (X)都包含了F i r s t(X1) -{ }。若对于某个i < n ,所有的集合First (X1), . . . , First (Xi) 都包括了。则First (X) 也包括了First (X i + 1 ) -{ }。若所有集合First (X1), . . . , First (Xn)包括了,则First (X)也包括。
现在为任意串a = X1 X2 . . . Xn (终结符和非终结符的串)定义First ( ),如下所示:First (a)包括First (X1) 对于每个i = 2, . . . , n ,如果对于所有的k = 1, . . . ,i -1 ,First (Xk) 包括了,则First (a)就包括了First (Xi)。最后,如果对于所有的i =1, . . . , n ,First (Xi) 包括了,则First (a)也包括了。
Follow集合的定义:
第 1 页