http://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html
解释器和编译器也是如此,读入源语言后,解释器和编译器都要进行词法分析、语法分析和语义分析,之后,二者开始有所分别。解释器在语义分析后选择了直接执行语句;编译器在语义分析后选择将将语义存储成某一种中间语言,之后通过不同的后端翻译成不同的机器语言(可执行程序)。如下图所示:
![](https://images.cnblogs.com/cnblogs_com/sword03/%E8%A7%A3%E9%87%8A%E5%99%A8%E4%B8%8E%E7%BC%96%E8%AF%91%E5%99%A8%E7%9A%84%E5%8C%BA%E5%88%AB.jpg)
总之,解析器和编译器它们在功能上是不一样的,然而从结构上看却有诸多相同,而且在开发时也并没有本质上的差别,这也是很多人将二者混淆的原因之一。究竟是开发解析器还是编译器?只需要依据功能上的实际需要来做出决定就ok了。