执行规则成为一个程序
解释器本身也是程序,它规定表达式怎样得到值、变量去哪里查找、条件怎样选择分支。输入可以来自用户刚键入的命令,也可以来自文件或已有中间表示。把执行规则写成可运行的软件,使一门语言能够在宿主系统上工作,而不要求硬件直接认识全部语言结构。
值与名字怎样对应
一个名字的拼写不能独自决定它的值。求值器还需保存环境,记录当前可见的名字绑定;调用函数时建立参数与实际输入的联系,再执行函数体。SICP的求值器把求值与应用过程相互配合,用少数规则说明复杂程序为何能够由较小表达式组合而成。
参考:[1]
交互执行与批量脚本
交互环境读取一段输入、执行并给出结果,便于试验表达式和检查状态。Python也能执行脚本文件或通过命令行接收代码;交互方式只是解释器的一种入口,并非解释器的定义。文件执行仍会遵守语言的控制流程,不是简单地把每个物理行当作互不相关的命令。
参考:[2]
解释和编译可以配合
解释器与编译器不必分属互斥阵营。实现可以先把源程序变成更便于执行的表示,再由求值器处理;是否另有机器码生成,要看具体系统。比较语言速度时,应说明实现、程序与执行阶段,不能仅凭“解释型”三个字断定所有运行工作都在反复读取原始文本。