diff options
author | Darren Bane <darren.bane@gmail.com> | 2020-06-01 19:10:35 +0100 |
---|---|---|
committer | Darren Bane <darren.bane@gmail.com> | 2020-06-01 19:10:35 +0100 |
commit | 98097b4c73f274f95bf1360a2b2f99b555917cd5 (patch) | |
tree | 11d15fd69c45ebe2a643071c087e90a60217a2ac /comal.lsp | |
parent | f412f2fbcc1ba164bd116204e01808c83f0d5aec (diff) | |
download | lsp-98097b4c73f274f95bf1360a2b2f99b555917cd5.tar.gz |
Making changes
Diffstat (limited to 'comal.lsp')
-rw-r--r-- | comal.lsp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/comal.lsp b/comal.lsp index 77b1c2a..12f8d0a 100644 --- a/comal.lsp +++ b/comal.lsp @@ -3,26 +3,35 @@ (cond ((eq (class-of condition) (class <lexer-error>)) ))) -(defun one-command-h (c) - (case (car c) - ((line) (insert (cadr c))) - ((p-end) (throw 'end nil)))) ; ok? No condition stuff? +(defun one-command-h (st) + (let ((l parse (read-line))) + (case (car l) + ((line) (insert (cadr c))) + ((p-end) (throw 'end nil)))) ; ok? No condition stuff? -(defun one-command (c) - (handler-bind ((error #'error-handler)) - (one-command-h c))) +(defun one-command (st) + (with-handler #'error-handler + (one-command-h st))) -(defun main-loop (program env) +;; Should this be in (for or something since it's called -loop? +(defun main-loop (st) (format (standard-output) "> ") - (catch 'error (one-command-h))) + (catch 'error (one-command st))) + +(defclass <state> () ((prog :accessor prog) + (env :accessor env))) +(defmethod initialize-object :after ((self <state>) initargs) + (setf (prog self) nil) + (setf (env self) nil)) (defun main-h () (format (standard-output) "OpenCOMAL version 0.4~%~%") - (main-loop nil nil)) + (for ((st (create (class <state>)))) + (main-loop st))) (defun bye () (format (standard-output) "See you later...~%")) -(defun go () +(defun main () (catch 'end (main-h)) (bye)) |