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)
|
(in-package :scopes/forge)
|
||||||
|
|
||||||
(defun new-forge-env ()
|
(defclass forge-env ()
|
||||||
(vector nil))
|
((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)
|
(dolist (x code)
|
||||||
(if (symbolp x)
|
(if (symbolp x)
|
||||||
(funcall (find-symbol (symbol-name x) :scopes/forge) fe)
|
(funcall (find-symbol (symbol-name x) :scopes/forge) fe)
|
||||||
(pushd fe x))))
|
(pushd fe x))))
|
||||||
|
|
||||||
(defun data-stack (fe)
|
|
||||||
(elt fe 0))
|
|
||||||
|
|
||||||
(defmacro data-stack! (fe)
|
|
||||||
`(elt ,fe 0))
|
|
||||||
|
|
||||||
; forge primitives
|
; forge primitives
|
||||||
|
|
||||||
(defun add (fe)
|
(defun add (fe)
|
||||||
|
|
|
@ -11,12 +11,11 @@
|
||||||
(defun test-suite ()
|
(defun test-suite ()
|
||||||
(vector nil))
|
(vector nil))
|
||||||
|
|
||||||
(defun assert-eq (tst have wanted)
|
|
||||||
(push (equalp have wanted) (result! tst)))
|
|
||||||
|
|
||||||
(defun result (tst)
|
(defun result (tst)
|
||||||
(elt tst 0))
|
(elt tst 0))
|
||||||
|
|
||||||
(defmacro result! (tst)
|
(defmacro result! (tst)
|
||||||
`(elt ,tst 0))
|
`(elt ,tst 0))
|
||||||
|
|
||||||
|
(defun assert-eq (tst have wanted)
|
||||||
|
(push (equalp have wanted) (result! tst)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue