diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-18 16:45:54 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-18 16:45:54 +0200 |
commit | a054e735eda7cbe151679b1e10a369251c8cf613 (patch) | |
tree | d2abc81f22e70d14e2627d8b1d37afaa6de2b403 | |
parent | 74e946c4e140fbde88b2fdccea1b32534f97e2e0 (diff) |
Fix the TAGBODY parser.
-rw-r--r-- | sb-eval2.lisp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp index 0d7033e..ad1a709 100644 --- a/sb-eval2.lisp +++ b/sb-eval2.lisp @@ -156,12 +156,15 @@ (finishp nil)) (loop until finishp collect - (let ((tag next-form) - (forms (loop until (symbolp (setq next-form (pop forms))) - collect next-form))) + (progn (unless forms - (setq finishp t)) - (cons tag forms))))) + (setq finishp (null forms))) + (let ((tag next-form) + (current-forms (loop for current-form = (pop forms) + do (setq next-form current-form) + until (symbolp current-form) + collect current-form))) + (cons tag current-forms)))))) (defun context-var-lexical-p (context var) (context-find-lexical context var)) (defun context-add-env-lexicals (context vars) |