summaryrefslogtreecommitdiff
path: root/main.lisp
diff options
context:
space:
mode:
authorJuan Manuel Tomás <jtomas1815@gmail.com>2025-06-23 02:22:51 -0300
committerJuan Manuel Tomás <jtomas1815@gmail.com>2025-06-23 02:22:51 -0300
commit1c1162747d8d7e12140329a105c0776d5555a351 (patch)
tree5feaaa2b9ac357732c9d2a9c922cfaa9356dd76c /main.lisp
parent4d355a842737f7938d148c53338ce6f3fa055628 (diff)
downloadmonparser-1c1162747d8d7e12140329a105c0776d5555a351.tar.gz
monparser-1c1162747d8d7e12140329a105c0776d5555a351.zip
Extract input to cursedHEADmain
Diffstat (limited to 'main.lisp')
-rw-r--r--main.lisp13
1 files changed, 8 insertions, 5 deletions
diff --git a/main.lisp b/main.lisp
index f802d25..6cc0007 100644
--- a/main.lisp
+++ b/main.lisp
@@ -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))))))