next up previous
Next: 3.1 大域変数のコンパイル Up: ソフトウェア特論 講義資料 Scheme コンパイラ処理系 Previous: 2 仮想計算機

3 変数のコンパイル

変数をコンパイルするというのは,その変数の値をスタックに 積むというコードを生成するということになります. 変数の評価がなされる局所的な環境にすでにそのシンボルがバインドされ ていればその値を返し,バインドされていなければ大域変数としての値を返 すというコードになります. ここでは,gen-varがそれを行います.

(defun gen-var (symbol env)
  (let ((frame (find symbol env
                     :test #'find)))
    (if frame ;; local variable
        (gen 'LVAR
             (position frame env)
             (position symbol frame)
             ";" symbol)
      (gen 'GVAR symbol))))




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