第一章
1.1绪论
编译:将高级语言(源语言)翻译成汇编语言或机器语言(目标语言)的过程。
1.2编译系统的结构
词法分析 :确定词性词类
语法分析 :识别短语,划分句子成分,获取结构
语义分析 :根据结构,分析短语,词与词之间的关系,给出中间表示形式。
代码生成优化
1.3词法分析概述
词法分析的主要目标:从左向右识别各个单词,确定单词的类型。将识别出的单词转换成统一的机内表示(词法单元形式)。
token:
1.4语法分析概述
语法分析的主要任务:语法分析器(parser)从词法分析器输出的token序列中识别出各类短语,并构造语法分析树(parse tree)。
文法:
声明语句 ==
类型 == int|real|char|bool
标识符序列 == id|,id
语句的分析树
1.5语义分析概述
语义分析的主要任务:
- 收集标识符的属性信息
- 种属
- 类型
- 存储位置与长度、值、作用域
- 参数与返回信息)
- 语义检查
- 变量或过程未经声明就使用
- 变量或过程重复声明
- 运算分量类型不匹配
- 操作符与操作数之间类型不匹配
符号表:用来存放标识符的属性信息的数据结构。
设计字符串表的原因:可能存在字符串相同但种属与类型等参数不同的情况,使用字符串表更好。)
1.6中间代码生成和编译器后端
- 常用的中间表示方式:
- 三地址码:由类似于汇编语言的指令序列组成,每个指令最多有三个操作数)(表示方法:四元式,三元式,间接三元式)
- 语法结构树/语法树(Syntax tree)
- 目标代码生成的主要任务:以程序的中间表示形式为输入,并把它映射到目标语言。为程序中的变量分配寄存器
- 代码优化:为改进代码所进行的等价程序变换,使运行效率加快,占用空间减少。
- 机器无关优化(对象:中间代码)
- 机器相关优化(对象:机器代码)