Update main.scm to properly read in multi-expression programs
authorLuke Lau <luke_lau@icloud.com>
Tue, 13 Aug 2019 13:03:53 +0000 (14:03 +0100)
committerLuke Lau <luke_lau@icloud.com>
Tue, 13 Aug 2019 13:03:53 +0000 (14:03 +0100)
main.scm [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index df8e656..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)
 (define target (car (parse-args)))
 (define file (cadr (parse-args)))
 
+                                       ; reads in all datums until eof
 (define (read-prog port)
-  (if (port-input-empty? port)
+  (let ([x (read port)])
+    (if (eof-object? x)
        '()
-      (cons (read) (read-prog port))))
+       (cons x (read-prog port)))))
 
 (compile-to-binary
  (if (eqv? file 'stdin)