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 | |
parent | f412f2fbcc1ba164bd116204e01808c83f0d5aec (diff) | |
download | lsp-98097b4c73f274f95bf1360a2b2f99b555917cd5.tar.gz |
Making changes
-rw-r--r-- | comal.lsp | 31 | ||||
-rw-r--r-- | xdr.lsp | 5 |
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)) |