没有合适的资源?快使用搜索试试~ 我知道了~
编译原理课程设计报告预测分析程序的设计.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2022-07-14
00:09:59
上传
评论
收藏 166KB DOCX 举报
温馨提示
试读
25页
编译原理课程设计报告预测分析程序的设计.docx
资源推荐
资源详情
资源评论
课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位:
题 目: 预测分析程序的设计
初始条件:
程序设计语言:主要使用 C 语言的开发工具,或者采用 LEX、YACC 等工具,也可
利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,说明书撰写等具
体要求)
1.
明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要
求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体
问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。
2.
课设任务:对教材 P94 中的上下文无关文法,实现它的预测分析程序,给出符号串
i+i*i 的分析过程。(参考教材 P93~96)
3. 主要功能:对于这个给的L(L
1)文法,假设所有非终结符号P
的 FIRST
集合和FOLLOW
集合都是已知的,构造其预测分析表,程序显示输出预测分析表,同时用这个预测分
析程序对输入串进行分析,并给出了栈的变化过程。
4.
进行总体设计,详细设计:包括算法的设计和数据结构设计。系统实施、调试,合
理使用出错处理程序。
5.
设计报告:要求层次清楚、整洁规范、不得相互抄袭。正文字数不少于0.3 万字。
包含内容:
①课程设计的题目。 ②目录。
③正文:包括引言、需求分析、总体设计及开发工具的选择,设计原则(给出语法分
析方法及中间代码形式的描述、文法和属性文法的设计),数据结构与模块说明(功能
与流程图)、详细的算法设计、软件调试、软件的测试方法和结果、有关技术的讨论、
收获与体会等。
④结束语。 ⑤参考文献。 ⑥附录:软件清单(或者附盘)。
时间安排:
消化资料、系统调查、形式描述 1 天
系统分析、总体设计、实施计划 3 天
撰写课程设计报告书 1 天
指导教师签名: 2010 年 6 月 11 日
系主任(或责任教师)签名: 2010 年 6 月 11 日
《编译原理》课程设计说明书
3
目 录
1
引言 ..............................................5
2
需求分析 ..........................................5
2.1 问题的提出 ......................................5
2.2 问题的解决 ......................................5
2.3 解决步骤 ........................................6
3
总体设计 ..........................................6
3.1 概要设计 ........................................6
3.1.1 设计原理......................................6
3.1.2 构造 LL(1)分析表 ............................7
3.2 详细设计 .......................................10
3.2.1 程序流程图...................................10
3.2.2 设计要求.....................................12
3.2.3 设计原理.....................................12
3.2.3.1 FIRST(X)(X
�
VN VT)的构造................12
3.2.3.2 函数 getFIRST(
�
) (
�
=X1X2X3…Xn)的构造 . 12
3.2.3.3 FOLLOW(A) (A
�
VN)的构造 .................13
3.2.3.4 分析表 M【A,a】的构造 ...................13
3.2.3.5 匹配过程的实现..........................13
《编译原理》课程设计说明书
4
3.3 程序设计 .......................................14
3.3.1 总体方案设计.................................14
3.3.2 各模块的实现.................................14
4
开发工具的选择 ...................................
23
5
程序测试 .........................................23
6
有关技术的讨论 ...................................25
7
收获与体会 .......................................25
8
参考文献 .........................................26
《编译原理》课程设计说明书
5
1
引言
一个编译程序在对某个源程序完成了词法分析工作之后,就进入了语法分析
阶段,分析检查源程序是否语法上正确的程序,并生成相应的内部中间表供下一
阶段使用。程序设计语言是一般形式语言的特例,程序语法正确性的检查时语法
句子的识别,语法分析问题也就是句型识别问题。按照识别句子语法树建立的方
式,有自顶向下与自底向上两大类分析技术。本课程讨论自顶向下的情况。
本次课程设计所做的工作是对已知 FIRST 集合和 FOLLOW 集合的 LL(1)文
法构造其预测分析表,程序显示输出预测分析表,同时用这个预测分析程序对输
入串进行分析,并给出了栈的变化过程。
2
需求分析
2.1
问题的提出
语法分析是编译过程的核心部分。他的任务是在词法分析识别单词符号串的
基础上,分析并判断程序的的语法结构是否符合语法规则。语言的语法结构是用上
下文无关文法描述的。因此语法分析器的工作的本质上就是按文法的产生式, 识别
输入符号串是否为一个句子。对于一个文法,当给你一串符号是,如何知道它是
不是该文法的一个句子,这是这个课程设计所要解决的一个问题。
2.2
问题的解决
其实要知道一串符号是不是该文法的一个句子,只要判断是否能从文法的开
始符号出发推导出这个输入串。语法分析可以分为两类,一类是自上而下的分析法,
一类是自下而上的分析法。自上而下的主旨是,对任何输入串,试图用一切可能的
办法,从文法开始符号出发,自上而下的为输入串建立一棵语法树。或者说,为输
入串寻找一个最左推倒,这种分析过程的本质是一种试探过程,是反复使用不同产
生式谋求匹配输入串的过程我主要是自上而下的过程。
《编译原理》课程设计说明书
6
2.3
解决步骤
在自上而下的分析法中,主要是研究 LL(1)分析法。它的解决步骤是首先接
收到用户输入的一个文法,对文法进行检测和处理,消除左递归,得到 LL(1)
文法,这个文法应该满足:无二义性,无左递归,无左公因子。当文法满足条件
后,再分别构造文法每个非终结符的 FIRST 和 FOLLOW 集合,然后根据 FIRST
和 FOLLOW 集合构造 LL(1)分析表,最后利用分析表,根据 LL(1)语法分析
构造一个分析器。当然本课设只是针对 FIRST 和 FOLLOW 集合都以知的任意
输入的 LL(1)文法。LL(1)的语法分析程序包含了三个部分,总控程序,预
测分析表函数,先进先出的语法分析栈。
3
总体设计
3.1
概要设计
3.1.1
设计原理
所谓 LL(1)分析法,就是指从左到右扫描输入串(源程序),同时采用最
左推导,且对每次直接推导只需向前看一个输入符号,便可确定当前所应当选择的
规则。实现 LL(1)分析的程序又称为LL(1)分析程序或LL1(1)分析器。
我们知道一个文法要能进行 LL(1)分析,那么这个文法应该满足:无二义
性,无左递归,无左公因子。当文法满足条件后,再分别构造文法每个非终结符
的 FIRST 和 FOLLOW 集合,然后根据 FIRST 和 FOLLOW 集合构造 LL(1)
分析表,最后利用分析表,根据 LL(1)语法分析构造一个分析器。LL(1)的语
法分析程序包含了三个部分,总控程序,预测分析表函数,先进先出的语法分析栈,
本程序也是采用了同样的方法进行语法分析,也是采用了 C++语言来编写。
剩余24页未读,继续阅读
资源评论
Cheng-Dashi
- 粉丝: 108
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功