Example #1
0
        public sealed override InternalResult <R> Parse(ref ParseState <TToken> state)
        {
            var consumedInput = false;


            var result1 = _p1.Parse(ref state);

            consumedInput = consumedInput || result1.ConsumedInput;
            if (!result1.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            var result2 = _p2.Parse(ref state);

            consumedInput = consumedInput || result2.ConsumedInput;
            if (!result2.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            var result3 = _p3.Parse(ref state);

            consumedInput = consumedInput || result3.ConsumedInput;
            if (!result3.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            var result4 = _p4.Parse(ref state);

            consumedInput = consumedInput || result4.ConsumedInput;
            if (!result4.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            var result5 = _p5.Parse(ref state);

            consumedInput = consumedInput || result5.ConsumedInput;
            if (!result5.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            var result6 = _p6.Parse(ref state);

            consumedInput = consumedInput || result6.ConsumedInput;
            if (!result6.Success)
            {
                return(InternalResult.Failure <R>(consumedInput));
            }

            return(InternalResult.Success <R>(
                       _func(
                           result1.Value,
                           result2.Value,
                           result3.Value,
                           result4.Value,
                           result5.Value,
                           result6.Value
                           ),
                       consumedInput
                       ));
        }