源程序——>机器代码
分析(前端):分成小部分,找出小部分属性,包括:词法分析、语法分析、语义分析、中间代码生成
合成(后端),包括:中间代码优化、目标代码生成、目标代码优化
1、词法分析:识别、删除单词符号、词法检查
输入:源代码,输出:二元式<单词类别,单词属性>
2、语法分析
输出:抽象语法树(AST),从下向上看
3、语义分析
有限,大部分都是类型(运算)检查
4、中间代码生成
eg:x=a+b —> t1=a+b x=t1
为什么分为两个指令?因为是两个操作:加法和赋值
5、符号表
1)包括:名字(key)域和属性(value)域
2)实现:线性表、Hash表