diff options
Diffstat (limited to 'extra.lisp')
| -rw-r--r-- | extra.lisp | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -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))) |
