public override object VisitGroupby_clause([NotNull] SqlParser.Groupby_clauseContext context) { var groupby = new GroupbyClause(); if (context.expr() != null && context.expr().Length > 0) { groupby.Columns = new List <ColumnExpression>(); foreach (var expr in context.expr()) { var columnExpression = VisitExpr(expr) as ColumnExpression; if (columnExpression == null) { throw new SQLParseException("Only column could be set in Group by clause."); } groupby.Columns.Add(columnExpression); } } if (context.having_clause() != null) { groupby.Having = (IExpression)VisitExpr(context.having_clause().expr()); } return(groupby); }
/// <summary> /// Visit a parse tree produced by <see cref="SqlParser.groupby_clause"/>. /// <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 VisitGroupby_clause([NotNull] SqlParser.Groupby_clauseContext context) { return(VisitChildren(context)); }