- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言编译器设计与实现毕业论文
目 录
摘 要 i
Abstract ii
第一章 绪论 1
1.1 开发背景 1
意义 1
情况 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
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
18
4.2.1 概述 18
4.2.2 C语言抽象出来的文法 19
4.2.3 C语法分析程序的实现 22
4.3 语义分析阶段 27
4.3.1 概述 27
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
方法 33
34
4.5.3 测试词法分析 34
4.5.4 测试语义分析及中间代码生成 35
的构造 36
38
致谢 39
第一章 绪论
1.1 开发背景
另一方面,很多编译“”技术,如文法、表达式、语法分析器以及语法制导翻译器等,被广泛使用。意义
编译器的设计的原理和技术还可以用于编译器设计之外的众多领域。因此这些原理和技术通常会在一个计算机科学家的职业生涯中多次被用到。研究的编写讲设计程序设计语言、体系结构、形式语言理论、算法软件工程。
虽然本实验++语言作为开发语言,以Microsoft Visual Studio2012作为开发工具,C编译器的各个阶段以类的形式表示,最后以项目文件为单位来编译生成C编译器的可执行文件。
本实验以Microsoft Visual Studio2012作为开发工具,用标准开发,可以很好的的移植到其他平台(:linux,g++编译可执行文件)情况第二章 理论基础
2.1 编译系统概述
2.1.1 什么是编译器
编译器,是将便于人类编写、阅读、维护的计算机高级语言程序翻译为机器能够识别、运行的计算机低级语言程序的一种系统软件。编译器将源程序(Source Program)作为输入,翻译产生使用目标语言的等价目标程序((Target Program)。其中,源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的机器语言[3]。编译器的这一作用如图2-1所示:
图2-1 编译器的作用
2.1.2 编译器的产生
本世纪四十年代,由于冯·诺依曼在存储程序计算机方面的先锋作用,使得编写一串代码或程序已成为可能和必要,这样计算机就可以执行所需的计算。在初期,这些程序都是用机器语言编写,编写或维护这样的代码是非常枯燥乏味且效率低下的,所以机器语言很快就被汇编语言代替了。汇编语言大大提高了程序编写速度和准确度,但它也有许多缺点。于是发展编程技术的下一个重要革新就是以一个更加类似于数学定义或自然语言的简洁形式来编写程序的功能操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。
随着对形式语言和自动机理论的研究,人们对高级程序设计语言的认识越来越深,对编译器结构的设计也越来越清晰。人们通过对形式语言文法规则的研究,相当完善地解决了分析问题。当分析问题变得相对成熟时,设计者们又花费了很多的精力来研究这一部分的编译器的自动构造,这就是分析程序生成器(parser generator)最初的雏形。类似地,对有穷自动机的研究也促进了一种称为扫描程序生成器(scanner generator)工具的发展。接着,人们又深化了生成有效目标代码的方法,这些就构成了传统的编译器,在这个过程中运用到的技术被一直使用至今。
2.2 编译器的结构
严格地说,编译器是一个将高级语言源程序转换成能在一台计算机上执行的等
您可能关注的文档
最近下载
- 12可持续发展与清洁生产1可持续发展与清洁生产12可持续发展与清洁生产12可持续发展与清洁生产.ppt VIP
- 心脏超声用于危重患者非心脏手术的麻醉管理.pptx VIP
- 05X101-2地井标准图集.pdf VIP
- 江苏小学绘本阅读手册.pdf
- 营养相关疾病人群的营养与膳食教学实施报告.pdf VIP
- 2024全国高中数学奥林匹克竞赛(预赛)试题(A卷)试题含答案或解析 .pdf VIP
- 单个军人队列动作教大学纲.doc VIP
- 水星船外机四冲程75-115 hp 中文维修手册.pdf VIP
- 迎“七一”专题党课:重温光辉历史,继承优良传统,以严明纪律激发干事创业活力.docx VIP
- 营养相关疾病人群的营养与膳食教案.pdf VIP
文档评论(0)