private StatementType AnalyseExpression(IExpressionNode node)
        {
            switch (node.GetNodeType())
            {
            case NodeType.LogicalExpression:
                var logicalNode = (LogicalExpressionNode)node;
                return(Analyze(logicalNode));

            case NodeType.ComparisonExpression:
                var comparisonNode = (ComparisonExpressionNode)node;
                return(Analyze(comparisonNode));

            case NodeType.ArthimetricExpression:
                var arthimetric = (ArthimetricExpressionNode)node;
                return(Analyze(arthimetric));

            case NodeType.TextConcatination:
                var textNode = (TextConcatinationNode)node;
                return(Analyze(textNode));

            case NodeType.Literal:
            case NodeType.Identifier:
                return(StatementTypeEvaluator.GetStatementType(node));
            }

            throw new UnknownNodeTypeException(string.Format("We don't know what to do with this node: {0}", node.GetNodeType()));
        }
        public void GetStatementResulTypetDoubleTest()
        {
            var lhs = new LiteralNode(Location.Empty, "10.0", QValueType.Double);
            var rhs = new LiteralNode(Location.Empty, "5.0", QValueType.Double);

            Assert.AreEqual(QValueType.Double, StatementTypeEvaluator.GetStatementResultType(lhs, rhs));
        }
        public void GetStatementResultTypeIntTest()
        {
            var lhs = new LiteralNode(Location.Empty, "10.0", QValueType.Integer);
            var rhs = new LiteralNode(Location.Empty, "5", QValueType.Integer);

            Assert.AreEqual(QValueType.Integer, StatementTypeEvaluator.GetStatementResultType(lhs, rhs));
        }
Пример #4
0
 public QValueType GetQValueType()
 {
     return(StatementTypeEvaluator.GetStatementResultType(Left, Right));
 }