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が出力されます。
schemeはgaucheを使っています。