about summary refs log tree commit diff stats
path: root/comal.lsp
diff options
context:
space:
mode:
authorDarren Bane <darren.bane@gmail.com>2020-06-01 19:10:35 +0100
committerDarren Bane <darren.bane@gmail.com>2020-06-01 19:10:35 +0100
commit98097b4c73f274f95bf1360a2b2f99b555917cd5 (patch)
tree11d15fd69c45ebe2a643071c087e90a60217a2ac /comal.lsp
parentf412f2fbcc1ba164bd116204e01808c83f0d5aec (diff)
downloadlsp-98097b4c73f274f95bf1360a2b2f99b555917cd5.tar.gz
Making changes
Diffstat (limited to 'comal.lsp')
-rw-r--r--comal.lsp31
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))