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);
        }
示例#3
0
        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("--------------------------------------------------------------------------------------------------------");
            }
        }