编译原理课程设计报告简单文法的编译器的设计与实现_第1页
编译原理课程设计报告简单文法的编译器的设计与实现_第2页
编译原理课程设计报告简单文法的编译器的设计与实现_第3页
编译原理课程设计报告简单文法的编译器的设计与实现_第4页
编译原理课程设计报告简单文法的编译器的设计与实现_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1提供全套毕业论文,各专业都有课 程 设 计 报 告设计题目:简单文法的编译器的设计与实现班 级:计算机1206组长学号:20123966组长姓名:指导教师:设计时间:2014 年 12 月2摘 要编译原理是计算机科学与技术专业一门重要的专业课, 它具有很强的理论性与实践性,目的是系统地向学生介绍编译系统的结构、工作原理以及编译程序各组成部分的设计原理和实现技术,在计算机本科教学中占有十分重要的地位。计算机语言之所以能由单一的机器语言发展到现今的数千种高级语言,就是因为有了编译技术。编译技术是计算机科学中发展得最迅速、最成熟的一个分支,它集中体现了计算机发展的成果与精华。 本课设是词法分析、语法分析、语义分析的综合,外加上扩展任务中间代码的优化和目标代码的生成,主要是锻炼学生的逻辑思维能力,进一步理解编译原理的方法和步骤。关键词:编译原理,前端,目标代码,后端3目 录摘要.3 1. 概述.6 2. 课程设计任务及要求.8 2.1 设计任务.8 2.2 设计要求.9 3. 算法及数据结构.103.1 算法的总体思想.10 3.2 词法分析器模块.11 3.2.1 功能.11 3.2.2 数据结构.11 3.2.3 算法.12 3.3 语法分析器模块.13 3.3.1 功能.13 3.3.2 数据结构.13 3.3.3 算法.14 3.4 中间代码产生器模块.243.4.1 功能.243.4.2 数据结构.243.4.3 算法.253.5 优化器模块.273.5.1 功能.273.5.2 数据结构.273.5.3 算法.283.6 目标代码生成器模块.303.6.1 功能.303.6.2 数据结构.303.6.3 算法.31 44. 程序设计与实现.324.1 程序流程图.324.2 程序说明.334.3 实验结果.355. 结论.426. 参考文献.437. 收获、体会和建议.4451 概述在计算机上执行一个高级语言程序一般要分为两步;第一步,用一个编译程序把高级语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。在学习编译原理课程过程中,逐渐掌握各章节构造编译程序的基本理论,并能独立完成词法分析器、语法分析器和语义分析器实验,在基本实验完成的基础上,逐步完成课程设计。针对自己的理解和学习,实现一个小编译器括符号表的构造。编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析和中间代码产生、优化、目标代码生成。第一阶段,词法分析。词法分析的任务是:输入源程序,对构成源程序的字符串进行分解和扫描,识别出一个个的单词或符号。我们设计了符号表,包括名字栏和信息栏,其中名字栏作为关键字,根据给定的名字,在符号表中查找其信息。如果该名字在符号表中不存在,则将其加入到符号表中,否则返回指向该名字的指针,从符号表中删除给定名字的表项,并且设计了词法分析器,具体实现为设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。词法分析器具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序;,能够拼出语言中的各个单词,将拼出的标识符填入符号表,返回识别单词或符号的种别码和 属性值。第二阶段,语法分析。在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位。通过语法分析,确定整个输入串是否构成语法上正确的“程序” 。我们实现了语法分析器,能够使用预测6分析法、递归下降分析法、算符优先分析法、SLR 分析法实现对表达式、各种说明语句、控制语句进行语法分析。第三阶段,语义分析和中间代码产生。对语法分析所识别的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码) 。这一阶段包括两个方面的工作。首先,对每种语法范畴进行静态语义检查。如果语义正确,则依循语言的语义规则进行中间代码的翻译。第四阶段,优化。优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码。例如公共子表达式的提取、循环优化、删除无用代码。第五阶段,目标代码生成,把中间代码变换成特定机器上的低级语言代码,有赖于硬件系统结构和机器指令含义来实现最后的翻译。在能完成指定寄存器个数的情况下将一中间代码程序段翻译成汇编语言目标代码。通过对编译器的设计实现,一方面再次熟悉了 c 语言的编程方法及思想,另一方面加深了而对所学编译知识的掌握和理解,也深刻的理解了编译器的思想和实现方法;从词法分析到语法分析,再到语义分析,整个独立而又紧密联系的环节,紧紧相扣,整体的实现理解的更加透彻。不过由于编译程序本身涉及到词法分析、语法分析、代码生成、错误恢复和优化等诸多模块,要在实验中做到面面俱到不太可能,所以本编译器不可避免的会存在各种问题,但作为一个具有基本功能的、可扩充的系统,完全达到了巩固编译原理的理论知识,并将其运用于实践的目的。72 课程设计任务及要求2.1 设计任务任务内容:定义一个简单程序设计语言文法(包括变量说明语句、算术运算表达式、赋值语句;扩展包括逻辑运算表达式、If 语句、While 语句等) ;扫描器设计实现;语法分析器设计实现;中间代码设计;中间代码生成器设计实现;中间代码优化;生成目标代码。 分析完任务内容,我们制定出一套满足老师要求的语句的文法结构,具体内容如下(其中“?”代表空产生式):程序void main ()函数体函数体变量声明语句 函数体|赋值语句 函数体|if(表达式)函数体else函数体函数体|while(表达式)函数体 函数体|?变量声明语句类型 标识符 变量声明语句_1 ;类型int |char |bool变量声明语句_1,标识符 变量声明语句_1 |=表达式 变量声明语句_1|?赋值语句标识符=表达式;表达式算数表达式 逻辑表达式逻辑表达式 =算数表达式|T E18E1+ T E1|- T E1|?TF T1T1* F T1|/ F T1|?F标识符常数|(E)这个文法满足老师的要求,但是也存在一些不足,比如变量类型中没有处理实数,数组和结构体以及 if 语句和 while 语句后必须有大括弧匹配。2.2 设计要求 1、在深入理解编译原理基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理;3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;93 算法及数据结构 3.1 算法的总体思想 词法分析器又称为扫描器,它的任务就是对输入的源程序进行词法分析输出单词符号供语法分析使用,语法分析器简称分析器,对单词符号串进行语法分析,根据语法规则进行推导,识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序” 。语义分析与中间代码产生器,按照语义规则对语法分析器推导出的语法单位进行语义分析并把它们翻译成一定形式的中间代码。优化器就是对中间代码进行优化处理。目标代码生成器,把中间代码翻译成目标程序。符号表用来登记源程序中出现的变量及其属性。另外,如果源程序有错误,编译发现错误,把有关错误信息报告给用户,即出错处理。流程图如下:源程序 单词符号语法单位中间代码中间代码目标代码词法分析器语法分析器语义分析及中间代码产生器优化器目标代码生成器符号表出错处理103.2 词法分析器模块3.2.1 功能词法分析器功能室输入源程序,输出单词符号。单词符号是一个程序语言的基本语法符号。程序语言的单词符号一般可分为下列 5 种。(1)关键字 是由程序语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论