




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学编译原理DO-WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)1. 系统描述1.1目的通过设计,编制,调试一个DO-WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的此法检查和分析。1.2设计内容及步骤 对DO 语句 WHILE 条件(1) 写出符合给定的语法分析方法的文法及属性文法。(2) 完成题目要求的中间代码三地址表示的描述。(3) 写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。1.3 初始条件理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果有计算机可以在其上进行设计。1.4 开发平台Windows环境下使用Visual C+2. 文法及属性文法的描述2.1 DO-WHILE循环语句的文法文法G(S)如下:S-doAwhile(P); A-id=E; E-TE E-+TE | -TE | e T-FT T-*FT | /FT | e F-(E) | id P-E rop idrop- | = | (E)F可以输出三地址代码为:E1:= (E2) F。42本程序中的三地址代码 S - while (B) SL0:=if (B) goto L1 else goto LnextS - i=EL:= i=EB - E relop EB:= E1 relop E2relop - relop:= =relop:= =relop - relop:= E - (E)FE1:= (E2) FE - iFE:= I FE - nFE:= n FF - +EFF1:= +E F2F - -EFF1:= -E F2F - *EFF1:= *E F2F - /EFF1:= /E F2F -F:= 图2 三地址代码5. 编译系统的概要设计程序是由词法分析和语法分析两部分构成,分别编写了两个类进行实现,类名分别为lex,analyse;词法分析亿用户在proc.txt文件中所写的程序为输入,判断程序中是否还有无法识别的字符,若字符完全合法,分析正常进行,将关键字,变量,数字以及其他字符分类进行文件写入保存,同时利用几个全局变量作为语法分析程序的输入。语法分析是以词法分析的结果为输入,验证输入流中各种符号是否符合语法规则,若不符合,显示出错信息,终止程序执行。否则在语法分析成功时显示生成的中间代码的三地址表示,同时也需要构建语法分析的程序流程图。本次课程设计中实现三地址表示使用的数据结构有栈和数组,在语法分析的同时,使文法符号对应的属性值val(string型,若为double型,则使用函数将其转换为string型)在结合判定运算符优先级的函数precede(char,char)的基础上执行进栈和出栈操作,使得赋值语句和dowhile()循环语句的语义分析正常进行,中间代码能够正确的输出表示。6. 流程图7. 测设结果7.1调试过程程序编写完成后,进行调试,出现如下错误:程序编写过程中有些地方由于输入法切换不及时,导致有些地方分号“;”错误地在中文状态下去输入,使程序调试时出现语法错误;此外,由于程序编写过程中存在很多条件语句及循环语句的嵌套,在各个函数的设计中有些括号忘记写右括号“”,也导致出现语法错误,改正后均无误7.2测试方法 通过输入不同的DO-WHILE语句,测试程序的健壮性和正确性语句一:do i=d+3; While (ab) #语句二:dows=2*3.3/(12-8*0.5)+6;While(i=1) #7.3测试结果 语句一:语句二:8. 研制报告8.1研制过程在做本次实验之前我对LL(1)文法的构成,递归下降原理不是很了解,在查了相关资料后,对此有了深入了解.在整个设计过程中,将词法分析做为一个单独的模块,它可以被任何语法分析调用,提高独立性.并且在编程之前就已经将程序的概要设计都做出来了,所以在编写程序的时候相对比较容易。词法分析,语法分析都是很容易的,只要理解了分析方法的实现原理,编写程序判断输入字符串是否满足给定的文法是比较简单的。8.2本设计的评价在本次设计中,程序具有良好的用户界面,独立的词法与语法接口,并且在语法分析过程中可以准确指出语句中有错误的位置。在编制整个设计的过程中,利用了所学的软件工程,软件设计面向对象的方法。8.3收获与体会通过此次编译原理课程设计,我对编译原理的知识理解地更为深刻。因为高级程序语言在运行之前,都需要经过编辑,编译,调试等步骤,因此此前我对编译的认识还仅仅停留在表面,觉得编译只是程序运行的一个过程,仅此而已。但通过课程的学习以及实验的积累,我还是改变了很多片面的想法,对编译也进行了认真的学习。这次的课设,让我能够很好地认识到这学期对编译知识的掌握情况,并能让自己总结学习。之前做过两次实验,对词法分析和赋值语句的翻译的实质已经初步掌握,所以,课程设计中还是能够较顺利地完成目标。另外,平时对对递归下降法的涉及较少,此次课设也让自己有机会能好好地了解递归的方法。此外,课设还锻炼了自己的动手能力,很好地体现了“纸上得来终觉浅,绝知此事要躬行”的思想,在以后的生活学习中,我要更好地锻炼自己的动手能力,这样才能更好地掌握知识。9. 参考文献1 张素琴、吕映芝、蒋维杜、戴桂兰.编译原理(第二版).清华大学出版社.20052 严蔚敏、吴伟民.数据结构(c语言版).清华大学出版社.20073陈火旺等程序设计语言编译原理(第3版).国防工业出版社20034Alfred.V.Aho,RaviSethi,Jef
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间管理课件观后感
- 八年级家长会学生发言稿
- 语言康复家长课件
- 中班画妈妈课件
- 2025版个人工业厂房买卖合同样本
- 2025版科技企业债券发行与风险控制合同
- 二零二五年度离婚冷静期法律援助与离婚程序全程服务协议
- 2025版架子工工程安全责任保险合同样本
- 2025承包合同下载:城市轨道交通建设项目合作协议
- 二零二五年度企业年会场地及服务合同范本
- 2025年事业单位工勤技能-河南-河南农机驾驶维修工一级(高级技师)历年参考题库含答案解析(5套)
- 2025至2030中国会议平板行业发展趋势分析有效策略与实施路径评估报告
- 2025年《工会基础知识》试题库及答案
- 2025年幼儿园教师岗位聘任协议(含资格认证及薪酬激励)
- 2025年江苏省靖江市辅警招聘考试试题题库及答案详解(名师系列)
- 机械加工投标技术方案(3篇)
- 2025年高考化学试卷真题完全解读(河北卷)
- 成都东部集团有限公司招聘考试真题2024
- 银行收息管理办法
- 海外房产投资项目方案(3篇)
- 肺癌的护理新进展
评论
0/150
提交评论