summaryrefslogtreecommitdiff
path: root/parser.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'parser.lisp')
-rw-r--r--parser.lisp10
1 files changed, 6 insertions, 4 deletions
diff --git a/parser.lisp b/parser.lisp
index 1c51c33..bfe2614 100644
--- a/parser.lisp
+++ b/parser.lisp
@@ -111,8 +111,8 @@
(push r intermediate-parsers))
((parsing-p r)
(when (or (not (parsing-p result))
- (> (cursor (parsing-input r))
- (cursor (parsing-input result))))
+ (> (cursor (parsing-left r))
+ (cursor (parsing-left result))))
(setf result r)))
((failure-p r)
(when (or (failure-p result)
@@ -164,7 +164,9 @@
(defun many (p)
(comp ((x p)
- (xs (optional (many p))))
+ (xs (if (not x)
+ (error "Cannot define (many (optional x)). Use (optional (many x)) instead.")
+ (optional (many p)))))
(cons x xs)))
(defun repeat (p min &optional (max 0))
@@ -183,7 +185,7 @@
(defparameter whitespace
(comp ((_ (optional (many (unit whitespace?)))))
- nil))
+ :whitespace))
(defun separated-list (p separator &key include-separator)
(comp ((v p)