about summary refs log tree commit diff stats
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
parentf412f2fbcc1ba164bd116204e01808c83f0d5aec (diff)
downloadlsp-98097b4c73f274f95bf1360a2b2f99b555917cd5.tar.gz
Making changes
-rw-r--r--comal.lsp31
-rw-r--r--xdr.lsp5
2 files changed, 23 insertions, 13 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))
diff --git a/xdr.lsp b/xdr.lsp
index 34d9024..ffbb868 100644
--- a/xdr.lsp
+++ b/xdr.lsp
@@ -1,10 +1,11 @@
+(require "olunit")
 (defpackage #:xdr
-  (:use #:openlisp)
+  (:use #:openlisp #:olunit)
   (:export
    #:h-to-xdr
    #:xdr-to-h))
 (in-package #:xdr)
-(defglobal *encode-buf*)
+(defglobal *encode-buf* nil)
 (defun buffer-init (buf op)
    (case op
 	 ((encode) (setq *encode-buf* buf))