From f753bfdffbd7ce0975b97ad44098b857f25c39a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Thu, 15 Jan 2026 01:55:29 -0300 Subject: Improve usability --- main.lisp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'main.lisp') diff --git a/main.lisp b/main.lisp index 3e6f255..683b70f 100644 --- a/main.lisp +++ b/main.lisp @@ -18,9 +18,12 @@ (defmacro defparser (name args parser) (let ((message (format nil "In ~a:~&" name))) - (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)))))) + (if (and (listp args) (every #'symbolp args)) + (let (definition) + (when (= (length args) 0) + (push `(defparameter ,name (,name)) definition)) + (push `(defun ,name (,@args) (append-on-failure ,parser ,message)) + definition) + (push 'progn definition) + definition) + (error "Malformed argument list.")))) -- cgit v1.2.3