ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:60.84KB ,
资源ID:1669586      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1669586.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言编译器前端的设计与实现课程设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言编译器前端的设计与实现课程设计.docx

1、C语言编译器前端的设计与实现课程设计C语言编译器前端的设计与实现课程设计计 算 机 与 信 息 工 程 学 院软硬件专业综合课程设计总结报告题目: C语言编译器前端的设计与实现 姓 名: 学 号: 专 业: 计算机科学与技术 指导教师: 起止日期: 12.11.2613.01.20 计 算 机 与 信 息 工 程 学 院软硬件专业综合课程设计任务书实践题目C语言编译器前端的设计与实现学生姓名班级学号指导教师职称实践地点计算机基础实验室实践日期2012年11月26日起至2013年1月20日选题的目的:编译器前端是制作一个编译器最为关键性的一个步骤,设计一个优秀的前端,直接影响到后期编译器的实现效

2、率。编译器前端具有多样化,实现的方法较多,如何选择更优秀的方法来设计,让许多人一直不懈的研究下去。并且编译器前端的设计能与自然语言处理相互印证,是一个值得思考的领域。技术要求:1、熟练掌握一门语言,熟练掌握C语言语法使用,以及各种语法结构2、良好的算法数据结构基础,对常见的数据结构模型能够实现3、对编译原理知识有良好的基础,对于各种常见文法做到心中有数4、熟练使用VS2005开发工具进度安排:2012年11月26日2012年12月09日 可行性研究、需求分析2012年12月10日2012年12月23日 总体设计2012年12月24日2013年01月06日 详细设计2013年01月07日2013

3、年01月13日 系统调试、测试2013年01月14日2013年01月18日 撰写实训报告2013年01月19日2013年01月20日 验收主要参考资料:1 钱焕延.编译技术第2版M.南京:东南大学出版社出版,2002。2 康慕宁.编译原理M.西安:西北工业大学出版社出版,2003。3 贺世娟,陈冀川.Visual studio 2005 程序设计M.北京:中国水利水电出版社出版,2008.8。4 杨克玉.Visual studio 2005程序设计实训教程M.北京:机械工业出版社出版,2009.2。教师签名: 年 月 日C语言编译器前端的设计与实现摘 要:编译器是程序员使用的关键工具,程序员每

4、天都在使用编译器,并且非常依赖于其正确性和可靠性。编译器作为广大IT从业者必须接触的系统软件,它的设计本身又是一个极其庞大的工程。编译器相关的各项技术经过近几十年的发展,已经日臻成熟,然而编译器构造原理和技术依然是计算机科学中理论与实践相结合的最好典范。本文首先介绍了C语言及C语言编译器的发展历程,其次对本次开发所用到的工具Visual Studio C+2005以及面向对象的程序设计方法做一下简单介绍。最后重点介绍了编译器前端的详细开发过程,分为三个部分分别阐述:词法分析器的设计,语法分析器的设计,语义分析部分。每个部分又分别从总体框架,详细流程,重点数据结构和函数,以及与其他部分的接口等方

5、面予以阐述。由于C语言本身的复杂性,很难面面俱到实现所有标准定义,所以本次设计只象征性的选择部分具有代表性的功能。在本文的第四章详细给出了此次设计所实现的功能和语法规范,同时也给出了编译器的运行方式。关键词:编译器前端、C源程序、面向对象程序设计方法、VC+ 附录: 附录1:词法分析核心代码.17 附录2:语法分析核心代码.18第1章 绪论1.1 C语言及编译器概述C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简

6、称为K&R,也有人称之为K&R标准。但是,在K&R中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到

7、了各类各型计算机上,从而形成了多种版本的C语言。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起

8、并生成可以由用户直接执行的可执行程序。1.2 C编译器前端设计思想一个编译器的前端设计主要工作过程可以概括为以下几个步骤:(1)词法分析词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。(2)语法分析语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。(3)语义分析语义分析器根据语义规则对语法树

9、中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。本系统的设计主要是实现了其中的词法分析、语法分析和语义分析三个部分。1.3 开发工具的选用及介绍软件环境使用Windows2000/XP操作系统,用Visual C+ .NET为开发平台,在开发此软件时用的是VC+中的MFC框架。Visual C+.NET2005是微软公司推出的开发Win32应用程序(Windows 95/98/2000/XP/NT)的面向对象的可视化集成工具。从原来的Visual C+6.0/ Visual C+.Net 2005升级而来,它的最大优点就是提供了功能强大的MF

