首页 递归下降语法分析设计原理与实现技术实验报告

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

举报
开通vip

递归下降语法分析设计原理与实现技术实验报告---递归下降语法分析设计原理与实现技术实验报告变更说明日期版本变更位置变更说明作者2014/4/161.0初稿生成房皓1、实验目的:本实验的目的在于在教师的引导下以问题回朔与思维启发的方式,使学生在不断的探究过程中掌握编译程序设计和构造的基本原理和实现技术,启迪学生的抽象思维、激发学生的学习兴趣、培养学生的探究精神和专业素养,从而提高学生发现问题、分析问题和解决问题的能力。2、实验容:[实验项目]完成以下描述算术表达式的LL(1)文法的递归下降分析程序G[E]:E→TE′E′→ATE′|εT→FT′T′→MFT′...

递归下降语法分析设计原理与实现技术实验报告
---递归下降语法分析设计原理与实现技术实验报告变更说明日期版本变更位置变更说明作者2014/4/161.0初稿生成房皓1、实验目的:本实验的目的在于在教师的引导下以问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 回朔与思维启发的方式,使学生在不断的探究过程中掌握编译程序设计和构造的基本原理和实现技术,启迪学生的抽象思维、激发学生的学习兴趣、培养学生的探究精神和专业素养,从而提高学生发现问题、分析问题和解决问题的能力。2、实验容:[实验项目]完成以下描述算术表达式的LL(1)文法的递归下降分析程序G[E]:E→TE′E′→ATE′|εT→FT′T′→MFT′|εF→(E)|iA→+|-M→*|/[设计说明]终结符号i为用户定义的简单变量,即标识符的定义。[设计要求](1)输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果,输出为输入串是否为该文法定义的算术表达式的判断结果;(2)递归下降分析程序应能发现输入串出错;(3)设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。2、实验环境:操作系统:Windows7软件:VC++6.02、程序功能描述:提供了两种输入方式:键盘和文件,有文件输入时需为二元式序列;能够对输入的字符串做出正确的递归下降分析判断,并给出判断结果;能发现输入串中的错误,包含非法字符,输入不匹配等;能够处理一些可预见性的错误,如文件不存在,用户输入非法等。五、数据结构设计:全局:局部(main()中):六、程序结构描述:设计方法:本程序采用从键盘输入或文件读取两种输入方式,其中文件的容需为二元式序列,然后按照递归下降分析的方法对输入的字符串进行分析判断,并输出判断结果,程序通过对输入串的检查能够发现输入串中的错误。程序规定的单词符号及其种别码见下表:单词符号及其种别码表单词符号种别码单词符号种别码(1*5)2/6+3i7-4#8主要函数说明:advance():将下一个字符送入current;error():输出错误,表示不是该文法的句子;error1();输出错误,输入容不合法;init():初始化函数;justify():判断文件读取容是否合法,包括检查非法字符和不匹配现象main():主函数函数调用关系说明:main()调用justify()、init()、E()、error1();justify()调用error1();A()、E()、E1()、F()、M()、F()、T()、T1()根据输入串可互相调用或递归调用,这些函数均可调用error()函数;A()、F()、M()调用advance()函数。执行框图:1)总体结构图:​���开始键盘/文件�token=输入串�从键盘输入�键盘从文件读取�文件init()�递归下降分析是否为文法句子�SUCCESS�ERROR是否​2)递归下降分析构框图:E():E1():T():T()1:M():A():F():7、实验过程结果截图:测试用例一:i+i*i/i#键盘:文件:测试用例二:i+i*i/#键盘:文件:8、实验 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf :实验心得:通过本次实验我锻炼了自己的上机操作能力及编程能力,并对理论知识有了进一步的了解。老师提供的相对应于非终结符号的函数的流程图给了我很大的帮助,使得本实验基本思路变得很清晰,用较为简单的算法就能实现;解决实验中遇到的问题也花费了一部分时间,我增长了处理关于文件错误的能力;实验中遇到的问题:问题主要有在调用某个函数时没有在之前声明或定义过此函数;还有在当用户输入的选择方式非法时,提示错误并要求重新输入,这用一个while循环实现。程序的自我评价:此程序实现了要求中的所有功能,并增加了对用户操作错误、输入串错误检测的功能,但因编程能力的欠缺,其中有的地方不免有些繁杂,还有一些潜藏的问题,需要进一步测试来时程序变得更加具有健壮性。9、程序 清单 安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载 :/****************************************************课题名称:递归下降语法分析设计原理与实现技术作者:房皓进修生13410801最后修改时间:2014.4.1613:52***************************************************//**************************************************单词符号及其分类编码单词符号种别码(1)2+3-4*5/6i7#8//////////////////////////////////////////////////文法G[E]:E→TE′E′→ATE′|εT→FT′T′→MFT′|εF→(E)|iA→+|-M→*|//***************************************************/#include#includeusingnamespacestd;#defineMAX50chartoken[MAX];chartoken2[MAX];charcurrent;inti=0;/****************************************************函数声明****************************************************/voidE();voidE1();voidT();voidA();voidF();voidT1();voidM();voiderror();voiderror1();voidinit()//初始化{current=token[i];}voidjustify(charch,inti)//判断文件读取容是否合法,包括检查非法字符和不匹配现象{switch(ch){case'1':if(token[i]!='(')error1();break;case'2':if(token[i]!=')')error1();break;case'3':if(token[i]!='+')error1();break;case'4':if(token[i]!='-')error1();break;case'5':if(token[i]!='*')error1();break;case'6':if(token[i]!='/')error1();break;case'7':if(token[i]!='i')error1();break;case'8':if(token[i]!='#')error1();break;default:error1();break;}}voidadvance()//读取下一个字符{if(i==MAX)exit(0);current=token[++i];}voidE(){if(current=='i'||current=='('){T();E1();}elseerror();}voidE1(){if(current=='+'||current=='-'){A();T();E1();}elseif(!(current==')'||current=='#'))error();}voidT(){if(current=='i'||current=='('){F();T1();}elseerror();}voidT1(){if(current=='*'||current=='/'){M();F();T1();}elseif(!(current==')'||current=='#'||current=='+'||current=='-'))error();}voidM(){if(current=='*')advance();elseif(current=='/')advance();elseerror();}voidA(){if(current=='+')advance();elseif(current=='-')advance();elseerror();}voidF(){if(current=='('){advance();E();if(current==')')advance();}elseif(current=='i')advance();elseerror();}voiderror(){cout<<"ERROR!"<>flag)||(flag!=1&&flag!=2)){cout<<"\nError!Re-enter:";cin.clear();cin.ignore(200,'\n');}if(flag==1){cout<<"请输入长度不超过50且以#结束的字符串:"<>token;}else{if((fp=fopen("input.txt","r"))==NULL){cout<<"文件打开失败!"<
本文档为【递归下降语法分析设计原理与实现技术实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
ysdg83
从事建筑公司质量、技术
格式:doc
大小:581KB
软件:Word
页数:0
分类:教育学
上传时间:2021-03-12
浏览量:2