解释程序

语言处理程序的一种

解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。

工作原理
解释程序由一个总控程序和若干个执行子程序组成。解释程序的工作过程如下:首先,由总控程序执行初始准备工作,置工作初态;然后,从源程序中取一个语句S,并进行语法检查。如果语法有错,则输出错误信息;否则,根据所确定的语句类型转去执行相应的执行子程序。返回后检查解释工作是否完成,如果未完成,则继续解释下一语句;否则,进行必要的善后处理工作。
组成模块
解释程序的一般结构可以分为解释模块和运行模块两个主要模块。前者的职能是按源程序动态执行顺序逐个输入语句,并对单个语句进行分析和解释,包括语法和语义的正确性检验、生成等价的中间代码或机器语言代码,以及错误信息提供等处理。后者的职能是运行语句的翻译代码,并输出中间结果或最终结果。由于解释程序的设计思想不同,运行模块的执行方式也不同。一种方法是解释模块直接生成源程序语句等价的机器语言代码;通常一个语句生成多条机器指令代码段。运行模块负责控制这段代码的执行并处理中间结果(保存或输出)。另一种方法是,解释模块生成语句等价的中间代码(但不是机器语言代码),如程序调用及其参数形式。运行模块负责选择相应功能部分并控制中间代码的执行,并处理相关运行结果。