Function combine::chainr1 [] [src]

pub fn chainr1<P, Op>(parser: P, op: Op) -> Chainr1<P, Op> where P: Parser, Op: Parser<Input=P::Input>, Op::Output: FnOnce(P::Output, P::Output) -> P::Output

Parses p one or more times separated by op The value returned is the one produced by the right associative application of op

 let number = digit().map(|c: char| c.to_digit(10).unwrap());
 let pow = token('^').map(|_| |l: u32, r: u32| l.pow(r));
 let mut parser = chainr1(number, pow);
     assert_eq!(parser.parse("2^3^2"), Ok((512, "")));
 }