【编译原理自学笔记 1】编译器的构成及其在语言处理系统中的地位概述

计算机程序设计及编译

我们首先来看一下什么是编译,以及编译器都要做什么。
在此之前,我们先了解一下编译器所面对三类语言——高级语言、汇编语言、机器语言
其三者的关系如下图

编译
编译
汇编
类自然语言
引入助记符
高级语言
汇编语言
机器语言

其中,机器语言的特点是可以被计算机直接理解,但对于人来说难写难记。因此,人们为了方便书写,引入了助记符,进而诞生了汇编语言。

汇编语言, 即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

相对于汇编语言,高级语言则是更加接近人类的表达方式的类自然语言,利用这种语言,人们可以更加便捷的编写逻辑关系更加复杂的程序。

从上图中不难得出编译的定义:

将高级语言翻译成汇编语言或机器语言的过程

编译器在语言处理系统中的位置

源程序
预处理器
经过处理的源程序
编译器
汇编语言源程序
汇编器
可重定位的机器代码
连接器/加载器
目标机器代码

为了理解编译器工作的过程,我们引入如下的翻译流程图:

源语言
分析源语言
语义
生成目标语言
目标语言

其中,在分析源语言的过程中,我们通常遵循如下的流程:

待分析的源语言
词法分析
语法分析
语义分析
语义

这里的源语言通常为高级语言(如C语言),而目标语言句子通常为汇编语言或机器语言等较为低级的语言 。

从图中不难看出,语义是独立于源语言和目标语言的一种中间表示,是独立于具体语言的。

编译器的结构

综合上述内容,我们可以知道,编译器接受源语言输入,生成中间表示,最后输出目标语言。
我们把编译器将源语言转换为中间表示的过程称为编译器的前端,把编译器将中间表示转换为目标语言的过程称为编译器的后端

其中前端源语言相关,中间表示独立于具体语言、后端目标语言相关。

前端
后端
源语言
中间表示
目标语言

小结

不难发现,编译的过程其实就是将高级语言翻译为低级语言的过程,而编译器所遵循的翻译方法被称为语法制导翻译

语法制导翻译:指一种源语言代码的翻译完全由语法分析器驱动的编译器的实现方法

EOF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值