// $ANTLR start "groupClause" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:147:1: groupClause : ^( GROUP ( expr )+ ( ^( HAVING logicalExpr ) )? ) ; public HqlSqlWalker.groupClause_return groupClause() // throws RecognitionException [1] { HqlSqlWalker.groupClause_return retval = new HqlSqlWalker.groupClause_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IASTNode _first_0 = null; IASTNode _last = null; IASTNode GROUP32 = null; IASTNode HAVING34 = null; HqlSqlWalker.expr_return expr33 = default(HqlSqlWalker.expr_return); HqlSqlWalker.logicalExpr_return logicalExpr35 = default(HqlSqlWalker.logicalExpr_return); IASTNode GROUP32_tree=null; IASTNode HAVING34_tree=null; try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:2: ( ^( GROUP ( expr )+ ( ^( HAVING logicalExpr ) )? ) ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:4: ^( GROUP ( expr )+ ( ^( HAVING logicalExpr ) )? ) { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); { IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); GROUP32=(IASTNode)Match(input,GROUP,FOLLOW_GROUP_in_groupClause656); GROUP32_tree = (IASTNode)adaptor.DupNode(GROUP32); root_1 = (IASTNode)adaptor.BecomeRoot(GROUP32_tree, root_1); HandleClauseStart( GROUP ); Match(input, Token.DOWN, null); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:44: ( expr )+ int cnt15 = 0; do { int alt15 = 2; int LA15_0 = input.LA(1); if ( (LA15_0 == COUNT || LA15_0 == DOT || LA15_0 == FALSE || LA15_0 == NULL || LA15_0 == TRUE || LA15_0 == CASE || LA15_0 == AGGREGATE || LA15_0 == CASE2 || LA15_0 == INDEX_OP || LA15_0 == METHOD_CALL || LA15_0 == UNARY_MINUS || (LA15_0 >= VECTOR_EXPR && LA15_0 <= WEIRD_IDENT) || (LA15_0 >= NUM_INT && LA15_0 <= JAVA_CONSTANT) || (LA15_0 >= BNOT && LA15_0 <= DIV) || (LA15_0 >= COLON && LA15_0 <= IDENT)) ) { alt15 = 1; } switch (alt15) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:45: expr { _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_expr_in_groupClause661); expr33 = expr(); state.followingStackPointer--; adaptor.AddChild(root_1, expr33.Tree); } break; default: if ( cnt15 >= 1 ) goto loop15; EarlyExitException eee15 = new EarlyExitException(15, input); throw eee15; } cnt15++; } while (true); loop15: ; // Stops C# compiler whinging that label 'loop15' has no statements // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:52: ( ^( HAVING logicalExpr ) )? int alt16 = 2; int LA16_0 = input.LA(1); if ( (LA16_0 == HAVING) ) { alt16 = 1; } switch (alt16) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:148:54: ^( HAVING logicalExpr ) { _last = (IASTNode)input.LT(1); { IASTNode _save_last_2 = _last; IASTNode _first_2 = null; IASTNode root_2 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); HAVING34=(IASTNode)Match(input,HAVING,FOLLOW_HAVING_in_groupClause668); HAVING34_tree = (IASTNode)adaptor.DupNode(HAVING34); root_2 = (IASTNode)adaptor.BecomeRoot(HAVING34_tree, root_2); Match(input, Token.DOWN, null); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_logicalExpr_in_groupClause670); logicalExpr35 = logicalExpr(); state.followingStackPointer--; adaptor.AddChild(root_2, logicalExpr35.Tree); Match(input, Token.UP, null); adaptor.AddChild(root_1, root_2);_last = _save_last_2; } } break; } Match(input, Token.UP, null); adaptor.AddChild(root_0, root_1);_last = _save_last_1; } } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }
// $ANTLR start "groupClause" // HqlSqlWalker.g:158:1: groupClause : ^( GROUP ( expr )+ ) ; public HqlSqlWalker.groupClause_return groupClause() // throws RecognitionException [1] { HqlSqlWalker.groupClause_return retval = new HqlSqlWalker.groupClause_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IASTNode _first_0 = null; IASTNode _last = null; IASTNode GROUP36 = null; HqlSqlWalker.expr_return expr37 = default(HqlSqlWalker.expr_return); IASTNode GROUP36_tree=null; try { // HqlSqlWalker.g:159:2: ( ^( GROUP ( expr )+ ) ) // HqlSqlWalker.g:159:4: ^( GROUP ( expr )+ ) { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); { IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); GROUP36=(IASTNode)Match(input,GROUP,FOLLOW_GROUP_in_groupClause728); GROUP36_tree = (IASTNode)adaptor.DupNode(GROUP36); root_1 = (IASTNode)adaptor.BecomeRoot(GROUP36_tree, root_1); HandleClauseStart( GROUP ); Match(input, Token.DOWN, null); // HqlSqlWalker.g:159:44: ( expr )+ int cnt18 = 0; do { int alt18 = 2; int LA18_0 = input.LA(1); if ( (LA18_0 == COUNT || LA18_0 == DOT || LA18_0 == FALSE || LA18_0 == NULL || LA18_0 == TRUE || LA18_0 == CASE || LA18_0 == AGGREGATE || LA18_0 == CASE2 || LA18_0 == INDEX_OP || LA18_0 == METHOD_CALL || LA18_0 == UNARY_MINUS || (LA18_0 >= VECTOR_EXPR && LA18_0 <= WEIRD_IDENT) || (LA18_0 >= NUM_INT && LA18_0 <= JAVA_CONSTANT) || (LA18_0 >= BNOT && LA18_0 <= DIV) || (LA18_0 >= COLON && LA18_0 <= IDENT)) ) { alt18 = 1; } switch (alt18) { case 1 : // HqlSqlWalker.g:159:45: expr { _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_expr_in_groupClause733); expr37 = expr(); state.followingStackPointer--; adaptor.AddChild(root_1, expr37.Tree); } break; default: if ( cnt18 >= 1 ) goto loop18; EarlyExitException eee18 = new EarlyExitException(18, input); throw eee18; } cnt18++; } while (true); loop18: ; // Stops C# compiler whining that label 'loop18' has no statements Match(input, Token.UP, null); adaptor.AddChild(root_0, root_1);_last = _save_last_1; } } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }