编译原理 第一章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FOR = FORmula的前三个字母 TRAN = TRANslation的前四个字母
主要特征: •主要用于科学计算 •子程序独立编译 •COMMON语句实现了模块之间的通信
电子科技大学计算机科学与工程学院
程序设计语言与编译 ALGOL 60语言 ALGO = ALGOrithmic的前四个字母 L = Language 的第一个字母 60 = 宣布的时间
TRANSLATER
机器码
OBJECT PROGRAM
编译程序
电子科技大学计算机科学与工程学院
程序设计语言与编译
机器语言实例

汇编语言实例
– – – – – –
MOV MUL ADD SUB

– – – –
… 0001 10 10 10001000 0010 10 00 01100100 0100 01 10 10000100 1000 01 01 00000010 …
电子科技大学计算机科学与工程学院
程序设计语言与编译
3.高级语言的特点
直观、自然、易于理解
易读、易写、易于交流、出版和存档
一般都是独立于机器的,易于移植
电子科技大学计算机科学与工程学院
程序设计语言与编译
4. 三种程序、三种语言
源程序
编译程序 目标程序
源语言
编译语言
目标语言
电子科技大学计算机科学与工程学院
(二进制位串)的意义。
示和运算指令。
语言定义时,类型名通常绑定于某一个值类 和某一组操作。
语言实现时,值和操作绑定于某种机器二进 制表示。
电子科技大学计算机科学与工程学院
程序设计语言与编译
变量类型的绑定
静态绑定:通过说明语句完成 如:Pascal、Fortran、C 动态绑定:执行时隐式说明,且动态变化 如:APL A5 //整型 A //标号、转到A A1 2 51 0 // 一维数组 A[2:3]0 //二维数组
电子科技大学计算机科学与工程学院
程序设计语言与编译
第一章 绪论 第一节 引言
1. 程序设计语言的产生
• 人机通信、人机交流
2. 程序设计语言的发展
机器语言 低级语言 汇编语言 高级语言 机器语言:二进制、机器相关 汇编语言:助记符、机器相关 高级语言:接近自然语言、机器无关
电子科技大学计算机科学与工程学院
电子科技大学计算机科学与工程学院
程序设计语言与编译
关于绑定(Binding)的一些概念
描述符:用以描述实体属性的符号、语句或表格等。 亦即实体到属性的映象。 静态绑定:凡是在编译时能确定的属性,称为静态属性;
若绑定在编译时完成,运行时不改变,称为静态绑定。 动态绑定:凡是在运行时才能确定的属性称为动态的。
电子科技大学计算机科学与工程学院
程序设计语言与编译
教材和参考书 1. 王晓斌等,程序设计语方与编译,电子 工业出版社(第二版本) 2. 陈火旺等,程序设计语言编译原理,国防 工业出版社 作业: 根据进度,布置作业后一周至两周 最后成绩=期终(70%)+ 半期考试(10%) + 作业(10%) + 实验成绩(10%)
主要特征: •主要用于科学计算
wenku.baidu.com
•引入了分程序结构和递归过程
•采用BNF形式描述语法
电子科技大学计算机科学与工程学院
程序设计语言与编译 COBOL语言 CO = COmmon的头二个字母 BO = Business-Oriented 的第一个字母 L = Language的第一个字母
主要特征: •广泛应用于各种事务处理领域
程序设计语言与编译
5.高级语言涉及的三类人
使用者

实现者
设计者

电子科技大学计算机科学与工程学院
程序设计语言与编译
6.本课程的目标
介绍程序设计语言设计和实现的最基本的理 论和技术,提高鉴赏和评估语言的能力。 在了解语言的重要概念、功能和限制的基 础上,以便具有选择、设计和实现程序设计 语言的能力。
存储器的内容可以被修改
电子科技大学计算机科学与工程学院
程序设计语言与编译
冯.诺依曼体系结构在命令式语言上的表现
变量 存储单元及它的名称由变量的概念来代替; 可以代表一个或一组单元,可以修改。
赋值 计算结果必须存储。
重复 因语句顺序执行,指令存储在有限的存储器中,
完成复杂计算时必须重复执行某些指令序列。
若绑定在运行时完成,称为动态绑定。
电子科技大学计算机科学与工程学院
程序设计语言与编译
4.变量
X
…… 存储单元n1 存储单元n2 存储单元n3
存储单元n4
变量是对一个(或若干个 )存储单元的抽象,赋值 语句则是修改存储单元 内容的抽象。
存储单元n5 存储单元n6
存储单元n7
……
变量除名字外,具有四个属性:作用域、生存期 、值和类型。
程序设计语言与编译
程序设计语言与编译
屈鸿 计算机科学与工程学院
电子科技大学计算机科学与工程学院
程序设计语言与编译
课程认识
地位

