;;;--------------------------------------------------------------------------
;;; Utilities.
+(export 'combine-parser-failures)
(defun combine-parser-failures (failures)
"Combine the failure indicators listed in FAILURES.
((,context ,ctxclass) (,head (eql ',name)) ,tail)
,@doc
(declare (ignorable ,context))
- (block ,name
- (destructuring-bind ,bvl ,tail
- ,@decls
- ,@body)))))))
+ (destructuring-bind ,bvl ,tail
+ ,@decls
+ (block ,name ,@body)))))))
(export '(with-parser-context parse))
(defmacro with-parser-context ((class &rest initargs) &body body)
If a parser with the given TAG is already attached to SYMBOL then the new
parser replaces the old one; otherwise it is added to the collection."
- `(pluggable-parser-add ',symbol ',tag (lambda ,bvl ,@body)))
+ (multiple-value-bind (docs decls body) (parse-body body)
+ `(pluggable-parser-add ',symbol ',tag
+ (lambda ,bvl
+ ,@docs ,@decls
+ (block ,symbol ,@body)))))
;;;--------------------------------------------------------------------------
;;; Rewindable parser context protocol.