2.2.3 解释程序基本原理

2025-06-07 21:46:58 更新

解释程序在词法、语法和语义分析方面与编译程序工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的中间表示。

与编译程序的主要区别:解释程序不产生源程序的目标程序。

解释程序对源程序进行逐个字符检查,进行词法、语法分析和语义分析后,就执行程序语句规定的动作。

解释程序也可以先将源程序翻译成某种中间代码形式,然后对中间代码进行解释来实现用户程序的运行。

(一)解释程序基本结构

解释程序通常可以分成两部分

分析部分,包括通常的词法分析、语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,中间代码常采用逆波兰表示形式;

解释部分,对第一部分产生的中间代码进行解释执行。

(二)编译与解释方式比较

对于高级语言的编译和解释工作方式,可以从以下几方面进行比较:


对比

解释

编译

1

效率

解释程序可能需要反复扫描源程序,如进行变量类型检查;为解释程序及其支撑系统分配更多内存;

编译更耗时,占用存储空间更多,但源程序只需要被编译程序翻译一次,就可以多次运行。运行效率更高

2

灵活性

支持“边修改边运行”,比编译方式更灵活。运行时,可以对错误进行更精确定位


3

可移植性

解释器一般也使用某种程序设计语言编写,只要重新编译解释器,就能支持不同环境


特殊:有些编译系统同时提供编译和解释方式,如Java虚拟机Just-in-time complication(代码首次运行时编译)。