收藏 分享(赏)

编译原理(陈火旺第三版)Chapt1.ppt

上传人:jinchen 文档编号:5779178 上传时间:2019-03-17 格式:PPT 页数:32 大小:347.50KB
下载 相关 举报
编译原理(陈火旺第三版)Chapt1.ppt_第1页
第1页 / 共32页
编译原理(陈火旺第三版)Chapt1.ppt_第2页
第2页 / 共32页
编译原理(陈火旺第三版)Chapt1.ppt_第3页
第3页 / 共32页
编译原理(陈火旺第三版)Chapt1.ppt_第4页
第4页 / 共32页
编译原理(陈火旺第三版)Chapt1.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、重庆邮电大学,编译原理,刘 冰 软件教学研究部 Email: 网上教学系统:http:/ 引 论,本课程介绍程序设计语言编译程序构造的基本原理和基本实现技术.,重庆邮电大学,第一章 引 论,编译理论与方法 计算机科学与技术中理论和实践相结合的最好典范 ACM 图灵奖,授予在计算机技术领域作出突出贡献的科学家 程序设计语言、编译理论与方法约占1/3,重庆邮电大学,一. 什么是编译程序,翻译程序把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序,重庆邮电大学,一. 什么是编译程序,编译程序(compiler)把某一种高级语言程序等价地转换成另一种低级语言程序(

2、如汇编语言或机器语言程序)的程序 诊断编译程序 优化编译程序 交叉编译程序 可变目标编译程序,重庆邮电大学,一. 什么是编译程序,解释程序把源语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身,重庆邮电大学,编译程序 vs. 解释程序,编译,解释,重庆邮电大学,二. 编译过程,把英文翻译为中文 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。,词法分析,语法分析,中间代码产生,优化,目标代码产生,重庆邮电大学,二. 编译过程,编译程序的工作一般分为五个阶段: 词法分析 语法分析 中间代码产生 优化 目标代码产生

3、,重庆邮电大学,1. 词法分析,任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。 依循的原则:构词规则 描述工具:有限自动机 FOR I := 1 TO 100 DO保留字 标识符 等符 整常数 保留字 整常数 保留字,重庆邮电大学,2. 语法分析,任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。 依循的原则:语法规则 描述工具:上下文无关文法 Z := X + 0.618 * Y 算术表达式,赋值语句,重庆邮电大学,3. 中间代码产生,任务:对各类不同语法范畴按语言的语义进行初步翻译。 依循的原则:语义规则 中间代码:三元式,四元式,

4、树形结构等 Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z,重庆邮电大学,4. 优化,任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。 依循的原则:程序的等价变换规则 FOR K:=1 TO 100 DOBEGIN X:=I+1;M := I + 10 * K;N := J + 10 * K;END,重庆邮电大学,中间代码(一),序号 OPR OPN1 OPN2 RESULT 注释 (1) := 1 K K:=1 (2) j 100 K (10) if (100K)goto (

5、10) (3) + I 1 X X:=I+1 (4) * 10 K T1 T1:=10*K (5) + I T1 M M:=I+T1 (6) * 10 K T2 T2:=10*K (7) + J T2 N N:=J+T2 (8) + K 1 K K:=K+1 (9) j (2) goto (2) (10),400次加法 200次乘法,重庆邮电大学,转换后的等价代码(二),序号 OPR OPN1 OPN2 RESULT 注释 (1) + I 1 X X:=I+1 (2) := I M M:=I (3) := J N N:=J (4) := 1 K K:=1 (5) j 100 K (10) if

6、 (100K) goto (10) (6) + M 10 M M:=M+10 (7) + N 10 N N:=N+10 (8) + K 1 K K:=K+1 (9) j (5) goto (5) (10),301次加法,重庆邮电大学,5. 目标代码产生,任务: 把中间代码变换成特定机器上的目标代码。 依赖于硬件系统结构和机器指令的含义 目标代码三种形式: 绝对指令代码: 可直接运行 可重新定位指令代码: 需要连接装配 汇编指令代码: 需要进行汇编,重庆邮电大学,三. 编译程序结构,编译程序总框,重庆邮电大学,词法分析器,语法分析器,语义分析与中间代码生成器,优化段,表格管理,出错处理,目标代码

7、生成器,重庆邮电大学,2. 表格和表格管理,常见的表格:符号名表,常数表,标号表,入口名表,过程引用表。 格式:,名字,信息,重庆邮电大学,3. 出错处理,出错处理程序:发现源程序中的错误,把有关错误信息报告给用户 语法错误 语义错误,重庆邮电大学,4. 遍(pass),所谓“遍“, 就是对源程序或源程序的中间表示从头到尾扫描一次。 阶段与遍是不同的概念。一遍可以由若干段组成,一个阶段也可以分若干遍来完成。,重庆邮电大学,5. 编译前端与后端,编译前端:与源语言有关,如词法分析,语法分析,语义分析与中间代码产生,与机器无关的优化 编译后端:与目标机有关的优化,目标代码产生 优点:减少对内存容量

8、的要求,程序逻辑结构清晰; 优化更充分,有利于移植。 不足: 编译程序运行的效率低,前端,后端,重庆邮电大学,四.编译程序与程序设计环境,程序设计环境 编辑程序 编译程序 连接程序 调试工具 集成化的程序设计环境,重庆邮电大学,五.编译程序生成,以汇编语言和机器语言为工具 优点: 可以针对具体的机器,充分发挥计算机的系统功能。生成的程序效率高。 缺点: 程序难读、难写、易出错、难维护、生产的效率低。,重庆邮电大学,五.编译程序生成,高级语言书写,优点: 程序易读、易理解、容易维护、生产的效率高。 缺点: 难以充分发挥计算机的系统功能,生成的程序效率低。,重庆邮电大学,五.编译程序生成,高级语言

9、书写 利用已有的某种语言的编译程序实现另一语言的编译程序。,同一台机器 不同的语言,重庆邮电大学,五.编译程序生成,移植方法 把一种机器上的编译程序移植到另一种机器上。,同一种语言不同的机器,重庆邮电大学,五.编译程序生成,编译程序自动产生 编译程序-编译程序,编译程序书写系统,LEX 词法分析程序产生器 YACC 语法分析程序产生器,编译程序 自动产生器,重庆邮电大学,六. 关于学习编译原理,构造编译程序的前提: 掌握源语言 掌握目标语言 掌握编译方法,重庆邮电大学,六. 关于学习编译原理,意义: 学习编译程序构造原理,技术 更好地理解高级语言 编译的原理和方法有助于构造一些实用的工具,重庆邮电大学,六. 关于学习编译原理,课程特点: 理解性 技术性考核: 作业及出勤:30% 笔试:70%,重庆邮电大学,参考书,Compilers Principles, Techniques and Tools, A. V. AHO 编译原理及编译程序构造 北航出版社, 高仲信,金茂忠 编译原理典型题解析与实战模拟 刘春林、王挺等 编译原理例解析疑 赵雄芳等,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报