免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学编译原理课程设计说明书学 号: 0120710340517课 程 设 计题 目DO-WHILE语句的翻译程序设计(递归下降法、输出四元式)学 院计算机科学与技术专 业计算机科学与技术班 级计算机科学与技术0705姓 名指导教师 2010年1月8日课程设计任务书学生姓名: 专业班级:计算机0705班 指导教师: 工作单位:计算机科学与技术学院 题 目: DO-WHILE语句的翻译程序设计(递归下降法、输出四元式)初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1) 写出符合递归下降法的文法及属性文法。2) 完成题目要求的中间代码四元式的描述。3) 写出递归下降法的思想,完成语法分析和语义分析程序设计。4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。5) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 问题描述;2文法及属性文法的描述;3语法分析方法及中间代码形式的描述; 4简要的分析与概要设计;5详细的算法描述;6给出软件的测试方法和测试结果;7设计的特点、不足、收获与体会。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:18周的星期五第3-4节课到实验室进行上机验收。设计报告书收取时间:19周的星期四下午。指导教师签名: 2009 年 12 月23日系主任(或责任教师)签名: 年 月 日目录1问题描述2文法及属性文法的描述。2.1 DO-while循环语句的文法2.2 DO-WHILE循环语句的属性文法:3.语法分析方法及中间代码形式的描述3.1语法分析方法3.2中间代码形式描述4简要的分析与概要设计4.1词法分析4.2递归下降翻译器的设计4.3语法制导翻译5详细的算法描述5.1 文法5.2 查错6测试方法和测试结果6.1测试方法6.2测试用例6.3测试结果7设计的特点、不足、收获与体会7.1设计的特点7.2设计的不足,收获与体会8参考文献DO-WHILE语句的翻译分析程序设计 递归下降法、输出四元式1问题描述设计一个DO-WHILE循环语句的词法语法及语义分析程序,语法分析选择递归下降法,采用用语法制导翻译输出中间代码四元式。2文法及属性文法的描述。2.1 DO-while循环语句的文法产生式为S- do E while A,为便于语法制导翻译将其改写如下: 文法G(s)如下:(0) s -do s1 while e(1) s0-s1(2) s1 -i=i op j s2(3) s2 - ;(4) s2 -;s1 (5) e -(i lab j)(6) op -+|-|*|/(7) lab-=|!=|=2.2 DO-WHILE循环语句的属性文法:产生式语义规则Sdo E while A S.begin:=newlabel;E.true:=newlabel;E.false:=S.next;S1.next:=S.begin;S.code:=gen(S.begin:E。codegen(E.true:) S1.codegen(goto S.begin)3.语法分析方法及中间代码形式的描述3.1语法分析方法递归下降法的实现思想是为文法的每个非终结符号设计一个相对应的递归子程序,识别程序由一组这样的子程序组成。它的优点是简单直观,易于构造,很多编译系统所实现缺点是对文法要求很高,由于递归调用多,影响分析器的效率其文法可以表示为: ETE+T TFT*F Fi(E)可以用语法图来表示语言的文法,如图:+TTE*FFTE)(iF3.2中间代码形式描述 中间代码采用四元式输出,一个四元式是一个带有四个域的记录结构,这四个域分别称为oparg1arg2及result。域op包含一个代表运算符的内部码。语句do c=a+b while ab的四元式输出形式如下: 0 ( + , a , b , T ) 1 ( = , T , _, c ) 2 ( jdo s1 while e(1) s0-s1(2) s1 -i=i op j s2(3) s2 - ;(4) s2 -;s1 (5) e -(i lab j)(6) op -+|-|*|/(7) lab-=|!=|=5.2 查错int budengshi(int * b,int & o)/不等式的测试;if(b(-o)+=3)/3表示( if(bo+=10)/变量 if(bo=31|bo=38|bo=33|bo=32|bo=36)/ o+; if(bo=10|bo=1)/变量名和数字 o+; return 1;else cout不等式右部出错endl;return 0;else cout不等号出错endl;return 0;else cout不等式左部出错endl; return 0;else return 0;int fuzhi(int * d,int & h)/赋值语句的测试 if(dh+=10)/变量名 if(dh+=35)/= if(dh+=10)/变量名 if(dh=21|dh=22|dh=23|dh=24/+ h+;if(dh=10|dh=1)/变量名和数字 h+; return 1;else cout赋值语句右部出错 endl;return 0; else cout赋值语句右部出错 endl;return 0;else cout赋值语句右部出错 endl;return 0;else cout赋值语句缺少赋值运算符 endl;return 0; else cout赋值语句左部出错 endl;return 0;int scans1(int *aa,int & zz)/s1的测试;if(aazz=2)return 1;/2表示;else if(fuzhi(aa,zz) /赋值语句xue+;if(aazz+=2)/;if(aazz=6) return 1;/6表示else if (scans1(aa,zz)/scans1的递归;return 1;else if (aazz=10) /;后面既不是赋值语句也不是,而是变量,则错误;cout!endl; return 0;else return 0;else cout分号错误!endl;return 0;else cout赋值语句错误!endl;return 0;int S(int *a,int & z)if (az+=12)/do的测试; if (az+=5)/5表示 if (scans1(a,z) /s1的测试 if (az+=6)/6表示 if(az+=11)/while if (az+=3)/3表示(if(budengshi(a,z)/不等式 if (az+=4)/4表示)coutsucceed! endl;return 1;else cout不等式后缺少)!endl;return 0;else cout不等式出错!endl;return 0; else cout不等式后缺少(!endl;return 0; else couterror whileendl; return 0;else cout缺少 !endl;return 0; else return 0;else cout缺少 !endl;return 0; else couterror doendl; return 0;6测试方法和测试结果6.1测试方法在C+环境下,设计几个有代表的用例,进行测试,例如:输入语句do c=d*e while (ab)若得出的不是预期的结果,那么程序就出现问题。如果有问题的话就进行单步调试找到程序中出现的逻辑问题。6.2测试用例do i=i+j;a=b+c;fhuangwei=g+h;hu=ssf+wef;while (i1110)#(正确!)do i=i+j;a=b+c;f=g+h;whle (i10)#(错误)6.3测试结果测试结果如下:7设计的特点、不足、收获与体会7.1设计的特点本次设计是采用递归下降的方法对输入的DO WHILE 循环语句进行语法,语义分析,并输出四元式。因此程序中充分体现了递归下降的思想。7.2设计的不足,收获与体会通过本次实验,我更系统的了解到编译过程。编译过程一般分为六个阶段的过程,可以由六个模块完成,它们称为词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序,此外,一个完整编译程序还必须包括“表格管理程序”和“出错处理程序”。在实验的思路设计中,我参考了多渠道的知识,综合最佳实现方案设计出算法;然后用序语言具体实现它;最后在编译连接成功后,对比了调试结果与理想结果,得到了问题“DO-WHILE循环语句的翻译程序设计(递归下降法、输出四元式)”的解决方案。总之,我更加深刻的体会到一个编译器该实现的诸多功能,了解到“表格管理”和“出错处理”在整个编译过程中不可忽略的地位。8参考文献1 c+程序设计教程 闵联营 何克右主编2 编译原理(第二版)清华大学出版社本科生课程设计成绩评定表班级:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度铲车租赁及保养维护合同范本2篇
- 二零二五版影视作品独家发行及宣传推广合同3篇
- 标题5:2025版智能交通系统建设承包合同范本3篇
- 二零二五年矿山资产转让与矿山安全生产监督合同3篇
- 浙江省购房合同2025年度7月1日起实施修订2篇
- 二零二五年度水电安装与施工监理兼职合同2篇
- 二零二五版钣金展柜环保认证与绿色产品采购合同3篇
- 二零二五版单位间融资保证借款合同3篇
- 二零二五年钢筋原材料市场风险管理合同2篇
- 二零二五版个性化家庭货物配送服务合同范本3篇
- 河南省郑州外国语高中-【高二】【上期中】【把握现在 蓄力高三】家长会【课件】
- 天津市武清区2024-2025学年八年级(上)期末物理试卷(含解析)
- 2025年中煤电力有限公司招聘笔试参考题库含答案解析
- 企业内部控制与财务风险防范
- 高端民用航空复材智能制造交付中心项目环评资料环境影响
- 建设项目施工现场春节放假期间的安全管理方案
- 胃潴留护理查房
- 污水处理厂运营方案计划
- 山东省高等学校精品课程
- 三菱张力控制器LE-40MTA-E说明书
- 生活垃圾填埋场污染控制标准
评论
0/150
提交评论