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

Parses p one or more times separated by op. The value returned is the one produced by the right associative application of the function returned by 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, "")));
}