X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=c99c8929bb163017366bc957a3077f598cdbd8d3;hb=bde4a4bf8433a91cfe6f0996af8b53bc1b778903;hp=7a68a35b8b0a7409d7980194321971bc7f4921d2;hpb=137ff928aab4f5b9dcc6f3b927c4ea92cf1d0a82;p=jscl.git diff --git a/test.lisp b/test.lisp index 7a68a35..c99c892 100644 --- a/test.lisp +++ b/test.lisp @@ -21,6 +21,12 @@ (%compile-defun ',name)) (fsetq ,name (lambda ,args ,@body)))) +(defmacro when (condition &rest body) + `(if ,condition (progn ,@body))) + +(defmacro unless (condition &rest body) + `(if ,condition nil (progn ,@body))) + (defun = (x y) (= x y)) (defun + (x y) (+ x y)) (defun - (x y) (- x y)) @@ -227,3 +233,19 @@ (read-until stream (lambda (x) (char= x #\newline))) (skip-whitespaces stream) (setq ch (%peek-char stream))))) + +(defun %read-list (stream) + (skip-whitespaces-and-comments stream) + (let ((ch (%peek-char stream))) + (cond + ((char= ch #\)) + (%read-char stream) + nil) + ((char= ch #\.) + (%read-char stream) + (skip-whitespaces-and-comments stream) + (prog1 (ls-read stream) + (unless (char= (%read-char stream) #\)) + (error "')' was expected.")))) + (t + (cons (ls-read stream) (%read-list stream))))))