一、编译原理(引论)
目录
【一】、引论
一、编译器
1、编译器
2、编译器与解释器
3、编译器结构
【一】、引论
一、编译器
1、编译器
(1)编译器:将人类易懂的
高级语言
翻译成
硬件可执行的目标机器语言
(2)
高级语言
⚫
直接面向开发者
⚫
与数学公式类似
⚫
编程效率高
(3)机器语言
⚫
驱动硬件完成具体任务
⚫
编程效率低
2、编译器与解释器
(1)编译器 (compiler)
⚫
读入以某种语言编写的
源程序
⚫
输出等价的用另一种语言编写的
目标程序
⚫
通常目标程序是
可执行
的
⚫
如C语言编译器GCC
(2)
解释器 (interpreter)
⚫
直接利用用户提供的输入,执行源程序中指定的操作
⚫
逐行转译运行,不需要生成和执行目标程序
⚫如Python解释器
3、编译器结构
编译器=分析部分(前端部分是
机器无关)
+综合部分 (后端部分是
机器相关)
(1)
分析 (analysis) 部分(前端)
⚫
把源程序分解成组成要素,以及相应的语法结构
⚫
使用这个结构创建源程序的中间表示
⚫
同时收集和源程序相关的信息,存放到符号表
(2)
综合 (synthesis) 部分(后端)
⚫
根据中间表示和符号表信息构造目标程序
二、编译程序和解释程序
1、编译程序
把高级语言设计的源程序(面向人的)翻译成等价的低级程序设计语言(面向硬件的)、即机器语言或汇编语言。
2、源程序的两种执行方式
(1)翻译:使用翻译程序,将源程序翻译成为低级语言目标程序,然后执行目标程序。
(2)解释:使用解释程序,对源程序逐个语句边解释边执行。
3、编译程序和解释程序的主要区别
是否生成目标程序,运行时的存储分配。
三、编译过程
1、编译过程的概述
词法分析-> 语法分析 -> 语义分析+中间代码生成 -> 中间代码优化 -> 目标代码生成 -> 目标代码