10、C类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。当然还有Visual 2008和最新的Visual 2010beta版也已经发布。Visual Studio 2005的成功已被证实,即开发人员偏爱一个具备对他们需要的工具提供接口的集成开发环境。下面主要介绍它的有点。通过将开发人员在开发环境中需要的测试和性能工具(例如

11、,单元测试、代码分析和性能分析)合并在一起,Visual Studio 2005 Team System 也期待着这种成功。这使开发人员能够在生命周期的较早阶段就改善其代码的质量,而无需中断他们的工作。通过尽早地为开发人员提供他们需要用于识别和解决质量问题的工具,更多的产品缺陷就能够在它们还未构成危害之前即被发现并解决。 Visual Studio 2005 Team System,那么过程就不仅仅是文档了。它还能将自己体现为实际的工具行为更改。当您在项目初期选择过程时,还需要选择工作流和工作产品,它们会驱动系统的行为方式。对 SDLC 过程的支持是内置的,这使得对工作流的支持是无缝的。通过将

12、过程集成到团队成员日常使用的基本工具中,Visual Studio 2005 Team System 大大消除了过程采纳的障碍,并使自动收集跨职能的项目标准成为可能,而无需实施人工报告的相关开销。通过使用一个公共的跨工具集的数据仓库,Visual Studio 2005 Team System 解决了在大多数 SDLC 工具中建立数据仓库这一问题,并启动了一个聚合的项目状态视图。团队根据能够收集到的规则来管理项目。今天,数据主要限于缺陷跟踪。Visual Studio Team System 中集成的数据将开创一条新路 通过平衡利用贯穿于 SDLC 的大量、多样的数据来管理项目规则。Visua

13、l Studio 2005 Team System 会收集精确的数据 不仅限于缺陷跟踪,而是包括测试结果、代码涵盖、代码生成、任务进度等这些贯穿于团队常规工作流程的数据。该数据以某些标准的报告方式呈现,客户和 Microsoft 内部团队已在报告中建立了成功项目管理的关键规则。此外,团队还能够创建自定义报告。仅当以项目的大范围上下文查看数据时,团队才能够精确地报告项目状态。1.4 论文组织结构第1章 绪论简述了C语言的发展以及一般编译器的工作原理,并介绍了本系统开发的主要平台和工具及其特点。第2章 C语言词法分析器的总体分析与设计简单的介绍了系统的设计目标及系统要实现的功能。简单的介绍了几个要

14、实现的编译步骤的概念和要完成的任务。第3章 系统的详细设计介绍了系统的基本流程,各个模块的设计思想和核心代码部分。 第2章 C语言词法分析器的总体分析与设计2.1 系统设计目标与功能分析本系统的设计目标是完成一个小型的C语言编译器的前端设计,由于要完成一个完美的C语言编译器前端是一件非常复杂的事情,不仅要考虑到C语言代码的各种灵活用法,还需要能灵活运用C语言语法,甚至是了解语法的构成原理。本系统只完成整个编译过程中的词法分析、语法分析、语义分析以及其中的建立符号表和类型检查几个步骤。下面分别概括介绍编译过程中的这几个阶段。2.2 词法分析词法分析程序又称扫描器,它是编译过程的第一个阶段。其主要

15、任务是从左到右依次描描字符串形式的源程序的各个字符,逐个识别出其中的单词,并将其转换成为内部编码形式的单词符号串输出,用于进行语法分析。通常可采用二元式(CLASS,VALUE)来表示一个单词符号的内部编码,其中CLASS为一整数码,用于表示该单词的类别;VALUE则是单词之值(如变量名在符号表中的序号,常数的二进制表示,以及运算符和分隔符的编码,等等)。概括的说,扫描器在其工作过程中,一般应完成下列的任务:(1)识别出源程序中的各个单词符号,并将其转换成内部编码形式;(2)删除无用的空白字符、回车字符以及其他非实质性字符;(3)删除注释;(4)进行词法检查,报告所发现的错误。此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标志符登录到符号表的工作。从功能上看,词法分析上把字符

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1