编译原理课程设计报告-简单编译器的设计与实现

编译原理课程设计报告-简单编译器的设计与实现

ID:6650463

大小:3.38 MB

页数:44页

时间:2018-01-21

编译原理课程设计报告-简单编译器的设计与实现_第1页
编译原理课程设计报告-简单编译器的设计与实现_第2页
编译原理课程设计报告-简单编译器的设计与实现_第3页
编译原理课程设计报告-简单编译器的设计与实现_第4页
编译原理课程设计报告-简单编译器的设计与实现_第5页
资源描述:

《编译原理课程设计报告-简单编译器的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理课程设计——简单编译器的设计与实现班级:组长:组员:指导教师:设计时间:2016年12月姓名分工组长:语法分析部分,语义分析和中间代码生成部分,符号表的管理,目标代码的生成,数据结构的设计和总体框架的设计。组员:中间代码优化部分,负责从DAG图中获得优化后的四元式代码,以及将中间变量填写入符号表内。组员:中间代码优化部分,负责优化DAG图的建立。组员:词法分析部分,词法分析部分的符号表和错误表的记录。摘要41.概述52.课程设计任务及要求62.1设计任务62.2设计要求63.算法及数据结构73.1算法的总体思想(流程)73.2词法分

2、析模块83.2.1功能83.2.2数据结构83.2.3算法103.3语法分析(含语义分析和中间代码生成)模块113.3.1功能113.3.2数据结构133.3.3算法163.4中间代码优化模块193.4.1功能193.4.2数据结构203.4.3算法203.5目标代码生成模块233.5.1功能233.5.2数据结构243.5.3算法244.程序设计与实现264.1程序流程图264.2程序说明264.3实验结果325.系统特色406.结论417.参考文献418.收获、体会和建议41摘要一个编译器所进行的工作一般可以划分为五个阶段:词法分析、语

3、法分析、语义分析和中间代码产生、中间代码的优化、目标代码生成。我们设计了并且实现了一个简单的类C语言编译器,该编译器拥有完整的前端和后端,能够进行基本的编译功能并产生可执行文件向屏幕输出源程序的运行结果。该编译器的词法分析器可以识别绝大部分标准C语言支持的词法符号,该词法分析器可以过滤空格、Tab和回车,并且支持注释功能。该词法分析器主要通过有限自动机的状态跳转来实现,根据自动机结束状态来得到该单词的TOKEN值。该模块具有词法错误位置提示功能。该编译器的语法部分采用了递归下降子程序的文法分析方法,所设计的文法支持了函数、函数类型声明、变量

4、类型声明、变量定义、表达式语句、if条件语句和while循环语句以及简单输出功能。在表达式语句方面,我们设计了支持所有算术运算、关系运算、逻辑运算和位运算功能的语法结构,并且语法上支持一维数组和结构体。该编译器语义分析和生成四元式阶段能够对变量定义和语法错误进行检测,能够识别出未定义的标识符和重复定义标识符,该阶段最终实现生成中间代码——四元式。该编译器拥有中间代码优化模块,采用DAG优化算法按基本块对四元式进行了优化,该编译器的目标代码是8086汇编语言代码,能够实现将优化后的四元式序列转化生成可执行的汇编语言文件,并且运行执行该文件,向

5、屏幕输出运算结果。该编译程序的主要特色是能够将最终结果输出显示到屏幕,并且该编译程序能够支持前置++和后置++这种语法,拥有类似C语言的这种简便性。关键词:编译原理,词法分析,语法分析,四元式,DAG算法1.概述编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,在系统软件中占有十分重要的地位。编译原理课程设计是本课程重要的综合实践教学环节,是对平时实验的一个补充。通过编译器相关子系统的设计,使学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识;培养学生独立分析问题

6、、解决问题的能力,以及系统软件设计的能力;培养学生的创新能力及团队协作精神。一个编译器所进行的工作一般可以划分为五个阶段:词法分析、语法分析、语义分析和中间代码产生、中间代码的优化、目标代码生成。首先是词法分析,针对词法分析,我们设计了一个可以识别绝大部分标准C语言支持的词法符号,该词法分析器可以过滤空格、Tab和回车,并且支持注释功能,即过滤掉注释符号$后面的代码。该词法通过有限自动机的状态跳转来实现,根据自动机结束状态来得到该单词的TOKEN值,词法分析器在识别到一个单词后,将该单词记录下来,如果是数据,则会在符号表的相应位置记录它的值

7、,如果是标识符,则会先在符号表上进行查询,若没有则将其记录到符号表上,并将相应TOKEN的指针指向表中该位置。接下来进行语法分析,在语法分析部分,会对所编写的代码的语法进行检验,看是否合乎我们所设定的语法规则,这里我们采用了递归下降子程序的文法分析方法,所设计的文法支持了函数、函数类型声明、变量类型声明、变量定义、表达式语句、if条件语句和while循环语句以及cout简单输出功能。在表达式语句方面,我们设计了支持所有算术运算、关系运算、逻辑运算和位运算功能的语法结构,并且语法上支持一维数组和结构体。在语义分析和中间代码产生的阶段。我们在语

8、法分析程序的相应部分加上了语义动作,实现将输入的语句转换成可识别的中间代码——四元式形式。在语义分析部分,主要做的工作是在识别到数据和标识符时将它们压入语义栈,当语法分析到需要生

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

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

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