版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与工程学院编译原理试验报告二专业班级10计算机工程02试验地点计算机大楼8号机房学生学号1005080214指导教师蔡琼学生姓名刘子龙试验时间2012-11-24试验项目算法与数据结构试验类别基础性() 设计性() 综合性() 其它( )试验目的及要求(1)掌握自上而下语法分析的要求与特点。(2)掌握递归下降语法分析的基本原理和方法。(3)掌握相应数据结构的设计方法。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律主动完成设计任务30分程序与报告程序代码规范、功能正确报告详实完整、体现收获70分备注: 评阅教师: 日 期: 年 月 日试 验 内 容 一、
2、实验目的和要求1、实验目的:(1)掌握自上而下语法分析的要求与特点。 (2)掌握递归下降语法分析的基本原理和方法。 (3)掌握相应数据结构的设计方法。2、实验内容:编程实现给定算术表达式的递归下降分析器。算术表达式文法如下:EE+T | T TT*F | F F(E) | i 2、 设计分析根据实验要求,采用递归下降的方法进行词法分析。递归下降分析法是一种确定的自上而下分析方法,它的基本方法是给文法每一个非终结符号设计一相应的子程序。由于文法的产生式往往是递归的,因而这些子程序也是递归的,也就是说,只要调用第一个产生式,程序就会执行到结束,其他子程序将会在其中调用。过程体按规则右部符号串的顺序
3、编写,构造一个数组s,用来存放输入字符串,构造一个函数read(),将s中将要匹配的字符读入ch中,用于字符匹配时做比较,走产生式右部的表法式,遇到终结符,就进行匹配,失败则程序结束,字符串不满足要求;遇到非终结符,则调用相应的函数。当读到字符串的标识符#号时,程序结束,字符串满足要求。3、 源程序代码/*递归下降词法分析*/文法GE:E-E+T|T/T-T*F|F/F-(E)|i/*/#include#include#include#define Max 50void E_function();void EE_function();void T_function();void TT_func
4、tion();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(ch=+)read();T_func
5、tion();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(ch!=)TheEnd();elseread();e
6、lse 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 输入i2当输入字符i+i时,实验结果为:图4-2 输入i+i3. 当输入字符(i)时,实验结果为:图4-3 输入(i)4
7、. 当输入字符i*i+i时,实验结果为:图4-4 输入i*i+i5. 当输入字符i*i+i*i时,实验结果为:图4-5 输入i*i+i*i6. 当输入字符(i)+(i)时,实验结果为:图4-6 输入(i)+(i)7. 当输入字符iii时,实验结果为:图4-7 输入iii五、实验总结通过这次实验,我又得到了很多新的体会。由于实验之前看过课本和相关知识,所以在写代码的时候比较快,再加之递归下架分析法比较简单,其实质是控制程序比较简单,但由于采用递归的方法,所以执行效率比较低下,当然说的是比起预测法来说。一切看起来都那么顺利,但是在上传实验的时候,同学让我给他做演示,没想到,在输入(i)进行测试时出错了,我百思不得其解,后来又经过几次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海政法学院《口腔临床药物学》2025-2026学年期末试卷
- 忻州师范学院《幼儿语言教育与活动指导》2025-2026学年期末试卷
- 上海海事职业技术学院《口腔内科学》2025-2026学年期末试卷
- 山西电力职业技术学院《中药制剂检测技术》2025-2026学年期末试卷
- 上海政法学院《刑事侦查学》2025-2026学年期末试卷
- 上海海事大学《卫生人力资源管理》2025-2026学年期末试卷
- 锡林郭勒职业学院《口腔科学》2025-2026学年期末试卷
- 苏州工学院《农村经济管理》2025-2026学年期末试卷
- 上海科技大学《西医内科学》2025-2026学年期末试卷
- 上海健康医学院《供应链管理》2025-2026学年期末试卷
- 英语试卷答案浙江省诸暨市2025年12月高三诊断性考试试题(诸暨一模)(12.6-12.8)
- 专题12.光学(原卷版)-高考物理二轮复习
- 陆上石油天然气开采安全培训课件
- 校服采购合同补充协议
- 氧气底吹熔炼-液态渣侧吹还原技术处理低铅高银精矿工艺介绍
- 2025中国西电集团及中国西电所属企业招聘笔试历年典型考点题库附带答案详解试卷2套
- 养老销售技巧培训
- 农村房屋换房合同范本
- 心衰伴低血压患者的临床管理与优化治疗
- 大数据背景下上汽集团内部审计信息化应用研究
- 项目三合理营养与平衡膳食任务13认识“中国居民平衡膳食宝塔”(教案)-《食品营养与卫生》(高教第二版)同步课堂
评论
0/150
提交评论