Пример #1
0
        public void TestCheckSyntax()
        {
            Token        tmpToken;
            LineContext  tmpContext;
            List <Token> tokens = new List <Token>();

            tmpToken       = new Token(Global.DataType.IDENTIFIER);
            tmpToken.value = "print";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.OPEN_ROUND_BRACKET);
            tokens.Add(tmpToken);
            tmpToken       = new Token(Global.DataType.STRING);
            tmpToken.value = "\"hoi\"";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.CLOSE_ROUND_BRACKET);
            tokens.Add(tmpToken);

            List <LineContext> context = new List <LineContext>();

            tmpContext = new LineContext(1, 1);
            context.Add(tmpContext);
            tmpContext = new LineContext(1, 1);
            context.Add(tmpContext);
            tmpContext = new LineContext(1, 1);
            context.Add(tmpContext);
            tmpContext = new LineContext(1, 1);
            context.Add(tmpContext);

            SyntaxAnalyzer syntaxAnalyer = new SyntaxAnalyzer();
            ASTNode        result        = syntaxAnalyer.CheckSyntax(tokens, context);

            Assert.AreEqual(Global.ASTType.BASE, result.GetType());
            Assert.AreEqual(Global.ASTType.FUNCTION_CALL, result.GetChildren()[0].GetType());
            Assert.AreEqual("print", result.GetChildren()[0].GetName());
            Assert.AreEqual("\"hoi\"", result.GetChildren()[0].GetChildren()[0].GetName());
        }