Esempio n. 1
0
        public RepeatParser(ParserFactory <TSubValue> part, Quantification quantification)
        {
            factory             = part;
            this.quantification = quantification;

            quantification.Validate();
        }
Esempio n. 2
0
 /// <summary>
 /// Matches a parser as many times as possible
 /// Takes parameter-less parser builders as the arguments
 /// </summary>
 /// <param name="builder">Parser builder to be repeated</param>
 /// <param name="quantification">How many times to repeat</param>
 /// <typeparam name="TValue">Return type of the whole composite parser</typeparam>
 /// <typeparam name="TSubValue">Return type of the internal parser that's being repeated</typeparam>
 public static ParserFactory <RepeatParser <TValue, TSubValue>, TValue> RepeatB <TValue, TSubValue>(
     Func <ParserFactory <TSubValue> > builder, Quantification quantification
     )
 {
     return(new ParserFactory <RepeatParser <TValue, TSubValue>, TValue>(() => {
         return new RepeatParser <TValue, TSubValue>(builder(), quantification);
     }));
 }
Esempio n. 3
0
 /// <summary>
 /// Matches a parser as many times as possible
 /// </summary>
 /// <param name="part">Parser to be repeated</param>
 /// <param name="quantification">How many times to repeat</param>
 /// <typeparam name="TValue">Return type of the whole composite parser</typeparam>
 /// <typeparam name="TSubValue">Return type of the internal parser that's being repeated</typeparam>
 public static ParserFactory <RepeatParser <TValue, TSubValue>, TValue> Repeat <TValue, TSubValue>(
     ParserFactory <TSubValue> part, Quantification quantification
     )
 {
     return(new ParserFactory <RepeatParser <TValue, TSubValue>, TValue>(() => {
         return new RepeatParser <TValue, TSubValue>(part, quantification);
     }));
 }
Esempio n. 4
0
 public CastParser(ParserFactory <TFrom> parser) : base(parser, Quantification.Exactly(1))
 {
     // default processor
     this.Processor = p => (TTo)this.Matches[0].Value;
 }