Beispiel #1
0
        public void TestLexerOutput()
        {
            var test = "class test <<< \"str\"'name' 0.3 ";
            var lexer = new StringLexer(test);
            var tokens = lexer.LexData();
            var enumerator = tokens.GetEnumerator();
            enumerator.MoveNext();

            // Match a keyword
            Assert.AreEqual(enumerator.Current.Type, TokenType.Class);
            enumerator.MoveNext();
            // Match a word
            Assert.AreEqual(enumerator.Current.Value, "test");
            enumerator.MoveNext();
            // Match a delimiter with higher priority
            Assert.AreEqual(enumerator.Current.Type, TokenType.LeftShift);
            enumerator.MoveNext();
            // Match another delimiter
            Assert.AreEqual(enumerator.Current.Type, TokenType.LeftArrow);
            enumerator.MoveNext();
            // Match a string
            Assert.AreEqual(enumerator.Current.Value, "str");
            enumerator.MoveNext();
            // Match a name
            Assert.AreEqual(enumerator.Current.Value, "name");
            enumerator.MoveNext();
            // Match a number
            Assert.AreEqual(enumerator.Current.Value, "0.3");
            enumerator.MoveNext();
            // Assert that we are at the end of stream
            Assert.IsFalse(enumerator.MoveNext());
        }
Beispiel #2
0
        public void TestLexerOutput()
        {
            var test       = "class test <<< \"str\"'name' 0.3 ";
            var lexer      = new StringLexer(test);
            var tokens     = lexer.LexData();
            var enumerator = tokens.GetEnumerator();

            enumerator.MoveNext();

            // Match a keyword
            Assert.AreEqual(enumerator.Current.Type, TokenType.Class);
            enumerator.MoveNext();
            // Match a word
            Assert.AreEqual(enumerator.Current.Value, "test");
            enumerator.MoveNext();
            // Match a delimiter with higher priority
            Assert.AreEqual(enumerator.Current.Type, TokenType.LeftShift);
            enumerator.MoveNext();
            // Match another delimiter
            Assert.AreEqual(enumerator.Current.Type, TokenType.LeftArrow);
            enumerator.MoveNext();
            // Match a string
            Assert.AreEqual(enumerator.Current.Value, "str");
            enumerator.MoveNext();
            // Match a name
            Assert.AreEqual(enumerator.Current.Value, "name");
            enumerator.MoveNext();
            // Match a number
            Assert.AreEqual(enumerator.Current.Value, "0.3");
            enumerator.MoveNext();
            // Assert that we are at the end of stream
            Assert.IsFalse(enumerator.MoveNext());
        }
Beispiel #3
0
        public void TestLexerTokenPositions()
        {
            String source = "+135.2 \n 'hello'\n\n";
            var    lexer  = new StringLexer(source);

            // Check that the initial token has correct start and end positions
            var token = lexer.GetNextToken();

            Assert.AreEqual(token.StartPosition, new SourcePosition(0, 0, 0));
            Assert.AreEqual(token.EndPosition, new SourcePosition(0, 1, 1));
            // Check that matching a number token reports expected result
            token = lexer.GetNextToken();
            Assert.AreEqual(token.StartPosition, new SourcePosition(0, 1, 1));
            Assert.AreEqual(token.EndPosition, new SourcePosition(0, 6, 6));
            // Check that a newline is handled correctly
            var whitespace = lexer.GetNextToken();

            Assert.AreEqual(whitespace.StartPosition, new SourcePosition(0, 6, 6));
            Assert.AreEqual(whitespace.EndPosition, new SourcePosition(1, 1, 9));
            // Check that name literal reports as expected
            token = lexer.GetNextToken();
            Assert.AreEqual(token.StartPosition, new SourcePosition(1, 1, 9));
            Assert.AreEqual(token.EndPosition, new SourcePosition(1, 8, 16));
            // Check that several newlines are handled correctly
            whitespace = lexer.GetNextToken();
            Assert.AreEqual(whitespace.StartPosition, new SourcePosition(1, 8, 16));
            Assert.AreEqual(whitespace.EndPosition, new SourcePosition(3, 0, 18));
            // Assert that EOF is returned at the end of the stream
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.EOF);
        }
