// $ANTLR start "selectExpr" // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:132:1: selectExpr : (e= selectAtom | count | ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) | methodCall | aggregate | c= constant | arithmeticExpr | param= PARAM | selectStatement ); public SqlGenerator.selectExpr_return selectExpr() // throws RecognitionException [1] { SqlGenerator.selectExpr_return retval = new SqlGenerator.selectExpr_return(); retval.Start = input.LT(1); IASTNode param = null; SqlGenerator.selectAtom_return e = default(SqlGenerator.selectAtom_return); SqlGenerator.constant_return c = default(SqlGenerator.constant_return); try { // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:133:2: (e= selectAtom | count | ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) | methodCall | aggregate | c= constant | arithmeticExpr | param= PARAM | selectStatement ) int alt23 = 9; switch ( input.LA(1) ) { case DOT: case ALIAS_REF: case SQL_TOKEN: case SELECT_EXPR: { alt23 = 1; } break; case COUNT: { alt23 = 2; } break; case CONSTRUCTOR: { alt23 = 3; } break; case METHOD_CALL: { alt23 = 4; } break; case AGGREGATE: { alt23 = 5; } break; case FALSE: case TRUE: case CONSTANT: case NUM_INT: case NUM_DOUBLE: case NUM_DECIMAL: case NUM_FLOAT: case NUM_LONG: case JAVA_CONSTANT: case QUOTED_String: case IDENT: { alt23 = 6; } break; case CASE: case CASE2: case UNARY_MINUS: case BNOT: case BOR: case BXOR: case BAND: case PLUS: case MINUS: case STAR: case DIV: { alt23 = 7; } break; case PARAM: { alt23 = 8; } break; case SELECT: { alt23 = 9; } break; default: if ( state.backtracking > 0 ) {state.failed = true; return retval;} NoViableAltException nvae_d23s0 = new NoViableAltException("", 23, 0, input); throw nvae_d23s0; } switch (alt23) { case 1 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:133:4: e= selectAtom { PushFollow(FOLLOW_selectAtom_in_selectExpr592); e = selectAtom(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(((e != null) ? ((IASTNode)e.Start) : null)); } } break; case 2 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:134:4: count { PushFollow(FOLLOW_count_in_selectExpr599); count(); state.followingStackPointer--; if (state.failed) return retval; } break; case 3 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:135:4: ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) { Match(input,CONSTRUCTOR,FOLLOW_CONSTRUCTOR_in_selectExpr605); if (state.failed) return retval; Match(input, Token.DOWN, null); if (state.failed) return retval; if ( input.LA(1) == DOT || input.LA(1) == IDENT ) { input.Consume(); state.errorRecovery = false;state.failed = false; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:135:32: ( selectColumn )+ int cnt22 = 0; do { int alt22 = 2; int LA22_0 = input.LA(1); if ( (LA22_0 == COUNT || LA22_0 == DOT || LA22_0 == FALSE || LA22_0 == SELECT || LA22_0 == TRUE || LA22_0 == CASE || LA22_0 == AGGREGATE || (LA22_0 >= CONSTRUCTOR && LA22_0 <= CASE2) || LA22_0 == METHOD_CALL || LA22_0 == UNARY_MINUS || (LA22_0 >= CONSTANT && LA22_0 <= JAVA_CONSTANT) || (LA22_0 >= BNOT && LA22_0 <= DIV) || (LA22_0 >= PARAM && LA22_0 <= IDENT) || LA22_0 == ALIAS_REF || LA22_0 == SQL_TOKEN || LA22_0 == SELECT_EXPR) ) { alt22 = 1; } switch (alt22) { case 1 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:135:34: selectColumn { PushFollow(FOLLOW_selectColumn_in_selectExpr617); selectColumn(); state.followingStackPointer--; if (state.failed) return retval; } break; default: if ( cnt22 >= 1 ) goto loop22; if ( state.backtracking > 0 ) {state.failed = true; return retval;} EarlyExitException eee22 = new EarlyExitException(22, input); throw eee22; } cnt22++; } while (true); loop22: ; // Stops C# compiler whinging that label 'loop22' has no statements Match(input, Token.UP, null); if (state.failed) return retval; } break; case 4 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:136:4: methodCall { PushFollow(FOLLOW_methodCall_in_selectExpr627); methodCall(); state.followingStackPointer--; if (state.failed) return retval; } break; case 5 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:137:4: aggregate { PushFollow(FOLLOW_aggregate_in_selectExpr632); aggregate(); state.followingStackPointer--; if (state.failed) return retval; } break; case 6 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:138:4: c= constant { PushFollow(FOLLOW_constant_in_selectExpr639); c = constant(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(((c != null) ? ((IASTNode)c.Start) : null)); } } break; case 7 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:139:4: arithmeticExpr { PushFollow(FOLLOW_arithmeticExpr_in_selectExpr646); arithmeticExpr(); state.followingStackPointer--; if (state.failed) return retval; } break; case 8 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:140:4: param= PARAM { param=(IASTNode)Match(input,PARAM,FOLLOW_PARAM_in_selectExpr653); if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(param); } } break; case 9 : // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g:142:4: selectStatement { if ( (state.backtracking==0) ) { Out("("); } PushFollow(FOLLOW_selectStatement_in_selectExpr663); selectStatement(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(")"); } } break; } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }
// $ANTLR start "selectExpr" // SqlGenerator.g:136:1: selectExpr : (e= selectAtom | count | ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) | methodCall | aggregate | c= constant | arithmeticExpr | parameter | selectStatement ); public SqlGenerator.selectExpr_return selectExpr() // throws RecognitionException [1] { SqlGenerator.selectExpr_return retval = new SqlGenerator.selectExpr_return(); retval.Start = input.LT(1); SqlGenerator.selectAtom_return e = default(SqlGenerator.selectAtom_return); SqlGenerator.constant_return c = default(SqlGenerator.constant_return); try { // SqlGenerator.g:137:2: (e= selectAtom | count | ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) | methodCall | aggregate | c= constant | arithmeticExpr | parameter | selectStatement ) int alt25 = 9; switch ( input.LA(1) ) { case DOT: case ALIAS_REF: case SQL_TOKEN: case SELECT_EXPR: { alt25 = 1; } break; case COUNT: { alt25 = 2; } break; case CONSTRUCTOR: { alt25 = 3; } break; case METHOD_CALL: { alt25 = 4; } break; case AGGREGATE: { alt25 = 5; } break; case FALSE: case TRUE: case CONSTANT: case NUM_INT: case NUM_DOUBLE: case NUM_DECIMAL: case NUM_FLOAT: case NUM_LONG: case JAVA_CONSTANT: case QUOTED_String: case IDENT: { alt25 = 6; } break; case CASE: case CASE2: case UNARY_MINUS: case BNOT: case BOR: case BXOR: case BAND: case PLUS: case MINUS: case STAR: case DIV: { alt25 = 7; } break; case PARAM: case NAMED_PARAM: { alt25 = 8; } break; case SELECT: { alt25 = 9; } break; default: if ( state.backtracking > 0 ) {state.failed = true; return retval;} NoViableAltException nvae_d25s0 = new NoViableAltException("", 25, 0, input); throw nvae_d25s0; } switch (alt25) { case 1 : // SqlGenerator.g:137:4: e= selectAtom { PushFollow(FOLLOW_selectAtom_in_selectExpr630); e = selectAtom(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(((e != null) ? ((IASTNode)e.Start) : null)); } } break; case 2 : // SqlGenerator.g:138:4: count { PushFollow(FOLLOW_count_in_selectExpr637); count(); state.followingStackPointer--; if (state.failed) return retval; } break; case 3 : // SqlGenerator.g:139:4: ^( CONSTRUCTOR ( DOT | IDENT ) ( selectColumn )+ ) { Match(input,CONSTRUCTOR,FOLLOW_CONSTRUCTOR_in_selectExpr643); if (state.failed) return retval; Match(input, Token.DOWN, null); if (state.failed) return retval; if ( input.LA(1) == DOT || input.LA(1) == IDENT ) { input.Consume(); state.errorRecovery = false;state.failed = false; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } // SqlGenerator.g:139:32: ( selectColumn )+ int cnt24 = 0; do { int alt24 = 2; int LA24_0 = input.LA(1); if ( (LA24_0 == COUNT || LA24_0 == DOT || LA24_0 == FALSE || LA24_0 == SELECT || LA24_0 == TRUE || LA24_0 == CASE || LA24_0 == AGGREGATE || (LA24_0 >= CONSTRUCTOR && LA24_0 <= CASE2) || LA24_0 == METHOD_CALL || LA24_0 == UNARY_MINUS || (LA24_0 >= CONSTANT && LA24_0 <= JAVA_CONSTANT) || LA24_0 == PARAM || (LA24_0 >= BNOT && LA24_0 <= DIV) || (LA24_0 >= QUOTED_String && LA24_0 <= IDENT) || LA24_0 == ALIAS_REF || LA24_0 == SQL_TOKEN || LA24_0 == SELECT_EXPR || LA24_0 == NAMED_PARAM) ) { alt24 = 1; } switch (alt24) { case 1 : // SqlGenerator.g:139:34: selectColumn { PushFollow(FOLLOW_selectColumn_in_selectExpr655); selectColumn(); state.followingStackPointer--; if (state.failed) return retval; } break; default: if ( cnt24 >= 1 ) goto loop24; if ( state.backtracking > 0 ) {state.failed = true; return retval;} EarlyExitException eee24 = new EarlyExitException(24, input); throw eee24; } cnt24++; } while (true); loop24: ; // Stops C# compiler whining that label 'loop24' has no statements Match(input, Token.UP, null); if (state.failed) return retval; } break; case 4 : // SqlGenerator.g:140:4: methodCall { PushFollow(FOLLOW_methodCall_in_selectExpr665); methodCall(); state.followingStackPointer--; if (state.failed) return retval; } break; case 5 : // SqlGenerator.g:141:4: aggregate { PushFollow(FOLLOW_aggregate_in_selectExpr670); aggregate(); state.followingStackPointer--; if (state.failed) return retval; } break; case 6 : // SqlGenerator.g:142:4: c= constant { PushFollow(FOLLOW_constant_in_selectExpr677); c = constant(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(((c != null) ? ((IASTNode)c.Start) : null)); } } break; case 7 : // SqlGenerator.g:143:4: arithmeticExpr { PushFollow(FOLLOW_arithmeticExpr_in_selectExpr684); arithmeticExpr(); state.followingStackPointer--; if (state.failed) return retval; } break; case 8 : // SqlGenerator.g:144:4: parameter { PushFollow(FOLLOW_parameter_in_selectExpr689); parameter(); state.followingStackPointer--; if (state.failed) return retval; } break; case 9 : // SqlGenerator.g:147:4: selectStatement { if ( (state.backtracking==0) ) { Out("("); } PushFollow(FOLLOW_selectStatement_in_selectExpr698); selectStatement(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) { Out(")"); } } break; } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }