SICP 読み (287) 5.4 積極制御評価器
早起きしてデバッガを試してみたら動かない。これはこれで原因を調べないと駄目だな。
問題 5.24 の続き
exp を push していないのが原因だった模様。ev-cond-なんたらを以下に。
ev-cond
(assign exp (op cond-clauses) (reg exp))
ev-cond-loop
(test (op null?) (reg exp))
(branch (label ev-cond-false))
(assign unev (op cdr) (reg exp))
(assign exp (op car) (reg exp))
(test (op cond-else-clause?) (reg exp))
(branch (label ev-cond-consequent))
(save exp)
(save unev)
(save env)
(save continue)
(assign continue (label ev-cond-decide))
(assign exp (op cond-predicate) (reg exp))
(goto (label eval-dispatch))
ev-cond-decide
(restore continue)
(restore env)
(restore unev)
(restore exp)
(test (op true?) (reg val))
(branch (label ev-cond-consequent))
(assign exp (reg unev))
(goto (label ev-cond-loop))
ev-cond-consequent
(save continue)
(assign unev (op cond-actions) (reg exp))
(goto (label ev-sequence))
ev-cond-false
(assign val (const false))
(goto (reg continue))ev-cond-false も動作確認は未実施。一応の動作確認はできてますが ...
# 別途確認入れ次第、追記を予定しとります。