- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归下降语法分析设计原理与实现技术实验报告
变更说明
日期
版本
变更位置
变更说明
作者
2014/4/16
1.0
初稿生成
房皓
、实验目的:
本实验的目的在于在教师的引导下以问题冋朔与思维启发的方式,使学生在 不断的探究过程屮拿握编译程序设计和构造的基木原理和实现技术,启迪学生的 抽象思维、激发学生的学习兴趣、培养学生的探究精神和专业索养,从而提高学 生发现问题、分析问题和解决问题的能力。
二、实验内容:
[实验项口]
完成以下描述算术表达式的LL(1)文法的递归下降分析程序
G[E]: E-TEZ
-ATE,| e
Tf FT
「- MF「| e
F- (E) | i
A-*+| -
M—*| /
[设计说明]
终结符号i为用户定义的简单变量,即标识符的定义。
[设计要求]
输入吊应是词法分析的输出二元式序列,即某算术表达式“实验项目 一”的输出结果,输出为输入串是否为该文法定义的算术表达式的判断结果;
递归下降分析程序应能发现输入串出错;
设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。
三、实验环境:
操作系统:Windows 7 软件: VC++6.0
程序功能描述:
?提供了两种输入方式:键盘和文件,有文件输入时需为二元式序列;
?能够对输入的字符串做出正确的递归下降分析判断,并给出判断结果;
?能发现输入串中的错误,包含非法字符,输入不匹配等;
?能够处理一些可预见性的错误,如文件不存在,用户输入非法等。
五、数据结构设计:
全局:
ttdefine MAX 50 char token[MAX]; char token2[MAX]; char current; int i=0;
局部(main。中):
int Flag;
int j=1;
int i=0; char tokenl[MAX]; FILE *Fp;
六、程序结构描述:
?设计方法:
木程序采用从键盘输入或文件读取两种输入方式,其中文件的内容需为 二元式序列,然后按照递归下降分析的方法对输入的字符申进行分析判断, 并输出判断结果,程序通过对输入出的检查能够发现输入出屮的错误。程序 规定的单词符号及其种别码见下表:
单词符号及其种别码衣
单词符号
种别码
单词符号
种别码
(
1
*
5
)
2
/
6
+
3
■
1
7
-
4
#
8
?主要函数说明:
-dgxj classes
-
dgxj classes
-曰 Globals
?A0
advanceO
?EO
?E10
errorO
errorl 0
?FO
initO
justifyfchar ch, int i] ?MO
Q mainO
?TO
?T10
advance():将下一个字符送入current; error():输出错误,表示不是该文法的句子;
error 1();输出错误,输入内容不合法;
init():初始化函数;
justifyO:判断文件读取内容是否合法,包括检查非法字符和不匹配现象 main():主两数
?函数调用关系说明:
main()调用 justify() init() E()、error 1(); justify()调用 error 1();
A()、E()、El()、F()、M()、F()、T()、Tl()根据输入串可互相调用或递归调 用,这些函数均可调用error()函数;
A()、F()、M()调用 advance()函数。
?执行框图:
1)总体结构图:
开始
递归下降分析
否-? ERROR
SUCCESS
2)递归下降分析构框图: E():
El():
T():
T()l:
T-FT
入
出口
Tz —MFT
入口 .
F
M():
F(M)
出口
出口
A():
A—+ | —
出
F():
七、实验过程结果截图:
? 测试用例一:i+i*i/i#
键盘:
,■ F:佼大\M二学期\第痒原珪\硏究性浬番递启下遂语法分析设计原理与§
输入方式:键盘V文件<2〉:1
谱输入长度不超过50且山结束的字符串:
i+i*i/i#
SUCCESS?
Press any key to continue
文件:
_| inputtxt -1 己事本
文件(F)幣(E)鈕(0) ?(V)帮助(H) _
⑺ i)(3, +)⑺ i)(5, *)⑺ i)(6, /)⑺ i) ( #)
■卞校大二学期傑痒原理\硏究性深题\递归下遂港法分析设计原理占
輸人方式:键盘文件<2〉:2 歳人字符串为:
SUCCESS?
Press any key to continue
? 测试用例二i+i*i/# 键盘:
?F:佼大燼二学期傑译原理\研元楼果註谨自下海吾法分析设注京理三
输入方式:键盘文件《2〉:1
谱输入长度不超过50且山结束的字符串:
ERR
文档评论(0)