Add parse-match.
authorDavid Thompson <davet@gnu.org>
Mon, 10 Aug 2015 19:46:50 +0000 (15:46 -0400)
committerDavid Thompson <davet@gnu.org>
Mon, 10 Aug 2015 19:46:50 +0000 (15:46 -0400)
parser-combinators.scm

index 3c4958e..a92cd72 100644 (file)
@@ -41,6 +41,7 @@
             parse-return
             parse-lift
             parse-map
+            parse-match
             parse-any
             parse-each
             parse-zero-or-more
@@ -98,6 +99,9 @@
   "Return a new parser that applies PROC to result of PARSER."
   (parse-bind (parse-lift proc) parser))
 
+(define-syntax-rule (parse-match parser matchers ...)
+  (parse-map (match-lambda matchers ...) parser))
+
 (define (%parse-any . parsers)
   (lambda (stream)
     (let loop ((parsers parsers))