LL(1)语法分析构造表的设计 正文(2)

2019-04-15 14:45

安徽工程大学课程设计(论文)

1.3 软件定义

Microsoft visual C++ 6.0:--Visual C++ 6.0是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出 Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软 件开发的首选工具Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

Microsoft office Visio 2003:是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻松地可视化、分析和交流复杂信息。它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表。该软件通过创建与数据相关的 Visio 图表(而不使用静态图片)来显示数据,这些图表易于刷新,并能够显著提高生产率。使用 Office Visio 2007 中的各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。

1.4 开发环境

操作系统:Microsoft Windows XP 开发平台:Microsoft visual C++ 6.0

第 6 页

安徽工程大学课程设计(论文)

第二章 需求分析

LL(1)分析法中,第一个L的含义是:从左向右的处理输入进行分析,第二个L的含义是:为每个输入串描绘出一个最左推导,\的含义是:向输入串中输入一个符号就可以唯一确定当前将要的产生式。构造出一个LL(1)语法分析器可以更加直观的解决文法输入串在面临不同产生式的选择上,所要进行的分析操作,从而为开发人员带来方便。

2.1问题陈述

建立一个针对LL(1)文法编译器的自动生成器,要完成此编译器需要对源文件进行两遍处理:第一遍词法分析、第二遍语法分析,语法分析程序应用LL(1)语法分析方法。首先输入(打开)定义好的文法文件,然后建立词法分析器,包括词法分析主程序、扫描部分、关键字表等等。经词法分析后分别计算所输入的文法的每个非终结符号的FIRST集合、每个非终结符号的FOLLOW集合,以及每个规则的SELECT集合,并判断任意一个非终结符号的任意两个规则的SELECT集的交集是不是为空,如果是,则输入文法符号是LL(1)文法,可以进行分析。

在对文法的语法进行分析的过程中,要解决各方面的问题如(1)当文法出现做递归时可能使分析过程陷入无限循环、(2)在推导过程中选择哪一右部展开时,如果选择错误,将导致回溯。对文法进行改造,要实现把某些非LL(1)文法到LL(1)文法的等价变换。其总起过程大体包括以下各方面:1、提取左公因子 2、消除左递归。

2.2 功能要求

设计一个给定LL(1)语法分析器,输入一个句子,能由依据LL(1)分析

第 7 页

安徽工程大学课程设计(论文)

表输出与句子对应的语法树。能对语法树生成过程进行模拟。动态模拟算法的基本功能是:

1、词法分析:打开或输入一个文法文件或句子,能对其进行词法分析,显示token表信息,当存在错误时,能给出良好的错误提示。

2、语法分析:打开或输入一个文法文件或句子,能对其进行语法分析,能显示器中间代码信息,当存在错误时,能显示出语法分析错误信息。

3、LL(1)文法判别:打开(输入)一个形如E->abc的LL(1)文法,能对其求出FIRST集,FOLLOW集,并能用直观的关系图显示;

4、预测分析: 打开(输入)一个形如E->abc的LL(1)文法,能直观的形成表达式文法的预测分析表。

5、句子语法树;根据确认LL(1)文法,确认输入串是否为文法的句子,是,则形成该符号串的分析过程,并直观的显示分析过程。

6、该语法分析器具有粘贴、复制、剪切、保存、退出功能! 7、总控程序:显示各模块功能!

2.3数据流图:

数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图英文缩写DFD(Data Flow Diagram)它是描绘信息流和数据从输入移动到输出的过程中所经受的变换。 数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。 该系统的实现的整个过程的数据流图大体如下: LL(1)语法分析器0层图

第 8 页

安徽工程大学课程设计(论文)

LL(1)语法分析器1层图:

LL(1)语法分析器2层图:

第 9 页

安徽工程大学课程设计(论文)

第3章 设计任务分工

3.1 小组的任务分工

本小组的任务是编写一个程序,进行分析表的构造。 学号 姓名 职责 3070701217 邹纪标 组长 3070701219 3070701207 3070701205 3070701237 3070701222 3070701232 3070701202 陈春辉 闫瑞雪 江於 龚玉静 陈慧娟 赵梦 王报兴 组员 组员 组员 组员 组员 组员 组员 第 10 页

主要任务 消除间接左递归,构造分析表 计算SELECT集,提取左公因子 LL(1)文法的判定 计算FIRST集 计算FIRST集 计算FOLLOW集 计算FOLLOW集 消除直接左递归


LL(1)语法分析构造表的设计 正文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:英语四级大纲词汇 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: