编译原理课程设计--赋值语句的翻译程序

编译原理课程设计--赋值语句的翻译程序

ID:35625374

大小:706.50 KB

页数:22页

时间:2019-04-03

编译原理课程设计--赋值语句的翻译程序_第1页
编译原理课程设计--赋值语句的翻译程序_第2页
编译原理课程设计--赋值语句的翻译程序_第3页
编译原理课程设计--赋值语句的翻译程序_第4页
编译原理课程设计--赋值语句的翻译程序_第5页
资源描述:

《编译原理课程设计--赋值语句的翻译程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、武汉理工大学《编译原理》课程设计说明书学号:0120910680421课程设计题目赋值语句的翻译程序学院专业班级姓名指导教师2011年12月30日-21-武汉理工大学《编译原理》课程设计说明书课程设计任务书学生姓名:朱鹏专业班级:软件工程0904指导教师:何九周工作单位:计算机学院题目:赋值语句的翻译程序初始条件:程序设计语言:主要使用C语言的开发工具,或者采用LEX、YACC等工具,也可利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,说明书撰写等具体要求)1.明确课

2、程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。2.主要功能包括:对教材P180中的赋值语句文法,给出该文法的属性文法,同时实现赋值语句的翻译,生成的中间代码为逆波兰式。(参考教材P179~181)3.进行总体设计,详细设计:包括算法的设计和数据结构设计。系统实施、调试,合理使用出错处理程序。4.设计报告:要求层次清楚、整洁规范、不得相互抄袭。正文字数不少于0.3万字。包含内容:①课程设

3、计的题目。②目录。③正文:包括引言、需求分析、总体设计及开发工具的选择,设计原则(给出语法分析方法及中间代码形式的描述、文法和属性文法的设计),数据结构与模块说明(功能与流程图)、详细的算法设计、软件调试、软件的测试方法和结果、有关技术的讨论、收获与体会等。④结束语。⑤参考文献。⑥附录:软件清单(或者附盘)。时间安排:消化资料、系统调查、形式描述1天系统分析、总体设计、实施计划3天撰写课程设计报告书1天指导教师签名:2011年12月30日系主任(或责任教师)签名:2011年12月30日-21-武汉理工大学《编译原理》课程设计说明书目录1引言32需求

4、分析43总体设计53.1设计原则53.1.1文法53.1.2属性文法的设计53.2数据结构和模块说明63.2.1主函数63.2.2语义分析函数73.2.3语句函数83.2.4赋值语句函数93.2.5表达式函数93.2.6项函数103.2.7因子函数113.3开发工具的选择114详细的算法设计114.1语义分析函数114.2语句函数134.3赋值语句函数134.4表达式函数144.5项函数154.6因子函数154.7对目标代码的翻译函数175软件调试186软件的测试方法和结果187有关技术的讨论208收获与体会209结束语20-21-武汉理工大学《编

5、译原理》课程设计说明书赋值语句的翻译程序1引言递归下降法是语法分析中最易懂的一种方法。它的主要原理是,对每个非终极符按其产生式结构构造相应语法分析子程序,其中终极符产生匹配命令,而非终极符则产生过程调用命令。因为文法递归相应子程序也递归,所以称这种方法为递归子程序下降法或递归下降法。其中子程序的结构与产生式结构几乎是一致的。本文将采用这种方法对赋值语句进行翻译,并得到逆波兰式的中间代码结果。逆波兰式简介在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。对中缀表达式的计值,并非按运算符出现的自然顺序来执行

6、其中的各个运算,而是根据算符间的优先关系来确定运算的次序,此外,还应顾及括号规则。因此,要从中缀表达式直接产生目标代码一般比较麻烦。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。这种表示法的一个特点是,表达式中各个运算是按运算符出现的顺序进行的,故无须使用括号来指示运算顺序,因而又称为无括号式。下面我们对照地给出一些表达式的两种表示:中缀表示后缀表示A+BAB+(1)A+B*CABC*+(2)(A+B)*(C+D)AB+CD+*(3)x/y^z-d*exyz

7、^/de*-(4)(a=0∧b>3)∨(e∧x<>y)a0=b3>∧exy<>∧∨(5)从上面的例子可以看出:(1)在两种表示中,运算对象出现的顺序相同;(2)在后缀表示中,运算符按实际计算顺序从左到右排列,且每一运算符总是跟在其运算对象之后。-21-武汉理工大学《编译原理》课程设计说明书顺便提及,Lukasiewicz原来提出的是前缀表示,即把每一运算符置于其运算对象之前。例如,中缀式a+b和(a+b)/c相应的前缀表示分别为+ab和/+abc。因此,为了区分前缀和后缀表示,通常将后缀表示称为逆波兰表示。因前缀表示并不常用,所以有时也将后缀表示就

8、称为波兰表示。1需求分析本课程设计的目的是为了实现赋值语句的递归下降翻译程序设计,并给出对应的逆波兰式中间代码。〈赋值语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。