public static Parser <TValue> ChainRight <TValue>(this Parser <TValue> parser, Parser <Func <TValue, TValue, TValue> > func) { return(parser.SelectMany(x => (from f in func from y in parser.ChainRight(func) select f(x, y)) .Or(Return(x)))); }
public static Parser <TValue> ChainRight <TValue>(this Parser <TValue> parser, Parser <Func <TValue, TValue, TValue> > func, TValue defaultValue) { return(parser.ChainRight(func).Or(Return(defaultValue))); }