#! /usr/bin/mzscheme #lang scheme/base (require scheme/path) (require scheme/pretty) (require scheme/cmdline) (require (file "libcompiler/reader.scm")) (require (file "libcompiler/compiler.scm")) (require (file "libcompiler/writer.scm")) (define map-bytecode? (make-parameter #t)) (define source-file (command-line #:once-each [("-O") ol "Set the optimization level" (optimize? (>= (string->number ol) 1))] [("-R" "--reduce-only") "Stop before mapping forms to VM bytecode" (map-bytecode? #f)] #:args source-file (if (null? source-file) "-" (car source-file)))) (define source-module (if (string=? source-file "-") (read-module) (let* ([complete-path (path->complete-path source-file)] [directory (path-only complete-path)]) (with-input-from-file complete-path (lambda () (parameterize ([current-directory directory]) (read-module))))))) (if (map-bytecode?) (begin (write-rla-value (compile-function source-module)) (write-char #\Newline)) (pretty-print (reduce-function source-module))) ; vim:set sw=2 expandtab: