summaryrefslogtreecommitdiff
path: root/extra.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'extra.lisp')
-rw-r--r--extra.lisp27
1 files changed, 15 insertions, 12 deletions
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)))