public override void VisitRequired <TOutput>(RequiredParser <TInput, TOutput> parser)
 {
     if (this.showRequired)
     {
         WriteRequired(parser.Parser);
     }
     else
     {
         this.Visit(parser.Parser);
     }
 }
Ejemplo n.º 2
0
        public override int VisitRequired <TOutput>(RequiredParser <TInput, TOutput> parser, int start)
        {
            var len = Search(parser.Parser, start);

            if (len < 0)
            {
                _prevWasMissing = true;
                return(0);
            }

            return(len);
        }
Ejemplo n.º 3
0
 private static IParser <ServiceFieldInfo> FieldParser(Context context) =>
 from comments1 in CommentOrWhiteSpaceParser.Many()
 from attributes in AttributeParser(context).Delimited(",").Bracketed("[", "]").Many()
 from comments2 in CommentOrWhiteSpaceParser.Many()
 from name in NameParser.Named("field name")
 from colon in PunctuationParser(":")
 from typeName in TypeParser.Named("field type name")
 from required in RequiredParser.AtMostOnce()
 from semicolon in PunctuationParser(";")
 select new ServiceFieldInfo(name.Value, typeName.Value,
                             attributes.SelectMany(x => x).Concat(required),
                             BuildSummary(comments1, comments2),
                             context.GetPart(ServicePartKind.Name, name),
                             context.GetPart(ServicePartKind.TypeName, typeName));
Ejemplo n.º 4
0
 public override Parser <TInput> VisitRequired <TOutput>(RequiredParser <TInput, TOutput> parser)
 {
     if (state.State == 0)
     {
         state.State = 1;
         return(parser.Parser);
     }
     else if (state.LastResult < 0)
     {
         state.InputLength = 0;
         return(null);
     }
     else
     {
         state.InputLength = state.LastResult;
         return(null);
     }
 }
Ejemplo n.º 5
0
 public override Parser <TInput> VisitRequired <TOutput>(RequiredParser <TInput, TOutput> parser)
 {
     if (state.State == 0)
     {
         state.State           = 1;
         state.NextOutputStart = output.Count;
         return(parser.Parser);
     }
     else if (state.LastResult < 0)
     {
         output.SetCount(state.OriginalOutputCount);
         output.Add(parser.Producer());
         state.InputLength = 0;
         return(null);
     }
     else
     {
         state.InputLength = state.LastResult;
         return(null);
     }
 }