【答案解析】编译程序的功能是把某些高级语言编写的源程序翻译成与之等价的目标语言程序
解释程序与编译程序的主要区别是它不产生源程序的目标程序
这是一道要求读者掌握编译程序、解释程序基本功能的常识题。本题所涉及的知识点如下:
①编译程序的功能是把某些高级语言编写的源程序翻译成与之等价的目标语言程序。通常将编译程序的工作过程分为六个阶段,如表6-28所示。每个阶段的操作在逻辑上是紧密相连的,将源程序从一种表示形式一步步转换成目标代码。
{{B}}表6-28 编译器六个工作阶段功能{{/B}}
| 名称 |
主要任务 |
备注 |
| 词法分析阶段 |
对源程序从前到后、从左到右逐个字符进行扫描,从中识别出一个“单词”符号 |
这两个阶段的本质都是对源程序的结构进行分析 |
| 语法分析阶段 |
根据语言的语法规则将单词符号序列分解成各类语法单位,构造出相应的语法树 |
|
| 语义分析阶段 |
对源程序进行类型分析,检查是否存在语义错误,并收集类型信息供代码生成阶段使用 |
这两个阶段的依据是语言的语义规则 |
| 中间代码生成阶段 |
根据语义分析的输出生成与具体机器无关的中间代码 |
|
| 代码优化阶段 |
优化中间代码在时间和空间上的浪费问题 |
依据是程序的等价变换规则 |
| 目标代码生成阶段 |
把中间代码变换成特定机器上的绝对指令码、可重定位的指令代码或汇编指令代码 |
此阶段的工作与与具体的机器相关 |
| 符号表管理 |
记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成 |
|
| 出错处理 |
处理源程序中的静态错误和动态错误 |
|
②解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式。
解释程序与编译程序的主要区别在于它不产生源程序的目标程序。
③解释程序通常可以分为两部分:第一部分是分析部分,包括通常的词法分析、语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,中间代码常采用逆波兰表示形式;第二部分是解释部分,用来对第一部分所生产的中间代码进行解释执行。