编译原理:引论
编译/翻译/解释
翻译程序:把某一种语言程序等价地转换成另一种语言程序的程序
编译程序:一种翻译程序。将高级语言翻译为低级语言
- 诊断编译程序
- 优化编译程序
- 交叉编译程序
- 可变目标编译程序
解释程序:把源语言写的源程序作为输入,不产生目标程序,而是边解释边执行。
编译过程
-
词法分析:识别单词
原则:构词规则(词法规则)
描述工具:有限自动机
-
语法分析:分析语法结构
原则:语法规则
描述工具:上下文无关文法
-
中间代码产生:对句子的含义初步翻译
原则:语义规则
描述工具:属性文法
中间代码:三元式、四元式、树…
-
优化:修饰,产生更高效的目标代码
原则:程序的等价变换规则
-
目标代码生成:得到结果
原则:依赖硬件系统结构和机器指令的含义
三种形式:汇编语言、绝对指令、可重定位指令代码(需要链接)
编译程序的结构
- 词法分析器 → 单词符号
- 语法分析器 → 语法单位
- 语义分析与中间代码生成器 → 中间代码
- 优化段 → 中间代码
- 目标代码生成器 → 目标程序
- 符号表管理
- 出错处理
出错处理
发现错误、报告给用户
- 语法错误:不符合语法/词法规则的错误
- 语义错误:不符合语义规则的错误
前端与后端
前端:与源代码相关,如词法分析、语法分析、语义分析、中间代码生成以及与机器无关的优化
后端:与目标机器有关,与机器有关的优化,目标代码的生成
编译程序的生成
- 使用汇编/机器语言为工具
- 使用高级语言作为工具

移植
把一种机器上的编译程序移植到另一种机器