编译原理递归下降分析法实验Word版

上传人:优*** 文档编号:88286666 上传时间:2022-05-10 格式:DOC 页数:9 大小:152KB
收藏 版权申诉 举报 下载
编译原理递归下降分析法实验Word版_第1页
第1页 / 共9页
编译原理递归下降分析法实验Word版_第2页
第2页 / 共9页
编译原理递归下降分析法实验Word版_第3页
第3页 / 共9页
资源描述:

《编译原理递归下降分析法实验Word版》由会员分享,可在线阅读,更多相关《编译原理递归下降分析法实验Word版(9页珍藏版)》请在装配图网上搜索。

1、计算机科学与工程学院编译原理试验报告二专业班级10计算机工程02试验地点计算机大楼8号机房学生学号1005080214指导教师蔡琼学生姓名刘子龙试验时间2012-11-24试验项目算法与数据结构试验类别基础性() 设计性() 综合性() 其它( )试验目的及要求(1)掌握自上而下语法分析的要求与特点。(2)掌握递归下降语法分析的基本原理和方法。(3)掌握相应数据结构的设计方法。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律主动完成设计任务30分程序与报告程序代码规范、功能正确报告详实完整、体现收获70分备注: 评阅教师: 日 期: 年 月 日整理为word格式试

2、 验 内 容 一、实验目的和要求1、实验目的:(1)掌握自上而下语法分析的要求与特点。 (2)掌握递归下降语法分析的基本原理和方法。 (3)掌握相应数据结构的设计方法。2、实验内容:编程实现给定算术表达式的递归下降分析器。算术表达式文法如下:EE+T | T TT*F | F F(E) | i 二、 设计分析根据实验要求,采用递归下降的方法进行词法分析。递归下降分析法是一种确定的自上而下分析方法,它的基本方法是给文法每一个非终结符号设计一相应的子程序。由于文法的产生式往往是递归的,因而这些子程序也是递归的,也就是说,只要调用第一个产生式,程序就会执行到结束,其他子程序将会在其中调用。过程体按规

3、则右部符号串的顺序编写,构造一个数组s,用来存放输入字符串,构造一个函数read(),将s中将要匹配的字符读入ch中,用于字符匹配时做比较,走产生式右部的表法式,遇到终结符,就进行匹配,失败则程序结束,字符串不满足要求;遇到非终结符,则调用相应的函数。当读到字符串的标识符#号时,程序结束,字符串满足要求。三、 源程序代码/*递归下降词法分析*/文法GE:E-E+T|T/T-T*F|F/F-(E)|i/*/#include整理为word格式#include#include#define Max 50void E_function();void EE_function();void T_funct

4、ion();void TT_function();void F_function();static int i=-1;char ch;char strMax;void TheEnd()printf(Wrong!n);exit(0);void read()i+;if(*(str+i)!=#)ch=*(str+i);elseprintf(分析结果如下:n);printf(Right!n);exit(0);void E_function()printf(tEn);T_function();EE_function();void EE_function()EE_lab:printf(tEEn); if(

5、ch=+)read();整理为word格式T_function();goto EE_lab;elseif(ch!=#&ch!=)TheEnd();void T_function()printf(tTn);F_function();TT_function();void TT_function()TT_lab:printf(tTTn);if(ch=*)read();F_function();goto TT_lab;elseif(ch!=+&ch!=)&ch!=#)TheEnd();void F_function()printf(tFn);if(ch=()read();E_function();if

6、(ch!=)TheEnd();整理为word格式elseread();else if(ch=i)read();elseTheEnd();int main()printf(递归下降分析法:n);char q2=#;printf(请输入字符串:n);gets(str);strcat(str,q);if(strlen(str)Max)printf(调用非终结符顺序如下:n);read();E_function();elseprintf(出入字符串过长!退出!n);return 0;四、测试用例(尽量覆盖所有分支)1.当输入字符i时,实验结果为图4-1 输入i整理为word格式2当输入字符i+i时,实

7、验结果为:图4-2 输入i+i3. 当输入字符(i)时,实验结果为:图4-3 输入(i)4. 当输入字符i*i+i时,实验结果为:图4-4 输入i*i+i整理为word格式5. 当输入字符i*i+i*i时,实验结果为:图4-5 输入i*i+i*i6. 当输入字符(i)+(i)时,实验结果为:图4-6 输入(i)+(i)7. 当输入字符iii时,实验结果为:整理为word格式图4-7 输入iii五、实验总结通过这次实验,我又得到了很多新的体会。由于实验之前看过课本和相关知识,所以在写代码的时候比较快,再加之递归下架分析法比较简单,其实质是控制程序比较简单,但由于采用递归的方法,所以执行效率比较低下,当然说的是比起预测法来说。一切看起来都那么顺利,但是在上传实验的时候,同学让我给他做演示,没想到,在输入(i)进行测试时出错了,我百思不得其解,后来又经过几次修改还是有错,在最后,我发现原来是我在求FOLLOW集的时候出现了一个小错误,导致了程序不能得出正确的结果。所以说,在做编译原理的实验时,写代码之前的准备非常重要,不能出错。以后,我会注意这方面的问题,提高自己的实验能力!整理为word格式 友情提示:本资料代表个人观点,如有帮助请下载,谢谢您的浏览! 整理为word格式

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!