一、语言处理器
语言处理器有编译器(compiler)、解释器(interpreter)
编译器先把源程序翻译成目标程序,目标程序处理输入产生输出。
解释器自身直接(根据源程序提示)处理输入产生输出。
编译器的处理速度较快,但排错功能不如解释器。
编译器:
解释器:
将源程序翻译成目标程序的过程:
二、编译器的结构
编译器由分析(analysis)部分,和综合(synthesis)部分组成。分析部分又称为编译器的前端,综合部分又称为编译器的后端。在前端和后端之间可以加入代码优化部分。
分析部分
1.词法分析(lexical analysis): 这一阶段的任务是分析出输入的代码流中的词素(lexeme), 对于每个词素,词法分析器都会产生一个词法单元(token)。词法单元的格式为<token-name, attribute-value>。
2.语法分析(syntax analysis)
3.语义分析(semantic analysis):这个阶段有一项重要的任务是类型检查(type checking)。
4.中间代码生成(intermediate code generation)
可选阶段
5.代码优化(code optimization):优化的目的是使代码跑的跟快或者更节能。
综合部分
6.代码生成(code generation):这一阶段的输出即为目标代码。