X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/37fed32620ab3034e7e43ab6727ba66c11c0ebe9..refs/heads/mdw/progfmt:/src/frontend.lisp diff --git a/src/frontend.lisp b/src/frontend.lisp index 92573e7..a00a8bb 100644 --- a/src/frontend.lisp +++ b/src/frontend.lisp @@ -30,12 +30,6 @@ (eval-when (:compile-toplevel :load-toplevel :execute) (cl:in-package #:sod-frontend) -;;;-------------------------------------------------------------------------- -;;; Preparation for dumping. - -(clear-the-decks) -(exercise) - ;;;-------------------------------------------------------------------------- ;;; The main program. @@ -125,8 +119,12 @@ (define-program ("Evaluate raw Lisp code.") (lambda (lisp) (handler-case - (let ((*package* (find-package "SOD-USER"))) - (eval (read-from-string lisp))) + (let ((*package* (find-package "SOD-USER")) + (token (cons 'token nil))) + (with-input-from-string (in lisp) + (loop (let ((form (read in nil token))) + (when (eq form token) (return)) + (eval form))))) (error (error) (option-parse-error "~A" error))))) (#\l "load" (:arg "FILE") @@ -238,6 +236,6 @@ (define-program ~[~:; ~:*~D error~:P~[~:; and~]~:*~]~ ~[~:; ~:*~D warning~:P~]~%" *program-name* nerror nwarn)) - (exit (if (plusp nerror) 2 0))))))) + (uiop:quit (if (plusp nerror) 2 0))))))) ;;;----- That's all, folks --------------------------------------------------