// $ANTLR start "primaryExpression" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:537:1: primaryExpression : ( identPrimary ( options {greedy=true; } : DOT 'class' )? | constant | COLON identifier | OPEN ( expressionOrVector | subQuery ) CLOSE | PARAM ( NUM_INT )? ); public HqlParser.primaryExpression_return primaryExpression() // throws RecognitionException [1] { HqlParser.primaryExpression_return retval = new HqlParser.primaryExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken DOT230 = null; IToken string_literal231 = null; IToken COLON233 = null; IToken OPEN235 = null; IToken CLOSE238 = null; IToken PARAM239 = null; IToken NUM_INT240 = null; HqlParser.identPrimary_return identPrimary229 = default(HqlParser.identPrimary_return); HqlParser.constant_return constant232 = default(HqlParser.constant_return); HqlParser.identifier_return identifier234 = default(HqlParser.identifier_return); HqlParser.expressionOrVector_return expressionOrVector236 = default(HqlParser.expressionOrVector_return); HqlParser.subQuery_return subQuery237 = default(HqlParser.subQuery_return); IASTNode DOT230_tree=null; IASTNode string_literal231_tree=null; IASTNode COLON233_tree=null; IASTNode OPEN235_tree=null; IASTNode CLOSE238_tree=null; IASTNode PARAM239_tree=null; IASTNode NUM_INT240_tree=null; try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:538:2: ( identPrimary ( options {greedy=true; } : DOT 'class' )? | constant | COLON identifier | OPEN ( expressionOrVector | subQuery ) CLOSE | PARAM ( NUM_INT )? ) int alt81 = 5; switch ( input.LA(1) ) { case AVG: case COUNT: case ELEMENTS: case INDICES: case MAX: case MIN: case SUM: case IDENT: { alt81 = 1; } break; case FALSE: case NULL: case TRUE: case EMPTY: case NUM_INT: case NUM_DOUBLE: case NUM_FLOAT: case NUM_LONG: case QUOTED_String: { alt81 = 2; } break; case COLON: { alt81 = 3; } break; case OPEN: { alt81 = 4; } break; case PARAM: { alt81 = 5; } break; default: NoViableAltException nvae_d81s0 = new NoViableAltException("", 81, 0, input); throw nvae_d81s0; } switch (alt81) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:538:6: identPrimary ( options {greedy=true; } : DOT 'class' )? { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_identPrimary_in_primaryExpression2775); identPrimary229 = identPrimary(); state.followingStackPointer--; adaptor.AddChild(root_0, identPrimary229.Tree); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:538:19: ( options {greedy=true; } : DOT 'class' )? int alt78 = 2; int LA78_0 = input.LA(1); if ( (LA78_0 == DOT) ) { int LA78_1 = input.LA(2); if ( (LA78_1 == CLASS) ) { alt78 = 1; } } switch (alt78) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:538:46: DOT 'class' { DOT230=(IToken)Match(input,DOT,FOLLOW_DOT_in_primaryExpression2788); DOT230_tree = (IASTNode)adaptor.Create(DOT230); root_0 = (IASTNode)adaptor.BecomeRoot(DOT230_tree, root_0); string_literal231=(IToken)Match(input,CLASS,FOLLOW_CLASS_in_primaryExpression2791); string_literal231_tree = (IASTNode)adaptor.Create(string_literal231); adaptor.AddChild(root_0, string_literal231_tree); } break; } } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:539:6: constant { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_constant_in_primaryExpression2801); constant232 = constant(); state.followingStackPointer--; adaptor.AddChild(root_0, constant232.Tree); } break; case 3 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:540:6: COLON identifier { root_0 = (IASTNode)adaptor.GetNilNode(); COLON233=(IToken)Match(input,COLON,FOLLOW_COLON_in_primaryExpression2808); COLON233_tree = (IASTNode)adaptor.Create(COLON233); root_0 = (IASTNode)adaptor.BecomeRoot(COLON233_tree, root_0); PushFollow(FOLLOW_identifier_in_primaryExpression2811); identifier234 = identifier(); state.followingStackPointer--; adaptor.AddChild(root_0, identifier234.Tree); } break; case 4 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:542:6: OPEN ( expressionOrVector | subQuery ) CLOSE { root_0 = (IASTNode)adaptor.GetNilNode(); OPEN235=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_primaryExpression2820); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:542:12: ( expressionOrVector | subQuery ) int alt79 = 2; int LA79_0 = input.LA(1); if ( ((LA79_0 >= ALL && LA79_0 <= ANY) || LA79_0 == AVG || LA79_0 == COUNT || LA79_0 == ELEMENTS || (LA79_0 >= EXISTS && LA79_0 <= FALSE) || LA79_0 == INDICES || (LA79_0 >= MAX && LA79_0 <= MIN) || (LA79_0 >= NOT && LA79_0 <= NULL) || (LA79_0 >= SOME && LA79_0 <= TRUE) || LA79_0 == CASE || LA79_0 == EMPTY || (LA79_0 >= NUM_INT && LA79_0 <= NUM_LONG) || LA79_0 == OPEN || LA79_0 == BNOT || (LA79_0 >= PLUS && LA79_0 <= MINUS) || (LA79_0 >= COLON && LA79_0 <= IDENT)) ) { alt79 = 1; } else if ( (LA79_0 == EOF || LA79_0 == FROM || LA79_0 == GROUP || LA79_0 == ORDER || LA79_0 == SELECT || LA79_0 == UNION || LA79_0 == WHERE || LA79_0 == CLOSE) ) { alt79 = 2; } else { NoViableAltException nvae_d79s0 = new NoViableAltException("", 79, 0, input); throw nvae_d79s0; } switch (alt79) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:542:13: expressionOrVector { PushFollow(FOLLOW_expressionOrVector_in_primaryExpression2824); expressionOrVector236 = expressionOrVector(); state.followingStackPointer--; adaptor.AddChild(root_0, expressionOrVector236.Tree); } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:542:34: subQuery { PushFollow(FOLLOW_subQuery_in_primaryExpression2828); subQuery237 = subQuery(); state.followingStackPointer--; adaptor.AddChild(root_0, subQuery237.Tree); } break; } CLOSE238=(IToken)Match(input,CLOSE,FOLLOW_CLOSE_in_primaryExpression2831); } break; case 5 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:543:6: PARAM ( NUM_INT )? { root_0 = (IASTNode)adaptor.GetNilNode(); PARAM239=(IToken)Match(input,PARAM,FOLLOW_PARAM_in_primaryExpression2839); PARAM239_tree = (IASTNode)adaptor.Create(PARAM239); root_0 = (IASTNode)adaptor.BecomeRoot(PARAM239_tree, root_0); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:543:13: ( NUM_INT )? int alt80 = 2; int LA80_0 = input.LA(1); if ( (LA80_0 == NUM_INT) ) { alt80 = 1; } switch (alt80) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:543:14: NUM_INT { NUM_INT240=(IToken)Match(input,NUM_INT,FOLLOW_NUM_INT_in_primaryExpression2843); NUM_INT240_tree = (IASTNode)adaptor.Create(NUM_INT240); adaptor.AddChild(root_0, NUM_INT240_tree); } break; } } break; } retval.Stop = input.LT(-1); retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop); } catch (RecognitionException re) { ReportError(re); Recover(input,re); // Conversion of the second argument necessary, but harmless retval.Tree = (IASTNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re); } finally { } return retval; }
// $ANTLR start "primaryExpression" // Hql.g:555:1: primaryExpression : ( identPrimary ( options {greedy=true; } : DOT 'class' )? | constant | COLON identifier | OPEN ( expressionOrVector | subQuery ) CLOSE | PARAM ( NUM_INT )? ); public HqlParser.primaryExpression_return primaryExpression() // throws RecognitionException [1] { HqlParser.primaryExpression_return retval = new HqlParser.primaryExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken DOT243 = null; IToken string_literal244 = null; IToken COLON246 = null; IToken OPEN248 = null; IToken CLOSE251 = null; IToken PARAM252 = null; IToken NUM_INT253 = null; HqlParser.identPrimary_return identPrimary242 = default(HqlParser.identPrimary_return); HqlParser.constant_return constant245 = default(HqlParser.constant_return); HqlParser.identifier_return identifier247 = default(HqlParser.identifier_return); HqlParser.expressionOrVector_return expressionOrVector249 = default(HqlParser.expressionOrVector_return); HqlParser.subQuery_return subQuery250 = default(HqlParser.subQuery_return); IASTNode DOT243_tree=null; IASTNode string_literal244_tree=null; IASTNode COLON246_tree=null; IASTNode OPEN248_tree=null; IASTNode CLOSE251_tree=null; IASTNode PARAM252_tree=null; IASTNode NUM_INT253_tree=null; try { // Hql.g:556:2: ( identPrimary ( options {greedy=true; } : DOT 'class' )? | constant | COLON identifier | OPEN ( expressionOrVector | subQuery ) CLOSE | PARAM ( NUM_INT )? ) int alt87 = 5; switch ( input.LA(1) ) { case AVG: case COUNT: case ELEMENTS: case INDICES: case MAX: case MIN: case SUM: case IDENT: { alt87 = 1; } break; case FALSE: case NULL: case TRUE: case EMPTY: case NUM_INT: case NUM_DOUBLE: case NUM_DECIMAL: case NUM_FLOAT: case NUM_LONG: case QUOTED_String: { alt87 = 2; } break; case COLON: { alt87 = 3; } break; case OPEN: { alt87 = 4; } break; case PARAM: { alt87 = 5; } break; default: NoViableAltException nvae_d87s0 = new NoViableAltException("", 87, 0, input); throw nvae_d87s0; } switch (alt87) { case 1 : // Hql.g:556:6: identPrimary ( options {greedy=true; } : DOT 'class' )? { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_identPrimary_in_primaryExpression2874); identPrimary242 = identPrimary(); state.followingStackPointer--; adaptor.AddChild(root_0, identPrimary242.Tree); // Hql.g:556:19: ( options {greedy=true; } : DOT 'class' )? int alt84 = 2; int LA84_0 = input.LA(1); if ( (LA84_0 == DOT) ) { int LA84_1 = input.LA(2); if ( (LA84_1 == CLASS) ) { alt84 = 1; } } switch (alt84) { case 1 : // Hql.g:556:46: DOT 'class' { DOT243=(IToken)Match(input,DOT,FOLLOW_DOT_in_primaryExpression2887); DOT243_tree = (IASTNode)adaptor.Create(DOT243); root_0 = (IASTNode)adaptor.BecomeRoot(DOT243_tree, root_0); string_literal244=(IToken)Match(input,CLASS,FOLLOW_CLASS_in_primaryExpression2890); string_literal244_tree = (IASTNode)adaptor.Create(string_literal244); adaptor.AddChild(root_0, string_literal244_tree); } break; } } break; case 2 : // Hql.g:557:6: constant { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_constant_in_primaryExpression2900); constant245 = constant(); state.followingStackPointer--; adaptor.AddChild(root_0, constant245.Tree); } break; case 3 : // Hql.g:558:6: COLON identifier { root_0 = (IASTNode)adaptor.GetNilNode(); COLON246=(IToken)Match(input,COLON,FOLLOW_COLON_in_primaryExpression2907); COLON246_tree = (IASTNode)adaptor.Create(COLON246); root_0 = (IASTNode)adaptor.BecomeRoot(COLON246_tree, root_0); PushFollow(FOLLOW_identifier_in_primaryExpression2910); identifier247 = identifier(); state.followingStackPointer--; adaptor.AddChild(root_0, identifier247.Tree); } break; case 4 : // Hql.g:560:6: OPEN ( expressionOrVector | subQuery ) CLOSE { root_0 = (IASTNode)adaptor.GetNilNode(); OPEN248=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_primaryExpression2919); // Hql.g:560:12: ( expressionOrVector | subQuery ) int alt85 = 2; int LA85_0 = input.LA(1); if ( ((LA85_0 >= ALL && LA85_0 <= ANY) || LA85_0 == AVG || LA85_0 == COUNT || LA85_0 == ELEMENTS || (LA85_0 >= EXISTS && LA85_0 <= FALSE) || LA85_0 == INDICES || (LA85_0 >= MAX && LA85_0 <= MIN) || (LA85_0 >= NOT && LA85_0 <= NULL) || (LA85_0 >= SOME && LA85_0 <= SUM) || LA85_0 == TRUE || LA85_0 == CASE || LA85_0 == EMPTY || (LA85_0 >= NUM_INT && LA85_0 <= NUM_LONG) || LA85_0 == OPEN || (LA85_0 >= COLON && LA85_0 <= PARAM) || LA85_0 == BNOT || (LA85_0 >= PLUS && LA85_0 <= MINUS) || (LA85_0 >= QUOTED_String && LA85_0 <= IDENT)) ) { alt85 = 1; } else if ( (LA85_0 == EOF || LA85_0 == FROM || (LA85_0 >= GROUP && LA85_0 <= HAVING) || LA85_0 == ORDER || LA85_0 == SELECT || LA85_0 == SKIP || LA85_0 == TAKE || LA85_0 == UNION || LA85_0 == WHERE || LA85_0 == CLOSE) ) { alt85 = 2; } else { NoViableAltException nvae_d85s0 = new NoViableAltException("", 85, 0, input); throw nvae_d85s0; } switch (alt85) { case 1 : // Hql.g:560:13: expressionOrVector { PushFollow(FOLLOW_expressionOrVector_in_primaryExpression2923); expressionOrVector249 = expressionOrVector(); state.followingStackPointer--; adaptor.AddChild(root_0, expressionOrVector249.Tree); } break; case 2 : // Hql.g:560:34: subQuery { PushFollow(FOLLOW_subQuery_in_primaryExpression2927); subQuery250 = subQuery(); state.followingStackPointer--; adaptor.AddChild(root_0, subQuery250.Tree); } break; } CLOSE251=(IToken)Match(input,CLOSE,FOLLOW_CLOSE_in_primaryExpression2930); } break; case 5 : // Hql.g:561:6: PARAM ( NUM_INT )? { root_0 = (IASTNode)adaptor.GetNilNode(); PARAM252=(IToken)Match(input,PARAM,FOLLOW_PARAM_in_primaryExpression2938); PARAM252_tree = (IASTNode)adaptor.Create(PARAM252); root_0 = (IASTNode)adaptor.BecomeRoot(PARAM252_tree, root_0); // Hql.g:561:13: ( NUM_INT )? int alt86 = 2; int LA86_0 = input.LA(1); if ( (LA86_0 == NUM_INT) ) { alt86 = 1; } switch (alt86) { case 1 : // Hql.g:561:14: NUM_INT { NUM_INT253=(IToken)Match(input,NUM_INT,FOLLOW_NUM_INT_in_primaryExpression2942); NUM_INT253_tree = (IASTNode)adaptor.Create(NUM_INT253); adaptor.AddChild(root_0, NUM_INT253_tree); } break; } } break; } retval.Stop = input.LT(-1); retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop); } catch (RecognitionException re) { ReportError(re); Recover(input,re); // Conversion of the second argument necessary, but harmless retval.Tree = (IASTNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re); } finally { } return retval; }