(:documentation
"Expand a parser list-form given by HEAD and TAIL, in CONTEXT.")
(:method (context head tail)
+ (declare (ignore context))
(cons head tail)))
(export 'wrap-parser)
(defgeneric wrap-parser (context form)
(:documentation
"Enclose FORM in whatever is necessary to make the parser work.")
- (:method (context form) form)))
+ (:method (context form)
+ (declare (ignore context))
+ form)))
(export 'defparse)
(defmacro defparse (name bvl &body body)
`(defmethod expand-parser-form
((,context ,ctxclass) (,head (eql ',name)) ,tail)
,@doc
+ (declare (ignorable ,context))
(block ,name
(destructuring-bind ,bvl ,tail
,@decls
(defmethod expand-parser-spec (context (spec (eql t)))
"Always matches without consuming input."
+ (declare (ignore context))
'(values t t nil))
(defmethod expand-parser-spec (context (spec (eql nil)))
"Always fails without consuming input. The failure indicator is `:fail'."
+ (declare (ignore context))
'(values '(:fail) nil nil))
(export 'seq)
underlying scanner can use this call to determine whether there are
outstanding captured places, and thereby optimize its behaviour. Be
careful: all of this is happening at macro-expansion time.")
- (:method (context place) nil))
+ (:method (context place)
+ (declare (ignore context place))
+ nil))
(export 'parser-places-must-be-released-p)
(defgeneric parser-places-must-be-released-p (context)
the correct cleanup. If it returns false, then the `unwind-protect' is
omitted so that the runtime code does't have to register cleanup
handlers.")
- (:method (context) t)))
+ (:method (context)
+ (declare (ignore context))
+ t)))
(export 'with-parser-place)
(defmacro with-parser-place ((place context) &body body)