public void Test_can_parse_binary_expression_for_two_parenthesized_expressions() { CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery( "(jon != 'stark' and john = 'snow') or (arya = 'stark' and sansa = 'stark')"); CmsqlParser.BinaryExpressionContext parseTree = (CmsqlParser.BinaryExpressionContext)cmsqlParser.expression(); ExpressionVisitor visitor = new ExpressionVisitor(); CmsqlQueryBinaryExpression binaryExpression = (CmsqlQueryBinaryExpression)visitor.VisitBinaryExpression(parseTree); binaryExpression.LeftExpression.Should().BeOfType <CmsqlQueryBinaryExpression>(); binaryExpression.LeftExpression.Should().NotBeNull(); binaryExpression.RightExpression.Should().BeOfType <CmsqlQueryBinaryExpression>(); binaryExpression.RightExpression.Should().NotBeNull(); CmsqlQueryBinaryExpression leftParenthesizedBinaryExpression = (CmsqlQueryBinaryExpression)binaryExpression.LeftExpression; leftParenthesizedBinaryExpression.LeftExpression.Should().BeOfType <CmsqlQueryCondition>(); leftParenthesizedBinaryExpression.LeftExpression.Should().NotBeNull(); leftParenthesizedBinaryExpression.RightExpression.Should().BeOfType <CmsqlQueryCondition>(); leftParenthesizedBinaryExpression.RightExpression.Should().NotBeNull(); CmsqlQueryBinaryExpression rightParenthesizedBinaryExpression = (CmsqlQueryBinaryExpression)binaryExpression.RightExpression; rightParenthesizedBinaryExpression.LeftExpression.Should().BeOfType <CmsqlQueryCondition>(); rightParenthesizedBinaryExpression.LeftExpression.Should().NotBeNull(); rightParenthesizedBinaryExpression.RightExpression.Should().BeOfType <CmsqlQueryCondition>(); rightParenthesizedBinaryExpression.RightExpression.Should().NotBeNull(); }
public override ICmsqlQueryExpression VisitBinaryExpression(CmsqlParser.BinaryExpressionContext context) { ExpressionVisitor expressionVisitor = new ExpressionVisitor(); return(new CmsqlQueryBinaryExpression { Operator = GetConditionalOperator(context.op.Type), LeftExpression = context.left.Accept(expressionVisitor), RightExpression = context.right.Accept(expressionVisitor) }); }
public void Test_can_parse_binary_expression_containing_parenthesized_expression_and_condition_expression(string queryExpression) { CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery(queryExpression); CmsqlParser.BinaryExpressionContext parseTree = (CmsqlParser.BinaryExpressionContext)cmsqlParser.expression(); ExpressionVisitor visitor = new ExpressionVisitor(); CmsqlQueryBinaryExpression binaryExpression = (CmsqlQueryBinaryExpression)visitor.VisitBinaryExpression(parseTree); binaryExpression.LeftExpression.Should().BeOfType <CmsqlQueryCondition>(); binaryExpression.LeftExpression.Should().NotBeNull(); binaryExpression.RightExpression.Should().BeOfType <CmsqlQueryCondition>(); binaryExpression.RightExpression.Should().NotBeNull(); }
public void Test_can_binary_expression_containing_two_condition_expressions() { CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("foo != 'bar' and bar = 'foo'"); CmsqlParser.BinaryExpressionContext parseTree = (CmsqlParser.BinaryExpressionContext)cmsqlParser.expression(); ExpressionVisitor visitor = new ExpressionVisitor(); CmsqlQueryBinaryExpression binaryExpression = (CmsqlQueryBinaryExpression)visitor.VisitBinaryExpression(parseTree); binaryExpression.LeftExpression.Should().BeOfType <CmsqlQueryCondition>(); binaryExpression.LeftExpression.Should().NotBeNull(); binaryExpression.RightExpression.Should().BeOfType <CmsqlQueryCondition>(); binaryExpression.RightExpression.Should().NotBeNull(); }