// $ANTLR start "expr" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:349:1: expr : (ae= addrExpr[ true ] | ^( VECTOR_EXPR ( expr )* ) | constant | arithmeticExpr | functionCall | parameter | count ); public HqlSqlWalker.expr_return expr() // throws RecognitionException [1] { HqlSqlWalker.expr_return retval = new HqlSqlWalker.expr_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IASTNode _first_0 = null; IASTNode _last = null; IASTNode VECTOR_EXPR139 = null; HqlSqlWalker.addrExpr_return ae = default(HqlSqlWalker.addrExpr_return); HqlSqlWalker.expr_return expr140 = default(HqlSqlWalker.expr_return); HqlSqlWalker.constant_return constant141 = default(HqlSqlWalker.constant_return); HqlSqlWalker.arithmeticExpr_return arithmeticExpr142 = default(HqlSqlWalker.arithmeticExpr_return); HqlSqlWalker.functionCall_return functionCall143 = default(HqlSqlWalker.functionCall_return); HqlSqlWalker.parameter_return parameter144 = default(HqlSqlWalker.parameter_return); HqlSqlWalker.count_return count145 = default(HqlSqlWalker.count_return); IASTNode VECTOR_EXPR139_tree=null; try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:350:2: (ae= addrExpr[ true ] | ^( VECTOR_EXPR ( expr )* ) | constant | arithmeticExpr | functionCall | parameter | count ) int alt48 = 7; switch ( input.LA(1) ) { case DOT: case INDEX_OP: case WEIRD_IDENT: case IDENT: { alt48 = 1; } break; case VECTOR_EXPR: { alt48 = 2; } break; case FALSE: case NULL: case TRUE: case NUM_INT: case NUM_DOUBLE: case NUM_FLOAT: case NUM_LONG: case JAVA_CONSTANT: case QUOTED_String: { alt48 = 3; } break; case CASE: case CASE2: case UNARY_MINUS: case BNOT: case BOR: case BXOR: case BAND: case PLUS: case MINUS: case STAR: case DIV: { alt48 = 4; } break; case AGGREGATE: case METHOD_CALL: { alt48 = 5; } break; case COLON: case PARAM: { alt48 = 6; } break; case COUNT: { alt48 = 7; } break; default: NoViableAltException nvae_d48s0 = new NoViableAltException("", 48, 0, input); throw nvae_d48s0; } switch (alt48) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:350:4: ae= addrExpr[ true ] { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_addrExpr_in_expr1746); ae = addrExpr(true); state.followingStackPointer--; adaptor.AddChild(root_0, ae.Tree); Resolve(((ae != null) ? ((IASTNode)ae.Tree) : null)); } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:351:4: ^( VECTOR_EXPR ( 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); VECTOR_EXPR139=(IASTNode)Match(input,VECTOR_EXPR,FOLLOW_VECTOR_EXPR_in_expr1758); VECTOR_EXPR139_tree = (IASTNode)adaptor.DupNode(VECTOR_EXPR139); root_1 = (IASTNode)adaptor.BecomeRoot(VECTOR_EXPR139_tree, root_1); if ( input.LA(1) == Token.DOWN ) { Match(input, Token.DOWN, null); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:351:19: ( expr )* do { int alt47 = 2; int LA47_0 = input.LA(1); if ( (LA47_0 == COUNT || LA47_0 == DOT || LA47_0 == FALSE || LA47_0 == NULL || LA47_0 == TRUE || LA47_0 == CASE || LA47_0 == AGGREGATE || LA47_0 == CASE2 || LA47_0 == INDEX_OP || LA47_0 == METHOD_CALL || LA47_0 == UNARY_MINUS || (LA47_0 >= VECTOR_EXPR && LA47_0 <= WEIRD_IDENT) || (LA47_0 >= NUM_INT && LA47_0 <= JAVA_CONSTANT) || (LA47_0 >= BNOT && LA47_0 <= DIV) || (LA47_0 >= COLON && LA47_0 <= IDENT)) ) { alt47 = 1; } switch (alt47) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:351:20: expr { _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_expr_in_expr1761); expr140 = expr(); state.followingStackPointer--; adaptor.AddChild(root_1, expr140.Tree); } break; default: goto loop47; } } while (true); loop47: ; // Stops C# compiler whining that label 'loop47' has no statements Match(input, Token.UP, null); }adaptor.AddChild(root_0, root_1);_last = _save_last_1; } } break; case 3 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:352:4: constant { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_constant_in_expr1770); constant141 = constant(); state.followingStackPointer--; adaptor.AddChild(root_0, constant141.Tree); } break; case 4 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:353:4: arithmeticExpr { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_arithmeticExpr_in_expr1775); arithmeticExpr142 = arithmeticExpr(); state.followingStackPointer--; adaptor.AddChild(root_0, arithmeticExpr142.Tree); } break; case 5 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:354:4: functionCall { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_functionCall_in_expr1780); functionCall143 = functionCall(); state.followingStackPointer--; adaptor.AddChild(root_0, functionCall143.Tree); } break; case 6 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:355:4: parameter { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_parameter_in_expr1792); parameter144 = parameter(); state.followingStackPointer--; adaptor.AddChild(root_0, parameter144.Tree); } break; case 7 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:356:4: count { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_count_in_expr1797); count145 = count(); state.followingStackPointer--; adaptor.AddChild(root_0, count145.Tree); } break; } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }
// $ANTLR start "expr" // HqlSqlWalker.g:373:1: expr : (ae= addrExpr[ true ] | ^( VECTOR_EXPR ( expr )* ) | constant | arithmeticExpr | functionCall | parameter | count ); public HqlSqlWalker.expr_return expr() // throws RecognitionException [1] { HqlSqlWalker.expr_return retval = new HqlSqlWalker.expr_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IASTNode _first_0 = null; IASTNode _last = null; IASTNode VECTOR_EXPR145 = null; HqlSqlWalker.addrExpr_return ae = default(HqlSqlWalker.addrExpr_return); HqlSqlWalker.expr_return expr146 = default(HqlSqlWalker.expr_return); HqlSqlWalker.constant_return constant147 = default(HqlSqlWalker.constant_return); HqlSqlWalker.arithmeticExpr_return arithmeticExpr148 = default(HqlSqlWalker.arithmeticExpr_return); HqlSqlWalker.functionCall_return functionCall149 = default(HqlSqlWalker.functionCall_return); HqlSqlWalker.parameter_return parameter150 = default(HqlSqlWalker.parameter_return); HqlSqlWalker.count_return count151 = default(HqlSqlWalker.count_return); IASTNode VECTOR_EXPR145_tree=null; try { // HqlSqlWalker.g:374:2: (ae= addrExpr[ true ] | ^( VECTOR_EXPR ( expr )* ) | constant | arithmeticExpr | functionCall | parameter | count ) int alt50 = 7; switch ( input.LA(1) ) { case DOT: case INDEX_OP: case WEIRD_IDENT: case IDENT: { alt50 = 1; } break; case VECTOR_EXPR: { alt50 = 2; } break; case FALSE: case NULL: case TRUE: case NUM_INT: case NUM_DOUBLE: case NUM_DECIMAL: case NUM_FLOAT: case NUM_LONG: case JAVA_CONSTANT: case QUOTED_String: { alt50 = 3; } break; case CASE: case CASE2: case UNARY_MINUS: case BNOT: case BOR: case BXOR: case BAND: case PLUS: case MINUS: case STAR: case DIV: { alt50 = 4; } break; case AGGREGATE: case METHOD_CALL: { alt50 = 5; } break; case COLON: case PARAM: { alt50 = 6; } break; case COUNT: { alt50 = 7; } break; default: NoViableAltException nvae_d50s0 = new NoViableAltException("", 50, 0, input); throw nvae_d50s0; } switch (alt50) { case 1 : // HqlSqlWalker.g:374:4: ae= addrExpr[ true ] { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_addrExpr_in_expr1866); ae = addrExpr(true); state.followingStackPointer--; adaptor.AddChild(root_0, ae.Tree); Resolve(((ae != null) ? ((IASTNode)ae.Tree) : null)); } break; case 2 : // HqlSqlWalker.g:375:4: ^( VECTOR_EXPR ( 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); VECTOR_EXPR145=(IASTNode)Match(input,VECTOR_EXPR,FOLLOW_VECTOR_EXPR_in_expr1878); VECTOR_EXPR145_tree = (IASTNode)adaptor.DupNode(VECTOR_EXPR145); root_1 = (IASTNode)adaptor.BecomeRoot(VECTOR_EXPR145_tree, root_1); if ( input.LA(1) == Token.DOWN ) { Match(input, Token.DOWN, null); // HqlSqlWalker.g:375:19: ( expr )* do { int alt49 = 2; int LA49_0 = input.LA(1); if ( (LA49_0 == COUNT || LA49_0 == DOT || LA49_0 == FALSE || LA49_0 == NULL || LA49_0 == TRUE || LA49_0 == CASE || LA49_0 == AGGREGATE || LA49_0 == CASE2 || LA49_0 == INDEX_OP || LA49_0 == METHOD_CALL || LA49_0 == UNARY_MINUS || (LA49_0 >= VECTOR_EXPR && LA49_0 <= WEIRD_IDENT) || (LA49_0 >= NUM_INT && LA49_0 <= JAVA_CONSTANT) || (LA49_0 >= BNOT && LA49_0 <= DIV) || (LA49_0 >= COLON && LA49_0 <= IDENT)) ) { alt49 = 1; } switch (alt49) { case 1 : // HqlSqlWalker.g:375:20: expr { _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_expr_in_expr1881); expr146 = expr(); state.followingStackPointer--; adaptor.AddChild(root_1, expr146.Tree); } break; default: goto loop49; } } while (true); loop49: ; // Stops C# compiler whining that label 'loop49' has no statements Match(input, Token.UP, null); }adaptor.AddChild(root_0, root_1);_last = _save_last_1; } } break; case 3 : // HqlSqlWalker.g:376:4: constant { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_constant_in_expr1890); constant147 = constant(); state.followingStackPointer--; adaptor.AddChild(root_0, constant147.Tree); } break; case 4 : // HqlSqlWalker.g:377:4: arithmeticExpr { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_arithmeticExpr_in_expr1895); arithmeticExpr148 = arithmeticExpr(); state.followingStackPointer--; adaptor.AddChild(root_0, arithmeticExpr148.Tree); } break; case 5 : // HqlSqlWalker.g:378:4: functionCall { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_functionCall_in_expr1900); functionCall149 = functionCall(); state.followingStackPointer--; adaptor.AddChild(root_0, functionCall149.Tree); } break; case 6 : // HqlSqlWalker.g:379:4: parameter { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_parameter_in_expr1912); parameter150 = parameter(); state.followingStackPointer--; adaptor.AddChild(root_0, parameter150.Tree); } break; case 7 : // HqlSqlWalker.g:380:4: count { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_count_in_expr1917); count151 = count(); state.followingStackPointer--; adaptor.AddChild(root_0, count151.Tree); } break; } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }