next up previous
Next: 5.1 beginのコード生成 Up: ソフトウェア特論 講義資料 Scheme コンパイラ処理系 Previous: 4 定数のコンパイル

5 スペシャルフォームのコンパイル

コンパイルにおいても,スペシャルフォームに対しては 個別の取り扱いが必要になります.

(defun comp-specialform (name params env)
  (case name
    (quote  (gen 'CONST (car params)))
    (begin  (comp-begin params env))
    (set! 
     (seq (comp (cadr params) env)
          (gen-set (car params) env)))
    (if
        (comp-if (car params)
                 (cadr params)
                 (caddr params) env))
    (lambda
        (gen 'FN
         (comp-lambda (car params)
                      (cdr params)
                      env)))))
quoteは引数を評価せずに返すというものであり, 引数を定数とみなすコードを生成します.



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