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))
ちょっと頭をヒヤす時間が必要かも。まともに動いてるハズなのにワケワカんねい。