解释器,解释程序,解释过程。
解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的中间表示形式。因此解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。下图显示了解释程序实现高级语言的三种方式。
解释程序也可以先将源程序翻译成某种中间代码形式,然后对中间代码进行解释来实现用户程序的运行,这种翻译方式如上图的B和C所示。解释方式B和C的不同之处在于中间代码的级别,在方式C下,解释程序采用的中间代码更接近于机器语言。
解释程序的基本结构
解释程序通常可以分为两部分:第一部分是分析部分,包括通常的词法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,中间代码常采用逆波兰表达式(后缀式)(其实计算器的逻辑实现可以用后缀式很方便的实现),第二部分是解释部分,用来对第一部分产生的中间代码进行解释执行。
高级语言编译与解释方式的比较
- 效率:编译比解释方式可能取得更高的效率。
- 灵活性:由于解释方式需要反复检查源程序,这也使得解释方式能够比编译方式更加灵活。
- 可移植性:解释器一般也是用某种程序设计语言编写的,因此只需要对解释器进行重新编译,就可以使解释器运行于不同的环境。
由于编译和解释的方式各有特点,因此现有的一些编译系统既提供编译的方式,也提供解的方式,甚至两种方式进行结合。列入java虚拟机上发展的一种compiling-just-in-time新技术,就是在代码第一次运行时进行编译,其后运行时就不再进行编译啦。
总结
到这里,终于把程序设计语言的一些基础知识整理了一下,了解了什么是低级语言,高级语言,什么是汇编程序,编译程序,解释程序,虽然对具体的原理还没有深究,但是大概脉络掌握清楚了。