Пример #1
0
 public void CreateWithString()
 {
     using (Lexer lexer = new Lexer("text"))
     {
         Assert.IsNotNull(lexer);
     }
 }
Пример #2
0
        public void ProcessEndOfLine()
        {
            Lexer lexer = new Lexer("\r\n");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.EndOfLine, token.TokenType);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #3
0
        public void ProcessClassVariableName()
        {
            Lexer lexer = new Lexer("@@name");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Name, token.TokenType);
            Assert.AreEqual("@@name", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #4
0
        public void ProcessBoolean()
        {
            Lexer lexer = new Lexer("true false");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Boolean, token.TokenType);
            Assert.AreEqual("true", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Boolean, token.TokenType);
            Assert.AreEqual("false", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #5
0
        public void RaiseIfOnlyAts()
        {
            Lexer lexer = new Lexer("@@");

            Token token;

            token = lexer.NextToken();
        }
Пример #6
0
        public void ProcessStringWithBackslashes()
        {
            Lexer lexer = new Lexer("\"\\\\\\r\\n\\t\\f\\s\\v\\\\\"");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.String, token.TokenType);
            Assert.AreEqual("\\\r\n\t\f \v\\", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #7
0
        public void ProcessString()
        {
            Lexer lexer = new Lexer("\"foo\"");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.String, token.TokenType);
            Assert.AreEqual("foo", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #8
0
        public void ProcessSeparators()
        {
            string separators = "()[]{},:;";
            Lexer lexer = new Lexer(separators);

            Token token;

            foreach (char ch in separators)
            {
                token = lexer.NextToken();

                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Separator, token.TokenType);
                Assert.AreEqual(ch.ToString(), token.Value);
            }

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #9
0
        public void ProcessIntegerWithSpaces()
        {
            Lexer lexer = new Lexer(" 123 ");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Integer, token.TokenType);
            Assert.AreEqual("123", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #10
0
        public void RaiseIfUnclosedQuotedString()
        {
            Lexer lexer = new Lexer("'bar");

            Token token;

            token = lexer.NextToken();
        }
Пример #11
0
        public void ProcessOneCharOperators()
        {
            string operators = "!+~-*/%&<^>|.=\\";
            Lexer lexer = new Lexer(operators);

            Token token;

            foreach (char ch in operators)
            {
                token = lexer.NextToken();

                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Operator, token.TokenType);
                Assert.AreEqual(ch.ToString(), token.Value);
            }

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #12
0
        public void ProcessNameWithUnderscore()
        {
            Lexer lexer = new Lexer("my_name");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Name, token.TokenType);
            Assert.AreEqual("my_name", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #13
0
        public void ProcessNameEndOfLineName()
        {
            Lexer lexer = new Lexer("foo\r\nbar");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Name, token.TokenType);
            Assert.AreEqual("foo", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.EndOfLine, token.TokenType);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Name, token.TokenType);
            Assert.AreEqual("bar", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #14
0
        public void CreateWithTextReader()
        {
            Lexer lexer = new Lexer(new StringReader("text"));

            Assert.IsNotNull(lexer);
        }
Пример #15
0
        public void ProcessMultiCharOperators()
        {
            string operators = "** >> << <= >= == === != =~ !~ <=> && || .. ... **= *= /= %= += -= <<= >>= &&= &= ||= |= ^=";
            string[] otherOperators = new string[] { "**", ">>", "<<", "<=", ">=", "==", "===", "!=", "=~", "!~", "<=>", "&&", "||", "..", "...", "**=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&&=", "&=", "||=", "|=", "^=" };

            Lexer lexer = new Lexer(operators);

            Token token;

            foreach (string op in otherOperators)
            {
                token = lexer.NextToken();

                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Operator, token.TokenType);
                Assert.AreEqual(op, token.Value);
            }

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #16
0
 public void RaiseIfTextIsNull()
 {
     Lexer lexer = new Lexer((string)null);
 }
Пример #17
0
 public void RaiseIfTextReaderIsNull()
 {
     Lexer lexer = new Lexer((TextReader)null);
 }
Пример #18
0
        public void ProcessQuotedString()
        {
            Lexer lexer = new Lexer("'bar'");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.String, token.TokenType);
            Assert.AreEqual("bar", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #19
0
        public void RaiseIfUnclosedString()
        {
            Lexer lexer = new Lexer("\"foo");

            Token token;

            token = lexer.NextToken();
        }
Пример #20
0
        public void ProcessQuotedStringWithSuperfluosBackslash()
        {
            Lexer lexer = new Lexer("'bar\\foo'");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.String, token.TokenType);
            Assert.AreEqual("bar\\foo", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #21
0
        public void ProcessReal()
        {
            Lexer lexer = new Lexer("12.34");

            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Real, token.TokenType);
            Assert.AreEqual("12.34", token.Value);

            token = lexer.NextToken();

            Assert.IsNull(token);
        }
Пример #22
0
 public Parser(Lexer lexer)
 {
     this.lexer = lexer;
 }