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

内容发布更新时间 : 2024/12/23 19:07:49星期一 下面是文章的全部内容请认真阅读。

课 程 设 计

题 目 布尔表达式的翻译程序设计

学 院 计算机学院

专 业 软件工程

班 级 姓 名

指导教师

何九周

2012 年 1 月 2 日

1

学 号:

布尔表达式的递归下降翻译程序设计

1引言

“编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各

专业的一门重要的专业基础课。编译原理这门课程蕴含着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用。“编译原理”是一门实践性较强的课程,要掌握这门课程中的思想,就必须要把所学到的知识付诸实践。而课程设计是将理论与实践相互联系的一种重要方式。

2概述

2.1设计题目

布尔表达式的递归下降翻译程序设计

2.2设计目的

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

2.3设计任务内容

布尔表达式的文法:

B ? TB′

B′? and T B′|ε T ? FT ′ T′? or FT′|ε

F ? not F |true|false |(B)| i rop i

设计布尔表达式文法,给出该文法的属性文法,用递归下降分析法实现对布尔表达式的翻译,给出翻译的逆波兰式结果。

2

3设计环境与工具

Visual C++

4设计原则

4.1基本方法

在本程序中,输入一段布尔语句,使用递归下降的方法得到其推到过程,并

利用递归下降翻译的方法的到四元式序列,最终根据生成的四元式序列分析得到逆波兰式。

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 函数的流程图如下:

3