Exemplo n.º 1
0
        public void ParseACharacter()
        {
            Lexer lexer = new Lexer("\\a");
            Token token;

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual("a", token.Value);
            Assert.AreEqual(TokenType.Character, token.TokenType);

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 2
0
        public void ParseDispatchMacros()
        {
            string macros = "#' #( #{ #^ #_ ~@";
            Lexer lexer = new Lexer(macros);

            Token token;

            foreach (string macro in macros.Split(' '))
            {
                token = lexer.NextToken();
                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Macro, token.TokenType);
                Assert.AreEqual(macro, token.Value);
            }

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 3
0
        public void ParseBrackets()
        {
            Lexer lexer = new Lexer("[]");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.TokenType);
            Assert.AreEqual("[", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.TokenType);
            Assert.AreEqual("]", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 4
0
        public void RaiseIfStringIsUnclosed()
        {
            Lexer lexer = new Lexer("\"Unclosed");

            lexer.NextToken();
        }
Exemplo n.º 5
0
        public void RaiseIfInvalidCharacter()
        {
            Lexer lexer = new Lexer("\\foo");
            Token token;

            token = lexer.NextToken();
        }
Exemplo n.º 6
0
        public void PushToken()
        {
            Lexer lexer = new Lexer(string.Empty);

            Token token = new Token { Value = "foo", TokenType = TokenType.Symbol };

            lexer.PushToken(token);

            Token retrieved = lexer.NextToken();

            Assert.IsNotNull(retrieved);
            Assert.AreEqual("foo", retrieved.Value);
            Assert.AreEqual(TokenType.Symbol, retrieved.TokenType);
        }
Exemplo n.º 7
0
        public void ParseSymbolWithSurroundingSpaces()
        {
            Lexer lexer = new Lexer("  foo  ");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 8
0
        public void ParseSymbolWithQuestionMark()
        {
            Lexer lexer = new Lexer("foo?");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 9
0
        public void ParseKeyword()
        {
            Lexer lexer = new Lexer(":foo");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 10
0
        public void ParseStringWithEmbeddedDoubleQuotes()
        {
            Lexer lexer = new Lexer("\"foo \\\"bar\\\"\"");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 11
0
        public void ParseString()
        {
            Lexer lexer = new Lexer("\"foo bar\"");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 12
0
        public void ParseSpecialNames()
        {
            string names = "+ - * / > < = == >= <=";
            Lexer lexer = new Lexer(names);
            Token token;

            foreach (string name in names.Split(' '))
            {
                token = lexer.NextToken();

                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Symbol, token.TokenType);
                Assert.AreEqual(name, token.Value);
            }

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 13
0
        public void ParseSimbolWithHyphen()
        {
            Lexer lexer = new Lexer("foo-bar");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Symbol, token.TokenType);
            Assert.AreEqual("foo-bar", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 14
0
        public void ParseSeparatorCharacters()
        {
            string chars = ",";
            Lexer lexer = new Lexer(chars);

            Token token;

            foreach (char ch in chars)
            {
                token = lexer.NextToken();
                Assert.IsNotNull(token);
                Assert.AreEqual(TokenType.Separator, token.TokenType);
                Assert.AreEqual(ch.ToString(), token.Value);
            }

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 15
0
        public void ParseParenthesis()
        {
            Lexer lexer = new Lexer("()");

            Token token = lexer.NextToken();

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

            token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 16
0
        public void ParseSymbolWithDots()
        {
            Lexer lexer = new Lexer("System.foo.bar");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Symbol, token.TokenType);
            Assert.AreEqual("System.foo.bar", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 17
0
        public void ParseInteger()
        {
            Lexer lexer = new Lexer("123");

            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
Exemplo n.º 18
0
 public Parser(Lexer lexer)
 {
     this.lexer = lexer;
 }