- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个简单的C语言编译器
一.小组成员
朱嘉俊(3991102161) 计算机996
王筱(3991102168) 计算机996
朱杭(3991102162) 计算机996
朱林(3991102094) 计算机994
二.运行方式
在DOS环境下运行:
Cminus.exe filename -h
三.概述
经过一段时间的学习,我们在初步掌握了编译器的基本原理以后,设计了一个具有基本编译功能的编译器。该编译器接受类C语言语法的源代码输入,输出结果是PC机的汇编源代码。在捆绑了宏汇编编译器Masm后,即可直接生成MSDOS下的二进制可执行文件。为方便起见,以下简称为C—语言编译器。
本编译器实现了基本高级语言所必须的语法要素,包括简单变量声明、函数的实现、整数和字符串运算、条件判断语句和循环语句及跳转语句、基本代数运算、赋值等,还支持汇编语言嵌入。本编译器是利用编译器生成器Parse Generator和VC6.0在Windows平台上实现的,并开发了一个基于Windows平台的32位编译集成开发环境CompilerMan, 提供了关键字彩色提示、出错同屏提示、出错代码跳转等较为完善方便的功能。
由于编译程序本身涉及到词法分析、语法分析、代码生成、错误恢复和优化等诸多模块,要在实验中做到面面俱到不太可能,所以本编译器不可避免的会存在各种问题,但作为一个具有基本功能的、可扩充的系统,完全达到了巩固编译原理的理论知识,并将其运用于实践的目的。
四.背景
编译程序,就是一种具有编撰和翻译功能的程序。人们要用计算机来解决问题,首先面临的一个问题,就是要告诉计算机解决什么问题,或者告诉计算机如何解决这个问题。这就涉及到用什么样的语言来描述的问题,人所习惯的自然语言和计算机认识的机器语言有很大的差别,用机器语言来描述人想解决的问题十分不便,因而,计算机科学家设计一些人们比较习惯的语言来描述要解决的问题,称之为高级语言。用语言来描述的问题,统称为程序。然而,用高级语言写的程序,不能被计算机所直接认识和理解,必须经过等价的转换,变成机器能理解并执行的机器语言的程序。进行这种等价转换工作的工具,就是编译程序。
1.编译程序的结构
编译程序是很复杂的,但它可被分为相对独立的几个部分,每个部分承担专门的工作,各部分间互相共享传送数据。把编译程序分解成较小的部分,不仅便于开发、调试,而且便于编译程序的移植。一个典型的编译程序通常具有如图1的结构。
图1 编译器基本结构
1.1 词法分析
词法分析负责对源程序的字符串进行扫描和分解,根据构词法将字符流(Character Stream)转化成单词流(Token Stream)。
例如对于C--语句:
x = y + z – m * 10;
词法分析的结果是:
ID ASSIGN ID ADD ID SUB ID MUL NUM SEMI
构词的规则就是词法,例如标识符(ID)可定义为以字母开头,后面跟零个或任意个字母或数字的序列。词法分析程序就根据词法构造有限自动机来识别每一个单词,将产生的单词交给语法分析程序。
1.2 语法分析
语法分析模块的任务是根据文法规则把单词序列分解成各类语法单位,识别出一个一个句子,例如对前面的语句进行语法分析可得到如图2的分析树。
如果输入单词不能构成语法树,则说明有语法错误。常见的语法分析方法分为自顶向下分析和自底向上分析两大类。在C--编译器中采用了一种自底向上的方法,即LR方法。
图2 语法分析树
1.3 语义分析
这一阶段部分是根据前一阶段产生的语法树,按语言的语义进行翻译,产生四元式或三元式等中间语言。中间语言可以很方便地转换成目标代码。前面的语法树可能产生的四元式序列为:
(*,_t0,10,m)
(-,_t1,z,_t0)
(+,_t0,y,_t1)
(=,x,_t0)
由于中间语言对后面的代码优化和目标代码生成有密切关系,又和目标机器的体系结构有关,所以中间语言的选择对于编译器的效率和质量有很大的影响。
1.4 代码优化
代码优化是把中间代码进行变换,以产生更加高效的目标代码。
1.5 目标代码生成
目标代码生成是编译最后一个阶段,它把中间代码转换成汇编指令或可重定位的目标代码。例如对于前面生成的中间代码,可以产生IBM PC汇编指令为:
mov ax, m
mul ax, 10
mov bx, z
sub bx,ax
add
您可能关注的文档
- 【周边】windowsshell替代说明.docx
- 【心理文章】老年夫妻的恩爱艺术.doc
- 【执考宝典笔记】传染病性病.doc
- 【必威体育精装版】2011事业单位公共基础知识汇总[1].doc
- 【武汉改灯】现代悦动上小糸Q5双光透镜氙气灯专车专用日行灯作业.doc
- 【教你叠各种折纸】玫瑰、莲花灯、雪花、樱花、青苹果.doc
- 【汇总与心得】我不是已成为女神就是在成为女神的路上 (2).doc
- 【独家干货】光伏电站中能看见的和不让看的“监控系统.doc
- 【离婚房产归属】当离婚遭遇“房产”.doc
- 【精彩图文】指南--城市地铁中不雅的行为.doc
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 重庆市两江新区2024-2025学年数学六年级第一学期期末检测试题含解析.doc VIP
- 人教版(2024年新版)七年级上册美术全册教学设计.docx
- Desouttter马头电动装配系统CVI3 系列 CVI3 Controllers CVI3 Vision (6159326910) CVI3 tightening controllers Conf.pdf
- 【MOOC】时间序列分析-中南财经政法大学 中国大学慕课MOOC答案.docx
- 2024-2025学年重庆市六年级数学第一学期期末检测试题含解析.doc VIP
- 高中政治(必修1+必修2)期末测试卷(二)(原卷版).docx VIP
- 高中生物 2023-2024学年安徽省合肥高一(上)期末生物试卷.pdf
- 太阳能光伏产业链垂直一体化构建研究.docx VIP
- SSCI收录管理学种期刊目录.docx
- GB51016-2014 非煤露天矿边坡工程技术规范.pdf
文档评论(0)