编译原理课设6 下载本文

内容发布更新时间 : 2024/5/19 1:21:25星期一 下面是文章的全部内容请认真阅读。

课程设计(论文)任务书

软 件 学 院 学 院 软件测试 专 业 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 页