private static WhereCondition GenerateStatementNode(SelectSQLParser.WhereStmtContext whereStmt) { var andOr = whereStmt.AND_OR(); var subWhereStmts = whereStmt.whereStmt(); var whereCondition = whereStmt.whereCondition(); if (whereCondition != null && !whereCondition.IsEmpty) //普通单项where条件 { return(GenerateConditionNode(whereCondition)); } if (subWhereStmts == null || subWhereStmts.Length < 2) { throw new MissingWhereConditionException(); } //父节点,非单项where条件 var stmtNode = new WhereCondition(WhereConditionNodeType.Statement); var leftWhereStmt = subWhereStmts.First(); var rightWhereStmt = subWhereStmts.Last(); stmtNode.Statement_LeftNode = GenerateStatementNode(leftWhereStmt); stmtNode.Statement_Operator = andOr.GetText(); stmtNode.Statement_RightNode = GenerateStatementNode(rightWhereStmt); return(stmtNode); }
/// <summary> /// Visit a parse tree produced by <see cref="SelectSQLParser.whereStmt"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitWhereStmt([NotNull] SelectSQLParser.WhereStmtContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="SelectSQLParser.whereStmt"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitWhereStmt([NotNull] SelectSQLParser.WhereStmtContext context) { }