Presentation is loading. Please wait.

Presentation is loading. Please wait.

编译原理和技术 大连理工软件学院 江 贺 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2003 Louden, K.C, 《编译原理及实践(英文版)》. 中信出版社 Alfred V.Aho,

Similar presentations


Presentation on theme: "编译原理和技术 大连理工软件学院 江 贺 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2003 Louden, K.C, 《编译原理及实践(英文版)》. 中信出版社 Alfred V.Aho,"— Presentation transcript:

1 编译原理和技术 大连理工软件学院 江 贺 jianghe@dlut.edu.cn

2 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2003 Louden, K.C, 《编译原理及实践(英文版)》. 中信出版社 Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman,. 《编译原理 技术与工具(英文版)》 人民邮 电出版社

3 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 编译技术研究对象:编译器的构造与分析 编辑器编辑器编辑器编辑器 源程序 编译器编译器编译器编译器 操作系统操作系统操作系统操作系统 可执行程序.exe 解释器解释器解释器解释器 中间代码 可执行程序.exe C, C++, Pascal, Delphi, VC, BC Java, VB, Basic Edit, Word, Notepad, Vi gcc, vc, bc31 虚拟机 集成开发环境

4 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 课程内容介绍编译器构造的一般原理和基本实现方法 介绍的理论知识:形式语言和自动机理论、 语法制导的定义和属性文法、类型论等 课程特点强调形式化描述技术 强调对编译原理和技术的宏观理解,不把注 意力分散到枝节算法,不偏向于某种源语言 或目标机器

5 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 它是计算机专业的核心课程。对编程语言的 设计和实现有深刻的理解,有利于学习编程 语言,知其然知其所以然。 if (c == 5) then … if (c = 5) then … if (5 == c) then … if (5 = c) then … 编译器不报错, 但实际上错了 编译器报错

6 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 从软件工程看,编译器是一个很好的实例, 所介绍的概念和技术能应用到一般的软件设 计之中。编译器也许是大家在本科阶段分析 最透彻的实例了。

7 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 可以肯定地说,你们中的 95% 以上的人在一 辈子的生涯中都没有机会去实现一个真正的 复杂语言的编译器。但是每一个人都绝对遇 到需要使用编译技术的项目。 以下就是一些小的 “ 编译器 ”.

8 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 普通计算器可编程计算器

9 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 : 聊天机器人 自动聊天机器人

10 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 学习的意义 各种数据库查询语言及专家系统 select 课程 from table 课程表 where 任课老师 = 江贺

11 课 程 简 介课 程 简 介 学习的意义 在计算机专业考研或者各大公司招聘时,必 考内容。 在 X86/Linux 工作站上,以下两个结构的 size 分别是 20 和 16 , 为什么不一样? typedef struct _a{typedef struct _b{ char c1; long i; char c2; charc2; long i; double f; }a; }b;

12 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 课程要求目标:师生共同努力,达国内最好水平 讲课进度较快,平时不复习并加深理解,后 面将听不懂 作业较多,要求独立完成上机实验,不要轻视 阅读 PL/0 编译器,会有很大收获

13 第一章 引 论 翻译器:把一种语言变换到另外一种语言 的软件。这两种语言分别称为源语言和目 标语言。 编译器:一种翻译器,它的目标语言比源 语言低级。

14 第一章 引 论 词法分析器 语法分析器 语义分析器源程序中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器符号表管理器 编译器 编译器从逻辑上可以分成若 干阶段,每个阶段把源程序 从一种表示变换成另一种表 示 翻译家 词法分析 语法分析 语义分析汉语文本英语文本生成 英语文本改进 日语文本生成 日语文本 出错纪录词典

15 第一章 引 论 符号表position initial rate... 1 2 3 词法分析器 id 1 := id 2 + id 3 * 60 position := initial + rate * 60 词典你们 大工学子... 1 2 3 词法分析 名词 1 动词 形容词 名词 2 你们是优秀的大工学子。 词法分析:源程序 - 〉词法记号( token )流

16 第一章 引 论 任何一个标识符都是表达式 ; 任何一个数都是表达式; 如果 e 1 和 e 2 都是表达式,那 么  e 1 + e 2  e 1 * e 2  (e 1 ) 也都是表达式表达式表达式表达式 标识符 表达式表达式 (initial) 标识符(rate)数 (60 ) * + 语法分析:词法记号( token )流 - 〉语法短语 任何名词都可以作宾语; 如果 e 1 和 e 2 都是宾语,那么  e 1 和 e 2  e 1 与 e 2 也都可以作宾语 如果 e 1 是定语, e 2 是宾语, 那么 e 1 e 2 也可以作宾语。 宾语定语 宾语 宾语 形容词 ( 优秀的 ) 名词 (大工学子)

