public static QsiExpressionNode VisitTupleExpr(TupleExprContext context) { QsiExpressionNode node; var leftNode = VisitTupleOfIdentifiers(context.l); if (context.tupleInMarker != null || context.literals != null || context.markers != null) { var invokeNode = new QsiInvokeExpressionNode(); invokeNode.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.In)); invokeNode.Parameters.Add(leftNode); if (context.tupleInMarker != null) { invokeNode.Parameters.Add(VisitBindParameter(context.tupleInMarker)); } if (context.literals != null) { invokeNode.Parameters.Add(VisitTupleOfTupleLiterals(context.literals)); } if (context.markers != null) { invokeNode.Parameters.Add(VisitTupleOfMarkersForTuples(context.markers)); } node = invokeNode; } else if (context.literal != null || context.tupleMarker != null) { var binaryNode = new QsiBinaryExpressionNode { Operator = context.op.GetText() }; binaryNode.Left.SetValue(leftNode); if (context.literal != null) { binaryNode.Right.SetValue(VisitTupleLiteral(context.literal)); } if (context.tupleMarker != null) { binaryNode.Right.SetValue(VisitBindParameter(context.tupleMarker)); } node = binaryNode; } else { node = new CqlTupleExpressionNode(); } CqlTree.PutContextSpan(node, context); return(node); }
public static QsiExpressionNode VisitColumnCondition(ColumnConditionContext context) { QsiExpressionNode node; var leftNode = VisitCident(context.l); if (context.element != null || context.field != null) { var memberAccessNode = new QsiMemberAccessExpressionNode(); memberAccessNode.Target.SetValue(leftNode); if (context.element != null) { var indexerNode = new CqlIndexerExpressionNode(); indexerNode.Indexer.SetValue(VisitTerm(context.element)); memberAccessNode.Member.SetValue(indexerNode); } else { memberAccessNode.Member.SetValue(new QsiFieldExpressionNode { Identifier = new QsiQualifiedIdentifier(context.field.id) }); } leftNode = memberAccessNode; } if (context.op != null) { var binaryNode = new QsiBinaryExpressionNode { Operator = context.op.GetText() }; binaryNode.Left.SetValue(leftNode); binaryNode.Right.SetValue(VisitTerm(context.r1)); node = binaryNode; } else { var invokeNode = new QsiInvokeExpressionNode(); invokeNode.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.In)); invokeNode.Parameters.Add(leftNode); invokeNode.Parameters.Add(VisitSingleColumnInValues(context.r2)); node = invokeNode; } CqlTree.PutContextSpan(node, context); return(node); }
public static QsiInvokeExpressionNode CreateInlineCast(CqlTypeExpressionNode type, QsiExpressionNode value) { var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.InlineCast)); node.Parameters.Add(value); node.Parameters.Add(type); return(node); }
public static QsiExpressionNode VisitIsNotNulExpr(IsNotNulExprContext context) { var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.IsNotNull)); node.Parameters.Add(VisitCident(context.l)); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiExpressionNode VisitCustomIndexExpression(CustomIndexExpressionContext context) { var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.Expr)); node.Parameters.Add(VisitIdxName(context.idxName())); node.Parameters.Add(VisitTerm(context.term())); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiExpressionNode VisitInExpr2(InExpr2Context context) { var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.In)); node.Parameters.Add(VisitCident(context.l)); node.Parameters.Add(VisitSingleColumnInValues(context.r)); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiExpressionNode VisitTokenExpr(TokenExprContext context) { var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(CqlKnownFunction.TokenCompare)); node.Parameters.Add(VisitTupleOfIdentifiers(context.l)); node.Parameters.Add(TreeHelper.CreateLiteral(context.op.GetText())); node.Parameters.Add(VisitTerm(context.r)); CqlTree.PutContextSpan(node, context); return(node); }
public static QsiExpressionNode VisitContainsExpr(ContainsExprContext context) { var functionName = context.op.key ? CqlKnownFunction.ContainsKey : CqlKnownFunction.Contains; var node = new QsiInvokeExpressionNode(); node.Member.SetValue(TreeHelper.CreateFunction(functionName)); node.Parameters.Add(VisitCident(context.l)); node.Parameters.Add(VisitTerm(context.r)); CqlTree.PutContextSpan(node, context); return(node); }