// $ANTLR start "equalityExpression" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:384:1: equalityExpression : x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* ; public HqlParser.equalityExpression_return equalityExpression() // throws RecognitionException [1] { HqlParser.equalityExpression_return retval = new HqlParser.equalityExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken isx = null; IToken ne = null; IToken EQ150 = null; IToken NOT151 = null; IToken NE152 = null; HqlParser.relationalExpression_return x = default(HqlParser.relationalExpression_return); HqlParser.relationalExpression_return y = default(HqlParser.relationalExpression_return); IASTNode isx_tree=null; IASTNode ne_tree=null; IASTNode EQ150_tree=null; IASTNode NOT151_tree=null; IASTNode NE152_tree=null; try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:389:2: (x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:389:4: x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_relationalExpression_in_equalityExpression1901); x = relationalExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, x.Tree); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:389:27: ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* do { int alt50 = 2; int LA50_0 = input.LA(1); if ( (LA50_0 == IS || LA50_0 == EQ || (LA50_0 >= NE && LA50_0 <= SQL_NE)) ) { alt50 = 1; } switch (alt50) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:390:3: ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:390:3: ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) int alt49 = 4; switch ( input.LA(1) ) { case EQ: { alt49 = 1; } break; case IS: { alt49 = 2; } break; case NE: { alt49 = 3; } break; case SQL_NE: { alt49 = 4; } break; default: NoViableAltException nvae_d49s0 = new NoViableAltException("", 49, 0, input); throw nvae_d49s0; } switch (alt49) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:390:5: EQ { EQ150=(IToken)Match(input,EQ,FOLLOW_EQ_in_equalityExpression1909); EQ150_tree = (IASTNode)adaptor.Create(EQ150); root_0 = (IASTNode)adaptor.BecomeRoot(EQ150_tree, root_0); } break; case 2 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:391:5: isx= IS ( NOT )? { isx=(IToken)Match(input,IS,FOLLOW_IS_in_equalityExpression1918); isx_tree = (IASTNode)adaptor.Create(isx); root_0 = (IASTNode)adaptor.BecomeRoot(isx_tree, root_0); isx.Type = EQ; // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:391:33: ( NOT )? int alt48 = 2; int LA48_0 = input.LA(1); if ( (LA48_0 == NOT) ) { alt48 = 1; } switch (alt48) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:391:34: NOT { NOT151=(IToken)Match(input,NOT,FOLLOW_NOT_in_equalityExpression1924); isx.Type =NE; } break; } } break; case 3 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:392:5: NE { NE152=(IToken)Match(input,NE,FOLLOW_NE_in_equalityExpression1936); NE152_tree = (IASTNode)adaptor.Create(NE152); root_0 = (IASTNode)adaptor.BecomeRoot(NE152_tree, root_0); } break; case 4 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:393:5: ne= SQL_NE { ne=(IToken)Match(input,SQL_NE,FOLLOW_SQL_NE_in_equalityExpression1945); ne_tree = (IASTNode)adaptor.Create(ne); root_0 = (IASTNode)adaptor.BecomeRoot(ne_tree, root_0); ne.Type = NE; } break; } PushFollow(FOLLOW_relationalExpression_in_equalityExpression1956); y = relationalExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, y.Tree); } break; default: goto loop50; } } while (true); loop50: ; // Stops C# compiler whining that label 'loop50' has no statements } retval.Stop = input.LT(-1); retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop); // Post process the equality expression to clean up 'is null', etc. retval.Tree = ProcessEqualityExpression(((IASTNode)retval.Tree)); } 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 "equalityExpression" // Hql.g:402:1: equalityExpression : x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* ; public HqlParser.equalityExpression_return equalityExpression() // throws RecognitionException [1] { HqlParser.equalityExpression_return retval = new HqlParser.equalityExpression_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IToken isx = null; IToken ne = null; IToken EQ163 = null; IToken NOT164 = null; IToken NE165 = null; HqlParser.relationalExpression_return x = default(HqlParser.relationalExpression_return); HqlParser.relationalExpression_return y = default(HqlParser.relationalExpression_return); IASTNode isx_tree=null; IASTNode ne_tree=null; IASTNode EQ163_tree=null; IASTNode NOT164_tree=null; IASTNode NE165_tree=null; try { // Hql.g:407:2: (x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* ) // Hql.g:407:4: x= relationalExpression ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* { root_0 = (IASTNode)adaptor.GetNilNode(); PushFollow(FOLLOW_relationalExpression_in_equalityExpression1999); x = relationalExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, x.Tree); // Hql.g:407:27: ( ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression )* do { int alt56 = 2; int LA56_0 = input.LA(1); if ( (LA56_0 == IS || LA56_0 == EQ || (LA56_0 >= NE && LA56_0 <= SQL_NE)) ) { alt56 = 1; } switch (alt56) { case 1 : // Hql.g:408:3: ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) y= relationalExpression { // Hql.g:408:3: ( EQ | isx= IS ( NOT )? | NE | ne= SQL_NE ) int alt55 = 4; switch ( input.LA(1) ) { case EQ: { alt55 = 1; } break; case IS: { alt55 = 2; } break; case NE: { alt55 = 3; } break; case SQL_NE: { alt55 = 4; } break; default: NoViableAltException nvae_d55s0 = new NoViableAltException("", 55, 0, input); throw nvae_d55s0; } switch (alt55) { case 1 : // Hql.g:408:5: EQ { EQ163=(IToken)Match(input,EQ,FOLLOW_EQ_in_equalityExpression2007); EQ163_tree = (IASTNode)adaptor.Create(EQ163); root_0 = (IASTNode)adaptor.BecomeRoot(EQ163_tree, root_0); } break; case 2 : // Hql.g:409:5: isx= IS ( NOT )? { isx=(IToken)Match(input,IS,FOLLOW_IS_in_equalityExpression2016); isx_tree = (IASTNode)adaptor.Create(isx); root_0 = (IASTNode)adaptor.BecomeRoot(isx_tree, root_0); isx.Type = EQ; // Hql.g:409:33: ( NOT )? int alt54 = 2; int LA54_0 = input.LA(1); if ( (LA54_0 == NOT) ) { alt54 = 1; } switch (alt54) { case 1 : // Hql.g:409:34: NOT { NOT164=(IToken)Match(input,NOT,FOLLOW_NOT_in_equalityExpression2022); isx.Type =NE; } break; } } break; case 3 : // Hql.g:410:5: NE { NE165=(IToken)Match(input,NE,FOLLOW_NE_in_equalityExpression2034); NE165_tree = (IASTNode)adaptor.Create(NE165); root_0 = (IASTNode)adaptor.BecomeRoot(NE165_tree, root_0); } break; case 4 : // Hql.g:411:5: ne= SQL_NE { ne=(IToken)Match(input,SQL_NE,FOLLOW_SQL_NE_in_equalityExpression2043); ne_tree = (IASTNode)adaptor.Create(ne); root_0 = (IASTNode)adaptor.BecomeRoot(ne_tree, root_0); ne.Type = NE; } break; } PushFollow(FOLLOW_relationalExpression_in_equalityExpression2054); y = relationalExpression(); state.followingStackPointer--; adaptor.AddChild(root_0, y.Tree); } break; default: goto loop56; } } while (true); loop56: ; // Stops C# compiler whining that label 'loop56' has no statements } retval.Stop = input.LT(-1); retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop); // Post process the equality expression to clean up 'is null', etc. retval.Tree = ProcessEqualityExpression(((IASTNode)retval.Tree)); } 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; }