2012年软考系统分析师经典教程:解释程序

来源:微学网发布时间:2012-07-19

 

  2.3 解释程序:

  所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。

  对源程序边解释翻译成机器代码边执行的高级语言程序。由于它的方便性和交互性较好,早期一些高级语言采用这种方式,如BASIC、dBASE。但它的弱点是运行效率低,程序的运行依赖于开发环境,不能直接在操作系统下运行。

  解释程序是一种语言处理程序,它直接执行源程序或源程序的内部形式。它并不产生目标程序,这是它和编译程序的主要区别。

  高级语言实现语言处理有4种方案:

  ◆ 源程序被直接解释执行。

  ◆ 先将源程序翻译成高级中间代码,然后再扫描和解释执行高级中间代码。

  ◆ 先将源程序转化成和机器代码十分接近的低级中间代码,再解释执行这种中间代码。

  ◆ 源程序被最终翻译成机器语言表示的目标程序。这类系统的目标程序执行效率最高。

  翻译系统与解释系统比较:

  ◆ 翻译系统在执行速度上都优于建立在解释执行基础上的系统;

  ◆ 翻译系统的缺点是其复杂性高,这使得它的开发和维护费用都大;

  ◆ 解释系统比较简单,可移植性较好,适合于以交互方式执行程序;

  ◆ 解释系统缺点是执行速度慢;

  纯粹的解释和纯粹的编译都是极端,因此一般是两种技术的结合,先将源程序编译形成中间代码,然后由解释器解释执行。

  解释系统的结构可分成两个部分。

  1.包括通常的词法分析程序以及语法和语义分析程序,它的作用仍是把源程序翻译成中间代码,中间代码的设计常采用逆波兰(后缀)表示形式(符号在后面)。

  2.解释部分,用来对第一部分所产生的中间代码进行解释执行,完成真正的解释。

  工作过程

  解释程序由一个总控程序和若干个执行子程序组成。解释程序的工作过程如下:首先,由总控程序执行初始准备工作,置工作初态;然后,从源程序中取一个语句S,并进行语法检查。如果语法有错,则输出错误信息;否则,根据所确定的语句类型转去执行相应的执行子程序。返回后检查解释工作是否完成,如果未完成,则继续解释下一语句;否则,进行必要的善后处理工作。

  适用范围

  解释程序的突出优点是可简单地实现,且易于在解释执行过程中灵活、方便地插入修改和调试措施,但最大缺点是执行效率很低。例如,需要多次重复执行的语句,采用编译程序时只需要翻译一次;但在解释程序中却需要重复翻译,重复执行。根据这些特点,解释程序适用于如下场合:

  ①有些语言中的大多数语句,如字符串加工语言中的字符串查找语句和加工语句,其执行时间比翻译时间长得多。对于这种语言,采用生成性方案,效果甚微,而采用解释性方案则易于实现。

  ②为了便于用户调试和修改程序,又能保证程序高效运行,很多程序设计语言配置两个加工系统,一个用于调试,一个用于有效地运行。调试用的系统一般用解释程序实现,以便及时监视运行情况、动态地输出调试信息和灵活地修改错误。

  ③交互式会话语言(如BASIC,APL),要为用户提供并行、交错编写、执行、调试和修改源程序的功能。采用解释程序易于实现这些功能。

  随着超大规模集成电路的迅速发展,不少人提出用微程序设计方法实现高级程序设计语言解释程序的想法,随之出现了如 “FORTRAN机”之类的高级语言机器的概念。