DO-WHILE循环语句翻译程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DO-WHILE循环语句翻译程序的设计
目录
第一章概述 (1)
1.1 课程设计背景 (1)
1.2 课程设计目的 (1)
1.3 实验环境与开发工具 (1)
1.4 C++语言简单介绍 (2)
第二章设计内容 (3)
2.1 设计需求陈述 (3)
2.1.1词法分析的原理 (4)
2.1.2 语法分析器的原理 (5)
2.1.3 语义分析中间代码生成器的原理.......................................... 错误!未定义书签。
2.2 需要完成的功能................................................................................. 错误!未定义书签。
2.2.1 判定输入的文法词法分析是否正确 (8)
2.2.2 判定输入的文法语法分析是否正确 (9)
2.2.3中间代码(四元式)的生成与输出 (10)
2.3 分析器的构造 (11)
第三章逻辑设计 (12)
3.1系统的组织与基本工作流程 (12)
3.2 总体结构逻辑结构图 (13)
第四章详细设计.............................................................................................. 错误!未定义书签。
4.1 软件功能分析................................................................................... 错误!未定义书签。
4.1.1 判定输入文法词法分析是否正确 (14)
4.1.2 判定输入的文法的语法分析是否正确.................................. 错误!未定义书签。
4.1.3 语义分析和中间代码生成...................................................... 错误!未定义书签。
第五章设计结果 (15)
5.1设计结果输出...................................................................................... 错误!未定义书签。
课程设计总结 (16)
参考文献 (16)
第一章概述
1.1 课程设计背景:
《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。该课程系统地介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计算法,因此,一直是一门比较难学的课程。为了更好地理解和掌握编译技术的基本概念、基本原理和实现方法,实践环节非常重要,只有通过上机进行程序设计,才能对比较抽象的教学内容产生具体的感性认识,增强综合分析问题、解决问题的能力,并对提高软件设计水平大有益处。
1.2 设计目的:
课程设计是学生学完本课程基础知识后的最后一个实践性教学环节。作为一项专业综合能力训练,是本课程学习情况的总结与提高,是培养独立思考和科学工作方法,实现由学习向应用过渡的重要环节。本次课程设计的主要目的如下:
1、通过本次课程设计,全面系统的了解编译原理程序构造的一般原理和基本方法,尤其是对词法分析,简单优先分析方法和语义分析中间代码生成的认识和理解;
2、了解词法分析,语法分析,语义分析中间代码生成的基本过程加深对编译程序的深入理解,提高对编译程序工作基本过程及各个阶段基本任务的分析技能;
3、加强对编译程序的生成过程、构造工具及编译程序总流程框图的理解,巩固所学的课本知识。
4、掌握简单优先文法分析是如何根据语法规则逐一分析词法分析所得到的单词,检查语法错误,即掌握语法分析过程;
5、掌握词法分析的构造和简单算符优先文法分析器以及语义分析程序的设计和调试;
6、掌握运用程序方法实现词法分析,简单优先文法分析和语义分析的方法;
7、锻炼并增强程序设计的能力,提高自己的编程水平。
1.3 实验环境与开发工具:
本门课程设计“DO-WHILE循环语句翻译程序的设计”的设计是以计算机为基础的,其开发环境主要在两个方面,即硬件环境和软件环境。硬件环境是指你是用什么类型的服务器,内存硬盘的限制等等。软件环境就是软件运行的环境,例如你的操作系统是什么,你要运行的程序需要什么其他的软件支持什么的。我在试验过程中,所用计算机的软件设备和硬件指标分别如下:
一、硬件环境:
处理器Intel(R) Core(TM)i3 CPU 2.40GHz
内存(RAM)2G
硬盘500G
320M显卡
二、软件环境:
Windows 7 OS
Microsoft Visual C++6.0
1
1.4 C++语言
C++类中包含私有、公有和保护成员C++类中可定义三种不同访问控制权限的成员。一种是私有(Private)成员,只有在类中说明的函数才能访问该类的私有成员,而在该类外的函数不可以访问私有成员;另一种是公有(Public)成员,类外面也可访问公有成员,成为该类的接口;还有一种是保护(Protected)成员,这种成员只有该类的派生类可以访问,其余的在这个类外不能访问。Microsoft Visual C++中ClassWizard(类向导)是Visual C++提供的强大的类处理工具。其中的Message Map(消息映射)选项卡可以让我们添加或删除要处理的Windows消息处理器;Member Variable(成员变量)选项卡为应用程序中的类创建成员变量,并和控件联系在一起;Class Info(类信息)选项卡显示了应用程序中所包含类的一般信息,包括定义的头文件和源文件类名,以及与之相关联的基类。并且Add Class 按钮提供了在工程中创建新类的方法。
第二章设计内容
2.1 设计需求陈述
输入一个DO-WHILE的语句,进行词法分析,词法分析器利用超前搜索,状态转换等方法,将源程序转化成为一个一个的单词符号二元式,如果词法分析无误,则进入语法分析部分,使用简单优先法进行文法分析,为每个终极符与非终极符之间定义优先关系,利用优先关系进行移进-规约,如果能规约到文法的开始符,则文法分析成功,输出四元式.因为这样才能提高编码的效率。
2.1.1词法分析器的原理
输入一个DO-WHILE的语句,进行词法分析,词法分析器利用超前搜索,状态转换等方法,将源程序转化成为一个一个的单词符号二元式,如果词法分析无误,则进入语法分析部分,
(1)词法分析程序的功能是从左到右扫描源程序字符串,根据语言的词法规则识别出各类单词符号,并以二元组(单词种别,单词自身值)的形式输出。
(2)待分析的简单语言的词法
关键字 do c=a+1 while a>b end
运算符 + - := < <= > >= = ; ( ) #
(3)这个词法分析的所有的单词符号,以及它们的种别编码和内部值如下表