Collects any matches of the supplied rule with the input stream.
(defun none-or-more (s func)
"Collects any matches of the supplied rule with the input stream."
(declare (type function func))
(let ((val (funcall func s)))
(if val
(multiple-value-bind (res nextval)
(none-or-more s func)
(values res (cons val nextval)))
(values t nil))))Source Context