- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第01讲-编译原理-课程简介课件
编译原理
Principles of Compiling
大连理工大学软件学院
什么是编译器?
2017-5-31
2
2017-5-31
3
2017-5-31
4
空调设为25度
词法分析
语法分析
语义分析
可执行代码
中间代码生成
5
编译原理课程在计算机科学技术中的地位:
程序设计语言
离散数学
数据结构
编译原理
操作系统
系统软件
应用软件
软件工程
信息系统
电子商务
6
编译理论与方法
计算机科学与技术中理论和实践相结合的最好典范
ACM 图灵奖,授予在计算机技术领域作出突出贡献的科学家
程序设计语言、编译理论与方法约占1/3
7
课程内容
介绍编译器构造的一般原理和基本实现方法
介绍的理论知识:形式语言和自动机理论、语法制导的定义和属性文法、类型论等
课程特点
强调形式化描述技术
强调对编译原理和技术的宏观理解,不把注意力分散到枝节算法,不偏向于某种源语言或目标机器
8
if (c == 5) then …
if (c = 5) then…
编译器不报错,但实际上错了
学习的意义
计算机专业的核心课程。
深刻的理解编程语言的设计和实现,有利于学习编程语言,知其然知其所以然。
9
学习的意义
从软件工程看,编译器是一个很好的实例(基本设计、模块划分等), 所介绍的概念和技术能应用到一般的软件设计之中。
编译器也许是在本科阶段分析最透彻的实例。
能了解到软件工程中的一些技术(如基于事件驱动的编程)。
大多数程序员同时是语言的设计者,虽然是一些简单的语言(如输入输出),本课程的学习有助于提高对这些语言的设计水平。
10
学习的意义
可以肯定地说,你们中的95%以上的人在一辈子的生涯中都没有机会去实现一个真正的复杂语言的编译器。但是每一个人都绝对遇到需要使用编译技术的项目。
以下就是一些小的“编译器”.
11
普通计算器
可编程计算器
学习的意义
12
自动聊天机器人
学习的意义
13
各种数据库查询语言及专家系统
select 课程
from table 课程表
where 任课老师=陈意云
学习的意义
14
本讲纲要
课程简介
编译技术概述
15
编辑器
源程序
编译器
操作系统
可执行程序
.exe
解释器
中间代码
可执行程序
.exe
Edit, Word, Notepad, Vi
gcc, vc, bc31
虚拟机
集成开发环境
编译技术研究对象:编译器的构造与分析
16
BASIC年代的解释器
功能:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行
在那个年代,编译和解释两个功能是合在一个程序中,该程序被称为解释器
Java年代的解释器
解释器的上述两个功能分在两个程序中
前一个叫做编译器,它把源程序翻译成一种叫做字节码的中间语言程序
后一个叫做解释器,它对字节码程序进行解释执行
17
第一章 引论
翻译器:把一种语言变换到另外一种语言的软件。这两种语言分别称为源语言和目标语言。
编译器:一种翻译器,它的目标语言比源语言低级。
编译器处理的对象:编程语言
18
编程语言演义
编程语言
机器语言
汇编语言
高级语言(Fortran, C, Java, …)
19
编程语言演义
机器语言特点
0,1串
打卡输入
c7 06 0000 0002
mov x, c 其中符号x的地址是0000,c=2
计算机可以直接理解机器语言程序
机器语言缺点
可读性差
可维护性差
机器语言
汇编语言
高级语言
20
编程语言演义
汇编语言形式
mov x,2
c7 06 0000 0002
变量x的地址可以由汇编器维护,而不需要固定到某个绝对地址
机器语言
汇编语言
高级语言
21
编程语言演义
高级语言形式
赋值语句:x=2
贴近人类思维方式,贴近实际问题描述形式
计算机无法直接理解
需要编译器辅助,将其转换为机器语言形式
机器语言
汇编语言
高级语言
22
编译器功能
完成从源语言到目标语言的转换
源语言:通常是高级语言(C,Java,…)
目标语言:汇编语言,或者其他形式的低级语言(如Java字节码)
编译器实现技术已经发展成熟,并且划分为功能相对明确的多个功能模块
23
编译器
编译器从逻辑上可以分成若干阶段,每个阶段把源程序从一种表示变换成另一种表示
翻译家
第一章 引 论
24
第一章 引 论
FORTRAN (FORmula TRANslation)
第一个实用的高级语言
擅长于数学函数运算
常用于科学计算中
第一个编译器
历史上第一个实用的编译器(John Backus):
Fortran compiler for the IBM 704/709/7090/7094
John Backus,引入了编译器的“阶段”或
文档评论(0)