下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理课程实验报告课程实验题目: 递归下降子程序实验 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: xxxx 作 者 学 号: xxxxx _作 者 姓 名 : xxxx 指导教师姓名: xxxxx 完 成 时 间 : 2011年3月28日 一、实验目的通过本实验,了解递归下降预测分析的原理和过程以及可能存在的回溯问题,探讨解决方法,为预测分析表方法的学习奠定基础。分析递归下降子程序的优缺点。二、实验内容及要求1 针对算术表达式文法:ETE E +TE| TFT T *FT | F(E) |i为其编写递归下降子程序,判定某个算术表达式是否正确:如j+k
2、*m,j*k+m输入:其输入数据应该为词法分析器输出的记号形式:i+i*i,i*i+i输出:分析结果:算术表达式结构正确或结构错误。三、实验程序设计说明1实验方案设计 各个函数之间的调用关系如下图所示:2 程序源代码源代码如下:#include<stdio.h>#include<iostream>#include<fstream>#include<string>char a10;int lookahead=0;void E1();void T();void T1();void F();void E() printf("E->TE&
3、#39;n"); T(); E1();void E1()if(alookahead='+') printf("E'->+TE'n"); lookahead+;T();E1(); else printf("T'->n");void T() printf("T->FT'n");F();T1();void T1()if(alookahead='*')printf("T'->*FT'n"); lookahead
4、+;F();T1();else printf("T'->n");void F()if(alookahead='i') printf("F->in"); lookahead+; else if (alookahead='(') lookahead+; E();if(alookahead=')') printf("F->(E)n"); lookahead+; elseprintf("n括号不匹配分析失败!n"); exit (0); else p
5、rintf("括号不匹配,分析失败!n"); exit(0); int main()while(1)printf("请输入算数表达式(以#键结束):"); scanf("%s",a);E();if(alookahead='#') printf("句子结构正确n"); else printf("无结束标志,分析失败n");return 0;3程序的执行结果程序运行结果如下所示: 四、实验中出现的问题及解决方法1. 错误处理:最初程序只是将所有的错误都简单的显示为句子结构错误,并没有
6、进行具体详细的说明和解释,最后通过修改程序,细化错误类型,使用了对if语句的嵌套,将错误分为三种类型。2. 句子结构分析:最初程序只能分析结构比较简单的句子类型,比如输入的字符不匹配等问题,输入类似i+i*+等缺少操作数结构类型的句子则不能做出正确的判断,通过修改F()等相关函数解决了这个问题;但此程序只能分析此类文法的句子结构,如果文法改变则需要修改程序,才能进一步分析对应的句子结构。 尽管,在实验过程中遇到的问题得到了解决,但是仍然有很多缺陷。尤其是在进行错误处理时只有三种,并不完善,并没有对错误进行详细的分析和说明的功能。五、体会、意见或建议 通过本次实验基本掌握了语法分析的原理和递归下降子程序分析方法,通过编写程序进一步复习巩固了c语言的相关知识,由于对c语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变异株加强针接种策略优化
- 2025年西安地质矿产勘查开发院有限公司招聘(15人)笔试参考题库附答案
- 双相障碍患者术后情绪稳定方案
- 原发耐药肿瘤靶向免疫个体化联合策略
- 2026年公共卫生与预防医学题库200道附参考答案(精练)
- 2025河北承德市接待中心在全市选调5人备考题库附答案
- 2025河北石家庄市长安区招聘社区工作者168人备考题库附答案
- 2025浙江金华市义乌市青益投发展有限责任公司招聘5人笔试参考题库附答案
- 2026年二级建造师之二建水利水电实务考试题库300道附完整答案(考点梳理)
- 2026年一级注册建筑师之建筑经济、施工与设计业务管理考试题库300道及一套完整答案
- 公寓入住安全协议书
- 2025新疆交通投资(集团)有限责任公司所属公司招聘26人笔试历年典型考点题库附带答案详解2套试卷
- 2025年成本会计考试题及答案6
- 全域土地综合整治项目社会稳定风险评估报告
- 2025年微电网用储能行业分析报告及未来发展趋势预测
- 国家开放大学《大学语文》形考任务1-5
- 奶厂前处理专业知识培训课件
- 铁路客运员培训课件
- 2025-2030服务机器人在餐饮行业的渗透率提升与运营效率研究报告
- 国家安全生产公众号
- 装箱单中英文模板
评论
0/150
提交评论