语言和翻译:语言是人类交流思想和信息工具。如自然语言,世界上存
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
译程序就是一个 语言翻译程序。它把一种语言(称作源语言)书写的 程序翻译成另一种语言(称作目标语言)的等价的程 序。
源语言通常是一个高级语言,如FORTRAN, C 或Pascal。目标语言通常是一个低级语言,如汇编 或机器语言。编译程序的功能下图所示。
高级语言程序 (源程序)
var sum begin
15
编译原理
3. 逗号 4. 标识符 5. 逗号 6. 标识符 7. 冒号 8. 保留字 9. 分号 10. 标识符 11. 赋值号 12. 标识符 13. 加号 14. 标识符 15. 乘号 16. 整数 17. 保留字 18. 界符
, first , count : real ; sum := first + count * 10 end .
编译原理
2.语法分析
语法分析的任务是在词法分析的基础上,根据语 言的语法规则(文法规则)把单词符号流分解成 各类语法单位(语法范畴),如“短语”、“子 句”、“句子(语句)”、“程序段”和“程 序”。
6
编译原理
7
需预处理的源程序 预处理程序 源程序 编译程序 目标汇编程序 汇编程序
可再装配的机器代码 装配/连接编辑程序
绝对机器代码
8
编译原理
高级语言程序的 处理过程
可再装配目标文件
编译原理
一个高级语言程序的执行通常分为两个阶段,即 编译阶段和运行阶段,如图所示。编译阶段将源 程序变换成目标程序;运行阶段则由所生成的目 标程序连同运行系统(数据空间分配子程序、标 准函数程序等)接受程序的初始数据作为输入, 运行后输出计算结果。
9
输入数据
源程序
编译原理
编译程序
目标程序
运行系统
计算结果
10
编译原理
用高级语言编写的程序也可通过解释程序来执 行。解释程序也是一种翻译程序。 解释:按源语言的定义边解释边执行。
输入数据
源程序
解释程序
计算结果
11
编译原理
优 点:交互方便,移植性好。 缺 点:效率低,如循环语句部分要反复解释执行。 共同点:都需要进行词法、语法、语义分析。
2
编译原理
尽管汇编语言与机器语言相比在阅读和理解上有了长 足的进步,但其依赖具体机器的特性是无法改变的, 这给程序设计增加了难度。随着计算机应用需求的不 断增长,出现了更加接近人类自然语言的功能更强、 抽象级别更高的面向各种应用的高级语言,如: C 、 FORTRAN、Pascal 、Java、C++等。高级语言已经从 具体机器中抽象出来,摆脱了依赖具体机器的问题。 用高级语言编制的程序几乎能够在不改动的情况下在 不同种类的计算机上运行且不易出错,这是汇编语言 难以做到的,但高级语言程序翻译(编译)成最终能 够直接执行的机器语言程序的难度却大大增加了。
3
编译原理
由于汇编语言和机器语言一样都是面向机器的, 故相对于面向用户的高级语言来说,它们都称之 为低级语言,而FORTRAN、PASCAL、C、ADA、 Java这类面向应用的语言则称之为高级语言。因 此,编译程序就是指这样一种程序,通过它能够 将用高级语言编写的源程序转换成与之在逻辑上 等价的低级语言形式的目标程序,
应 用:数据库系统中的动态查询语句(交互性)
Java(移植性)。 区 别:编译产生目标程序 , 比喻:笔译。
解释不产生目标程序,比喻:口译。
很多语言如BASIC,LISP和PROLOG等等最初都是解 释执行的,后来也都有了编译系统。号称最具生命力 的Java环境同时需要解释和编译系统的支持。
12
编译原理
1.2 编译过程概述
编译程序的工作过程是指从输入源程序开始到输 出目标程序为止的整个过程,此过程是非常复杂 的。一般来说,整个编译过程可以划分成五个阶 段:词法分析阶段、语法分析阶段、语义分析和 中间代码生成阶段、优化阶段和目标代码生成阶 段。
13
编译原理
1.词法分析
词法分析的任务从左到右读入源程序的每个字符, 对构成源程序的字符流进行扫描和分解,从而识别 出一个个单词(也叫单词符号或符号)。将所识别 出的单词用统一长度的标准形式(也称内部码)来 表示,以便于后继语法工作的进行。因此,词法分 析工作是将源程序中字符串变换成单词符号流的过 程,词法分析阶段工作遵循的是语言的构词规则
编译原理
第1章 编译程序概论
1.1 什么是编译程序 语言和翻译:语言是人类交流思想和信息的工
具。如自然语言,世界上存在着许多种语言,各国 之间要交流信息,就要有各种语言之间的翻译。计 算机语言同样是丰富多彩的。
由于计算机硬件的器件特性,决定了计算机本 身只能直接接受由0和1编码的二进制指令和数据, 这种二进制形式的指令集合称为该计算机的机器语 言,它是计算机惟一能够直接识别并接受的语言。
编译程序
低级语言程序 (目标程序)
5
编译原理
如果从计算机系统的角度看,什么是编译程序呢? 我们说编译程序是一种软件,是系统软件。通常认 为系统软件是居于计算机系统中最靠近硬件的一层, 其他软件一般都通过系统软件发挥作用。系统软件 和具体的应用领域无关,如编译系统和操作系统等。 编译程序也是一种语言处理系统,即把软件语言书 写的各种程序处理成可在计算机上执行的程序。 一个编译程序的重要性体现在它使得多数计算机用 户不必考虑与机器有关的繁琐细节,使程序员和程 序设计专家独立于机器,这对于当今机器的数量和 种类持续不断地增长的年代尤为重要。
•单词:逻辑上紧密相连的一组字符,这些字符具有 集体含义。如:标识符、保留字(关键字或基本 字)、算符、界符等。
14
例. 某源程序片断如下:
begin
var sum , first , count : real ;
sum := first + count * 10
end.
扫描后得到如下单词序列:
1.保 留字 2.标识符 3.保留字
返回目录
1
编译原理
用机器语言编写程序很不方便且容易出错,编写 出来的程序也难以调试、阅读和交流。为此,出 现了用助记符代替机器语言二进制编码的另外一 种语言,这就是汇编语言。汇编语言是建立在机 器语言之上的,因为它是机器语言的符号化形式, 所以较机器语言直观;但是计算机并不能直接识 别这种符号化语言,用汇编语言编写的程序必须 翻译成机器语言之后才能执行,这种“翻译”是 通过专门的软件——汇编程序实现的。
译程序就是一个 语言翻译程序。它把一种语言(称作源语言)书写的 程序翻译成另一种语言(称作目标语言)的等价的程 序。
源语言通常是一个高级语言,如FORTRAN, C 或Pascal。目标语言通常是一个低级语言,如汇编 或机器语言。编译程序的功能下图所示。
高级语言程序 (源程序)
var sum begin
15
编译原理
3. 逗号 4. 标识符 5. 逗号 6. 标识符 7. 冒号 8. 保留字 9. 分号 10. 标识符 11. 赋值号 12. 标识符 13. 加号 14. 标识符 15. 乘号 16. 整数 17. 保留字 18. 界符
, first , count : real ; sum := first + count * 10 end .
编译原理
2.语法分析
语法分析的任务是在词法分析的基础上,根据语 言的语法规则(文法规则)把单词符号流分解成 各类语法单位(语法范畴),如“短语”、“子 句”、“句子(语句)”、“程序段”和“程 序”。
6
编译原理
7
需预处理的源程序 预处理程序 源程序 编译程序 目标汇编程序 汇编程序
可再装配的机器代码 装配/连接编辑程序
绝对机器代码
8
编译原理
高级语言程序的 处理过程
可再装配目标文件
编译原理
一个高级语言程序的执行通常分为两个阶段,即 编译阶段和运行阶段,如图所示。编译阶段将源 程序变换成目标程序;运行阶段则由所生成的目 标程序连同运行系统(数据空间分配子程序、标 准函数程序等)接受程序的初始数据作为输入, 运行后输出计算结果。
9
输入数据
源程序
编译原理
编译程序
目标程序
运行系统
计算结果
10
编译原理
用高级语言编写的程序也可通过解释程序来执 行。解释程序也是一种翻译程序。 解释:按源语言的定义边解释边执行。
输入数据
源程序
解释程序
计算结果
11
编译原理
优 点:交互方便,移植性好。 缺 点:效率低,如循环语句部分要反复解释执行。 共同点:都需要进行词法、语法、语义分析。
2
编译原理
尽管汇编语言与机器语言相比在阅读和理解上有了长 足的进步,但其依赖具体机器的特性是无法改变的, 这给程序设计增加了难度。随着计算机应用需求的不 断增长,出现了更加接近人类自然语言的功能更强、 抽象级别更高的面向各种应用的高级语言,如: C 、 FORTRAN、Pascal 、Java、C++等。高级语言已经从 具体机器中抽象出来,摆脱了依赖具体机器的问题。 用高级语言编制的程序几乎能够在不改动的情况下在 不同种类的计算机上运行且不易出错,这是汇编语言 难以做到的,但高级语言程序翻译(编译)成最终能 够直接执行的机器语言程序的难度却大大增加了。
3
编译原理
由于汇编语言和机器语言一样都是面向机器的, 故相对于面向用户的高级语言来说,它们都称之 为低级语言,而FORTRAN、PASCAL、C、ADA、 Java这类面向应用的语言则称之为高级语言。因 此,编译程序就是指这样一种程序,通过它能够 将用高级语言编写的源程序转换成与之在逻辑上 等价的低级语言形式的目标程序,
应 用:数据库系统中的动态查询语句(交互性)
Java(移植性)。 区 别:编译产生目标程序 , 比喻:笔译。
解释不产生目标程序,比喻:口译。
很多语言如BASIC,LISP和PROLOG等等最初都是解 释执行的,后来也都有了编译系统。号称最具生命力 的Java环境同时需要解释和编译系统的支持。
12
编译原理
1.2 编译过程概述
编译程序的工作过程是指从输入源程序开始到输 出目标程序为止的整个过程,此过程是非常复杂 的。一般来说,整个编译过程可以划分成五个阶 段:词法分析阶段、语法分析阶段、语义分析和 中间代码生成阶段、优化阶段和目标代码生成阶 段。
13
编译原理
1.词法分析
词法分析的任务从左到右读入源程序的每个字符, 对构成源程序的字符流进行扫描和分解,从而识别 出一个个单词(也叫单词符号或符号)。将所识别 出的单词用统一长度的标准形式(也称内部码)来 表示,以便于后继语法工作的进行。因此,词法分 析工作是将源程序中字符串变换成单词符号流的过 程,词法分析阶段工作遵循的是语言的构词规则
编译原理
第1章 编译程序概论
1.1 什么是编译程序 语言和翻译:语言是人类交流思想和信息的工
具。如自然语言,世界上存在着许多种语言,各国 之间要交流信息,就要有各种语言之间的翻译。计 算机语言同样是丰富多彩的。
由于计算机硬件的器件特性,决定了计算机本 身只能直接接受由0和1编码的二进制指令和数据, 这种二进制形式的指令集合称为该计算机的机器语 言,它是计算机惟一能够直接识别并接受的语言。
编译程序
低级语言程序 (目标程序)
5
编译原理
如果从计算机系统的角度看,什么是编译程序呢? 我们说编译程序是一种软件,是系统软件。通常认 为系统软件是居于计算机系统中最靠近硬件的一层, 其他软件一般都通过系统软件发挥作用。系统软件 和具体的应用领域无关,如编译系统和操作系统等。 编译程序也是一种语言处理系统,即把软件语言书 写的各种程序处理成可在计算机上执行的程序。 一个编译程序的重要性体现在它使得多数计算机用 户不必考虑与机器有关的繁琐细节,使程序员和程 序设计专家独立于机器,这对于当今机器的数量和 种类持续不断地增长的年代尤为重要。
•单词:逻辑上紧密相连的一组字符,这些字符具有 集体含义。如:标识符、保留字(关键字或基本 字)、算符、界符等。
14
例. 某源程序片断如下:
begin
var sum , first , count : real ;
sum := first + count * 10
end.
扫描后得到如下单词序列:
1.保 留字 2.标识符 3.保留字
返回目录
1
编译原理
用机器语言编写程序很不方便且容易出错,编写 出来的程序也难以调试、阅读和交流。为此,出 现了用助记符代替机器语言二进制编码的另外一 种语言,这就是汇编语言。汇编语言是建立在机 器语言之上的,因为它是机器语言的符号化形式, 所以较机器语言直观;但是计算机并不能直接识 别这种符号化语言,用汇编语言编写的程序必须 翻译成机器语言之后才能执行,这种“翻译”是 通过专门的软件——汇编程序实现的。