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

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

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

编译原理课程设计

——简单编译器的设计与实现

班级:

组长:

组员:

指导教师:

设计时间:2016年12月

姓名

●●

组长:

语法分析部分,语义分析和中间代码生成部分,符号表的管理,目标代码的生成,数据结构的

设计和总体框架的设计。

组员:

中间代码优化部分,负责从DAG图中获得优化后的四元式代码,以及将中间变量填写入符号

表内。

组员:

中间代码优化部分,负责优化DAG图的建立。

组员:

词法分析部分,词法分析部分的符号表和错误

表的记录。

摘要 4

1.概述 5

2.课程设计任务及要求 6

2.1设计任务 6

2.2设计要求 6

3.算法及数据结构 7

3.1算法的总体思想(流程) 7

3.2词法分析模块 8

3.2.1功能 8

3.2.2数据结构 8

3.2.3算法 10

3.3语法分析(含语义分析和中间代码生成)模块 11

3.3.1功能 11

3.3.2数据结构 13

3.3.3算法 16

3.4中间代码优化模块 19

3.4.1功能 19

3.4.2数据结构 20

3.4.3算法 20

3.5目标代码生成模块 23

3.5.1功能 23

3.5.2数据结构 24

3.5.3算法 24

4.程序设计与实现 26

4.1程序流程图 26

4.2程序说明 26

4.3实验结果 32

5.系统特色 40

6.结论 41

7.参考文献 41

8.收获、体会和建议 41

摘要

一个编译器所进行的工作一般可以划分为五个阶段:词法分析、语法分析、

语义分析和中间代码产生、中间代码的优化、目标代码生成。

我们设计了并且实现了一个简单的类C语言编译器,该编译器拥有完整的前端和后端,能够进行基本的编译功能并产生可执行文件向屏幕输出源程序的运行

结果。

该编译器的词法分析器可以识别绝大部分标准C语言支持的词法符号,该词法分析器可以过滤空格、Tab和回车,并且支持注释功能。该词法分析器主要通过有限自动机的状态跳转来实现,根据自动机结束状态来得到该单词的TOKEN

值。该模块具有词法错误位置提示功能。

该编译器的语法部分采用了递归下降子程序的文法分析方法,所设计的文法支持了函数、函数类型声明、变量类型声明、变量定义、表达式语句、if条件语句和while循环语句以及简单输出功能。在表达式语句方面,我们设计了支持所有算术运算、关系运算、逻辑运算和位运算功能的语法结构,并且语法上支持一维数组和结构体。该编译器语义分析和生成四元式阶段能够对变量定义和语法错误进行检测,能够识别出未定义的标识符和重复定义标识符,该阶段最终实现

生成中间代码——四元式。

该编译器拥有中间代码优化模块,采用DAG优化算法按基本块对四元式进行了优化,该编译器的目标代码是8086汇编语言代码,能够实现将优化后的四元式序列转化生成可执行的汇编语言文件,并且运行执行该文件,向屏幕输出运算

结果。

该编译程序的主要特色是能够将最终结果输出显示到屏幕,并且该编译程序

能够支持前置++和后置++这种语法,拥有类似C语言的这种简便性。

关键词:编译原理,词法分析,语法分析,四元式,DAG算法

1.概述

编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,在系统软件中占有十分重要的地位。编译原理课程设计是本课程重要的综合实践教学环节,是对平时实验的一个补充。通过编译器相关子系统的设计,使学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识;培养学生独立分析问题、解决问题的

能力,以及系统软件设计的能力;培养学生的创新能力及团队协作精神。

一个编译器所进行的工作一般可以划分为五个阶段:词法分析、语法分析、

语义分析和中间代码产生、中间代码的优化、目标代码生成。

首先是词法分析,针对词法分析,我们设计了一个可以识别绝大部分标准C语言支持的词法符号,该词法分析器可以过滤空格、Tab和回车,并且支持注释功能,即过滤掉注释符号$后面的代码。该词法通过有限自动机的状态跳转来实现,根据自动机结束状态来得到该单词的TOKEN值,词法分析器在识别到一个单词后,将该单词记录下来,如果是数据,则会在符号表的相应位置记录它的值,如果是标识符,则会先在符号表上进行查询,若没有则将其记录到符号表上,并

将相应TOKEN的

文档评论(0)

tttt1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档