diff options
author | David Thompson <davet@gnu.org> | 2015-08-10 15:46:50 -0400 |
---|---|---|
committer | David Thompson <davet@gnu.org> | 2015-08-10 15:46:50 -0400 |
commit | 84a4d4b68ebd5d1f9a7ed7fd50b813327e416061 (patch) | |
tree | 31108c635587c83bc75f8df750433cb980bd16c4 | |
parent | 10aa42dfd1db3669c19ec1f82a1475d371962dad (diff) |
Add parse-match.
-rw-r--r-- | parser-combinators.scm | 4 |
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)) |