内容

专业基础课 核心课程
程序设计语言-共性 编译原理


电子科技大学计算机科学与工程学院
程序设计语言与编译
课程安排
课程设置:64学时 56课堂授课+8学时实验 先修课程: 1. 《数据结构》 2. 《形式语言》 3. 《PASCAL》或者《C语言》
电子科技大学计算机科学与工程学院
程序设计语言与编译
第二节 强制式语言 1.语言分类 按照语言设计的基础理论
命令式语言
函数式语言
冯.诺依曼
逻辑式语言 对象式语言
数量逻辑
数学函数
抽象数据 类型
电子科技大学计算机科学与工程学院
程序设计语言与编译
按照语言的发展进程
通常的高级语 言,也叫命令 式语言,过程 式语言 机器语言, 依赖于机器 指令系统 说明性语言 第一代语言 ,告诉机器 做什么
电子科技大学计算机科学与工程学院
程序设计语言与编译
4.再一次突破(60年代后期)
协同程序 正交性

变量的作用域是指可以访 问该变量的程序范围。 静态作用域绑定:按照程序的语法结构定义变量的 作用域。 动态作用域绑定:按照程序的执行动态地定义变量 的作用域。
电子科技大学计算机科学与工程学院
程序设计语言与编译
变量的生存期
存储单元n 一个存储区绑定于一 个变量的时间区间,称 为变量的生存期。 变量X
… MOV MUL ADD SUB …
R2, id3 R2, 100 R1, R2 id1, R1
电子科技大学计算机科学与工程学院
程序设计语言与编译
高级语言实例
C语言实例: – … – float aaa, bbb, ccc; – aaa = bbb + ccc * 100; – … Pascal语言实例: – … – var aaa, bbb, ccc: real; – aaa := bbb + ccc * 100; – …
电子科技大学计算机科学与工程学院
程序设计语言与编译
5.虚拟机
定义:虚拟机是由软件实现的机器。
执行高级语言 的虚拟机 高级语言编译程序 + 汇编程序 + 执行汇编语言 的虚拟机
实际机器,执 行二进制机器 语言
电子科技大学计算机科学与工程学院
程序设计语言与编译
第三节 程序单元 与程序单元相关的概念
1.程序单元:程序执行过程中的独立调用单元; 如子程序、分程序、过程等。
电子科技大学计算机科学与工程学院
程序设计语言与编译
内容回顾
1.翻译、编译、汇编 2.冯.诺依曼体系结构
1.数据或指令以二进制形式存储; 2.“存储程序”的工作方式; 3.程序顺序执行 4.存储器的内容可以被修改
3.变量、复值语句
电子科技大学计算机科学与工程学院
程序设计语言与编译
变量的作用域
X
代码
程序设计语言与编译 • 翻译汇编语言的程序称为汇编程序(器)
汇编语言
SOURCE PROGRAM
翻译程序
TRANSLATER
机器码
OBJECT PROGRAM
汇编程序
电子科技大学计算机科学与工程学院
程序设计语言与编译 • 翻译高级语言的程序称为编译程序(器)
高级语言
SOURCE PROGRAM
翻译程序
电子科技大学计算机科学与工程学院
程序设计语言与编译 7.副作用:对绑定于一个非局部变量的对象 进行修改时,将产生副作用。
8.程序单元可以递归激活,从而一个单元可 以有很多个实例,但代码段相同。不同的仅 仅是活动记录。
电子科技大学计算机科学与工程学院
程序设计语言与编译
第四节 程序设计语言发 展简介
2.单元的表示 在编译时,单元表示是该单元的源程序。 运行时,单元表示由一个代码段和一个活 动记录组成,称为单元实例
电子科技大学计算机科学与工程学院
程序设计语言与编译 3.活动记录:执行单元所需要的信息,以及该单 元的局部变量所绑定的数据对象的存储区。 4.非局部变量:一个程序单元可以引用未被本单 元说明而被其它单元说明的变量。 5.引用环境:局部变量+非局部变量。 6.别名:同一单元的引用环境中有两个变量 绑定于同一数据对象,称这些变量具有别名。
随着计算机技术的发展,计算机应用也日益广泛 ,已经渗透到社会的各个领域,对程序设计语言 也提出了新的要求(诸如可维护性,可靠性,可移 植性等),从而促进了语言的发展。
电子科技大学计算机科学与工程学院
程序设计语言与编译
1.早期的高级语言(50年代)
效率
效率
效率
电子科技大学计算机科学与工程学院
程序设计语言与编译 FORTRAN语言
电子科技大学计算机科学与工程学院
程序设计语言与编译 APL语言
主要特征: •支持函数式程序设计风格
•广泛应用于涉及大量矩阵运算的科学计算中
•具有丰富的操作符
电子科技大学计算机科学与工程学院
程序设计语言与编译 SNOBOL语言
主要特征: •主要用于字符串处理
•给出了一种与机器无关的宏功能,增加了程序的
程序设计语言与编译
变量的类型
类型的定义: 变量的类型是与变量相关联的值的类, 0代表true还 布尔值只能取true和false,进 以及对这些值进行的操作的说明。 是整数0? 行AND,OR,NOT运算;整型值能 取一定范围的整数,进行加、 整型和实数分别对 类型可用来解释变量绑定的存储区的内容 应机器内的不同表 减、剩、除等运算。
时间轴
存储单元n
变量X
电子科技大学计算机科学与工程学院
程序设计语言与编译
变量的值
定义:即变量对应存储区单元的内容
关于变量的值的主要问题: 匿名变量的访问通过指针实现 变量与它的值的绑定是动态的
变量的初始化,几种处理方法:
不初始化则出错 随机 符号常量的值能否修改? 缺省值0
电子科技大学计算机科学与工程学院
•引入了文件和数据描述
•类自然语言程序描述
电子科技大学计算机科学与工程学院
程序设计语言与编译
2.早期的突破
Efficiency is not all !
效率 良好的数学 基础
电子科技大学计算机科学与工程学院
程序设计语言与编译 LISP语言
主要特征: •函数式语言 •具有很强的符号处理能力 •统一的数据结构(表) •数据和程序统一的表示方法 •其基础是函数和函数作用
可移植性 •成功应于文本处理
电子科技大学计算机科学与工程学院
程序设计语言与编译
3.概念的集成(64年)
多任务 异常处理 动态数据结构 递归过程 分程序
概念的集 成..
电子科技大学计算机科学与工程学院
程序设计语言与编译 PL/1语言
主要特征: •所有语言概念之大全 •分程序概念和递归过程 •数据描述机能 •动态数据结构 •异常处理 •多任务机能 •可用于科学数值计算,数据处理和开发系统软件 •没有(难以)得到广泛的应用
电子科技大学计算机科学与工程学院
程序设计语言与编译
3.绑定(Binding)概念
实体属性 实体属性
变量,子程序,语句 等均为实体
实体
实体属性
实体具有的特性
实体属性
绑定:一个实体(或对象)与其某种属性建立起某种联系的 过程,称为绑定。 绑定时间:把对象(实体)与它的某个属性联系起来的时刻, 叫绑定时间。
第二代语言
汇编语言, 第三代语言 机器语言的 符号化
第四代语言
电子科技大学计算机科学与工程学院
程序设计语言与编译
2.冯.诺依曼体系结构
Memory Data Register Small, temporary storage MAR MDR Memory Address Register
存贮器
输 入
处理器 Instruction Register
ALU TEMP
输 出
Arithmetic and Logic Unit
控制器
PC
Program Counter
IR
电子科技大学计算机科学与工程学院
程序设计语言与编译
冯.诺依曼体系结构的特点
数据或指令以二进制形式存储; “存储程序”的工作方式; 程序顺序执行
相关文档
最新文档