diff options
Diffstat (limited to 'main.lisp')
-rw-r--r-- | main.lisp | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -2,10 +2,10 @@ (defun parse (parser data) (let* ((result (funcall parser - (make-instance 'parser-input + (make-instance 'cursed:text :data data)))) (if (parsing-p result) - (let ((finished? (not (has-data? (parsing-left result))))) + (let ((finished? (not (cursed:has-data? (parsing-end result))))) (values (parsing-tree result) finished?)) result))) @@ -20,6 +20,9 @@ (defmacro defparser (name args parser) (let ((message (format nil "In ~a:~&" name))) - (if (null args) - `(defparameter ,name (append-on-failure ,parser ,message)) - `(defun ,name ,args (append-on-failure ,parser ,message))))) + (cond ((equal args :const) + `(defparameter ,name (append-on-failure ,parser ,message))) + ((listp args) + `(defun ,name ,args (append-on-failure ,parser ,message))) + (t (error + (format nil "Cannot define ~a: ~a is not :const or a list." name args)))))) |