编译器的结构(The Structure of a Compiler)
源程序的分析阶段分为:线性分析,层次分析,语义分析。
1、词法分析(Lexical Analysis)
2、语法分析(Syntax Analysis)
把源程序的记号分组,产生被编译器用于生成代码的语法短语。
词法结构不要求递归,语法结构需要递归。
3、语义分析(Semantic Analysis)
语义分析阶段检查源程序的语义错误,并收集代码产生阶段时用到的类型信息。语义分析通过语法分析的层次结构来区分表达式和语句中的操作符和操作数。
4、中间码的产生(Intermediate Code Generation)
源程序的中间代码:易于产生;易于翻译成目标程序。
5、代码生成(Code Generation)
编译器为源程序定义盒使用的变量选择存储单元,并把中间指令翻译完成相同任务的机器代码指令序列。
6、符号表的管理(Symbol-Table Management)
符号表时一个数据结构。每个标识符在符号表中都有一条记录,记录每个域对对应于该标识符的一个属性。这种数据结构允许我们快速地找到每个标识符的记录,并在该记录中快速地存储盒检索信息。