From 1c1162747d8d7e12140329a105c0776d5555a351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Mon, 23 Jun 2025 02:22:51 -0300 Subject: Extract input to cursed --- main.lisp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'main.lisp') 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)))))) -- cgit v1.2.3