From 9566e92321a1ed29a7f5903a3ba4ab16de3783b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Wed, 31 Dec 2025 16:14:31 -0300 Subject: Type check functions --- extra.lisp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'extra.lisp') diff --git a/extra.lisp b/extra.lisp index 024bd3b..c0a6a8a 100644 --- a/extra.lisp +++ b/extra.lisp @@ -1,9 +1,10 @@ (in-package #:monparser) -(defparameter whitespace - (many (unit (or (char= it #\Space) - (not (graphic-char-p it)))))) +(defun whitespace? (it) + (or (char= it #\Space) + (not (graphic-char-p it)))) +(declaim (ftype (function (parser integer integer) parser) repeat)) (defun repeat (p min &optional (max 0)) (if (> min 0) (comp ((x p) @@ -28,13 +29,15 @@ `(comp ,(reverse binding-list) ,(cons 'list (reverse name-list))))) -(defmacro within (left p right) - `(comp ((_ ,left) - (cell ,p) - (_ ,right)) - cell)) +(declaim (ftype (function (parser parser parser) parser) within)) +(defun within (left p right) + (comp ((_ left) + (cell p) + (_ right)) + cell)) -(defmacro interlinked (p separator) - `(many (comp ((cell ,p) - (_ (optional ,separator))) - cell))) +(declaim (ftype (function (parser parser) parser) interlinked)) +(defun interlinked (p separator) + (many (comp ((cell p) + (_ (optional separator))) + cell))) -- cgit v1.2.3