whalesong/sandbox/sample-run.rkt
2011-12-14 15:09:56 -05:00

24 lines
825 B
Racket

#lang racket
(require (planet dyoo/whalesong/get-module-bytecode)
(planet dyoo/whalesong/parser/parse-bytecode)
(planet dyoo/whalesong/compiler/compiler)
(planet dyoo/whalesong/compiler/compiler-structs)
(planet dyoo/whalesong/js-assembler/assemble))
(define bytecode
(get-module-bytecode
(open-input-string
(string-append "#lang planet dyoo/whalesong\n"
"(define (f x)\n"
" (if (= x 0)\n"
" 1\n"
" (* x (f (sub1 x)))))\n\n"
"(provide f)"))))
(define ast (parse-bytecode (open-input-bytes bytecode)))
(define stmts (compile ast 'val next-linkage/drop-multiple))
(define op (open-output-string))
(assemble/write-invoke stmts op)
(define js-code (get-output-string op))