武汉理工大学-编译原理课程设计-中国好学长系列之小灰灰的爸爸讲解 下载本文

内容发布更新时间 : 2024/5/3 4:31:49星期一 下面是文章的全部内容请认真阅读。

武汉理工大学《编译原理》课程设计说明书

学 号:

课 程 设 计

题 目 学 院 专 业 班 级 姓 名 指导教师

布尔表达式翻译为逆波兰式的算法实现

计算机科学与技术学院

软件工程

中国好学长系列 小灰灰的爸爸

何九周

2014 年 1 月 2 日

武汉理工大学《编译原理》课程设计说明书

目录

课程设计任务书 ......................................................................... 错误!未定义书签。 1引言 ............................................................................................................................ 2 2概述 ............................................................................................................................ 3 2.1设计题目 ............................................................................................................. 3 2.2设计目的 ............................................................................................................. 3 2.3设计任务内容 ..................................................................................................... 3 3设计环境与工具 ........................................................................................................ 4 4设计原则 .................................................................................................................... 4 4.1基本方法 ............................................................................................................. 4 4.2属性文法 ............................................................................................................. 4 5简要的分析与概要设计 ............................................................................................ 4 6详细的算法描述,框图 ............................................................................................ 5 6.1主要数据结构的设计 ......................................................................................... 5 6.2全局变量设计 ..................................................................................................... 7 6.3递归下降得到推导过程 ..................................................................................... 7 6.4递归下降得到四元式序列 ................................................................................ 11 6.5分析四元式序列生成逆波兰式 ....................................................................... 14 7软件的测试方法和测试结果 .................................................................................. 16 8设计的特点、不足收获与体会 .............................................................................. 16 8.1设计的特点 ....................................................................................................... 16 8.2设计的不足 ....................................................................................................... 16 8.3收获与体会 ....................................................................................................... 16 9参考文献 .................................................................................................................. 16 附录:本科生课程设计成绩评定表

1

武汉理工大学《编译原理》课程设计说明书

课程设计任务书

学生姓名: 专业班级: 指导教师: 何九周 工作单位:计算机科学与技术学院 题 目: 布尔表达式翻译为逆波兰式的算法实现 初始条件:

程序设计语言:主要使用C语言的开发工具,或者采用LEX、YACC等工具,也可利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。

要求完成的主要任务: (包括课程设计工作量及其技术要求,说明书撰写等具体要求)

1. 明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。

2. 主要功能包括:利用LR分析法编制、调试其语法及语义分析程序,生成的中间代码为逆波兰式。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

3. 进行总体设计,详细设计:包括算法的设计和数据结构设计。系统实施、调试,合理使用出错处理程序。

4. 设计报告:要求层次清楚、整洁规范、不得相互抄袭。正文字数不少于0.3万字。包含内容:

①课程设计的题目。 ②目录。

③正文:包括引言、需求分析、总体设计及开发工具的选择,设计原则(给出语法分析方法及中间代码形式的描述、文法和属性文法的设计),数据结构与模块说明(功能与流程图)、详细的算法设计、软件调试、软件的测试方法和结果、有关技术的讨论、收获与体会等。

④结束语。 ⑤参考文献。

⑥附录:软件清单(或者附盘)。

时间安排:

消化资料、系统调查、形式描述 系统分析、总体设计、实施计划 撰写课程设计报告书

1天 3天 1天

指导教师签名: 2014年 1月 2日 系主任(或责任教师)签名: 2014年 1月 2日

2

武汉理工大学《编译原理》课程设计说明书

布尔表达式翻译为逆波兰式的算法实现

1引言

实践离不开理论,而理论是为了实践,这一点在软件设计的学习过程中显得尤为重要。而《编译原理》是一门研究设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要的专业基础课。编译原理这门课程蕴含着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用。“编译原理”是一门实践性较强的课程,要掌握这门课程中的思想,就必须要把所学到的知识付诸实践。而课程设计是将理论与实践相互联系的一种重要方式。本文是《编译原理》中的“布尔表达式翻译为逆波兰式的算法实现”课程设计的说明书。

2概述

2.1设计题目

布尔表达式翻译为逆波兰式的算法实现

2.2设计目的

课程设计是将理论加以实践较好的方法,也对学生的一种全面综合训练,是与课堂

听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。

2.3设计任务内容

针对布尔表达式的二义性文法:

B ? B and B | B or B | not B | ( B ) | true|false | i rop i 将文法拓广为G’[B’]:

(0) B’? B (1) B ? B and B (2) B ? B or B (3) B ? not B (4) B ? ( B ) (5) B ? true (6) B ? false

3

武汉理工大学《编译原理》课程设计说明书

(7) B ? i rop i

利用LR分析法编制、调试其语法及语义分析程序,生成的中间代码为逆波兰式。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

3设计环境与工具

Visual C++

4设计原则

4.1基本方法

在本程序中,要求利用LR分析法编制、调试其语法及语义分析程序,生成的中间代

码为逆波兰式。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

4.2属性文法

B ? TB′ B’.in=T.type

B′? and T B′ B’.in=T.type addtype(and,entry,B.in) B′?ε B’.val=ε T ? FT T.in=F.type.

T′? or FT′ T’.in=F.type addtype(or,entry,B.in) T′?ε T’val=ε

F ? not F F.val= not.F.val F ? true F.val=true F ? false F.val=false F ?(B) F.val=B.val F ? i rop i F.val=i.lexval rop i.lexval addtype(i,entry,l.in)

5简要的分析与概要设计

该程序共包括3个模块,第一个模块是对输入的布尔语句进行递归下降的分

析,从而得出从文法到该布尔语句的推导过程,第二个模块是使用递归下降的方法,该布尔语句的四元式序列,第三个模块对四元式序列进行扫描并分析每个四元式的结构特点,并据此将四元式转化为逆波兰式。 main 函数的流程图如下:

4