forge-env: define as class with reader and accessor; testing: put macro definition before first use
This commit is contained in:
parent
9bed7704b6
commit
5f491aa901
2 changed files with 10 additions and 12 deletions
|
@ -8,21 +8,20 @@
|
|||
|
||||
(in-package :scopes/forge)
|
||||
|
||||
(defun new-forge-env ()
|
||||
(vector nil))
|
||||
(defclass forge-env ()
|
||||
((data-stack :initform 0
|
||||
:reader data-stack
|
||||
:accessor data-stack!)))
|
||||
|
||||
(defun exec (fe code)
|
||||
(defun new-forge-env ()
|
||||
(make-instance 'forge-env))
|
||||
|
||||
(defmethod exec ((fe forge-env) code)
|
||||
(dolist (x code)
|
||||
(if (symbolp x)
|
||||
(funcall (find-symbol (symbol-name x) :scopes/forge) fe)
|
||||
(pushd fe x))))
|
||||
|
||||
(defun data-stack (fe)
|
||||
(elt fe 0))
|
||||
|
||||
(defmacro data-stack! (fe)
|
||||
`(elt ,fe 0))
|
||||
|
||||
; forge primitives
|
||||
|
||||
(defun add (fe)
|
||||
|
|
|
@ -11,12 +11,11 @@
|
|||
(defun test-suite ()
|
||||
(vector nil))
|
||||
|
||||
(defun assert-eq (tst have wanted)
|
||||
(push (equalp have wanted) (result! tst)))
|
||||
|
||||
(defun result (tst)
|
||||
(elt tst 0))
|
||||
|
||||
(defmacro result! (tst)
|
||||
`(elt ,tst 0))
|
||||
|
||||
(defun assert-eq (tst have wanted)
|
||||
(push (equalp have wanted) (result! tst)))
|
||||
|
|
Loading…
Add table
Reference in a new issue