Exemple #1
0
        public void GenArithmetic()
        {
            var comparison = new Token.TokenType[12] {
                Token.TokenType.TOKEN_SYMBOL,
                Token.TokenType.TOKEN_EQU,
                Token.TokenType.TOKEN_INT,
                Token.TokenType.TOKEN_ADD,
                Token.TokenType.TOKEN_INT,
                Token.TokenType.TOKEN_SUB,
                Token.TokenType.TOKEN_INT,
                Token.TokenType.TOKEN_DIV,
                Token.TokenType.TOKEN_INT,
                Token.TokenType.TOKEN_MUL,
                Token.TokenType.TOKEN_INT,
                Token.TokenType.TOKEN_END
            };

            _lexer.AddStatement("variable= 1 + 1 - 1 / 1 * 1");

            for (int i = 0; i < 12; i++)
            {
                var compare = comparison[i];
                var token   = _lexer.GetTokens().ElementAt(i);

                Assert.AreEqual(token.Type, compare);

                Console.WriteLine(i + "| " + token.Type + " == " + compare);
            }
        }
Exemple #2
0
        public void GenOpNode()
        {
            _lexer.AddStatement("1+1");
            _parser.LoadTokens(_lexer);
            var ast = _parser.GetAst();

            if (ast[0] is IntOpNode node)
            {
                if (node.Left is IntNode left)
                {
                    Assert.AreEqual(left.Value, 1);
                }
                if (node.Left is IntNode right)
                {
                    Assert.AreEqual(right.Value, 1);
                }
                Assert.AreEqual(node.OpType, IntOpNode.Type.Add);
            }
            else
            {
                Assert.Fail();
            }
        }