// $ANTLR start "relationalExpression" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:401:1: relationalExpression : concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) ; public HqlParser.relationalExpression_return relationalExpression() // throws RecognitionException [1] { HqlParser.relationalExpression_return retval = new HqlParser.relationalExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken n = null; IToken i = null; IToken b = null; IToken l = null; IToken LT154 = null; IToken GT155 = null; IToken LE156 = null; IToken GE157 = null; IToken MEMBER163 = null; IToken OF164 = null; HqlParser.path_return p = default(HqlParser.path_return); HqlParser.concatenation_return concatenation153 = default(HqlParser.concatenation_return); HqlParser.bitwiseNotExpression_return bitwiseNotExpression158 = default(HqlParser.bitwiseNotExpression_return); HqlParser.inList_return inList159 = default(HqlParser.inList_return); HqlParser.betweenList_return betweenList160 = default(HqlParser.betweenList_return); HqlParser.concatenation_return concatenation161 = default(HqlParser.concatenation_return); HqlParser.likeEscape_return likeEscape162 = default(HqlParser.likeEscape_return); IASTNode n_tree=null; IASTNode i_tree=null; IASTNode b_tree=null; IASTNode l_tree=null; IASTNode LT154_tree=null; IASTNode GT155_tree=null; IASTNode LE156_tree=null; IASTNode GE157_tree=null; IASTNode MEMBER163_tree=null; IASTNode OF164_tree=null; try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:402:2: ( concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:402:4: concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_concatenation_in_relationalExpression1973); concatenation153 = concatenation(); state.followingStackPointer--; adaptor.AddChild(root_0, concatenation153.Tree); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:402:18: ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) int alt56 = 2; int LA56_0 = input.LA(1); if ( (LA56_0 == EOF || (LA56_0 >= AND && LA56_0 <= ASCENDING) || LA56_0 == DESCENDING || (LA56_0 >= FROM && LA56_0 <= HAVING) || LA56_0 == INNER || (LA56_0 >= IS && LA56_0 <= LEFT) || (LA56_0 >= OR && LA56_0 <= ORDER) || LA56_0 == RIGHT || LA56_0 == UNION || LA56_0 == WHERE || (LA56_0 >= END && LA56_0 <= WHEN) || (LA56_0 >= COMMA && LA56_0 <= EQ) || (LA56_0 >= CLOSE && LA56_0 <= GE) || LA56_0 == CLOSE_BRACKET || (LA56_0 >= 130 && LA56_0 <= 131)) ) { alt56 = 1; } else if ( (LA56_0 == BETWEEN || LA56_0 == IN || LA56_0 == LIKE || LA56_0 == NOT || LA56_0 == MEMBER) ) { alt56 = 2; } else { NoViableAltException nvae_d56s0 = new NoViableAltException("", 56, 0, input); throw nvae_d56s0; } switch (alt56) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:3: ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:3: ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:5: ( ( LT | GT | LE | GE ) bitwiseNotExpression )* { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:5: ( ( LT | GT | LE | GE ) bitwiseNotExpression )* do { int alt52 = 2; int LA52_0 = input.LA(1); if ( ((LA52_0 >= LT && LA52_0 <= GE)) ) { alt52 = 1; } switch (alt52) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:7: ( LT | GT | LE | GE ) bitwiseNotExpression { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:7: ( LT | GT | LE | GE ) int alt51 = 4; switch ( input.LA(1) ) { case LT: { alt51 = 1; } break; case GT: { alt51 = 2; } break; case LE: { alt51 = 3; } break; case GE: { alt51 = 4; } break; default: NoViableAltException nvae_d51s0 = new NoViableAltException("", 51, 0, input); throw nvae_d51s0; } switch (alt51) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:9: LT { LT154=(IToken)Match(input,LT,FOLLOW_LT_in_relationalExpression1985); LT154_tree = (IASTNode)adaptor.Create(LT154); root_0 = (IASTNode)adaptor.BecomeRoot(LT154_tree, root_0); } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:15: GT { GT155=(IToken)Match(input,GT,FOLLOW_GT_in_relationalExpression1990); GT155_tree = (IASTNode)adaptor.Create(GT155); root_0 = (IASTNode)adaptor.BecomeRoot(GT155_tree, root_0); } break; case 3 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:21: LE { LE156=(IToken)Match(input,LE,FOLLOW_LE_in_relationalExpression1995); LE156_tree = (IASTNode)adaptor.Create(LE156); root_0 = (IASTNode)adaptor.BecomeRoot(LE156_tree, root_0); } break; case 4 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:403:27: GE { GE157=(IToken)Match(input,GE,FOLLOW_GE_in_relationalExpression2000); GE157_tree = (IASTNode)adaptor.Create(GE157); root_0 = (IASTNode)adaptor.BecomeRoot(GE157_tree, root_0); } break; } PushFollow(FOLLOW_bitwiseNotExpression_in_relationalExpression2005); bitwiseNotExpression158 = bitwiseNotExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, bitwiseNotExpression158.Tree); } break; default: goto loop52; } } while (true); loop52: ; // Stops C# compiler whining that label 'loop52' has no statements } } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:405:5: (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:405:5: (n= NOT )? int alt53 = 2; int LA53_0 = input.LA(1); if ( (LA53_0 == NOT) ) { alt53 = 1; } switch (alt53) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:405:6: n= NOT { n=(IToken)Match(input,NOT,FOLLOW_NOT_in_relationalExpression2022); } break; } // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:405:15: ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) int alt55 = 4; switch ( input.LA(1) ) { case IN: { alt55 = 1; } break; case BETWEEN: { alt55 = 2; } break; case LIKE: { alt55 = 3; } break; case MEMBER: { alt55 = 4; } break; default: NoViableAltException nvae_d55s0 = new NoViableAltException("", 55, 0, input); throw nvae_d55s0; } switch (alt55) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:408:4: (i= IN inList ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:408:4: (i= IN inList ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:408:5: i= IN inList { i=(IToken)Match(input,IN,FOLLOW_IN_in_relationalExpression2043); i_tree = (IASTNode)adaptor.Create(i); root_0 = (IASTNode)adaptor.BecomeRoot(i_tree, root_0); i.Type = (n == null) ? IN : NOT_IN; i.Text = (n == null) ? "in" : "not in"; PushFollow(FOLLOW_inList_in_relationalExpression2052); inList159 = inList(); state.followingStackPointer--; adaptor.AddChild(root_0, inList159.Tree); } } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:413:6: (b= BETWEEN betweenList ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:413:6: (b= BETWEEN betweenList ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:413:7: b= BETWEEN betweenList { b=(IToken)Match(input,BETWEEN,FOLLOW_BETWEEN_in_relationalExpression2063); b_tree = (IASTNode)adaptor.Create(b); root_0 = (IASTNode)adaptor.BecomeRoot(b_tree, root_0); b.Type = (n == null) ? BETWEEN : NOT_BETWEEN; b.Text = (n == null) ? "between" : "not between"; PushFollow(FOLLOW_betweenList_in_relationalExpression2072); betweenList160 = betweenList(); state.followingStackPointer--; adaptor.AddChild(root_0, betweenList160.Tree); } } break; case 3 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:418:6: (l= LIKE concatenation likeEscape ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:418:6: (l= LIKE concatenation likeEscape ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:418:7: l= LIKE concatenation likeEscape { l=(IToken)Match(input,LIKE,FOLLOW_LIKE_in_relationalExpression2084); l_tree = (IASTNode)adaptor.Create(l); root_0 = (IASTNode)adaptor.BecomeRoot(l_tree, root_0); l.Type = (n == null) ? LIKE : NOT_LIKE; l.Text = (n == null) ? "like" : "not like"; PushFollow(FOLLOW_concatenation_in_relationalExpression2093); concatenation161 = concatenation(); state.followingStackPointer--; adaptor.AddChild(root_0, concatenation161.Tree); PushFollow(FOLLOW_likeEscape_in_relationalExpression2095); likeEscape162 = likeEscape(); state.followingStackPointer--; adaptor.AddChild(root_0, likeEscape162.Tree); } } break; case 4 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:423:6: ( MEMBER ( OF )? p= path ) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:423:6: ( MEMBER ( OF )? p= path ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:423:7: MEMBER ( OF )? p= path { MEMBER163=(IToken)Match(input,MEMBER,FOLLOW_MEMBER_in_relationalExpression2104); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:423:15: ( OF )? int alt54 = 2; int LA54_0 = input.LA(1); if ( (LA54_0 == OF) ) { alt54 = 1; } switch (alt54) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:423:16: OF { OF164=(IToken)Match(input,OF,FOLLOW_OF_in_relationalExpression2108); } break; } PushFollow(FOLLOW_path_in_relationalExpression2115); p = path(); state.followingStackPointer--; root_0 = ProcessMemberOf(n,((p != null) ? ((IASTNode)p.Tree) : null), root_0); } } 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 "relationalExpression" // Hql.g:419:1: relationalExpression : concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) ; public HqlParser.relationalExpression_return relationalExpression() // throws RecognitionException [1] { HqlParser.relationalExpression_return retval = new HqlParser.relationalExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken n = null; IToken i = null; IToken b = null; IToken l = null; IToken LT167 = null; IToken GT168 = null; IToken LE169 = null; IToken GE170 = null; IToken MEMBER176 = null; IToken OF177 = null; HqlParser.path_return p = default(HqlParser.path_return); HqlParser.concatenation_return concatenation166 = default(HqlParser.concatenation_return); HqlParser.bitwiseNotExpression_return bitwiseNotExpression171 = default(HqlParser.bitwiseNotExpression_return); HqlParser.inList_return inList172 = default(HqlParser.inList_return); HqlParser.betweenList_return betweenList173 = default(HqlParser.betweenList_return); HqlParser.concatenation_return concatenation174 = default(HqlParser.concatenation_return); HqlParser.likeEscape_return likeEscape175 = default(HqlParser.likeEscape_return); IASTNode n_tree=null; IASTNode i_tree=null; IASTNode b_tree=null; IASTNode l_tree=null; IASTNode LT167_tree=null; IASTNode GT168_tree=null; IASTNode LE169_tree=null; IASTNode GE170_tree=null; IASTNode MEMBER176_tree=null; IASTNode OF177_tree=null; try { // Hql.g:420:2: ( concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) ) // Hql.g:420:4: concatenation ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_concatenation_in_relationalExpression2071); concatenation166 = concatenation(); state.followingStackPointer--; adaptor.AddChild(root_0, concatenation166.Tree); // Hql.g:420:18: ( ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) | (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) ) int alt62 = 2; int LA62_0 = input.LA(1); if ( (LA62_0 == EOF || (LA62_0 >= AND && LA62_0 <= ASCENDING) || LA62_0 == DESCENDING || (LA62_0 >= FROM && LA62_0 <= HAVING) || LA62_0 == INNER || (LA62_0 >= IS && LA62_0 <= LEFT) || (LA62_0 >= OR && LA62_0 <= ORDER) || LA62_0 == RIGHT || LA62_0 == SKIP || LA62_0 == TAKE || LA62_0 == UNION || LA62_0 == WHERE || (LA62_0 >= END && LA62_0 <= WHEN) || (LA62_0 >= COMMA && LA62_0 <= EQ) || LA62_0 == CLOSE || (LA62_0 >= NE && LA62_0 <= GE) || LA62_0 == CLOSE_BRACKET || (LA62_0 >= 133 && LA62_0 <= 134)) ) { alt62 = 1; } else if ( (LA62_0 == BETWEEN || LA62_0 == IN || LA62_0 == LIKE || LA62_0 == NOT || LA62_0 == MEMBER) ) { alt62 = 2; } else { NoViableAltException nvae_d62s0 = new NoViableAltException("", 62, 0, input); throw nvae_d62s0; } switch (alt62) { case 1 : // Hql.g:421:3: ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) { // Hql.g:421:3: ( ( ( LT | GT | LE | GE ) bitwiseNotExpression )* ) // Hql.g:421:5: ( ( LT | GT | LE | GE ) bitwiseNotExpression )* { // Hql.g:421:5: ( ( LT | GT | LE | GE ) bitwiseNotExpression )* do { int alt58 = 2; int LA58_0 = input.LA(1); if ( ((LA58_0 >= LT && LA58_0 <= GE)) ) { alt58 = 1; } switch (alt58) { case 1 : // Hql.g:421:7: ( LT | GT | LE | GE ) bitwiseNotExpression { // Hql.g:421:7: ( LT | GT | LE | GE ) int alt57 = 4; switch ( input.LA(1) ) { case LT: { alt57 = 1; } break; case GT: { alt57 = 2; } break; case LE: { alt57 = 3; } break; case GE: { alt57 = 4; } break; default: NoViableAltException nvae_d57s0 = new NoViableAltException("", 57, 0, input); throw nvae_d57s0; } switch (alt57) { case 1 : // Hql.g:421:9: LT { LT167=(IToken)Match(input,LT,FOLLOW_LT_in_relationalExpression2083); LT167_tree = (IASTNode)adaptor.Create(LT167); root_0 = (IASTNode)adaptor.BecomeRoot(LT167_tree, root_0); } break; case 2 : // Hql.g:421:15: GT { GT168=(IToken)Match(input,GT,FOLLOW_GT_in_relationalExpression2088); GT168_tree = (IASTNode)adaptor.Create(GT168); root_0 = (IASTNode)adaptor.BecomeRoot(GT168_tree, root_0); } break; case 3 : // Hql.g:421:21: LE { LE169=(IToken)Match(input,LE,FOLLOW_LE_in_relationalExpression2093); LE169_tree = (IASTNode)adaptor.Create(LE169); root_0 = (IASTNode)adaptor.BecomeRoot(LE169_tree, root_0); } break; case 4 : // Hql.g:421:27: GE { GE170=(IToken)Match(input,GE,FOLLOW_GE_in_relationalExpression2098); GE170_tree = (IASTNode)adaptor.Create(GE170); root_0 = (IASTNode)adaptor.BecomeRoot(GE170_tree, root_0); } break; } PushFollow(FOLLOW_bitwiseNotExpression_in_relationalExpression2103); bitwiseNotExpression171 = bitwiseNotExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, bitwiseNotExpression171.Tree); } break; default: goto loop58; } } while (true); loop58: ; // Stops C# compiler whining that label 'loop58' has no statements } } break; case 2 : // Hql.g:423:5: (n= NOT )? ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) { // Hql.g:423:5: (n= NOT )? int alt59 = 2; int LA59_0 = input.LA(1); if ( (LA59_0 == NOT) ) { alt59 = 1; } switch (alt59) { case 1 : // Hql.g:423:6: n= NOT { n=(IToken)Match(input,NOT,FOLLOW_NOT_in_relationalExpression2120); } break; } // Hql.g:423:15: ( (i= IN inList ) | (b= BETWEEN betweenList ) | (l= LIKE concatenation likeEscape ) | ( MEMBER ( OF )? p= path ) ) int alt61 = 4; switch ( input.LA(1) ) { case IN: { alt61 = 1; } break; case BETWEEN: { alt61 = 2; } break; case LIKE: { alt61 = 3; } break; case MEMBER: { alt61 = 4; } break; default: NoViableAltException nvae_d61s0 = new NoViableAltException("", 61, 0, input); throw nvae_d61s0; } switch (alt61) { case 1 : // Hql.g:426:4: (i= IN inList ) { // Hql.g:426:4: (i= IN inList ) // Hql.g:426:5: i= IN inList { i=(IToken)Match(input,IN,FOLLOW_IN_in_relationalExpression2141); i_tree = (IASTNode)adaptor.Create(i); root_0 = (IASTNode)adaptor.BecomeRoot(i_tree, root_0); i.Type = (n == null) ? IN : NOT_IN; i.Text = (n == null) ? "in" : "not in"; PushFollow(FOLLOW_inList_in_relationalExpression2150); inList172 = inList(); state.followingStackPointer--; adaptor.AddChild(root_0, inList172.Tree); } } break; case 2 : // Hql.g:431:6: (b= BETWEEN betweenList ) { // Hql.g:431:6: (b= BETWEEN betweenList ) // Hql.g:431:7: b= BETWEEN betweenList { b=(IToken)Match(input,BETWEEN,FOLLOW_BETWEEN_in_relationalExpression2161); b_tree = (IASTNode)adaptor.Create(b); root_0 = (IASTNode)adaptor.BecomeRoot(b_tree, root_0); b.Type = (n == null) ? BETWEEN : NOT_BETWEEN; b.Text = (n == null) ? "between" : "not between"; PushFollow(FOLLOW_betweenList_in_relationalExpression2170); betweenList173 = betweenList(); state.followingStackPointer--; adaptor.AddChild(root_0, betweenList173.Tree); } } break; case 3 : // Hql.g:436:6: (l= LIKE concatenation likeEscape ) { // Hql.g:436:6: (l= LIKE concatenation likeEscape ) // Hql.g:436:7: l= LIKE concatenation likeEscape { l=(IToken)Match(input,LIKE,FOLLOW_LIKE_in_relationalExpression2182); l_tree = (IASTNode)adaptor.Create(l); root_0 = (IASTNode)adaptor.BecomeRoot(l_tree, root_0); l.Type = (n == null) ? LIKE : NOT_LIKE; l.Text = (n == null) ? "like" : "not like"; PushFollow(FOLLOW_concatenation_in_relationalExpression2191); concatenation174 = concatenation(); state.followingStackPointer--; adaptor.AddChild(root_0, concatenation174.Tree); PushFollow(FOLLOW_likeEscape_in_relationalExpression2193); likeEscape175 = likeEscape(); state.followingStackPointer--; adaptor.AddChild(root_0, likeEscape175.Tree); } } break; case 4 : // Hql.g:441:6: ( MEMBER ( OF )? p= path ) { // Hql.g:441:6: ( MEMBER ( OF )? p= path ) // Hql.g:441:7: MEMBER ( OF )? p= path { MEMBER176=(IToken)Match(input,MEMBER,FOLLOW_MEMBER_in_relationalExpression2202); // Hql.g:441:15: ( OF )? int alt60 = 2; int LA60_0 = input.LA(1); if ( (LA60_0 == OF) ) { alt60 = 1; } switch (alt60) { case 1 : // Hql.g:441:16: OF { OF177=(IToken)Match(input,OF,FOLLOW_OF_in_relationalExpression2206); } break; } PushFollow(FOLLOW_path_in_relationalExpression2213); p = path(); state.followingStackPointer--; root_0 = ProcessMemberOf(n,((p != null) ? ((IASTNode)p.Tree) : null), root_0); } } 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; }