一个简单的C语言编译器.doc

一个简单的C语言编译器.doc

ID:51696472

大小:179.00 KB

页数:18页

时间:2020-03-15

一个简单的C语言编译器.doc_第1页
一个简单的C语言编译器.doc_第2页
一个简单的C语言编译器.doc_第3页
一个简单的C语言编译器.doc_第4页
一个简单的C语言编译器.doc_第5页
资源描述:

《一个简单的C语言编译器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一个简单的C语言编译器一.小组成员朱嘉俊(3991102161)计算机996王筱(3991102168)计算机996朱杭(3991102162)计算机996朱林(3991102094)计算机994二.运行方式在DOS环境下运行:Cminus.exe-h三.概述经过一段时间的学习,我们在初步掌握了编译器的基本原理以后,设计了一个具有基本编译功能的编译器。该编译器接受类C语言语法的源代码输入,输出结果是PC机的汇编源代码。在捆绑了宏汇编编译器Masm后,即可直接生成MSDOS下的二进制可执行文件。为方便起见,以下简称为C—语言编译

2、器。本编译器实现了基本高级语言所必须的语法要素,包括简单变量声明、函数的实现、整数和字符串运算、条件判断语句和循环语句及跳转语句、基本代数运算、赋值等,还支持汇编语言嵌入。本编译器是利用编译器生成器ParseGenerator和VC6.0在Windows平台上实现的,并开发了一个基于Windows平台的32位编译集成开发环境CompilerMan,提供了关键字彩色提示、出错同屏提示、出错代码跳转等较为完善方便的功能。由于编译程序本身涉及到词法分析、语法分析、代码生成、错误恢复和优化等诸多模块,要在实验中做到面面俱到不太可能,所以本编译器不可避免的

3、会存在各种问题,但作为一个具有基本功能的、可扩充的系统,完全达到了巩固编译原理的理论知识,并将其运用于实践的目的。四.背景编译程序,就是一种具有编撰和翻译功能的程序。人们要用计算机来解决问题,首先面临的一个问题,就是要告诉计算机解决什么问题,或者告诉计算机如何解决这个问题。这就涉及到用什么样的语言来描述的问题,人所习惯的自然语言和计算机认识的机器语言有很大的差别,用机器语言来描述人想解决的问题十分不便,因而,计算机科学家设计一些人们比较习惯的语言来描述要解决的问题,称之为高级语言。用语言来描述的问题,统称为程序。然而,用高级语言写的程序,不能被计

4、算机所直接认识和理解,必须经过等价的转换,变成机器能理解并执行的机器语言的程序。进行这种等价转换工作的工具,就是编译程序。1.编译程序的结构编译程序是很复杂的,但它可被分为相对独立的几个部分,每个部分承担专门的工作,各部分间互相共享传送数据。把编译程序分解成较小的部分,不仅便于开发、调试,而且便于编译程序的移植。一个典型的编译程序通常具有如图1的结构。出错处理符号表管理目标机器码IRIR中间语言语法结构单词代码生成器优化器语义分析器语法分析器词法分析器图1编译器基本结构1.1词法分析词法分析负责对源程序的字符串进行扫描和分解,根据构词法将字符流(

5、CharacterStream)转化成单词流(TokenStream)。例如对于C--语句:x=y+z–m*10;词法分析的结果是:IDASSIGNIDADDIDSUBIDMULNUMSEMI构词的规则就是词法,例如标识符(ID)可定义为以字母开头,后面跟零个或任意个字母或数字的序列。词法分析程序就根据词法构造有限自动机来识别每一个单词,将产生的单词交给语法分析程序。1.2语法分析语法分析模块的任务是根据文法规则把单词序列分解成各类语法单位,识别出一个一个句子,例如对前面的语句进行语法分析可得到如图2的分析树。如果输入单词不能构成语法树,则说明有

6、语法错误。常见的语法分析方法分为自顶向下分析和自底向上分析两大类。在C--编译器中采用了一种自底向上的方法,即LR方法。图2语法分析树NUM项ID项*表达式IDID-项表达式+项表达式=变量赋值语句1.3语义分析这一阶段部分是根据前一阶段产生的语法树,按语言的语义进行翻译,产生四元式或三元式等中间语言。中间语言可以很方便地转换成目标代码。前面的语法树可能产生的四元式序列为:(*,_t0,10,m)(-,_t1,z,_t0)(+,_t0,y,_t1)(=,x,_t0)由于中间语言对后面的代码优化和目标代码生成有密切关系,又和目标机器的体系结构有关,

7、所以中间语言的选择对于编译器的效率和质量有很大的影响。1.4代码优化代码优化是把中间代码进行变换,以产生更加高效的目标代码。1.5目标代码生成目标代码生成是编译最后一个阶段,它把中间代码转换成汇编指令或可重定位的目标代码。例如对于前面生成的中间代码,可以产生IBMPC汇编指令为:movax,mmulax,10movbx,zsubbx,axaddbx,ymovx,bx汇编代码经过Masm汇编器(Assembler)和连接器(Linker)处理,就产生了可在IBMPC机器上运行的二进制代码。2.形式语言简介2.1文法和语言文法是产生语言的规则,它可定

8、义为:对于一个四元式G=(VN,VT,S,P),其中(1)VN是非终结符号的有限集合(2)VT是终结符号的有限集合,且VT∩VN=(3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。