17 第一章 引 论 语法分析器 id 1 := id 2 + id 3 * 60 :=+ * 60 id 1 id 2 id 3 语法分析:词法记号( token )流 - 〉语法短语 名词 1 动词 形容词 名词 2 语法分析 ( 优秀的 ) 名词 (大工学子) 宾语 定语 宾语 宾语 形容词语句谓语 动词 (是)(是)(是)(是) 主语 名词 ( 你们 )

18 第一章 引 论 语义分析器:=+ * 60 id 1 id 2 id 3 := + * 60 id 1 id 2 id 3 inttoreal 语义分析:检查程序的语义正确性,如类型检查等 你们是优秀的大工学子 你们是一个优秀的大工学子。

19 第一章 引 论 词法分析器 语法分析器 语义分析器源程序中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器符号表管理器 前三个阶段 完成对源程 序的分析

20 第一章 引 论 中间代码生成器 temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 :=+ * 60 id 1 id 2 id 3 inttoreal ( 优秀的 ) 名词 (大工学子) 宾语 定语 宾语 宾语 形容词语句谓语 动词 (是)(是)(是)(是) 主语 名词 ( 你们 ) 英语文本生成 You are good DLUTers.

21 第一章 引 论 代码优化器 temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 You are good DLUTers. 英语文本改进 You are excellent DLUTers

22 第一章 引 论 temp1 := id3 * 60.0 id1 := id2 + temp1 代码生成器 MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 日语文本生成 You are excellent DLUTers.. # & *-+di &^%4dfsa

23 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器符号表管理器 后三个阶 段对源程 序进行综 合

24 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器符号表管理器

25 第一章 引 论 词法分析器 语法分析器 语义分析器源程序中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器符号表管理器 前端后端 前端:依赖于源语 言,独立于目标机 器。 后端:依赖于 目标机器,独 立于源语言。

26 第一章 引 论 源程序 目标机器1目标机器1目标机器1目标机器1 目标机器2目标机器2目标机器2目标机器2 目标机器3目标机器3目标机器3目标机器3 目标机器n目标机器n目标机器n目标机器n 编译器 不区分前端和后端的编译器 源程序 目标机器1目标机器1目标机器1目标机器1 目标机器2目标机器2目标机器2目标机器2 目标机器3目标机器3目标机器3目标机器3 目标机器n目标机器n目标机器n目标机器n 编译器前端 编译器后端 区分前端和后端的编译器

27 词法分析器 语法分析器 语义分析器源程序 中间代码生 成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理 器 遍 编译的几个阶段常用一遍 ( pass )扫描实现,一 遍扫描包括读一个输入文 件和写一个输出文件。

28 第一章 引 论 遍 类比:刷墙艺术中的 “ 遍 ” 的概念 网线 水泥 瓷砖 任务:在一面墙上布置网线,并粉刷水泥, 然后贴上瓷砖

29 第一章 引 论 遍 类比:刷墙艺术中的 “ 遍 ” 的概念 方法一: 第一遍:布上全部网线 网线 水泥 瓷砖

30 第一章 引 论 遍 类比:刷墙艺术中的 “ 遍 ” 的概念 方法一: 第二遍:粉刷全部墙面的水泥 网线 水泥 瓷砖

31 第一章 引 论 遍 类比:刷墙艺术中的 “ 遍 ” 的概念 方法一: 第三遍:给整个墙面贴上瓷砖 网线 水泥 瓷砖

32 第一章 引 论 遍 类比:刷墙艺术中的 “ 遍 ” 的概念 方法二: 一遍:一边布网线,一边粉刷水泥,一边贴瓷砖 网线 水泥 瓷砖

33 小结 编译原理的内容及学习意义翻译器、编译器的定义编译器的阶段划分及前端、后端的概念 “ 遍 ” 的概念

34


Download ppt "编译原理和技术 大连理工软件学院 江 贺 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2003 Louden, K.C, 《编译原理及实践(英文版)》. 中信出版社 Alfred V.Aho,"

Similar presentations


Ads by Google