public static Parser <TToken, T> Chainl <TToken, T>( Parser <TToken, T> parser, Parser <TToken, Func <T, T, T> > op) { return(from lhs in parser from resultValue in InternalCombinator.ChainlRest <TToken, T>(parser, op, lhs) select resultValue); }
public static Parser <TToken, T> ChainlRest <TToken, T>( Parser <TToken, T> parser, Parser <TToken, Func <T, T, T> > op, T lhs) { return((from func in op from rhs in parser from resultValue in InternalCombinator.ChainlRest(parser, op, func(lhs, rhs)) select resultValue) .Or(Parser.Return <TToken, T>(lhs))); }