- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理—简单编译程序
北华航天工业学院
《编译原理》课程设计
课程设计题目: 编译程序
作者所在系部: 计算机科学与工程系
作者所在专业: 计算机科学与技术
作者所在班级:
作 者 学 号:
作 者 姓 名 :
指导教师姓名:
完 成 时 间 : 2011年6月10日
课程设计任务书
课题名称 《编译原理》课程设计 完成时间 2011.6.10 指导教师 职称 学生姓名 班级 总体设计要求
总体设计要求:
课程设计内容共给定1个题目,每个学生按照课程设计要求,在规定的两周时间内独立完成
题目:
编译程序构造
涉及内容:
词法分析、语法分析、语义分析生成中间代码 工作内容及时间进度安排
第一周、周1:设计动员,布置课程设计任务查阅资料,制定方案,进行程序设计周2:
第二周、周
第二周、周:整理,撰写设计报告
周:验收,提交设计报告,评定成绩。
目 录 - 3 -
内容摘要 - 4 -
第一章 绪论 - 5 -
1.1课程设计目的 - 5 -
1.2 课程设计的背景与意义 - 5 -
1.3课程设计总体要求 - 5 -
1.4课程设计内容及具体要求 - 6 -
1.5 课程设计环境 - 7 -
第二章 课程设计分析及解决方案 - 7 -
2.1课程设计分析 - 7 -
2.2课程设计解决方案 - 7 -
第三章 程序设计及实现 - 8 -
3.1程序设计 - 8 -
3.2程序设计框图 - 9 -
第四章 测试与结果 - 11 -
4.1程序测试数据和结果 - 11 -
总 结 - 14 -
参考文献 - 16 -
附 录 A - 17 -
附 录 B - 28 -
内容摘要
本程序可根据所给的文法,完成基本基于C语言的程序的编译过程,包括词法分析,语法分析、语义分析和中间代码生成。
词法分析主要是根据标识符的定义规则逐个识别字符或者字符串,包括对关键字、普通标识符、常数等的识别,分别构建标识符表和数字表,并生成二元式流。
语法分析和语义分析使用SLR(1)分析方法,构造基于给定文法的分析表,完成对词法分析生成的二元式流的语法和语义分析。
本程序是用C++语言编写的,简单易懂,实现方便,基本完成了实验要求。
关键字 : 编译器 词法分析 语法分析 语义分析及中间代码生成 分析表
第一章 绪论
1.1课程设计目的
《编译原理》课程设计是编译原理课程必不可少的一个环节,通过课程设计,加深对编译原理的教学内容的了解,以及实现编译原理各部分知识的融合,进而提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力。1)明确课设任务,复习与查阅有关资料
2)按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。
3)注意增强程序界面的友好性。凡用户输入时,给出足够的提示信息使用户感到方便用。
图3-2 词法分析流程图
(2)语法语义分析
图3-3 语法语义分析流程图
第四章 测试与结果
4.1程序测试数据和结果
为测试程序,分别使用正确程序段a、变量未定义程序段b、变量重复定义程序段c测试,程序段和结果如下:
(1)输入为a程序段int area,r;r=1;area=r*r+r;的执行结果如图4-1(a)、4-1(b)所示:
图4-1(a) a程序段查表分析结果
图4-1(b) a程序段二元式及各表
(2)输入为b程序段r=1;area=r*r+r;的执行结果如图4-2(a)、4-2(b)所示:
图4-2(a) b程序段查表分析结果
图4-2(b) b程序段二元式及各表
(3)输入为c程序段int area,r;float r;r=1;area=r*r+r;的执行结果如图4-3(a)、4-3(b)所示:
图4-3(a) c程序段查表分析结果
图4-3(b) c程序段二元式及各表
总 结
编译过程是一个整体过程,词法分析、语法分析、语义分析环环相扣,语法分析调用词法分析的结果(二元式),并在归约动作的同时进行语义分析。在此过程中伴随着三个栈的变化(语义栈、符号栈、状态栈)的变化,最终结果产生四元式。
本次课程设计顺利完成了对一个编译器的设计,包括词法分析部分、语法分析部分和中间四元式代码生成部分等。在本次课程设计中,实现各个部分功能的程序都比较复杂,需要利用到程序设计语言的知识和大量编程技巧,也利用到了大量的编译原理知识。通过本次课程设计在一定程度上提高了软件开发能力,对编译原理这一门课程也有了比较深刻的了解。实验过程中
文档评论(0)