BaseDescr left =null;
ParserRuleReturnScope e1 =null;
ParserRuleReturnScope e2 =null;
ConstraintConnectiveDescr descr = null; BaseDescr leftDescr = null; BindingDescr binding = null;
try {
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:314:3: (left= relationalExpression ( ( not_key in_key )=> not_key in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN |in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN )? )
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:314:5: left= relationalExpression ( ( not_key in_key )=> not_key in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN |in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN )?
{
pushFollow(FOLLOW_relationalExpression_in_inExpression1533);
left=relationalExpression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { if( buildDescr ) { result = left; }
if( left instanceof BindingDescr ) {
binding = (BindingDescr)left;
leftDescr = new AtomicExprDescr( binding.getExpression() );
} else {
leftDescr = left;
}
}
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:323:5: ( ( not_key in_key )=> not_key in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN |in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN )?
int alt36=3;
int LA36_0 = input.LA(1);
if ( (LA36_0==ID) ) {
int LA36_1 = input.LA(2);
if ( (LA36_1==ID) ) {
int LA36_3 = input.LA(3);
if ( (LA36_3==LEFT_PAREN) && ((((helper.validateIdentifierKey(DroolsSoftKeywords.NOT)))&&synpred7_DRL5Expressions()))) {
alt36=1;
}
}
else if ( (LA36_1==LEFT_PAREN) && (((helper.validateIdentifierKey(DroolsSoftKeywords.IN))))) {
alt36=2;
}
}
switch (alt36) {
case 1 :
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:323:6: ( not_key in_key )=> not_key in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN
{
pushFollow(FOLLOW_not_key_in_inExpression1553);
not_key();
state._fsp--;
if (state.failed) return result;
pushFollow(FOLLOW_in_key_in_inExpression1557);
in_key();
state._fsp--;
if (state.failed) return result;
match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_inExpression1559); if (state.failed) return result;
if ( state.backtracking==0 ) { helper.emit( Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT ); }
pushFollow(FOLLOW_expression_in_inExpression1581);
e1=expression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { descr = ConstraintConnectiveDescr.newAnd();
RelationalExprDescr rel = new RelationalExprDescr( "!=", false, null, leftDescr, (e1!=null?((DRL5Expressions.expression_return)e1).result:null) );
descr.addOrMerge( rel );
result = descr;
}
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:331:7: ( COMMA e2= expression )*
loop34:
while (true) {
int alt34=2;
int LA34_0 = input.LA(1);
if ( (LA34_0==COMMA) ) {
alt34=1;
}
switch (alt34) {
case 1 :
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:331:8: COMMA e2= expression
{
match(input,COMMA,FOLLOW_COMMA_in_inExpression1600); if (state.failed) return result;
pushFollow(FOLLOW_expression_in_inExpression1604);
e2=expression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { RelationalExprDescr rel = new RelationalExprDescr( "!=", false, null, leftDescr, (e2!=null?((DRL5Expressions.expression_return)e2).result:null) );
descr.addOrMerge( rel );
}
}
break;
default :
break loop34;
}
}
match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_inExpression1625); if (state.failed) return result;
if ( state.backtracking==0 ) { helper.emit( Location.LOCATION_LHS_INSIDE_CONDITION_END ); }
}
break;
case 2 :
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:337:7: in= in_key LEFT_PAREN e1= expression ( COMMA e2= expression )* RIGHT_PAREN
{
pushFollow(FOLLOW_in_key_in_inExpression1641);
in_key();
state._fsp--;
if (state.failed) return result;
match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_inExpression1643); if (state.failed) return result;
if ( state.backtracking==0 ) { helper.emit( Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT ); }
pushFollow(FOLLOW_expression_in_inExpression1665);
e1=expression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { descr = ConstraintConnectiveDescr.newOr();
RelationalExprDescr rel = new RelationalExprDescr( "==", false, null, leftDescr, (e1!=null?((DRL5Expressions.expression_return)e1).result:null) );
descr.addOrMerge( rel );
result = descr;
}
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:345:7: ( COMMA e2= expression )*
loop35:
while (true) {
int alt35=2;
int LA35_0 = input.LA(1);
if ( (LA35_0==COMMA) ) {
alt35=1;
}
switch (alt35) {
case 1 :
// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:345:8: COMMA e2= expression
{
match(input,COMMA,FOLLOW_COMMA_in_inExpression1684); if (state.failed) return result;
pushFollow(FOLLOW_expression_in_inExpression1688);
e2=expression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { RelationalExprDescr rel = new RelationalExprDescr( "==", false, null, leftDescr, (e2!=null?((DRL5Expressions.expression_return)e2).result:null) );
descr.addOrMerge( rel );
}
}
break;
default :
break loop35;
}
}
match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_inExpression1709); if (state.failed) return result;
if ( state.backtracking==0 ) { helper.emit( Location.LOCATION_LHS_INSIDE_CONDITION_END ); }
}
break;
}
}
if ( state.backtracking==0 ) { if( binding != null && descr != null ) descr.addOrMerge( binding ); }
}
catch (RecognitionException re) {
throw re;
}