public static Parser <TToken, IDelayed <ISeq <T> > > Sequence <TToken, T>( IDelayed <ISeq <Parser <TToken, T> > > parsers) { return(parsers.Force().Case( empty: () => Parser.Return <TToken, IDelayed <ISeq <T> > >(Seq.Empty <T>()), headAndTail: pair => pair.Item0.SelectMany(value0 => InternalCombinator.Sequence(pair.Item1).Select(value1 => Seq.Cons(value0, value1))))); }
public static Parser <TToken, IDelayed <ISeq <T> > > Repeat <TToken, T>( Parser <TToken, T> parser, Int32 count) { return(InternalCombinator.Sequence(Seq.Of(Enumerable.Repeat(parser, count)))); }