summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Thompson <davet@gnu.org>2015-08-10 15:46:50 -0400
committerDavid Thompson <davet@gnu.org>2015-08-10 15:46:50 -0400
commit84a4d4b68ebd5d1f9a7ed7fd50b813327e416061 (patch)
tree31108c635587c83bc75f8df750433cb980bd16c4
parent10aa42dfd1db3669c19ec1f82a1475d371962dad (diff)
Add parse-match.
-rw-r--r--parser-combinators.scm4
1 files changed, 4 insertions, 0 deletions
diff --git a/parser-combinators.scm b/parser-combinators.scm
index 3c4958e..a92cd72 100644
--- a/parser-combinators.scm
+++ b/parser-combinators.scm
@@ -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))