Beispiel #4
0
        public void ShouldReturnNoTokensWhenNoMatchersAreDefined()
        {
            var stringLexer = new StringLexer("hello world", new List <StringMatcherBase>());

            var tokens = stringLexer.Tokenize();

            Assert.AreEqual(0, tokens.Count());
        }
Beispiel #5
0
        public void ShouldReturnNoTokensWhenTheSourceIsEmpty()
        {
            var stringLexer = new StringLexer(string.Empty, new List <StringMatcherBase>());

            var tokens = stringLexer.Tokenize();

            Assert.AreEqual(0, tokens.Count());
        }
Beispiel #6
0
        public void ShouldStopReturningTokensWhenAnUnknownTokenIsEncountered()
        {
            var stringLexer = new StringLexer("hello world", new List <StringMatcherBase> {
                new MatchWord(new List <StringMatcherBase>())
            });

            var tokens = stringLexer.Tokenize();

            Assert.AreEqual(1, tokens.Count());
        }
Beispiel #7
0
        public void TestQuotedStringParse()
        {
            StringLexer l = new StringLexer("''");

            Assert.IsTrue(l.Parse(), "Не пропускает ''");

            l = new StringLexer("'aa#2N3@_3-x//45'");
            Assert.IsTrue(l.Parse(), "Не пропускает 'aa#2N3@_3-x//45'");

            l = new StringLexer("'23 3 a'");
            Assert.IsTrue(l.Parse(), "Не пропускает '23 3 a'");
        }
Beispiel #8
0
        static void Main(string[] args)
        {
            string source = "void main(){return Add(1, 2);}int Add(int num1, int num2){num1 = num1 + num2; return num2;}\0";

            var lexer  = new StringLexer(source);
            var tokens = lexer.Tokenize();

            foreach (var token in tokens)
            {
                Console.WriteLine(token);
            }
        }
Beispiel #9
0
        public void ShouldReturnAListOfTokensFromTheSource()
        {
            var stringLexer = new StringLexer("hello world", new List <StringMatcherBase> {
                new MatchWhiteSpace(), new MatchWord(new List <StringMatcherBase>())
            });

            var tokens = stringLexer.Tokenize().ToList();

            Assert.AreEqual(3, tokens.Count());
            Assert.AreEqual("Word - hello", tokens.ElementAt(0).ToString());
            Assert.AreEqual("WhiteSpace -  ", tokens.ElementAt(1).ToString());
            Assert.AreEqual("Word - world", tokens.ElementAt(2).ToString());
        }
Beispiel #10
0
        public void TestLexerSubData()
        {
            String source = "+ \n \nasd , hey";
            var lexer = new StringLexer(source);
            var tokens = lexer.LexSubData(new SourcePosition(1, 0, 4), new SourcePosition(2, 3, 8));
            var enumerator = tokens.GetEnumerator();
            enumerator.MoveNext();

            // Ensure that the token has correct positions
            var token = enumerator.Current;
            Assert.AreEqual(token.StartPosition, new SourcePosition(2, 0, 5));
            Assert.AreEqual(token.EndPosition, new SourcePosition(2, 3, 8));
            // Make sure that the lexer did not parse further than the end of the subdata
            Assert.IsFalse(enumerator.MoveNext());
        }
Beispiel #11
0
        public void TestQuotedStringFail()
        {
            StringLexer l = new StringLexer("'");

            Assert.Throws <LexerException>(() => { l.Parse(); }, "Пропускает '");

            l = new StringLexer("aa'");
            Assert.Throws <LexerException>(() => { l.Parse(); }, "Пропускает aa'");

            l = new StringLexer("b 'add'");
            Assert.Throws <LexerException>(() => { l.Parse(); }, "Пропускает b 'add'");

            l = new StringLexer("'add' d");
            Assert.Throws <LexerException>(() => { l.Parse(); }, "Пропускает 'add' d");
        }
Beispiel #12
0
        public void TestLexerGetToken()
        {
            String source = "+ \n \"asd";
            var    lexer  = new StringLexer(source);

            // Match that the first token is a +
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.PlusSign);
            // Ensure that whitespace is returned
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.WhiteSpace);
            // Assert that an invalid token is found on a non-terminated string
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.INVALID);
            // Assert that after an invalid token the stream advances
            Assert.AreEqual(lexer.GetNextToken().Value, "asd");
            // Assert that EOF is returned at the end of the stream
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.EOF);
        }
