diff options
| -rw-r--r-- | parser.lisp | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/parser.lisp b/parser.lisp index bfe2614..d22ae81 100644 --- a/parser.lisp +++ b/parser.lisp @@ -40,6 +40,10 @@                      :message (format nil "Didn't reach expected limit: ~a." limit))        (make-parsing :tree tree :left input)))) +(defun fail (message) +  (lambda (input &key limit lazy) +    (make-failure :place input :message message))) +  (defun bind (p f &key (greedy t))    (lambda (input &key limit lazy)      (let (r) @@ -165,7 +169,7 @@  (defun many (p)    (comp ((x p)           (xs (if (not x) -               (error "Cannot define (many (optional x)). Use (optional (many x)) instead.") +               (fail "Parsing result is empty.")                 (optional (many p)))))          (cons x xs))) @@ -191,7 +195,7 @@    (comp ((v p)           (sep (optional separator))           (vn (if sep -               (crit (separated-list p separator)) +               (separated-list p separator)                 nothing)))          (if include-separator            (cons v (cons sep vn)) | 
