public void Should_lex_when_pattern_is_empty() { NamedRegexLexer lexer = new NamedRegexLexer(""); NamedRegexToken token = lexer.Lex(); token.Kind.ShouldBe(NamedRegexTokenKind.EmptyPattern); }
public void Should_lex_regex_patterns(string pattern, NamedRegexTokenKind[] kinds) { var lexer = new NamedRegexLexer(pattern); var results = new List <NamedRegexTokenKind>(); while (true) { var token = lexer.Lex(); results.Add(token.Kind); if (token.Kind == NamedRegexTokenKind.EndOfPattern) { break; } } results.ShouldBe(kinds); }
private static void Main() { const string pattern = "ab{c}d{ef}g}h"; var lexer = new NamedRegexLexer(pattern.AsMemory()); Trace.Listeners.Clear(); Trace.Listeners.Add(new ConsoleTraceListener()); while (true) { var token = lexer.Lex(); if (token.Kind == NamedRegexTokenKind.EndOfPattern) { break; } Console.WriteLine("--------------------------------------------------------------------------------------------------------"); Console.WriteLine($" {token}\n\t\t[{token.Range.Start}-{token.Range.End}]\t\t{token.Kind}"); Console.WriteLine("--------------------------------------------------------------------------------------------------------"); } }