Beispiel #13
0
        public void TestLexerGetToken()
        {
            String source = "+ \n \"asd";
            var lexer = new StringLexer(source);

            // Match that the first token is a +
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.PlusSign);
            // Ensure that whitespace is returned
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.WhiteSpace);
            // Assert that an invalid token is found on a non-terminated string
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.INVALID);
            // Assert that after an invalid token the stream advances
            Assert.AreEqual(lexer.GetNextToken().Value, "asd");
            // Assert that EOF is returned at the end of the stream
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.EOF);
        }
Beispiel #14
0
        public void TestLexerSubData()
        {
            String source     = "+ \n \nasd , hey";
            var    lexer      = new StringLexer(source);
            var    tokens     = lexer.LexSubData(new SourcePosition(1, 0, 4), new SourcePosition(2, 3, 8));
            var    enumerator = tokens.GetEnumerator();

            enumerator.MoveNext();

            // Ensure that the token has correct positions
            var token = enumerator.Current;

            Assert.AreEqual(token.StartPosition, new SourcePosition(2, 0, 5));
            Assert.AreEqual(token.EndPosition, new SourcePosition(2, 3, 8));
            // Make sure that the lexer did not parse further than the end of the subdata
            Assert.IsFalse(enumerator.MoveNext());
        }
Beispiel #15
0
 public CodeOwnersParserContext(string content)
 {
     _entries = new List <CodeOwnersEntry>();
     _lexer   = new StringLexer(content);
 }
Beispiel #16
0
        public void TestLexerTokenPositions()
        {
            String source = "+135.2 \n 'hello'\n\n";
            var lexer = new StringLexer(source);

            // Check that the initial token has correct start and end positions
            var token = lexer.GetNextToken();
            Assert.AreEqual(token.StartPosition, new SourcePosition(0, 0, 0));
            Assert.AreEqual(token.EndPosition, new SourcePosition(0, 1, 1));
            // Check that matching a number token reports expected result
            token = lexer.GetNextToken();
            Assert.AreEqual(token.StartPosition, new SourcePosition(0, 1, 1));
            Assert.AreEqual(token.EndPosition, new SourcePosition(0, 6, 6));
            // Check that a newline is handled correctly
            var whitespace = lexer.GetNextToken();
            Assert.AreEqual(whitespace.StartPosition, new SourcePosition(0, 6, 6));
            Assert.AreEqual(whitespace.EndPosition, new SourcePosition(1, 1, 9));
            // Check that name literal reports as expected
            token = lexer.GetNextToken();
            Assert.AreEqual(token.StartPosition, new SourcePosition(1, 1, 9));
            Assert.AreEqual(token.EndPosition, new SourcePosition(1, 8, 16));
            // Check that several newlines are handled correctly
            whitespace = lexer.GetNextToken();
            Assert.AreEqual(whitespace.StartPosition, new SourcePosition(1, 8, 16));
            Assert.AreEqual(whitespace.EndPosition, new SourcePosition(3, 0, 18));
            // Assert that EOF is returned at the end of the stream
            Assert.AreEqual(lexer.GetNextToken().Type, TokenType.EOF);
        }
