Scheme解释器的装配、实例与源码输出[#54]
Scheme解释器的片段来自当前模块与(flora metacircular-runtime)。完整定义进入同一个LP计划,文章的阅读排列不控制实例化:
@(define interpreter
(make-program "mce-module" "Scheme 解释器的装配计划"
(list primitives-fragment environment-fragment application-fragment evaluator-fragment entry-fragment)
'(run)))
@(define interpreter-instance (instantiate-program interpreter))
@(define run-scheme (instance-binding interpreter-instance 'run))module. Scheme 解释器的装配计划[mce-module]
Module tree显示公开入口run和片段链接。make-program只声明计划;instantiate-program执行定义,instance-binding取得运行入口。Assembled in指向计划,不能据此判断一个实例已经运行。
evaluate与apply-value相互调用;函数体在全部定义建立后才由入口执行。初始化表达式仍依赖声明顺序,不能把阅读顺序自由误解为任意交换初始化。计划不继承片段声明处的词法binding,也不自动导入该文章用过的模块。
Download metacircular.scm
源码产物为build/programs/metacircular.scm,保留注释和片段来源。它与站点内实例来自同一计划,不是独立维护的解释器副本。Scheme的同源输出与自解释比较这份计划的三种执行方式;通用写法见累计器教程。