编译原理资料.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

1、变量及其属性

变量是对一个(或若干个)存储单元的抽象,赋值语句则是修改存储单元内容的抽象。

变量除名字外,具有四个属性:作用域、生存期、值和类型

1.变量的作用域:变量的作用域是指可以访问该变量的程序范围。

①静态作用域绑定:按照程序的语法结构定义变量的作用域。

②动态作用域绑定:按照程序的执行动态地定义变量的作用域。

2.变量的生存期:一个存储区绑定于一个变量的时间区间,称为变量的生存期。

数据对象:存储区和它保存的值

分配:变量获得存储区的活动

长度:变量所分配的存储单元的个数

3.变量的值——存储区单元的内容

匿名变量的访问通过指针实现

变量与它的值的绑定是动态的

符号常数的值不能修改

变量的初始化不初始化则出错;随机;缺省值0。

4.变量的类型

①类型:变量的类型可以看成与变量相关联的值的类,以及对这些值进行的操作的说明。类型可用来解释变量绑定的存储区的内容(二进制位串)的意义;语言定义时,类型名通常绑定于某一个值类和某一组操作;语言实现时,值和操作绑定于某种机器二进制表示。

②静态绑定:通过说明语句完成如:Pascal、Fortran

③动态绑定:执行时隐式说明,且动态变化

如:APL

A?5整型

?A标号、转到A

A?12510一维数组

(A?0)

A[2:3]?0二维数组

A?B+C

2、虚拟机的概念:虚拟机是由软件实现的机器

3、程序单元及单元实例

1.程序单元:程序执行过程中的独立调用单元。如子程序,分程序,过程等。

2.单元表示

编译时,一个单元的源程序。

运行时,单元表示由一个代码段和一个活动记录组成,称为单元实例。

3.活动记录:执行单元所需要的信息,以及该单元的局部变量所绑定的数据对象的存储区。

4.非局部变量:一个程序单元可以引用未被本单元说明而被其它单元说明的变量。

5.引用环境:局部变量+非局部变量。

6.别名:同一单元的引用环境中有两个变量绑定于同一数据对象,称这些变量具有别名。

7.副作用的产生:对绑定于一个非局部变量的对象进行修改。

8.程序单元可以递归激活,从而一个单元可以有很多个实例,但代码段相同。不同的仅仅是活动记录。

9.静态分配和动态分配FortranPascal或C

4、数据类型的作用

实现了数据抽象

使程序员从机器的具体特征中解脱出来

提高了编程效率

5、数据聚合的几种方式(6种)

1.笛卡尔积

N个集合A1,A2,…,An的笛卡尔积表示为A1′A2′…′An,它是一个集合,其元素为(a1,a2,…,an),ai?

任意正多边形可表示为integer′real

2.有限映像

①定义:从定义域类型DT的值的有限集合,到值域类型RT的值的有限集合的函数称为有限映像。

vara:array[1..50]ofchar;

表示:整数1至50到字符集的有限映像

②值域对象通过下标选取。

③下标越界会出错,动态检查

④下标可用来选取值域的多个元素

⑤SNOBOL4的ARRAY构造符并不要求值域集的所有元素是同一类型的

⑥DT到相应值的特定子集的绑定策略:

编译时绑定(静态数组)

对象建立时绑定(执行到分程序时,动态数组)

对象处理时绑定(对APL,子集范围可变)

3.序列

①序列由任意多个数据项组成,这些数据项称为该序列的成分,且类型相同

②串是序列

③顺序文件的思想也是来自序列的概念,只能顺序读写

4.递归

若数据类型T包含属于同一类型T的成分,那么类型T称为递归类型。

①允许在类型定义中使用被定义类型的名字

②指针是建立递归数据对象的重要手段

5.判定或

判定或是一个选择对象结构的构造机制,规定在两个不同选择对象之间作出适当的选择。每一选择对象结构称为变体。例如:PASCAL的变体记录;C的联合。

6.幂集

类型T的元素所有子集的集合,称为幂集,记为Powerset(T),T称为基类型。

应用:每次的操作对象仅仅是某个集合的子集。

6、类型检查及其分类

1.类型检查:对数据对象的类型和使用的操作是否匹配的一致性检查称为类型检查

2.静态检查和动态检查

①静态检查使程序更正确更有效

②动态检查使编程方便,但影响了可读性,且降低了执行效率

3.强类型语言

若一

文档评论(0)

cui华 + 关注
实名认证
内容提供者

好文档 大家想

1亿VIP精品文档

相关文档