编译原理-程序设计语言的设计

机器语言:二进制、机器相关
汇编语言:助记符、机器相关(机器语言与汇编语言都是低级语言)
高级语言:接近自然语言、机器无关
 

把一种语言程序编写的转换成完全等效的另一种语言编写的程序为翻译

编译程序: 源程序语言是高级语言,目标程序语言是汇编语言或机器语言之类的低级语言,这样的翻译程序称为编译程序

翻译汇编语言的程序称为汇编程序

翻译高级语言的程序称为编译程序。所以编译程序是一种翻译程序。

编译程序与解释程序:

(1)编译程序会产生目标程序;而解释程序不产生目标程序; (2)编译程序实现起来比较复杂;而解释程序本身实现起来比较简单; (3)编译程序效率比较高;而解释程序运行效率比较低,需对语法、词法、语义等进行检测;可移植性高。

变量 存储单元及它的名称由变量的概念来代替;
     可以代表一个或一组单元,可以修改。

编译程序结构

词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成

其中(中间代码生成和代码优化不是每个编译程序必须的)

​​​​​​​

绑定

绑定:一个实体(或对象)与其某种属性建立起某种联系的 过程,称为绑定。
静态绑定:凡是在编译时能确定的属性,称为静态属性;
      若绑定在编译时完成,运行时不改变,称为静态绑定。
动态绑定:凡是在运行时才能确定的属性称为动态的。
          若绑定在运行时完成,称为动态绑定。
 

变量及其属性

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

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

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

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

变量的生存期:

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

变量的值:即变量对应存储区单元的内容,变量与它的值的绑定是动态的

    变量的初始化,几种处理方法:
        不初始化则出错
        随机
        缺省值0

变量的类型

类型的定义:    变量的类型是与变量相关联的值的类,以及对这些值进行的操作的说明。

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

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

         
虚拟机

虚拟机是由软件实现的机器。

翻译汇编语言的程序称为汇编程序(器)

翻译高级语言的程序称为编译程序(器)

机器语言就是二进制。汇编语言类似三元式

高级语言:

直观、自然、易于理解

易读、易写、易于交流、出版和存档

一般都是独立于机器的,易于移植

程序单元

程序单元:程序执行过程中的独立调用单元; 如子程序、分程序、过程等。

在编译时,单元表示是该单元的源程序。

运行时,单元表示由一个代码段和一个活动记录组成,称为单元实例
活动记录:执行单元所需要的信息,以及该单元的局部变量所绑定的数据对象的存储区。

引用环境:局部变量+非局部变量

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

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

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

数据类型  

数据类型实质上是对存储器中所存储的数据进行抽象。 它包含一组值的集合和一组对这组值的操作的集合


数据类型的作用

实现了数据抽象
使程序员从机器的具体特征中解脱出来
提高了编程效率

数据类型的分类

内部类型:语言定义的
自定义类型:用户定义的

内部类型的优越性

内部类型是对硬件基本位串的抽象。

1.基本表示的不可见性:基本位串对程序员是不可见的。
优点(程序员): 导致不同的程序设计风格、可写性、可读性、可修改性

2.编译时能检查变

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐果然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值