lisp on yarv製作日誌7

yasmが使えるようになったので、schemeコンパイラを書いてみました。
http://github.com/mas454/loy-yasm/blob/master/compile.scm
まだ微妙な感じですが、とりあえず関数の定義ができるところまで書けました。

 (define out-p (open-output-file "c-test.rb"))

 (loy-compile '((= str "hello world") 
                (puts str)))

こんな感じで実行すると、

require 'yasm'
require 'lispu'
iseq = YASM.toplevel([:str]){
 putnil
 putobject "hello, world"
 setlocal :str
 getlocal :str
 call :puts, 1
 leave
}
 iseq.eval

のようにc-test.rbに出力されます。
c-test.rbを実行すると、hello, worldが出力されます。
schemegaucheを使っています。