最新递归下降语法分析设计原理与实现技术实验报告.docxVIP

最新递归下降语法分析设计原理与实现技术实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归下降语法分析设计原理与实现技术 实验报告 变更说明 日期 版本 变更位置 变更说明 作者 2014/4/16 1.0 初稿生成 房皓 、实验目的: 使学生在启迪学生的 使学生在 启迪学生的 从而提高学 二、实验内容: [实验项目] 完成以下描述算术表达式的LL(1)文法的递归下降分析程序 G[E]: TE ETTE] T- FT T HMFT| F- (E)|i A—+|- M — *|/ [设计说明] 终结符号i为用户定义的简单变量,即标识符的定义。 [设计要求] 输入串应是词法分析的输出二元式序列, 即某算术表达式“实验项目 的输出结果,输出为输入串是否为该文法定义的算术表达式的判断结果; (2) 递归下降分析程序应能发现输入串出错; (3) 设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。 三、实验环境: 操作系统:Windows 7 软件: VC++6.0 四、程序功能描述: 提供了两种输入方式:键盘和文件,有文件输入时需为二元式序列; 能够对输入的字符串做出正确的递归下降分析判断,并给出判断结果; 能发现输入串中的错误,包含非法字符,输入不匹配等; 能够处理一些可预见性的错误,如文件不存在,用户输入非法等。 五、数据结构设计: 全局: MAX 弓 Q char token ; 匚har tokens[MAX]; char current; int i=U; 局部(main()中): int Fg; int j-=1; int i=0; char tokenl[MAX]; FILE 六、程序结构描述: 设计方法: 本程序采用从键盘输入或文件读取两种输入方式,其中文件的内容需为 二元式序列,然后按照递归下降分析的方法对输入的字符串进行分析判断, 并输出判断结果,程序通过对输入串的检查能够发现输入串中的错误。程序 规定的单词符号及其种别码见下表: 单词符号及其种别码表 单词符号 种别码 单词符号 种别码 ( 1 * 5 ) 2 / 6 + 3 i 7 - 4 # 8 主要函数说明: - 肆 dgxj classes -Globals AO advance(] ◎ EO 卜?Eg errorQ $ errorl 0 卜?FO Q initfl Justify(c:har chJ int i| ?MO mainQ I?TO ^TIO advance():将下一个字符送入 current ; error():输出错误,表示不是该文法的句子; error1();输出错误,输入内容不合法; init():初始化函数; justify。:判断文件读取内容是否合法,包括检查非法字符和不匹配现象 mai n():主函数 函数调用关系说明: ma in ()调用 justify()、in it()、E() error1(); justify()调用 error1(); A()、E() E1() F()、M()、F()、T()、T1()B据输入串可互相调用或递归调用, 这些函数均可调用error()函数; A()、F()、M()调用 advance()函数。 执行框图: 1)总体结构图: SUCCESS V J 2)递归下降分析构框图: E(): * * * * E1(): C in I L | ( ALL T A Y CAT1 L E ■M FIRSKTE^ )={t ( } E=truc urrent= + 魂 出口 FOLLOWtE^-f).总} MS urreut A A=(ruc Y * |e「 =truf 出口 出o Ez = false T T(): 入口 Current-1M( ? N 出口T-fake 出口 T-fake 「 N C T =tm£S Y k T=tiue ■出 D T()1: f MFT \ 入口 CuiTetii=JitM fV M=true M(): F=tme Mf *| / F(M) +或— P | T * ? 电口 T* -false 出o A(): Nuient=+-^3 N uient=+-^3 r N Current= 4 Y * A=false F(): Ff (E) | 1 C urrenMJ advance advance F=true 七、实验过程结果截图: 测试用例一:i+i*i/i# 键盘: ■下:佼大俑二学期 第泽惑 研兖性谍题惟归下薩语沅非析莎二卑牙爭 龜入方式:撻盘丈件 詰输人长度不起过50且如结束的字符串= SUCCESS* Press an寸 key to coratinue_ 文件: j input trt - SS本 丈禅?病旧IS式(0)直看M 辛助fH) 况D (玄*)亿i)(反粉亿i)血/)⑺D〔町 4 4 逾入方式;罐盘文

文档评论(0)

laugh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档