예제 #1
0
            public override Parser <TInput> VisitProduce <TOutput>(ProduceParser <TInput, TOutput> parser)
            {
                if (state.State == 0)
                {
                    state.State           = 1;
                    state.NextOutputStart = state.OutputStart;
                    return(parser.Parser);
                }
                else
                {
                    if (state.LastResult >= 0)
                    {
                        var value = parser.Producer(output, state.OutputStart);
                        output.SetCount(state.OutputStart);
                        output.Add(value);
                    }
                    else
                    {
                        output.SetCount(state.OriginalOutputCount);
                    }

                    state.InputLength = state.LastResult;
                    return(null);
                }
            }
 public override Parser <TInput> VisitProduce <TOutput>(ProduceParser <TInput, TOutput> parser)
 {
     if (state.State == 0)
     {
         state.State = 1;
         return(parser.Parser);
     }
     else
     {
         state.InputLength = state.LastResult;
         return(null);
     }
 }
 public override void VisitProduce <TOutput>(ProduceParser <TInput, TOutput> parser)
 {
     this.Visit(parser.Parser);
 }
예제 #4
0
 public override int VisitProduce <TOutput>(ProduceParser <TInput, TOutput> parser, int start)
 {
     return(Search(parser.Parser, start));
 }