递归下降语法分析设计原理与实现技术实验报告7188.pdf
《递归下降语法分析设计原理与实现技术实验报告7188.pdf》由会员分享,可在线阅读,更多相关《递归下降语法分析设计原理与实现技术实验报告7188.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-递归下降语法分析设计原理与实现技术 实验报告 变更说明 日期 版本 变更位置 变更说明 作者 2014/4/16 1.0 初稿生成 房皓 一、实验目的:本实验的目的在于在教师的引导下以问题回朔与思维启发的方式,使学生在不断的探究过程中掌握编译程序设计和构造的根本原理和实现技术,启迪学生的-抽象思维、激发学生的学习兴趣、培养学生的探究精神和专业素养,从而提高学生发现问题、分析问题和解决问题的能力。二、实验容:实验工程 完成以下描述算术表达式的LL(1)文法的递归下降分析程序 GE:ETE EATE|TFT TMFT|F(E)|i A+|-M*|/设计说明 终结符号i 为用户定义的简单变量,即标
2、识符的定义。设计要求 1 输入串应是词法分析的输出二元式序列,即*算术表达式实验工程一的输出结果,输出为输入串是否为该文法定义的算术表达式的判断结果;2递归下降分析程序应能发现输入串出错;3设计两个测试用例尽可能完备,正确和出错,并给出测试结果。三、实验环境:操作系统:Windows 7 软件:VC+6.0 四、程序功能描述:提供了两种输入方式:键盘和文件,有文件输入时需为二元式序列;能够对输入的字符串做出正确的递归下降分析判断,并给出判断结果;能发现输入串中的错误,包含非法字符,输入不匹配等;能够处理一些可预见性的错误,如文件不存在,用户输入非法等。五、数据构造设计:全局:局部main()中
3、:-六、程序构造描述:设计方法:本程序采用从键盘输入或文件读取两种输入方式,其中文件的容需为二元式序列,然后按照递归下降分析的方法对输入的字符串进展分析判断,并输出判断结果,程序通过对输入串的检查能够发现输入串中的错误。程序规定的单词符号及其种别码见下表:单词符号及其种别码表 单词符号 种别码 单词符号 种别码 1*5 2/6+3 i 7-4#8 主要函数说明:advance():将下一个字符送入 current;error():输出错误,表示不是该文法的句子;error1();输出错误,输入容不合法;init():初始化函数;justify():判断文件读取容是否合法,包括检查非法字符和不匹
4、配现象 main():主函数 函数调用关系说明:main()调用 justify()、init()、E()、error1();justify()调用 error1();A()、E()、E1()、F()、M()、F()、T()、T1()根据输入串可互相调用或递归调用,这些函数均可调用 error()函数;A()、F()、M()调用 advance()函数。执行框图:1)总体构造图:2递归下降分析构框图:E():E1():T():T()1:M():A():F():七、实验过程结果截图:测试用例一:i+i*i/i#键盘:文件:测试用例二:i+i*i/#-键盘:文件:八、实验总结:实验心得:通过本次实
5、验我锻炼了自己的上机操作能力及编程能力,并对理论知识有了进一步的了解。教师提供的相对应于非终结符号的函数的流程图给了我很大的帮助,使得本实验根本思路变得很清晰,用较为简单的算法就能实现;解决实验中遇到的问题也花费了一局部时间,我增长了处理关于文件错误的能力;实验中遇到的问题:问题主要有在调用*个函数时没有在之前声明或定义过此函数;还有在当用户输入的选择方式非法时,提示错误并要求重新输入,这用一个 while 循环实现。程序的自我评价:此程序实现了要求中的所有功能,并增加了对用户操作错误、输入串错误检测的功能,但因编程能力的欠缺,其中有的地方不免有些繁杂,还有一些潜藏的问题,需要进一步测试来时程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 下降 语法分析 设计 原理 实现 技术 实验 报告 7188
限制150内