X-Git-Url: http://git.lukelau.me/?p=scheme.git;a=blobdiff_plain;f=main.scm;h=e6ac821f2e7407604a72c622dca82aeb79e56d5b;hp=e2e96b8355b68cd43967977259c67ab91f7a5e1e;hb=a457cd3bb5ce9366db3ca0731a07abc50ecbc1f3;hpb=8519507b78d723100bca15fe0332ff99890e77fa diff --git a/main.scm b/main.scm old mode 100644 new mode 100755 index e2e96b8..e6ac821 --- a/main.scm +++ b/main.scm @@ -1,3 +1,5 @@ +#!/usr/bin/scheme --script + (load "codegen.scm") (load "platform.scm") @@ -10,8 +12,8 @@ (or (equal? (car x) "-t") (equal? (car x) "--target")) (case (cadr x) - ("darwin" 'darwin) - ("linux" 'linux) + (("darwin") 'darwin) + (("linux") 'linux) (else (error #f "unknown os"))) (parse-os (cdr x))))) (define (parse-file x) @@ -28,8 +30,15 @@ (define target (car (parse-args))) (define file (cadr (parse-args))) + ; reads in all datums until eof +(define (read-prog port) + (let ([x (read port)]) + (if (eof-object? x) + '() + (cons x (read-prog port))))) + (compile-to-binary (if (eqv? file 'stdin) - (read) - (call-with-input-file file read)) + (read-prog (current-input-port)) + (call-with-input-file file read-prog)) "a.out" target)