# Compilers Principles
# reading notes
# 2016.02.03
# victor
1 引论
1.1 编译流程
begin: 源程序
# front end: 与源代码有关
A.字符流-->[词法分析]-->
B.符号流-->[语法分析]-->
C.语法树-->[语义分析]-->
D.语法树-->[中间代码生成]-->
# middle end
E.中间表示形式-->[机器无关代码优化]-->
F.中间表示形式-->[代码生成]-->
# back end: 与目标机有关
G.目标机器语言-->[机器相关代码优化]-->
end: 目标机器语言
1.1.1 词法分析
词法分析器读入字符流,将它们组织成有意义的词素,每个词素,用词法单元(token)作为输出.
词法单元:<token_name,attribute_value>.token_name是一个在语法分析阶段使用的抽象符号,第二个分量指向符号表中关于这个词法单元的条目.
input example: position = initial + rate * 60;
analysis:
position : <id,1> id表示标识符,1表示指向的条目;
= : <=> 赋值运算符,属性值省略;
initial : <id,2>;
+ : <+>;
rate : <id,3>;
* : <*>;
60 : <60>;
1.1.2 语法分析