diff options
author | Juan Manuel Tomás <jtomas1815@gmail.com> | 2025-06-23 02:22:51 -0300 |
---|---|---|
committer | Juan Manuel Tomás <jtomas1815@gmail.com> | 2025-06-23 02:22:51 -0300 |
commit | 1c1162747d8d7e12140329a105c0776d5555a351 (patch) | |
tree | 5feaaa2b9ac357732c9d2a9c922cfaa9356dd76c /main.lisp | |
parent | 4d355a842737f7938d148c53338ce6f3fa055628 (diff) | |
download | monparser-1c1162747d8d7e12140329a105c0776d5555a351.tar.gz monparser-1c1162747d8d7e12140329a105c0776d5555a351.zip |
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)))))) |