SICP 読み (361) 5.5 翻訳系

問題残り 4 つ。テキストのラストのページに到着。なんと申し上げれば良いか分かりませんがコユいです。

問題 5.49

む。これは入力した式を全部 compile せい、とゆー事なのかなぁ。こんな感じで

read-eval-print-loop
  (perform (op initialize-stack))
  (perform
   (op prompt-for-input) (const ";;; EC-Eval input:"))
  (assign exp (op read))
  (assign env (op get-global-environment))
  (assign continue (label print-result))

  (assign val (op compile->assemble) (reg exp))
  (goto (reg val))

print-result
;;**following instruction optional -- if use it, need monitored stack
  (perform (op print-stack-statistics))
  (perform
   (op announce-output) (const ";;; EC-Eval value:"))
  (perform (op user-print) (reg val))
  (goto (label read-eval-print-loop))

これだけで動くとは思えませんがなんか面白そう。

compile->assemble を以下にしたら何となく動いてる感じ。何だこれは (絶句

(define (compile->assemble exp)
;  (assemble (statements (compile (cadr (cadr exp)) 'val 'return)) eceval))
  (assemble (statements (compile exp 'val 'return)) eceval))

ちょっと頭をヒヤす時間が必要かも。まともに動いてるハズなのにワケワカんねい。