1 / 29
文档名称:

布尔表达式的翻译程序设计.doc

格式:doc   大小:1,254KB   页数:29页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

布尔表达式的翻译程序设计.doc

上传人:w447750 2018/5/20 文件大小:1.22 MB

下载得到文件列表

布尔表达式的翻译程序设计.doc

文档介绍

文档介绍:学号:
0120910680328
课程设计
题目
布尔表达式的翻译程序设计
学院
计算机学院
专业
软件工程
班级
0903
姓名
陈银
指导教师
何九周
2012

1

2

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

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

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

布尔表达式的文法:
B ® TB′
B′® and T B′|ε
T ® FT ′
T′® or FT′|ε
F ® not F |true|false |(B)| i rop i
设计布尔表达式文法,给出该文法的属性文法,用递归下降分析法实现对布尔表达式的翻译,给出翻译的逆波兰式结果。
3设计环境与工具
Visual C++
4设计原则

在本程序中,输入一段布尔语句,使用递归下降的方法得到其推到过程,并利用递归下降翻译的方法的到四元式序列,最终根据生成的四元式序列分析得到逆波兰式。

B ® TB′ B’.in=
B′® and T B′ B’.in= addtype(and,entry,)
B′®ε B’.val=ε
T ® FT =.
T′® or FT′ T’.in= addtype(or,entry,)
T′®ε T’val=ε
F ® not F =
F ® true =true
F ® false =false
F ®(B) =
F ® i rop i = rop addtype(i,entry,)
5简要的分析与概要设计
在该程序中,总共包括3个主要功能,第一个功能是对输入的布尔语句进行递归下降的分析,从而得出从文法到该布尔语句的推导过程,第二个功能是使用递归下降的方法,该布尔语句的四元式序列,第三个功能对四元式序列进行扫描并分析每个四元式的结构特点,并据此将四元式转化为逆波兰式。
main 函数的流程图如下:
开始
递归下降分析得到推导过程并输出
递归下降分析得到四元式序列并输出
读四元式并得到逆波兰式并输出
结束
在开始进行本次实验中,本来计划在递归下降分析的过程中就得到逆波兰式,但是经过多次尝试之后总是存在错误,所以采用先得到四元式序列,再根据四元式序列生成逆波兰式这种效率比较低的方法。
6详细的算法描述,框图

四元式类
在该类中,要包含四元式中的四个元素,运算结果,两个运算数以及一个运算符号
class quad
{
public:
char result[8];
char arg1[8];
char op[8];
char arg2[8];
void print()//输出该四元式
{
cout<<result<<"="<<arg1<<" "<<op<<" "<<arg2<<endl;
}
}q[20];
Word结构体
这个结构体的对要用来存储单个单词,包括一个字符串成员。
struct word
{
char w[10];
void print()
{
cout<<w<<":";
}
}wr[200];
逆波兰式结构体
这个结构体的对象用来存储逆波兰式,它的成员是一个word数组
struct nipolan
{
word nibolan[100];
} n;
翻译器类
用来存储翻译过程中的各个变量以及声明主要的函数:
class int