next up previous
Next: 10.1 変数・関数定義 Up: ソフトウェア特論 講義資料 Scheme コンパイラ処理系 Previous: 9.2 コード・インタプリタ

10 リード,コンパイル,実行ループの実装

次に,プログラムを読み込んで,コンパイルして,実行するという 一連の処理を実現することを考えます.

(defun scheme ()
  (init-scheme-compiler)
  (catch
      :scheme-exit
    (scheme-machine
     (scheme-compile
      '(begin
        (define (scheme)
            (newline)
          (display "=> ")
          (write ((compile (read))))
          (scheme))
        (scheme))))
    ))

(defun scheme-exit (v)
  (throw :scheme-exit v))
というように,プロンプト表示,読み込み(read), コンパイル(compile)し,コンパイルしたものを 評価し((compile)),結果を表示(write)するした 後schemeを再帰的に呼び出すことを行うコードを 定義し,それを呼び出すというbegin文を コンパイルしてできる関数データを, scheme-machineに与えることでそれを実行する形にします. 以下に,この(scheme)関数で利用できる Schemeの実行例をみてゆきます.



generated through LaTeX2HTML. M.Inaba 平成18年5月6日