当前位置:文档之家› C语言编译器设计与实现毕业论文(设计)

C语言编译器设计与实现毕业论文(设计)

毕业设计(论文)任务书第1页第2页第3页毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订教研室(或答辩小组)及教学系意见C语言编译器设计与实现摘要随着计算机的广泛应用,计算机程序设计语言也从初期的机器语言发展为汇编语言,以及现在的各种高级程序设计语言。

而编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的一个分支,他集中体现了计算机发展的成果与精华。

其核心思想就是把同样的逻辑结构和思想从一种语言表示的程序转换为另外一种语言表示的程序。

从高级语言,甚至运行与虚拟平台的高级语言,到机器语言,最终到硬件执行的物理信号,这一层层的转化,都涉及编译技术的应用。

本系统采用C++为编程语言。

论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

重点的说明了系统设计的重点、设计思想、难点技术和解决方案。

关键词:编译技术,编程程序,高级语言C language compiler design and ImplementationAbstractWith the wide application of the computer, computer programming languages are developed from the early machine language into assembly language , and now a variety of high-level programming language. The compiler technology is the backbone of computer language development, but also the fastest growing in computer science , a branch of the most mature , he epitomizes the essence of the computer and the fruits of development .The core idea is the same logical structure of the program and ideas expressed in the conversion from one language to another language program represented . From the high-level language , and even running with high-level language virtual platform to machine language , and ultimately to the hardware implementation of the physical signal , the layers of transformation involves application of compiler technology .System uses C++ as the programming language. Paper introduces the development background of the topic, the development and function to complete the process. Note the focus of systems design, design ideas, technologies and solutions difficult.Key Words:Compiler technology,Programming procedures,High-level programming language目录摘要 (ii)Abstract (iii)第一章绪论 (1)1.1 开发背景 (1)1.2 开发目标和意义 (1)1.2 当前编译器国内外的发展情况 (2)第二章理论基础 (4)2.1 编译系统概述 (4)2.1.1 什么是编译器 (4)2.1.2 编译器的产生 (4)2.2 编译器的结构 (4)2.3 编译器的组织 (6)2.3.1 编译的分遍 (6)2.3.2 分遍的设计 (6)2.4 编译器中的主要数据结构 (7)2.5 编译程序的开发 (7)2.5.1 历史与发展 (7)2.5.2 开发注意事项 (7)2.5.3 编译技术和软件工具 (7)第三章C编译器可行性分析及总体设计 (9)3.1 可行性分析 (9)3.1.1 经济可行性 (9)3.1.2 技术可行性 (9)3.1.3 运行可行性 (9)3.1.4 时间可行性 (10)3.1.5 法律可行性 (10)3.2 C语言的基本描述 (10)3.3 C编译器的功能 (10)3.4 C编译器的程序结构 (11)3.4.1 C编译器的设计模式 (11)3.4.2 C编译器的文件组成 (12)3.5 C编译器中的主要数据结构 (12)第四章C编译器的实现 (14)4.1 词法分析阶段 (14)4.1.1 概述 (14)4.1.2 C词法分析程序的实现 (14)4.1.3 关键字与标识符的识别 (16)4.1.4 词法识别具体实现 (16)4.2 语法分析阶段 (18)4.2.1 概述 (18)4.2.2 C语言抽象出来的文法规则 (19)4.2.3 C语法分析程序的实现 (22)4.3 语义分析阶段 (26)4.3.1 概述 (26)4.3.2 C语言的语义 (27)4.3.3 C的符号表 (27)4.3.4 C语义分析程序的实现 (28)4.4 中间代码生成阶段 (33)4.4.1 概述 (33)4.5 C编译器的使用方法及测试 (33)4.5.1 使用方法 (33)4.5.2 测试源文件 (33)4.5.3 测试词法分析 (34)4.5.4 测试语义分析及中间代码生成 (35)4.5.5 测试分析表文件的构造 (36)参考文献 (38)致谢 (39)第一章绪论1.1 开发背景随着计算机科学技术的飞速发展,计算机技术被应用在了越来越广泛的领域,实现各种各样功能的计算机程序被大量地开发出来,应用在我们的生活、学习和工作当中。

相应地,也产生了许多用以编写这些计算机程序的高级程序设计语言。

程序编制者通过特定语言的编译器将自己编写的源程序翻译为特定机器上的目标程序,从而能够最终达到程序执行的目的。

从20世纪60年代以来,编译器设计就一直是计算机研究发展和开发领域中的一个活跃主题。

虽然编译器设计已有很长的历史,并且也是一门相对成熟的计算机技术,但编译器毕竟是一种实现由高级语言源程序至机器或汇编指令的高效映射工具,随着计算机软、硬件水平的飞速发展,使得计算机应用日新月异,程序语言的设计在不断地变化,目标机体系结构也在不断地改进,软件越来越复杂,其规模也越来越大。

尽管编译器设计问题在高级层次上没有变化(或变化很小),但当我们深入其内部研究时就会发现,编译器的内部构造其实也一直在变化。

此外,由于我们能够提供给编译器本身使用的计算资源也在不断增加。

因此,现代编译器可以采用比以前更耗费时间和空间的算法。

当然,编译技术研究人员也在继续努力开发新的、更好的技术来解决传统编译器的一些设计性问题[1]。

另一方面,很多编译“前端”技术,如文法、正则表达式、语法分析器以及语法制导翻译器等,仍然被广泛使用。

1.2 开发目标和意义编译器是一种相当复杂的系统程序,其代码的长度可从几千行到几百万行不等,所以编写甚至读懂这样的一个程序都不是一件容易的事。

绝大多数的计算机专业人员从来没有编写过一个完整的编译器,但是,几乎所有形式的计算均要用到编译器,而且任何一个与计算机打交道的专业人员都应该掌握编译器的基本结构和操作。

除此之外,计算机应用程序中经常遇到的一个任务就是有关命令解释程序和界面程序的开发,这比编译器的开发规模要小,但使用的却是很类似的技术。

相关主题