Beispiel #17
0
    public static void Main()
    {
        string input = "154216";
        Lexer  L     = new IntLexer(input);

        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }


        //Задание 1
        System.Console.WriteLine("\nTask 1:");

        input = "0";
        Lexer L1 = new NewIntLexer(input);

        try
        {
            L1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "";
        L1    = new NewIntLexer(input);
        try
        {
            L1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "365";
        L1    = new NewIntLexer(input);
        try
        {
            L1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "-22";
        L1    = new NewIntLexer(input);
        try
        {
            L1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4-2";
        L1    = new NewIntLexer(input);
        try
        {
            L1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        //Задание 2
        System.Console.WriteLine("\nTask 2:");

        input = "";
        Lexer L2 = new IDLexer(input);

        try
        {
            L2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "d";
        L2    = new IDLexer(input);
        try
        {
            L2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "da236E0";
        L2    = new IDLexer(input);
        try
        {
            L2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "2abcd";
        L2    = new IDLexer(input);
        try
        {
            L2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }


        //Задание 3
        System.Console.WriteLine("\nTask 3:");

        input = "";
        Lexer L3 = new NewIntLexer2(input);

        try
        {
            L3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "25";
        L3    = new NewIntLexer2(input);
        try
        {
            L3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "-73060";
        L3    = new NewIntLexer2(input);
        try
        {
            L3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "012";
        L3    = new NewIntLexer2(input);
        try
        {
            L3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }


        // Задание 4
        System.Console.WriteLine("\nTask 4:");

        input = "a";
        Lexer L4 = new LetterDigitLexer(input);

        try
        {
            L4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a1b2c3";
        L4    = new LetterDigitLexer(input);
        try
        {
            L4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "aa2b3c";
        L4    = new LetterDigitLexer(input);
        try
        {
            L4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "r4c2n";
        L4    = new LetterDigitLexer(input);
        try
        {
            L4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "0a9u5";
        L4    = new LetterDigitLexer(input);
        try
        {
            L4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Задание 5
        System.Console.WriteLine("\nTask 5:");

        input = "c";
        Lexer L5 = new LettersLexer(input);

        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "c,a,b";
        L5    = new LettersLexer(input);
        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "c,a;b,5;k";
        L5    = new LettersLexer(input);
        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "ca,g,h";
        L5    = new LettersLexer(input);
        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a;b,c;d;e,";
        L5    = new LettersLexer(input);
        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "e,f,g;h";
        L5    = new LettersLexer(input);
        try
        {
            L5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Дополнительное задание 1
        System.Console.WriteLine("\nExtra Task 1:");

        input = "4";
        Lexer LL1 = new DigitsLexer(input);

        try
        {
            LL1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4 5   2";
        LL1   = new DigitsLexer(input);
        try
        {
            LL1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4,5   2";
        LL1   = new DigitsLexer(input);
        try
        {
            LL1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "1 2  3   4    5";
        LL1   = new DigitsLexer(input);
        try
        {
            LL1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "1 2 34  5  6";
        LL1   = new DigitsLexer(input);
        try
        {
            LL1.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Дополнительное задание 2
        System.Console.WriteLine("\nExtra Task 2:");

        input = "aa12c23dd1";
        Lexer LL2 = new DigitsLettersGroupsLexer(input);

        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4";
        LL2   = new DigitsLettersGroupsLexer(input);
        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4sd35r5d5t03ab";
        LL2   = new DigitsLettersGroupsLexer(input);
        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "ab0k";
        LL2   = new DigitsLettersGroupsLexer(input);
        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a4bcd5e";
        LL2   = new DigitsLettersGroupsLexer(input);
        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "ab4c,d5e";
        LL2   = new DigitsLettersGroupsLexer(input);
        try
        {
            LL2.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }


        // Дополнительное задание 3
        System.Console.WriteLine("\nExtra Task 3:");

        input = "1.0";
        Lexer LL3 = new DoubleLexer(input);

        try
        {
            LL3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "4";
        LL3   = new DoubleLexer(input);
        try
        {
            LL3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "55.";
        LL3   = new DoubleLexer(input);
        try
        {
            LL3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = ".3";
        LL3   = new DoubleLexer(input);
        try
        {
            LL3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "12.345";
        LL3   = new DoubleLexer(input);
        try
        {
            LL3.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Дополнительное задание 4
        System.Console.WriteLine("\nExtra Task 4:");

        input = "a'bcd'";
        Lexer LL4 = new StringLexer(input);

        try
        {
            LL4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'a'";
        LL4   = new StringLexer(input);
        try
        {
            LL4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'a'bcd";
        LL4   = new StringLexer(input);
        try
        {
            LL4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'a123bcd0'";
        LL4   = new StringLexer(input);
        try
        {
            LL4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'123";
        LL4   = new StringLexer(input);
        try
        {
            LL4.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Дополнительное задание 5
        System.Console.WriteLine("\nExtra Task 5:");

        input = "/*12345";
        Lexer LL5 = new CommentLexer(input);

        try
        {
            LL5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "12/*345*/";
        LL5   = new CommentLexer(input);
        try
        {
            LL5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "/*1234*/5";
        LL5   = new CommentLexer(input);
        try
        {
            LL5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "/*12345*/";
        LL5   = new CommentLexer(input);
        try
        {
            LL5.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        // Дополнительное сложное задание
        System.Console.WriteLine("\nHard Extra Task:");

        input = "a225";
        Lexer LLL = new IDListLexer(input);

        try
        {
            LLL.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a225.abcd.e00e00.k";
        LLL   = new IDListLexer(input);
        try
        {
            LLL.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a225.abcd e00e00.k";
        LLL   = new IDListLexer(input);
        try
        {
            LLL.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a225..abcd.e00e00.k";
        LLL   = new IDListLexer(input);
        try
        {
            LLL.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
Beispiel #18
0
    public static void TestExtra4()
    {
        System.Console.WriteLine("\n------------------");
        System.Console.WriteLine("\nTests for ExtraTask 4");
        string input = "'abc2'";
        Lexer  L     = new StringLexer(input);

        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'a'";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "''";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        System.Console.WriteLine("\nThere should be errors:");

        input = "'as'fg'";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "'a";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a'";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "a";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }

        input = "";
        L     = new StringLexer(input);
        try
        {
            L.Parse();
        }
        catch (LexerException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
Beispiel #19
0
    public static void Main()
    {
        System.Console.WriteLine("Testing IntLexer:");
        List <string> test_int = new List <string> {
            "1", "123", "+123", "-123", "+a", "+", "+1233f", " "
        };

        foreach (var str in test_int)
        {
            IntLexer L = new IntLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }

        System.Console.WriteLine("Testing IDLexer:");
        List <string> test_id = new List <string> {
            "a", "a1ad", "a___", "1", "", " "
        };

        foreach (var str in test_id)
        {
            IdLexer L = new IdLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }

        System.Console.WriteLine("Testing NoZeroIntLexer:");
        List <string> test_nozeroint = new List <string> {
            "1", "123", "+123", "-123", "+0", "0", "-0", " "
        };

        foreach (var str in test_nozeroint)
        {
            NoZeroIntLexer L = new NoZeroIntLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }


        System.Console.WriteLine("Testing LetterDigitLexer:");
        List <string> test_LetterDigitLexer = new List <string> {
            "a", "a1", "a1a", "1", "a11", "a1aa", "", " "
        };

        foreach (var str in test_LetterDigitLexer)
        {
            LetterDigitLexer L = new LetterDigitLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }

        System.Console.WriteLine("Testing ListLexer:");
        List <string> test_ListLexer = new List <string> {
            "a", "a,", "a;b", "a,b;", "ab", "", ",", " "
        };

        foreach (var str in test_ListLexer)
        {
            ListLexer L = new ListLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1} : {2}", str, L.Parse(), string.Join(",", L.chrs)));
        }


        System.Console.WriteLine("Testing DigitListLexer:");
        List <string> test_DigitListLexer = new List <string> {
            "1", "  1 2    3", "    ", "", "1 2 3 b"
        };

        foreach (var str in test_DigitListLexer)
        {
            DigitListLexer L = new DigitListLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1} : {2}", str, L.Parse(), string.Join(",", L.ints)));
        }

        System.Console.WriteLine("Testing GroupLexer:");
        List <string> test_GroupLexer = new List <string> {
            "aa12c23dd1", "aaa12c23dd1", "aa12c232dd1", " ", ""
        };

        foreach (var str in test_GroupLexer)
        {
            GroupLexer L = new GroupLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1} : {2}", str, L.Parse(), L.result));
        }


        System.Console.WriteLine("Testing RealLexer:");
        List <string> test_RealLexer = new List <string> {
            "+12", "12", "+0.1", "123.b", " ", ""
        };

        foreach (var str in test_RealLexer)
        {
            RealLexer L = new RealLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }

        System.Console.WriteLine("Testing StringLexer:");
        List <string> test_StringLexer = new List <string> {
            "'asd'", "''", "a", "'aaa'a", "'aaa", " ", ""
        };

        foreach (var str in test_StringLexer)
        {
            StringLexer L = new StringLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }


        System.Console.WriteLine("Testing CommentLexer:");
        List <string> test_CommentLexer = new List <string> {
            "/*ddd*/", "/**/", "/*fff", " ", ""
        };

        foreach (var str in test_CommentLexer)
        {
            CommentLexer L = new CommentLexer(str);
            System.Console.WriteLine(System.String.Format("{0} : {1}", str, L.Parse()));
        }
    }