Ejemplo n.º 1
0
 public Parselet(int tokenTypeId, IParser <TInput, TValue> match, NudFunc <TInput, TValue, TOutput>?nud, LedFunc <TInput, TValue, TOutput>?led, int lbp, int rbp, string name)
 {
     Assert.ArgumentNotNull(match, nameof(match));
     TokenTypeId = tokenTypeId;
     _match      = match;
     _nud        = nud;
     _led        = led;
     Lbp         = lbp;
     Rbp         = rbp;
     Name        = name ?? _match.Name ?? ((TokenTypeId > 0) ? TokenTypeId.ToString() : match.ToString()) ?? string.Empty;
 }
Ejemplo n.º 2
0
 public IPrattParseletBuilder <TInput, TValue, TOutput> LeftDenominator(int lbp, int rbp, LedFunc <TInput, TValue, TOutput> getLed)
 {
     Assert.ArgumentNotNull(getLed, nameof(getLed));
     _getParselets.Add((m, tid, n) => new Parselet <TInput, TValue, TOutput>(
                           tid,
                           m,
                           null,
                           getLed,
                           lbp,
                           rbp,
                           n
                           ));
     return(this);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Synonym for LeftDenominator. Create a parse rule which binds to a left-hand value with a
 /// specified binding power, and may recurse into the Pratt engine to produce subsequent
 /// values.
 /// </summary>
 /// <typeparam name="TInput"></typeparam>
 /// <typeparam name="TValue"></typeparam>
 /// <typeparam name="TOutput"></typeparam>
 /// <param name="builder"></param>
 /// <param name="lbp"></param>
 /// <param name="getLed"></param>
 /// <returns></returns>
 public static IPrattParseletBuilder <TInput, TValue, TOutput> BindLeft <TInput, TValue, TOutput>(this IPrattParseletBuilder <TInput, TValue, TOutput> builder, int lbp, LedFunc <TInput, TValue, TOutput> getLed)
 => builder.LeftDenominator(lbp, lbp + 1, getLed);