From 3a44b17bd92a286260017aeb6d30a4cca2011f0d Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Thu, 19 Sep 2019 00:14:59 -0400 Subject: [PATCH] Add sep_by0 and sep_by1 --- src/parse/parser.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/parse/parser.rs b/src/parse/parser.rs index 681e8669e1..4dae81a3b5 100644 --- a/src/parse/parser.rs +++ b/src/parse/parser.rs @@ -410,6 +410,26 @@ pub fn string<'a>(string: &'static str) -> impl Parser<'a, ()> { } } +/// Parse zero or more values separated by a delimiter (e.g. a comma) whose +/// values are discarded +pub fn sep_by0<'a, P, D, Val>(delimiter: D, parser: P) -> impl Parser<'a, Vec<'a, Val>> +where + D: Parser<'a, ()>, + P: Parser<'a, Val>, +{ + zero_or_more(skip_first(delimiter, parser)) +} + +/// Parse one or more values separated by a delimiter (e.g. a comma) whose +/// values are discarded +pub fn sep_by1<'a, P, D, Val>(delimiter: D, parser: P) -> impl Parser<'a, Vec<'a, Val>> +where + D: Parser<'a, ()>, + P: Parser<'a, Val>, +{ + one_or_more(skip_first(delimiter, parser)) +} + pub fn satisfies<'a, P, A, F>(parser: P, predicate: F) -> impl Parser<'a, A> where P: Parser<'a, A>,