编译原理重点.pdf
1语言分类:论基础分为4类语言:强制式语言:基础是冯·诺依曼模型;函数式语言;基础
是数学函数(函数运算);逻辑式语言:基础是数理逻辑、谓词演算;对象式语言:基础是抽象
数据类型。按2语言的发展进程分类:第一代语言(机器语言)第二代语言(汇编语言)
第三代语言(高级语言:命令式、过程式)第四代语言(说明性语言、超高级语言)新一代
语言(函数式、逻辑式语言)
3冯.诺依曼体系结构:三大特性:①变量存储单元及名称由变量的概念代替。变量可以代
表一个或一组单元。②赋值存储(中间、最终的)计算结果。③重复语句顺序执行,指令存
储在有限的存储器中,完成复杂计算时需要重复执行某些指令序列。
4绑定(Binding)概念:实体:程序的组成部分,如变量,表达式、程序单元等。属性:实
体具有的特性。绑定:实体与其各种属性建立起某种联系的过程称为绑定,实际上就是建立
了某种约束。描述符:描述实体属性的表格。若绑定在运行之前(即编译时)完成,且在运行
时不会改变,则称为静态绑定。若绑定在运行时完成,则称为动态绑定。
5冯.诺依曼体系结构的特点:数据或指令以二进制形式存储;“存储程序”的工作方式;程
序顺序执行;存储器的内容可以被修改
6虚拟机是由实际机器加软件实现的机器。若一台实际机器配置上C语言编译程序,对用户
来说,这台机器就是C语言的虚拟机
7变量是对一个或若干个存储单元的抽象。一个存储单元至少一个字节。一个变量至少占用
一个存储单元。赋值是对修改存储单元内容的抽象。8属性:变量的作用域:可以访问该变
量的程序范围。变量的生存期:存储单元绑定于一个变量的时间区间。变量的值:存储区单
元的内容。变量的类型:与变量相关联的值,以及对这些值进行的操作的抽象
9程序单元是指程序执行过程中可独立调用的单元,编译时,一个源程序称为一个单元表示,
运行时,一个单元表示由一个代码段和一个活动记录组成此时称单元表示为单元实例。
10.别名和副作用:引用环境中有两个变量绑定于同一数据对象,则称这些变量具有别名。
产生别名的两种情况:若过程参数传递方式是引用调用,那么形参和实参共享同一数据对象,
引起别名。当形参引用调用实参时,它与全局变量表示同一数据对象,或者有重叠的数据对
象时,也会引起别名。对绑定的一个非局部变量进行修改时,将产生副作用。
11数据类型的作用:实现了数据抽象,把程序员从机器的具体特征中解脱出来提高了编程
效率
数据类型的分类
12内部类型特点:反映基本硬件特性。优越性:基本表示的不可见性,基本位串对程序员
是不可见的;编译时能检查变量使用的正确性,能够进行静态类型检查;编译时可以确定无
二义的操作;精度控制,可以通过数据类型显式定义数据的精度
13用户定义类型:1.笛卡尔积:n个集合A1,A2,„,An的笛卡儿积:A1×A2×…×An。C
的结构2.有限映像:从定义域类型DT值的有限集合,到值域类型RT值的有限集合的函
数(映射)称为有限映像。数组3.序列:任意多个数据项组成,数据项称为该序列的成分,且
类型相同。串、顺序文件4.递归:数据类型T包含属于同一类型T的成分。指针5.判定或:
一个选择对象结构的构造机制,规定在两个不同选择对象之间作出适当的选择。C的联合
6.幂集:类型T的元素所有子集的集合,称为幂集,T称为基类型。PASCAL的集合
14用户定义类型显式命名的优点:①可读性(选择名字)②可修改性(不修改变量说明)③可分
性(重复使用)④一致性检查
15用户定义类型与内部类型的异同:①都建立某种基本表示的抽象.内部类型:对二进制位串
的抽象;用户定义类型:对内部类型和已定义的用户定义类型的数据作为基本表示的抽象②
每一类型都关联一组操作③内部类型隐蔽了基本表示,不能对它的成分进行操作;而用户定
义类型具有更高级别的抽象,可以对其成分进行操作。
16抽象数据类型:信息隐蔽;封装;继承①在定义该类型的程序单元中,建立与表示有关的基
本操作;②对使用该类型的程序单元而言,该类型的表示是隐蔽的。
17类型检查:对数据的类型和使用的操作是否匹配的一致性检查
18类型转换:隐式转换发生在下述的情况下:混合运算:级别低的类型向级别高的类型值
转换。将表达式的值赋给变量:表达式的值向变量类型的值转换。实参向函数形参传值:实
参的值向形参的值进行转换。函数返回值:返回值向函数返回类型的值进行转换。