编译原理 第一章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++C; Pascal C;
2020/12/2
编译原理
15
翻译器 translator
翻译:在不改变语义的条件下,把某种语言的源 程序转换成另一种语言程序—目标语言程序,称
为翻译。执行翻译的软件,称为翻译程序。
源程序
翻译程序
目标程序
2020/12/2
编译原理
17
解释和编译
解释器(interpreter) ▪ 在一种语言的机器上,直接执行用另一种语言写的程序 的过程,称为解释。实现解释的软件,称为解释程序。
编译原理 Compilers: Principles, Techniques, and Tools
12/13/2020
2020/12/2
1
课程介绍
Foundation of programming language
Principle of compiler construction
programming
▪ 以源程序作为输入,不产生目标程序,一边解释一边执 行。
▪ 优点:直观易懂,结构简单,易于实现人机对话 ▪ 缺点:效率低 编译 ▪ 由高级语言转换为低级语言,然后对编译出来的目标程序
进行运行计算
2020/12/2
编译原理
18
翻译程序与解释程序的区别
二者本质区别是输出不同: ▪ 翻译程序的输出是与源程序 等价的目标程序; ▪ 解释程序实际是一台虚拟机, 其输出是被执行程序所定义 的输出结果。
2020/12/2
编译原理
2
精品资料
• 你怎么称呼老师? • 如果老师最后没有总结一节课的重点的难点,你
是否会认为老师的教学方法需要改进? • 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭 • “不怕太阳晒,也不怕那风雨狂,只怕先生骂我
笨,没有学问无颜见爹娘 ……” • “太阳当空照,花儿对我笑,小鸟说早早早……”
MOV A, d MUL A, d ADD A, b MOV va, A
Assembly Codes
13
compiler
编译器是一个程序,读入某一语言写的源程序,并 将其翻译成等价的、用另一语言写的目标程序,并 且能够向用户报告被编译的源程序中出现的错误。
Source program
Compiler Error message
Applications (High Level Language) a = b + c * d
Compiler
Operating System Hardware (Low Level Language)
Register-based or Stack-based machines
2020/12/2
编译原理
Linker/Loader
Target Machine Code
编译原理
Library files and/or
Relocatable object files
22
编译过程概述
编译程序的工作,从输入源程序开始,到输出目标 程序结束,与自然语言之间的翻译有很多相似之处。
2020/12/2
编译原理
6
课程内容
编译器构造的一般原理和基本实现方法 ▪ 强调对编译原理和技术的宏观理解 ▪ 不偏向于某种源语言或目标机器
理论知识 ▪ 形式语言和自动机理论 ▪ 属性文法 ▪ 类型理论等 ▪ 形式化描述技术
预备知识 ▪ 高级程序设计语言 ▪ 数据结构、汇编、离散数学
2020/12/2
Target program
2020/12/2
编译原理
14
程序的等价:若两个程序P1和P2所允许的输入集合
相同,且对相同的输入,均产生相同的输出,则称
程序P1和P2等价。
狭义看法:通常,源程序是用某种高级语言编写的, 而目标程序是用目标代码或机器代码编写的。
广义看法:程序变换,翻译器(translator)
2020/12/2
编译原理
19
Example: Java Compiler & Java VM
Java语言结合了编译和解释的过程。
Java program (app.java)
(Javac)
Java Bytecodes
(app.class)
2020/12/2
编译原理
20
The context of a compiler
2020/12/2
编译原理
21
The context of a compiler
Source Program Preprocessor Modified Source Program
Compiler Target Assembly Program
2020/12/2
Assembler
Relocatable Machine Code
编译原理
7
内容简介
第一章 编译器的基本结构
第二章 简单的语法制导翻译器
第三章 词法分析
第四章 语法分析 第五章 语法制导翻译
重点
第六章 中间代码生成
第七章 运行时刻环境
第八章 代码生成
2020/12/2
编译原理
8
教材
计算机科学丛书•编译原理 (本科教学版)(第2版) 阿霍 (Aho.A.V.) 等 赵建华 , 郑滔, 戴新 宇 (译)
2020/12/2
编译原理
9
第1版
第2版
中译本
2020/12/2
编译原理
10
课程要求
课堂 课后习题 实验
▪ 阅读、查找相关资料 ▪ 编程完成实验 ▪ 提交实验报告 成绩 ▪ 平时成绩:考勤、作业、实验 ▪ 期末考试
2020/12/2
编译原理
11
第一章 绪论 1.1 什么是编译程序
C7 06 0000 0002 ▪ machine language
mov X, 2 ▪ Assembly language
X=2 ▪ C language
程序设计语言 ▪ 高级语言 ▪ 汇编语言 ▪ 机器语言
在计算机上如何执行一个 高级语言程序?
▪ 把高级语言程序翻译成 机器语言程序
▪ 运行所得的机器语言程 序求得计算结果
2020/12/2
编译原理
12
Compiler: A Bridge Between PL and Hardware
课程介绍
学习设计与构造程序设计语言编译程序的原理与方 法
源程序
目标程序
可执行程序
编译
连接
程序
2020/12/2
编译原理
5
为什么学习编译原理?
编译程序构造是计算机科学中一个非常成功、成熟 的分支,也是最早Leabharlann Baidu得成功的分支之一;
它与文件转换程序关系密切,不仅仅是于编译程序; 包含许多在实际应用中有用的算法。
2020/12/2
编译原理
15
翻译器 translator
翻译:在不改变语义的条件下,把某种语言的源 程序转换成另一种语言程序—目标语言程序,称
为翻译。执行翻译的软件,称为翻译程序。
源程序
翻译程序
目标程序
2020/12/2
编译原理
17
解释和编译
解释器(interpreter) ▪ 在一种语言的机器上,直接执行用另一种语言写的程序 的过程,称为解释。实现解释的软件,称为解释程序。
编译原理 Compilers: Principles, Techniques, and Tools
12/13/2020
2020/12/2
1
课程介绍
Foundation of programming language
Principle of compiler construction
programming
▪ 以源程序作为输入,不产生目标程序,一边解释一边执 行。
▪ 优点:直观易懂,结构简单,易于实现人机对话 ▪ 缺点:效率低 编译 ▪ 由高级语言转换为低级语言,然后对编译出来的目标程序
进行运行计算
2020/12/2
编译原理
18
翻译程序与解释程序的区别
二者本质区别是输出不同: ▪ 翻译程序的输出是与源程序 等价的目标程序; ▪ 解释程序实际是一台虚拟机, 其输出是被执行程序所定义 的输出结果。
2020/12/2
编译原理
2
精品资料
• 你怎么称呼老师? • 如果老师最后没有总结一节课的重点的难点,你
是否会认为老师的教学方法需要改进? • 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭 • “不怕太阳晒,也不怕那风雨狂,只怕先生骂我
笨,没有学问无颜见爹娘 ……” • “太阳当空照,花儿对我笑,小鸟说早早早……”
MOV A, d MUL A, d ADD A, b MOV va, A
Assembly Codes
13
compiler
编译器是一个程序,读入某一语言写的源程序,并 将其翻译成等价的、用另一语言写的目标程序,并 且能够向用户报告被编译的源程序中出现的错误。
Source program
Compiler Error message
Applications (High Level Language) a = b + c * d
Compiler
Operating System Hardware (Low Level Language)
Register-based or Stack-based machines
2020/12/2
编译原理
Linker/Loader
Target Machine Code
编译原理
Library files and/or
Relocatable object files
22
编译过程概述
编译程序的工作,从输入源程序开始,到输出目标 程序结束,与自然语言之间的翻译有很多相似之处。
2020/12/2
编译原理
6
课程内容
编译器构造的一般原理和基本实现方法 ▪ 强调对编译原理和技术的宏观理解 ▪ 不偏向于某种源语言或目标机器
理论知识 ▪ 形式语言和自动机理论 ▪ 属性文法 ▪ 类型理论等 ▪ 形式化描述技术
预备知识 ▪ 高级程序设计语言 ▪ 数据结构、汇编、离散数学
2020/12/2
Target program
2020/12/2
编译原理
14
程序的等价:若两个程序P1和P2所允许的输入集合
相同,且对相同的输入,均产生相同的输出,则称
程序P1和P2等价。
狭义看法:通常,源程序是用某种高级语言编写的, 而目标程序是用目标代码或机器代码编写的。
广义看法:程序变换,翻译器(translator)
2020/12/2
编译原理
19
Example: Java Compiler & Java VM
Java语言结合了编译和解释的过程。
Java program (app.java)
(Javac)
Java Bytecodes
(app.class)
2020/12/2
编译原理
20
The context of a compiler
2020/12/2
编译原理
21
The context of a compiler
Source Program Preprocessor Modified Source Program
Compiler Target Assembly Program
2020/12/2
Assembler
Relocatable Machine Code
编译原理
7
内容简介
第一章 编译器的基本结构
第二章 简单的语法制导翻译器
第三章 词法分析
第四章 语法分析 第五章 语法制导翻译
重点
第六章 中间代码生成
第七章 运行时刻环境
第八章 代码生成
2020/12/2
编译原理
8
教材
计算机科学丛书•编译原理 (本科教学版)(第2版) 阿霍 (Aho.A.V.) 等 赵建华 , 郑滔, 戴新 宇 (译)
2020/12/2
编译原理
9
第1版
第2版
中译本
2020/12/2
编译原理
10
课程要求
课堂 课后习题 实验
▪ 阅读、查找相关资料 ▪ 编程完成实验 ▪ 提交实验报告 成绩 ▪ 平时成绩:考勤、作业、实验 ▪ 期末考试
2020/12/2
编译原理
11
第一章 绪论 1.1 什么是编译程序
C7 06 0000 0002 ▪ machine language
mov X, 2 ▪ Assembly language
X=2 ▪ C language
程序设计语言 ▪ 高级语言 ▪ 汇编语言 ▪ 机器语言
在计算机上如何执行一个 高级语言程序?
▪ 把高级语言程序翻译成 机器语言程序
▪ 运行所得的机器语言程 序求得计算结果
2020/12/2
编译原理
12
Compiler: A Bridge Between PL and Hardware
课程介绍
学习设计与构造程序设计语言编译程序的原理与方 法
源程序
目标程序
可执行程序
编译
连接
程序
2020/12/2
编译原理
5
为什么学习编译原理?
编译程序构造是计算机科学中一个非常成功、成熟 的分支,也是最早Leabharlann Baidu得成功的分支之一;
它与文件转换程序关系密切,不仅仅是于编译程序; 包含许多在实际应用中有用的算法。