提纲
引论
预处理
- 将源程序聚合在一起有时会由预处理器完成
- 把宏的缩写形式转换为源语言的语句
词法分析
编译器的第一个步骤
词法分析器读入组成源程序的字符流,并将他们组织成有意义的词素[1]的序列
例如:在 position = initial + rate * 60 中
1. postion 是一个词素,被映射成词法单元 < id, 1 >
2. = 是一个词素,被映射成词法单元 < = >
3. initeial 是一个词素,被映射成词法单元 < id, 2 >
4. .....
语法分析
使用由词法分析器生成的各个词法单元的第一个分量来创建树形的中间表示
该中间表示给出了词法分析产生的词法单元流的语法结构
语义分析
- 使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致
- 收集类型信息,并把这些信息存放在语法树或符号表中
词法分析
对于每个词素,词法分析器产生如下形式的词法单元作为输出
<token-name, attribute-value>↩︎