编译原理提高型实验报告

编译原理提高型实验报告

ID:8872232

大小:155.00 KB

页数:14页

时间:2018-04-10

编译原理提高型实验报告_第1页
编译原理提高型实验报告_第2页
编译原理提高型实验报告_第3页
编译原理提高型实验报告_第4页
编译原理提高型实验报告_第5页
资源描述:

《编译原理提高型实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、黄冈师范学院提高型实验报告实验课题小型编译程序的设计与实现(实验类型:□综合性□设计性□应用性)实验课程编译原理程序设计实验时间2010年12月20日学生姓名崔东移专业班级软工0801学号20082624011214实验目的和要求实验目的:综合运用各章的知识,完成一个至少具有词法分析器、语法分析器、中间代码产生器的小型编译系统,初步掌握编译系统开发的基本方法;提高学生的应用程序设计能力,提高分析问题、解决问题的能力。要求:1、有语法的简要说明和主要部分的原理说明。2、有源代码及其说明和实验结果及其分析。3、可能的改进和讨论。一、实验条件安装有TurbeC的计算机一台,操作系统为Wind

2、owsXP的操作系统。二、实验原理分析编译系统构成及原编译程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。下图给出了编译系统的顺序图:源程序——》表格管理——》出错处理——》单词符号——》语法单元——》中间代码序——》中间代码——》目标代码——》语法分析器——》语义分析与中间代码生成器——》优化器——》目标代码生成器——》词法分析器其中词法分析器利用超前搜索、状态转换等方法,将源程

3、序转化成为一个一个的单词符号二元式。语法分析器将这些单词符号做为输入,对它进行语法分析。语法分析分为两种方法:自上而下分析法和自下而上分析法。语法分析器把语法单元做为输入供语义分析器使用。语义分析器主要采用的是语法制导方法,即在语法分析的同时进行语法分析,并产生一定的语义动作,来生成中间代码。上面三个过程可以与硬件无关,而接下来的优化器和目标代码生成器是针对某一种处理器而言的。代码优化是将语义分析生成的中间代码进行优化,产生执行效率更高的代码。目标代码生成器最终生成可以在某种机器上运行的机器语言或者汇编语言。在整个编译过程中还包括对表格的操作和对错误的处理。三、实验方案或步骤1、词法分

4、析器设计词法分析器的功能是输入源程序,输出单词符号。我们规定输出的单词符号格式为如下的二元式:(单词种别编码,单词自身的值)14由于我们规定的程序语句中涉及单词较少,故在词法分析阶段忽略了单词输入错误的检查。1.1单词符号的内部定义及在编译程序中的定义我们对常量、变量、临时变量、保留关键字(if、while、begin、end、else、then、do等)、关系运算符、逻辑运算符、分号、括号等,规定其内部定义如下:符号种别编码说明sy_if0保留字ifsy_then1保留字thensy_else2保留字elsesy_while3保留字whilesy_begin4保留字beginsy_d

5、o5保留字dosy_end6保留字enda7赋值语句semicolon8“;”e9布尔表达式Jinghao10“#”S11语句L12复合语句Tempsy15临时变量EA18Band(即布尔表达式中的B∧)EO19Bor(即布尔表达式中的B∨)Plus34“+”Times36“*”Becomes38“:=”赋值Op_and39“and”Op_or40“or”Op_not41“not”Rop42关系运算符Lparent48“(”Rparent49“)”Ident56变量Intconst57整常量1.2变量及数据结构说明编译程序中涉及到的变量及数据结构说明如下:14charch='';/

6、*从字符缓冲区读取当前字符*/intcount=0;/*词法分析结果缓冲区计数器*/staticcharspelling[10]={""};/*存放识别的字*/staticcharline[81]={""};/*一行字符缓冲区,最多80个字符*/char*pline;/*字符缓冲区指针*/staticcharntab1[100][10];/*变量名表,共100项,每项长度10*/structntab{inttc;/*真值*/intfc;/*假值*/}ntab2[200];/*在布尔表达式E中保存有关布尔变量的真、假值*/intlabel=0;/*指向ntab2的指针*/structrw

7、ords{charsp[10];intsy;};/*保留字表的结构,用来与输入缓冲区中的单词进行匹配*/structrwordsreswords[10]={{"if",sy_if},{"do",sy_do},{"else",sy_else},{"while",sy_while},{"then",sy_then},{"begin",sy_begin},{"end",sy_end},{"and",op_and},{"or",op_or},{"not

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

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

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