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)); }
public QValueType GetQValueType() { return(StatementTypeEvaluator.GetStatementResultType(Left, Right)); }