Next: 1.2 コンパイラの呼び方
Up: 1 Schemeのコンパイラ
Previous: 1 Schemeのコンパイラ
コンパイラの処理の中での式の場合分けは,
インタプリタに似てきます.
(defun comp (x env)
(cond
((symbolp x) (gen-var x env))
((atom x) (gen 'CONST x))
((member (car x) '(quote begin set! if lambda))
(comp-specialform (car x) (cdr x) env))
((scheme-macro (car x))
(comp (scheme-macro-expand x) env))
(t
(comp-call (car x) (cdr x) env))))
interpreterと同様に場合にわけて,それぞれをコンパイルする
ことを考えます.
コード生成は,命令コードとその命令への引数とをまとめてリストにし
たもののリストで表現することにします.
(defun gen (opcode &rest args)
(list (cons opcode args)))
generated through LaTeX2HTML. M.Inaba 平成18年5月6日