Beispiel #1
0
 public static Parser <T> Where <T>(this Parser <T> self, Func <T, bool> pred) =>
 inp =>
 self(inp).Match(
     EmptyOK: (x, rem, msg) => pred(x) ? EmptyOK(x, rem, msg) : EmptyError <T>(ParserError.SysUnexpect(inp.Pos, $"\"{x}\"")),
     EmptyError: EmptyError <T>,
     ConsumedOK: (x, rem, msg) => pred(x) ? ConsumedOK(x, rem, msg) : EmptyError <T>(ParserError.SysUnexpect(inp.Pos, $"\"{x}\"")),
     ConsumedError: ConsumedError <T>);
Beispiel #2
0
 public static Parser <I, O> Where <I, O>(this Parser <I, O> self, Func <O, bool> pred) =>
 inp =>
 self(inp).Match(
     EmptyOK: (x, rem, msg) => pred(x) ? EmptyOK(x, rem, msg) : EmptyError <I, O>(ParserError.SysUnexpect(inp.Pos, $"\"{x}\""), inp.TokenPos),
     EmptyError: msg => EmptyError <I, O>(msg, inp.TokenPos),
     ConsumedOK: (x, rem, msg) => pred(x) ? ConsumedOK(x, rem, msg) : EmptyError <I, O>(ParserError.SysUnexpect(inp.Pos, $"\"{x}\""), inp.TokenPos),
     ConsumedError: msg => ConsumedError <I, O>(msg, inp.TokenPos));