All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jadex.rules.parser.conditions.ClipsJadexParser Maven / Gradle / Ivy

Go to download

Jadex Rules is a small lightweight rule engine, which currently employs the well-known Rete algorithm for highly efficient rule matching. Jadex rules is therefore similar to other rule engines like JESS and Drools. Despite the similarities there are also important differences between these systems: * Jadex Rules is very small and intended to be used as component of other software. Even though rules can be specified in a Java dialect as well as (a small variation of) the CLIPS language its primary usage is on the API level. Jadex Rules is currently the core component of the Jadex BDI reasoning engine. * Jadex Rules cleanly separates between state and rule representation. This allows the state implementation as well as the matcher to be flexibly exchanged. Some experiments have e.g. been conducted with a Jena representation. Regarding the matcher, it is planned to support also the Treat algorithm, which has a lower memory footprint than Rete. * Jadex Rules pays close attention to rule debugging. The state as well as the rete engine can be observed at runtime. The rule debugger provides functionalities to execute a rule program stepwise and also use rule breakpoints to stop the execution at those points.

There is a newer version: 2.4
Show newest version
// $ANTLR 3.1.2 C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g 2009-04-06 11:25:09

package jadex.rules.parser.conditions;

import jadex.rules.rulesystem.rules.*;
import jadex.rules.rulesystem.rules.functions.*;
import jadex.rules.rulesystem.*;
import jadex.rules.state.*;
import jadex.commons.SReflect;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import java.util.HashMap;


import org.antlr.runtime.*;
import java.util.ArrayList;

public class ClipsJadexParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "", "", "", "", "ConstraintOperator", "StringLiteral", "CharacterLiteral", "BooleanLiteral", "FloatingPointLiteral", "HexLiteral", "OctalLiteral", "DecimalLiteral", "Identifiertoken", "HexDigit", "IntegerTypeSuffix", "Exponent", "FloatTypeSuffix", "EscapeSequence", "UnicodeEscape", "OctalEscape", "Letter", "JavaIDDigit", "WS", "COMMENT", "LINE_COMMENT", "'('", "'and'", "')'", "'not'", "'test'", "'<-'", "'='", "'collect'", "'?'", "'$?'", "':'", "'.'", "'['", "']'", "'null'", "'+'", "'-'", "'!='", "'~'", "'>'", "'<'", "'>='", "'<='", "'contains'", "'excludes'", "'=='"
    };
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int FloatTypeSuffix=16;
    public static final int OctalLiteral=10;
    public static final int CharacterLiteral=6;
    public static final int Exponent=15;
    public static final int EOF=-1;
    public static final int HexDigit=13;
    public static final int COMMENT=23;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int HexLiteral=9;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int LINE_COMMENT=24;
    public static final int IntegerTypeSuffix=14;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int DecimalLiteral=11;
    public static final int StringLiteral=5;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int WS=22;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int UnicodeEscape=18;
    public static final int ConstraintOperator=4;
    public static final int FloatingPointLiteral=8;
    public static final int JavaIDDigit=21;
    public static final int Identifiertoken=12;
    public static final int Letter=20;
    public static final int OctalEscape=19;
    public static final int EscapeSequence=17;
    public static final int BooleanLiteral=7;

    // delegates
    // delegators


        public ClipsJadexParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public ClipsJadexParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return ClipsJadexParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g"; }


        protected List	errors;
        public void displayRecognitionError(String[] tokenNames, RecognitionException e)
        {
            if(errors!=null)
            {
                String hdr = getErrorHeader(e);
                String msg = getErrorMessage(e, tokenNames);
            	errors.add(hdr + " " + msg);
            }
            else
            {
            	super.displayRecognitionError(tokenNames, e);
            }
        }
        public void setErrorList(List errors)
        {
            this.errors	= errors;
        }
        public List getErrorList()
        {
            return errors;
        }
        
        protected String[]	imports;
        public void	setImports(String[] imports)
        {
        	this.imports	= imports;
        }



    // $ANTLR start "rhs"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:59:1: rhs[OAVTypeModel tmodel] returns [ICondition condition] : (c= ce[tmodel, vars] )+ EOF ;
    public final ICondition rhs(OAVTypeModel tmodel) throws RecognitionException {
        ICondition condition = null;

        ICondition c = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:60:2: ( (c= ce[tmodel, vars] )+ EOF )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:61:2: (c= ce[tmodel, vars] )+ EOF
            {

            		List conds = new ArrayList();
            		Map vars = new HashMap();
            		
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:66:2: (c= ce[tmodel, vars] )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==25||(LA1_0>=33 && LA1_0<=34)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:66:3: c= ce[tmodel, vars]
            	    {
            	    pushFollow(FOLLOW_ce_in_rhs53);
            	    c=ce(tmodel, vars);

            	    state._fsp--;


            	    		conds.add(c);
            	    	

            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            		if(conds.size()>1)
            			condition = new AndCondition(conds);
            		else
            			condition = (ICondition)conds.get(0);
            	
            match(input,EOF,FOLLOW_EOF_in_rhs68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "rhs"


    // $ANTLR start "ce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:80:1: ce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : ({...}?tmp= andce[tmodel, vars] | {...}?tmp= notce[tmodel, vars] | {...}?tmp= testce[tmodel, vars] | tmp= collectce[tmodel, vars] | {...}?tmp= objectce[tmodel, vars] );
    public final ICondition ce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        ICondition tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:81:2: ({...}?tmp= andce[tmodel, vars] | {...}?tmp= notce[tmodel, vars] | {...}?tmp= testce[tmodel, vars] | tmp= collectce[tmodel, vars] | {...}?tmp= objectce[tmodel, vars] )
            int alt2=5;
            switch ( input.LA(1) ) {
            case 25:
                {
                int LA2_1 = input.LA(2);

                if ( (("and".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                    alt2=1;
                }
                else if ( (("not".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                    alt2=2;
                }
                else if ( (("test".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                    alt2=3;
                }
                else if ( (!(((("and".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))||("not".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))||(SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))||("test".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input)))))) ) {
                    alt2=4;
                }
                else if ( ((SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                    alt2=5;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 2, 1, input);

                    throw nvae;
                }
                }
                break;
            case 34:
                {
                alt2=4;
                }
                break;
            case 33:
                {
                alt2=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:81:4: {...}?tmp= andce[tmodel, vars]
                    {
                    if ( !(("and".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "ce", "\"and\".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_andce_in_ce93);
                    tmp=andce(tmodel, vars);

                    state._fsp--;

                    condition = tmp;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:83:4: {...}?tmp= notce[tmodel, vars]
                    {
                    if ( !(("not".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "ce", "\"not\".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_notce_in_ce109);
                    tmp=notce(tmodel, vars);

                    state._fsp--;

                    condition = tmp;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:85:4: {...}?tmp= testce[tmodel, vars]
                    {
                    if ( !(("test".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "ce", "\"test\".equals(ClipsJadexParser.this.input.LT(2).getText()) && !SConditions.lookaheadObjectCE(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_testce_in_ce125);
                    tmp=testce(tmodel, vars);

                    state._fsp--;

                    condition = tmp;

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:87:4: tmp= collectce[tmodel, vars]
                    {
                    pushFollow(FOLLOW_collectce_in_ce137);
                    tmp=collectce(tmodel, vars);

                    state._fsp--;

                    condition = tmp;

                    }
                    break;
                case 5 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:88:4: {...}?tmp= objectce[tmodel, vars]
                    {
                    if ( !((SConditions.lookaheadObjectCE(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "ce", "SConditions.lookaheadObjectCE(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_objectce_in_ce151);
                    tmp=objectce(tmodel, vars);

                    state._fsp--;

                    condition = tmp;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "ce"


    // $ANTLR start "andce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:91:1: andce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : '(' 'and' (c= ce[$tmodel, vars] )+ ')' ;
    public final ICondition andce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        ICondition c = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:92:2: ( '(' 'and' (c= ce[$tmodel, vars] )+ ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:93:2: '(' 'and' (c= ce[$tmodel, vars] )+ ')'
            {

            		List conds = new ArrayList();
            	
            match(input,25,FOLLOW_25_in_andce175); 
            match(input,26,FOLLOW_26_in_andce177); 
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:96:12: (c= ce[$tmodel, vars] )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==25||(LA3_0>=33 && LA3_0<=34)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:96:13: c= ce[$tmodel, vars]
            	    {
            	    pushFollow(FOLLOW_ce_in_andce182);
            	    c=ce(tmodel, vars);

            	    state._fsp--;


            	    		conds.add(c);
            	    	

            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);

            match(input,27,FOLLOW_27_in_andce192); 

            		condition = new AndCondition(conds);
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "andce"


    // $ANTLR start "notce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:106:1: notce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : '(' 'not' c= ce[$tmodel, vars] ')' ;
    public final ICondition notce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        ICondition c = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:107:2: ( '(' 'not' c= ce[$tmodel, vars] ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:107:4: '(' 'not' c= ce[$tmodel, vars] ')'
            {
            match(input,25,FOLLOW_25_in_notce211); 
            match(input,28,FOLLOW_28_in_notce213); 
            pushFollow(FOLLOW_ce_in_notce217);
            c=ce(tmodel, vars);

            state._fsp--;

            match(input,27,FOLLOW_27_in_notce220); 

            		condition = new NotCondition(c);
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "notce"


    // $ANTLR start "testce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:113:1: testce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : '(' 'test' (call= operatorCall[tmodel, vars] | ({...}?call= functionCall[tmodel, vars] ) ) ')' ;
    public final ICondition testce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        FunctionCall call = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:114:2: ( '(' 'test' (call= operatorCall[tmodel, vars] | ({...}?call= functionCall[tmodel, vars] ) ) ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:114:4: '(' 'test' (call= operatorCall[tmodel, vars] | ({...}?call= functionCall[tmodel, vars] ) ) ')'
            {
            match(input,25,FOLLOW_25_in_testce239); 
            match(input,29,FOLLOW_29_in_testce241); 
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:115:3: (call= operatorCall[tmodel, vars] | ({...}?call= functionCall[tmodel, vars] ) )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==25) ) {
                int LA4_1 = input.LA(2);

                if ( (!(((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))))) ) {
                    alt4=1;
                }
                else if ( ((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                    alt4=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 4, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:115:5: call= operatorCall[tmodel, vars]
                    {
                    pushFollow(FOLLOW_operatorCall_in_testce249);
                    call=operatorCall(tmodel, vars);

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:116:5: ({...}?call= functionCall[tmodel, vars] )
                    {
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:116:5: ({...}?call= functionCall[tmodel, vars] )
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:116:6: {...}?call= functionCall[tmodel, vars]
                    {
                    if ( !((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "testce", "SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_functionCall_in_testce261);
                    call=functionCall(tmodel, vars);

                    state._fsp--;


                    }


                    }
                    break;

            }

            match(input,27,FOLLOW_27_in_testce269); 

            		condition = new TestCondition(new PredicateConstraint(call));
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "testce"


    // $ANTLR start "collectce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:123:1: collectce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : (mfv= multiFieldVariable[null, vars] ( '<-' | '=' ) )? '(' 'collect' (c= ce[$tmodel, vars] )+ (pc= predicateConstraint[$tmodel, null, vars] )? ')' ;
    public final ICondition collectce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        Variable mfv = null;

        ICondition c = null;

        IConstraint pc = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:124:2: ( (mfv= multiFieldVariable[null, vars] ( '<-' | '=' ) )? '(' 'collect' (c= ce[$tmodel, vars] )+ (pc= predicateConstraint[$tmodel, null, vars] )? ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:125:2: (mfv= multiFieldVariable[null, vars] ( '<-' | '=' ) )? '(' 'collect' (c= ce[$tmodel, vars] )+ (pc= predicateConstraint[$tmodel, null, vars] )? ')'
            {

            		List conds = new ArrayList();
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:128:2: (mfv= multiFieldVariable[null, vars] ( '<-' | '=' ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==34) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:128:3: mfv= multiFieldVariable[null, vars] ( '<-' | '=' )
                    {
                    pushFollow(FOLLOW_multiFieldVariable_in_collectce296);
                    mfv=multiFieldVariable(null, vars);

                    state._fsp--;

                    if ( (input.LA(1)>=30 && input.LA(1)<=31) ) {
                        input.consume();
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }

            match(input,25,FOLLOW_25_in_collectce311); 
            match(input,32,FOLLOW_32_in_collectce313); 
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:129:16: (c= ce[$tmodel, vars] )+
            int cnt6=0;
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==25||(LA6_0>=33 && LA6_0<=34)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:129:17: c= ce[$tmodel, vars]
            	    {
            	    pushFollow(FOLLOW_ce_in_collectce318);
            	    c=ce(tmodel, vars);

            	    state._fsp--;


            	    		conds.add(c);
            	    	

            	    }
            	    break;

            	default :
            	    if ( cnt6 >= 1 ) break loop6;
                        EarlyExitException eee =
                            new EarlyExitException(6, input);
                        throw eee;
                }
                cnt6++;
            } while (true);

            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:133:8: (pc= predicateConstraint[$tmodel, null, vars] )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==35) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:133:8: pc= predicateConstraint[$tmodel, null, vars]
                    {
                    pushFollow(FOLLOW_predicateConstraint_in_collectce331);
                    pc=predicateConstraint(tmodel, null, vars);

                    state._fsp--;


                    }
                    break;

            }

            match(input,27,FOLLOW_27_in_collectce335); 

            		ObjectCondition first = (ObjectCondition)conds.get(0);
            		mfv.setType(first.getObjectType());
            		List consts = new ArrayList();
            		consts.add(new BoundConstraint(null, mfv));
            		if(pc!=null)
            			consts.add(pc);
            		CollectCondition ccond = new CollectCondition(conds, consts);
            		condition = ccond;
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "collectce"


    // $ANTLR start "objectce"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:147:1: objectce[OAVTypeModel tmodel, Map vars] returns [ICondition condition] : (sfv= singleFieldVariable[null, vars] ( '<-' | '=' ) )? '(' tn= typename (acs= attributeConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | mcs= methodConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | fcs= functionConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] )* ')' ;
    public final ICondition objectce(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        ICondition condition = null;

        Variable sfv = null;

        String tn = null;

        List acs = null;

        List mcs = null;

        List fcs = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:148:2: ( (sfv= singleFieldVariable[null, vars] ( '<-' | '=' ) )? '(' tn= typename (acs= attributeConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | mcs= methodConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | fcs= functionConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] )* ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:149:2: (sfv= singleFieldVariable[null, vars] ( '<-' | '=' ) )? '(' tn= typename (acs= attributeConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | mcs= methodConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | fcs= functionConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] )* ')'
            {

            		List consts = new ArrayList();
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:152:2: (sfv= singleFieldVariable[null, vars] ( '<-' | '=' ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==33) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:152:3: sfv= singleFieldVariable[null, vars] ( '<-' | '=' )
                    {
                    pushFollow(FOLLOW_singleFieldVariable_in_objectce364);
                    sfv=singleFieldVariable(null, vars);

                    state._fsp--;

                    if ( (input.LA(1)>=30 && input.LA(1)<=31) ) {
                        input.consume();
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }

            match(input,25,FOLLOW_25_in_objectce379); 
            pushFollow(FOLLOW_typename_in_objectce385);
            tn=typename();

            state._fsp--;

            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:156:2: (acs= attributeConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | mcs= methodConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] | fcs= functionConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars] )*
            loop9:
            do {
                int alt9=4;
                alt9 = dfa9.predict(input);
                switch (alt9) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:156:3: acs= attributeConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars]
            	    {
            	    pushFollow(FOLLOW_attributeConstraint_in_objectce394);
            	    acs=attributeConstraint(tmodel, SConditions.getObjectType(tmodel, tn, imports), vars);

            	    state._fsp--;


            	    		consts.addAll(acs);
            	    	

            	    }
            	    break;
            	case 2 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:160:4: mcs= methodConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars]
            	    {
            	    pushFollow(FOLLOW_methodConstraint_in_objectce405);
            	    mcs=methodConstraint(tmodel, SConditions.getObjectType(tmodel, tn, imports), vars);

            	    state._fsp--;


            	    		consts.addAll(mcs);
            	    	

            	    }
            	    break;
            	case 3 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:164:4: fcs= functionConstraint[tmodel, SConditions.getObjectType(tmodel, tn, imports), vars]
            	    {
            	    pushFollow(FOLLOW_functionConstraint_in_objectce416);
            	    fcs=functionConstraint(tmodel, SConditions.getObjectType(tmodel, tn, imports), vars);

            	    state._fsp--;


            	    		consts.addAll(fcs);
            	    	

            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            match(input,27,FOLLOW_27_in_objectce428); 

            		// Set variable type if still unknown/unprecise
            		if(sfv!=null)
            			SConditions.adaptConditionType(sfv, SConditions.getObjectType(tmodel, tn, imports));
            		
            		OAVObjectType otype = SConditions.getObjectType(tmodel, tn, imports);
            		ObjectCondition ocond = new ObjectCondition(otype, consts);
            		if(sfv!=null)
            			ocond.addConstraint(new BoundConstraint(null, sfv));
            		condition = ocond;
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return condition;
    }
    // $ANTLR end "objectce"


    // $ANTLR start "attributeConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:184:1: attributeConstraint[OAVTypeModel tmodel, OAVObjectType otype, Map vars] returns [List constraints] : '(' sn= slotname cs= constraint[tmodel, SConditions.convertAttributeTypes(tmodel, otype, sn, imports), vars] ')' ;
    public final List attributeConstraint(OAVTypeModel tmodel, OAVObjectType otype, Map vars) throws RecognitionException {
        List constraints = null;

        String sn = null;

        List cs = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:185:2: ( '(' sn= slotname cs= constraint[tmodel, SConditions.convertAttributeTypes(tmodel, otype, sn, imports), vars] ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:185:4: '(' sn= slotname cs= constraint[tmodel, SConditions.convertAttributeTypes(tmodel, otype, sn, imports), vars] ')'
            {
            match(input,25,FOLLOW_25_in_attributeConstraint450); 
            pushFollow(FOLLOW_slotname_in_attributeConstraint454);
            sn=slotname();

            state._fsp--;

            pushFollow(FOLLOW_constraint_in_attributeConstraint458);
            cs=constraint(tmodel, SConditions.convertAttributeTypes(tmodel, otype, sn, imports), vars);

            state._fsp--;

            match(input,27,FOLLOW_27_in_attributeConstraint461); 

            		constraints = cs;
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraints;
    }
    // $ANTLR end "attributeConstraint"


    // $ANTLR start "methodConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:191:1: methodConstraint[OAVTypeModel tmodel, OAVObjectType otype, Map vars] returns [List constraints] : '(' mn= methodname '(' (exp= parameter[tmodel, vars] )* ')' cs= constraint[tmodel, SConditions.createMethodCall(otype, mn, exps), vars] ')' ;
    public final List methodConstraint(OAVTypeModel tmodel, OAVObjectType otype, Map vars) throws RecognitionException {
        List constraints = null;

        String mn = null;

        Object exp = null;

        List cs = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:192:2: ( '(' mn= methodname '(' (exp= parameter[tmodel, vars] )* ')' cs= constraint[tmodel, SConditions.createMethodCall(otype, mn, exps), vars] ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:193:2: '(' mn= methodname '(' (exp= parameter[tmodel, vars] )* ')' cs= constraint[tmodel, SConditions.createMethodCall(otype, mn, exps), vars] ')'
            {

            		List exps = new ArrayList();
            	
            match(input,25,FOLLOW_25_in_methodConstraint488); 
            pushFollow(FOLLOW_methodname_in_methodConstraint492);
            mn=methodname();

            state._fsp--;

            match(input,25,FOLLOW_25_in_methodConstraint494); 
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:196:23: (exp= parameter[tmodel, vars] )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=StringLiteral && LA10_0<=DecimalLiteral)||LA10_0==25||(LA10_0>=33 && LA10_0<=34)||(LA10_0>=39 && LA10_0<=41)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:196:24: exp= parameter[tmodel, vars]
            	    {
            	    pushFollow(FOLLOW_parameter_in_methodConstraint498);
            	    exp=parameter(tmodel, vars);

            	    state._fsp--;


            	    		exps.add(exp);
            	    	

            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            match(input,27,FOLLOW_27_in_methodConstraint508); 
            pushFollow(FOLLOW_constraint_in_methodConstraint512);
            cs=constraint(tmodel, SConditions.createMethodCall(otype, mn, exps), vars);

            state._fsp--;

            match(input,27,FOLLOW_27_in_methodConstraint515); 

            		constraints = cs;
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraints;
    }
    // $ANTLR end "methodConstraint"


    // $ANTLR start "functionConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:206:1: functionConstraint[OAVTypeModel tmodel, OAVObjectType otype, Map vars] returns [List constraints] : '(' fc= functionCall[tmodel, vars] cs= constraint[tmodel, fc, vars] ')' ;
    public final List functionConstraint(OAVTypeModel tmodel, OAVObjectType otype, Map vars) throws RecognitionException {
        List constraints = null;

        FunctionCall fc = null;

        List cs = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:207:2: ( '(' fc= functionCall[tmodel, vars] cs= constraint[tmodel, fc, vars] ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:208:2: '(' fc= functionCall[tmodel, vars] cs= constraint[tmodel, fc, vars] ')'
            {

            		List exps = new ArrayList();
            	
            match(input,25,FOLLOW_25_in_functionConstraint542); 
            pushFollow(FOLLOW_functionCall_in_functionConstraint546);
            fc=functionCall(tmodel, vars);

            state._fsp--;

            pushFollow(FOLLOW_constraint_in_functionConstraint551);
            cs=constraint(tmodel, fc, vars);

            state._fsp--;

            match(input,27,FOLLOW_27_in_functionConstraint554); 

            		constraints = cs;
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraints;
    }
    // $ANTLR end "functionConstraint"


    // $ANTLR start "constraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:217:1: constraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [List constraints] : ( '?' | '$?' | last= singleConstraint[tmodel, valuesource, vars] ( ConstraintOperator next= singleConstraint[tmodel, valuesource, vars] )* );
    public final List constraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        List constraints = null;

        Token ConstraintOperator1=null;
        IConstraint last = null;

        IConstraint next = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:218:2: ( '?' | '$?' | last= singleConstraint[tmodel, valuesource, vars] ( ConstraintOperator next= singleConstraint[tmodel, valuesource, vars] )* )
            int alt12=3;
            switch ( input.LA(1) ) {
            case 33:
                {
                int LA12_1 = input.LA(2);

                if ( (LA12_1==27) ) {
                    alt12=1;
                }
                else if ( (LA12_1==Identifiertoken||LA12_1==26||(LA12_1>=28 && LA12_1<=29)||LA12_1==32||(LA12_1>=48 && LA12_1<=49)) ) {
                    alt12=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 1, input);

                    throw nvae;
                }
                }
                break;
            case 34:
                {
                int LA12_2 = input.LA(2);

                if ( (LA12_2==27) ) {
                    alt12=2;
                }
                else if ( (LA12_2==Identifiertoken||LA12_2==26||(LA12_2>=28 && LA12_2<=29)||LA12_2==32||(LA12_2>=48 && LA12_2<=49)) ) {
                    alt12=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 2, input);

                    throw nvae;
                }
                }
                break;
            case StringLiteral:
            case CharacterLiteral:
            case BooleanLiteral:
            case FloatingPointLiteral:
            case HexLiteral:
            case OctalLiteral:
            case DecimalLiteral:
            case 35:
            case 39:
            case 40:
            case 41:
            case 42:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
            case 48:
            case 49:
            case 50:
                {
                alt12=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }

            switch (alt12) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:222:2: '?'
                    {
                    match(input,33,FOLLOW_33_in_constraint584); 

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:223:4: '$?'
                    {
                    match(input,34,FOLLOW_34_in_constraint590); 

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:224:4: last= singleConstraint[tmodel, valuesource, vars] ( ConstraintOperator next= singleConstraint[tmodel, valuesource, vars] )*
                    {
                    pushFollow(FOLLOW_singleConstraint_in_constraint598);
                    last=singleConstraint(tmodel, valuesource, vars);

                    state._fsp--;


                    		List ret = new ArrayList();
                    		List consts = new ArrayList();
                    		String op = null;
                    		if(last instanceof BoundConstraint)
                    			ret.add(last);
                    		else
                    			consts.add(last);
                    	
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:234:2: ( ConstraintOperator next= singleConstraint[tmodel, valuesource, vars] )*
                    loop11:
                    do {
                        int alt11=2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0==ConstraintOperator) ) {
                            alt11=1;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:234:3: ConstraintOperator next= singleConstraint[tmodel, valuesource, vars]
                    	    {
                    	    ConstraintOperator1=(Token)match(input,ConstraintOperator,FOLLOW_ConstraintOperator_in_constraint607); 
                    	    pushFollow(FOLLOW_singleConstraint_in_constraint611);
                    	    next=singleConstraint(tmodel, valuesource, vars);

                    	    state._fsp--;


                    	    		// Set op if first occurrence
                    	    		if(op==null)
                    	    			op = (ConstraintOperator1!=null?ConstraintOperator1.getText():null);
                    	    	
                    	    		consts.add(next);
                    	    		if(consts.size()>1)
                    	    		{	
                    	    			if(!(ConstraintOperator1!=null?ConstraintOperator1.getText():null).equals(op))
                    	    			{
                    	    				if(op.equals("&"))
                    	    					last = new AndConstraint((IConstraint[])consts.toArray(new IConstraint[consts.size()]));
                    	    				else
                    	    					last = new OrConstraint((IConstraint[])consts.toArray(new IConstraint[consts.size()]));
                    	    				
                    	    				op = (ConstraintOperator1!=null?ConstraintOperator1.getText():null);	
                    	    				consts.clear();
                    	    				consts.add(last);
                    	    			}
                    	    		}
                    	    	

                    	    }
                    	    break;

                    	default :
                    	    break loop11;
                        }
                    } while (true);


                    		if(consts.size()>1)
                    		{
                    			if(op.equals("&"))
                    				ret.add(new AndConstraint((IConstraint[])consts.toArray(new IConstraint[consts.size()])));
                    			else
                    				ret.add(new OrConstraint((IConstraint[])consts.toArray(new IConstraint[consts.size()])));
                    		}
                    		else if(consts.size()==1)
                    		{
                    			ret.add(consts.get(0));
                    		}
                    			
                    		constraints = ret;
                    	

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraints;
    }
    // $ANTLR end "constraint"


    // $ANTLR start "singleConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:274:1: singleConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : (tmp= literalConstraint[valuesource] | tmp= boundConstraint[tmodel, valuesource, vars] | tmp= multiBoundConstraint[tmodel, valuesource, vars] | tmp= predicateConstraint[tmodel, valuesource, vars] | tmp= returnValueConstraint[tmodel, valuesource, vars] );
    public final IConstraint singleConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        IConstraint tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:275:2: (tmp= literalConstraint[valuesource] | tmp= boundConstraint[tmodel, valuesource, vars] | tmp= multiBoundConstraint[tmodel, valuesource, vars] | tmp= predicateConstraint[tmodel, valuesource, vars] | tmp= returnValueConstraint[tmodel, valuesource, vars] )
            int alt13=5;
            alt13 = dfa13.predict(input);
            switch (alt13) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:275:4: tmp= literalConstraint[valuesource]
                    {
                    pushFollow(FOLLOW_literalConstraint_in_singleConstraint643);
                    tmp=literalConstraint(valuesource);

                    state._fsp--;

                    constraint = tmp;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:276:4: tmp= boundConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_boundConstraint_in_singleConstraint654);
                    tmp=boundConstraint(tmodel, valuesource, vars);

                    state._fsp--;

                    constraint = tmp;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:277:4: tmp= multiBoundConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_multiBoundConstraint_in_singleConstraint664);
                    tmp=multiBoundConstraint(tmodel, valuesource, vars);

                    state._fsp--;

                    constraint = tmp;

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:278:4: tmp= predicateConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_predicateConstraint_in_singleConstraint674);
                    tmp=predicateConstraint(tmodel, valuesource, vars);

                    state._fsp--;

                    constraint = tmp;

                    }
                    break;
                case 5 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:279:4: tmp= returnValueConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_returnValueConstraint_in_singleConstraint684);
                    tmp=returnValueConstraint(tmodel, valuesource, vars);

                    state._fsp--;

                    constraint = tmp;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "singleConstraint"


    // $ANTLR start "literalConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:282:1: literalConstraint[Object valuesource] returns [IConstraint constraint] : (op= operator )? val= constant ;
    public final IConstraint literalConstraint(Object valuesource) throws RecognitionException {
        IConstraint constraint = null;

        IOperator op = null;

        Object val = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:283:2: ( (op= operator )? val= constant )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:283:4: (op= operator )? val= constant
            {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:283:6: (op= operator )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( ((LA14_0>=42 && LA14_0<=50)) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:283:6: op= operator
                    {
                    pushFollow(FOLLOW_operator_in_literalConstraint706);
                    op=operator();

                    state._fsp--;


                    }
                    break;

            }

            pushFollow(FOLLOW_constant_in_literalConstraint711);
            val=constant();

            state._fsp--;


            		if(op!=null)	
            			constraint = new LiteralConstraint(valuesource, val, op);
            		else
            			constraint = new LiteralConstraint(valuesource, val);
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "literalConstraint"


    // $ANTLR start "someBoundConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:292:1: someBoundConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : (bc= boundConstraint[tmodel, valuesource, vars] | mbc= multiBoundConstraint[tmodel, valuesource, vars] );
    public final IConstraint someBoundConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        IConstraint bc = null;

        IConstraint mbc = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:293:2: (bc= boundConstraint[tmodel, valuesource, vars] | mbc= multiBoundConstraint[tmodel, valuesource, vars] )
            int alt15=2;
            alt15 = dfa15.predict(input);
            switch (alt15) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:293:4: bc= boundConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_boundConstraint_in_someBoundConstraint734);
                    bc=boundConstraint(tmodel, valuesource, vars);

                    state._fsp--;


                    		constraint = bc;
                    	

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:297:4: mbc= multiBoundConstraint[tmodel, valuesource, vars]
                    {
                    pushFollow(FOLLOW_multiBoundConstraint_in_someBoundConstraint747);
                    mbc=multiBoundConstraint(tmodel, valuesource, vars);

                    state._fsp--;


                    		constraint = mbc;
                    	

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "someBoundConstraint"


    // $ANTLR start "boundConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:303:1: boundConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars] ;
    public final IConstraint boundConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        IOperator op = null;

        Variable var = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:304:2: ( (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars] )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:304:4: (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars]
            {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:304:6: (op= operator )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( ((LA16_0>=42 && LA16_0<=50)) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:304:6: op= operator
                    {
                    pushFollow(FOLLOW_operator_in_boundConstraint770);
                    op=operator();

                    state._fsp--;


                    }
                    break;

            }

            pushFollow(FOLLOW_variable_in_boundConstraint775);
            var=variable(op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars);

            state._fsp--;


            		if(op!=null)
            			constraint = new BoundConstraint(valuesource, var, op);
            		else
            			constraint = new BoundConstraint(valuesource, var);
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "boundConstraint"


    // $ANTLR start "multiBoundConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:313:1: multiBoundConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars] (varn= variable[SConditions.getValueSourceType(tmodel, valuesource), vars] )+ ;
    public final IConstraint multiBoundConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        IOperator op = null;

        Variable var = null;

        Variable varn = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:314:2: ( (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars] (varn= variable[SConditions.getValueSourceType(tmodel, valuesource), vars] )+ )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:315:2: (op= operator )? var= variable[op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars] (varn= variable[SConditions.getValueSourceType(tmodel, valuesource), vars] )+
            {

            		List vs = new ArrayList();
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:318:4: (op= operator )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( ((LA17_0>=42 && LA17_0<=50)) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:318:4: op= operator
                    {
                    pushFollow(FOLLOW_operator_in_multiBoundConstraint803);
                    op=operator();

                    state._fsp--;


                    }
                    break;

            }

            pushFollow(FOLLOW_variable_in_multiBoundConstraint808);
            var=variable(op==null || op.equals(IOperator.EQUAL)? SConditions.getValueSourceType(tmodel, valuesource): null, vars);

            state._fsp--;


            		vs.add(var);
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:322:2: (varn= variable[SConditions.getValueSourceType(tmodel, valuesource), vars] )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( ((LA18_0>=33 && LA18_0<=34)) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:322:3: varn= variable[SConditions.getValueSourceType(tmodel, valuesource), vars]
            	    {
            	    pushFollow(FOLLOW_variable_in_multiBoundConstraint818);
            	    varn=variable(SConditions.getValueSourceType(tmodel, valuesource), vars);

            	    state._fsp--;


            	    		vs.add(varn);
            	    	

            	    }
            	    break;

            	default :
            	    if ( cnt18 >= 1 ) break loop18;
                        EarlyExitException eee =
                            new EarlyExitException(18, input);
                        throw eee;
                }
                cnt18++;
            } while (true);


            		//if(op!=null)
            			constraint = new BoundConstraint(valuesource, vs, op==null? IOperator.EQUAL: op); // Hack? one operator per variable?
            		//else
            		//	constraint = new BoundConstraint(valuesource, vars);
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "multiBoundConstraint"


    // $ANTLR start "predicateConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:335:1: predicateConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : ':' ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] ) ;
    public final IConstraint predicateConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        FunctionCall fc = null;

        FunctionCall oc = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:336:2: ( ':' ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] ) )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:336:4: ':' ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] )
            {
            match(input,35,FOLLOW_35_in_predicateConstraint846); 
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:336:8: ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==25) ) {
                int LA19_1 = input.LA(2);

                if ( ((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                    alt19=1;
                }
                else if ( (true) ) {
                    alt19=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 19, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:336:9: {...}?fc= functionCall[tmodel, vars]
                    {
                    if ( !((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "predicateConstraint", "SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_functionCall_in_predicateConstraint853);
                    fc=functionCall(tmodel, vars);

                    state._fsp--;

                    constraint = new PredicateConstraint(fc);

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:337:4: oc= operatorCall[tmodel, vars]
                    {
                    pushFollow(FOLLOW_operatorCall_in_predicateConstraint864);
                    oc=operatorCall(tmodel, vars);

                    state._fsp--;

                    constraint = new PredicateConstraint(oc);

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "predicateConstraint"


    // $ANTLR start "returnValueConstraint"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:342:1: returnValueConstraint[OAVTypeModel tmodel, Object valuesource, Map vars] returns [IConstraint constraint] : equalOperator ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] ) ;
    public final IConstraint returnValueConstraint(OAVTypeModel tmodel, Object valuesource, Map vars) throws RecognitionException {
        IConstraint constraint = null;

        FunctionCall fc = null;

        FunctionCall oc = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:343:2: ( equalOperator ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] ) )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:343:4: equalOperator ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] )
            {
            pushFollow(FOLLOW_equalOperator_in_returnValueConstraint888);
            equalOperator();

            state._fsp--;

            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:343:18: ({...}?fc= functionCall[tmodel, vars] | oc= operatorCall[tmodel, vars] )
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==25) ) {
                int LA20_1 = input.LA(2);

                if ( ((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                    alt20=1;
                }
                else if ( (true) ) {
                    alt20=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 20, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:343:19: {...}?fc= functionCall[tmodel, vars]
                    {
                    if ( !((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "returnValueConstraint", "SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_functionCall_in_returnValueConstraint895);
                    fc=functionCall(tmodel, vars);

                    state._fsp--;

                    constraint = new ValueSourceReturnValueConstraint(valuesource, fc, IOperator.EQUAL);

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:344:4: oc= operatorCall[tmodel, vars]
                    {
                    pushFollow(FOLLOW_operatorCall_in_returnValueConstraint906);
                    oc=operatorCall(tmodel, vars);

                    state._fsp--;

                    constraint = new ValueSourceReturnValueConstraint(valuesource, oc, IOperator.EQUAL);

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return constraint;
    }
    // $ANTLR end "returnValueConstraint"


    // $ANTLR start "functionCall"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:348:1: functionCall[OAVTypeModel tmodel, Map vars] returns [FunctionCall fc] : '(' fn= functionName (exp= parameter[tmodel, vars] )* ')' ;
    public final FunctionCall functionCall(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        FunctionCall fc = null;

        String fn = null;

        Object exp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:349:2: ( '(' fn= functionName (exp= parameter[tmodel, vars] )* ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:350:2: '(' fn= functionName (exp= parameter[tmodel, vars] )* ')'
            {

            		List exps = new ArrayList();
            	
            match(input,25,FOLLOW_25_in_functionCall936); 
            pushFollow(FOLLOW_functionName_in_functionCall940);
            fn=functionName();

            state._fsp--;

            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:353:22: (exp= parameter[tmodel, vars] )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( ((LA21_0>=StringLiteral && LA21_0<=DecimalLiteral)||LA21_0==25||(LA21_0>=33 && LA21_0<=34)||(LA21_0>=39 && LA21_0<=41)) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:353:23: exp= parameter[tmodel, vars]
            	    {
            	    pushFollow(FOLLOW_parameter_in_functionCall945);
            	    exp=parameter(tmodel, vars);

            	    state._fsp--;


            	    		exps.add(exp);
            	    	

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            match(input,27,FOLLOW_27_in_functionCall955); 

            				Class	clazz	= SReflect.findClass0(fn, imports, tmodel.getClassLoader());
                        	IFunction func = null;
            				if(MethodCallFunction.class.equals(clazz))
            				{
            					String clazzname = (String)((Constant)exps.remove(0)).getValue();
            					String methodname = (String)((Constant)exps.remove(0)).getValue();
            					clazz = SReflect.findClass0(clazzname, imports, tmodel.getClassLoader());
            					Method[] methods = SReflect.getMethods(clazz, methodname);
            					Method method = null;
            					// Find one matching regardless of param types (hack???).
            					// First param is object on which function will be called.
            					for(int i = 0; i < methods.length && method == null; i++)
            					{
            						if(methods[i].getParameterTypes().length == exps.size() - 1)
            						{
            							method = methods[i];
            						}
            					}
            					if(method != null)
            						func = new MethodCallFunction(method);
            				}
            				else
            				{
            					try
            					{
            						func = (IFunction)clazz.newInstance();
            					}
            					catch(Exception e)
            					{
            					}
            				}
            				if(func == null)
            					throw new RuntimeException("Function not found: " + fn);
            				fc = new FunctionCall(func, exps); 
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return fc;
    }
    // $ANTLR end "functionCall"


    // $ANTLR start "operatorCall"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:396:1: operatorCall[OAVTypeModel tmodel, Map vars] returns [FunctionCall fc] : '(' op= operator exp1= parameter[tmodel, vars] exp2= parameter[tmodel, vars] ')' ;
    public final FunctionCall operatorCall(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        FunctionCall fc = null;

        IOperator op = null;

        Object exp1 = null;

        Object exp2 = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:397:2: ( '(' op= operator exp1= parameter[tmodel, vars] exp2= parameter[tmodel, vars] ')' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:397:4: '(' op= operator exp1= parameter[tmodel, vars] exp2= parameter[tmodel, vars] ')'
            {
            match(input,25,FOLLOW_25_in_operatorCall976); 
            pushFollow(FOLLOW_operator_in_operatorCall981);
            op=operator();

            state._fsp--;

            pushFollow(FOLLOW_parameter_in_operatorCall986);
            exp1=parameter(tmodel, vars);

            state._fsp--;

            pushFollow(FOLLOW_parameter_in_operatorCall991);
            exp2=parameter(tmodel, vars);

            state._fsp--;

            match(input,27,FOLLOW_27_in_operatorCall994); 

            		IFunction func = new OperatorFunction(op!=null? op: IOperator.EQUAL);
            		fc = new FunctionCall(func, new Object[]{exp1, exp2});
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return fc;
    }
    // $ANTLR end "operatorCall"


    // $ANTLR start "parameter"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:404:1: parameter[OAVTypeModel tmodel, Map vars] returns [Object val] : (tmp1= constant | tmp2= variable[null, vars] | {...}?tmp3= functionCall[tmodel, vars] | tmp4= operatorCall[tmodel, vars] );
    public final Object parameter(OAVTypeModel tmodel, Map vars) throws RecognitionException {
        Object val = null;

        Object tmp1 = null;

        Variable tmp2 = null;

        FunctionCall tmp3 = null;

        FunctionCall tmp4 = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:405:2: (tmp1= constant | tmp2= variable[null, vars] | {...}?tmp3= functionCall[tmodel, vars] | tmp4= operatorCall[tmodel, vars] )
            int alt22=4;
            alt22 = dfa22.predict(input);
            switch (alt22) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:405:4: tmp1= constant
                    {
                    pushFollow(FOLLOW_constant_in_parameter1017);
                    tmp1=constant();

                    state._fsp--;

                    val = new Constant(tmp1);

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:406:4: tmp2= variable[null, vars]
                    {
                    pushFollow(FOLLOW_variable_in_parameter1027);
                    tmp2=variable(null, vars);

                    state._fsp--;

                    val = tmp2;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:407:4: {...}?tmp3= functionCall[tmodel, vars]
                    {
                    if ( !((SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input))) ) {
                        throw new FailedPredicateException(input, "parameter", "SConditions.lookaheadFunctionCall(ClipsJadexParser.this.input)");
                    }
                    pushFollow(FOLLOW_functionCall_in_parameter1039);
                    tmp3=functionCall(tmodel, vars);

                    state._fsp--;

                    val = tmp3;

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:408:4: tmp4= operatorCall[tmodel, vars]
                    {
                    pushFollow(FOLLOW_operatorCall_in_parameter1049);
                    tmp4=operatorCall(tmodel, vars);

                    state._fsp--;

                    val = tmp4;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return val;
    }
    // $ANTLR end "parameter"


    // $ANTLR start "constant"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:411:1: constant returns [Object val] : tmp= literal ;
    public final Object constant() throws RecognitionException {
        Object val = null;

        Object tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:412:2: (tmp= literal )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:412:4: tmp= literal
            {
            pushFollow(FOLLOW_literal_in_constant1070);
            tmp=literal();

            state._fsp--;

            val = tmp;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return val;
    }
    // $ANTLR end "constant"


    // $ANTLR start "variable"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:415:1: variable[OAVObjectType type, Map vars] returns [Variable var] : (tmp= singleFieldVariable[type, vars] | tmp= multiFieldVariable[type, vars] );
    public final Variable variable(OAVObjectType type, Map vars) throws RecognitionException {
        Variable var = null;

        Variable tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:416:2: (tmp= singleFieldVariable[type, vars] | tmp= multiFieldVariable[type, vars] )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==33) ) {
                alt23=1;
            }
            else if ( (LA23_0==34) ) {
                alt23=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:416:4: tmp= singleFieldVariable[type, vars]
                    {
                    pushFollow(FOLLOW_singleFieldVariable_in_variable1093);
                    tmp=singleFieldVariable(type, vars);

                    state._fsp--;

                    var = tmp;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:417:4: tmp= multiFieldVariable[type, vars]
                    {
                    pushFollow(FOLLOW_multiFieldVariable_in_variable1103);
                    tmp=multiFieldVariable(type, vars);

                    state._fsp--;

                    var = tmp;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return var;
    }
    // $ANTLR end "variable"


    // $ANTLR start "singleFieldVariable"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:420:1: singleFieldVariable[OAVObjectType type, Map vars] returns [Variable var] : '?' id= identifier ;
    public final Variable singleFieldVariable(OAVObjectType type, Map vars) throws RecognitionException {
        Variable var = null;

        Token id = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:421:2: ( '?' id= identifier )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:421:4: '?' id= identifier
            {
            match(input,33,FOLLOW_33_in_singleFieldVariable1123); 
            pushFollow(FOLLOW_identifier_in_singleFieldVariable1127);
            id=identifier();

            state._fsp--;

            	
            		String vn = "?"+id.getText();
            		var = (Variable)vars.get(vn);
            		if(var==null)
            		{
            			var = new Variable(vn, type);
            			vars.put(vn, var);
            		}
            		else if(type!=null)
            		{
            			SConditions.adaptConditionType(var, type);
            		}
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return var;
    }
    // $ANTLR end "singleFieldVariable"


    // $ANTLR start "multiFieldVariable"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:437:1: multiFieldVariable[OAVObjectType type, Map vars] returns [Variable var] : '$?' id= identifier ;
    public final Variable multiFieldVariable(OAVObjectType type, Map vars) throws RecognitionException {
        Variable var = null;

        Token id = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:438:2: ( '$?' id= identifier )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:438:4: '$?' id= identifier
            {
            match(input,34,FOLLOW_34_in_multiFieldVariable1149); 
            pushFollow(FOLLOW_identifier_in_multiFieldVariable1153);
            id=identifier();

            state._fsp--;


            		String vn = "$?"+id.getText();
            		var = (Variable)vars.get(vn);
            		if(var==null)
            		{
            			var = new Variable(vn, type, true, false);
            			vars.put(vn, var);
            		}
            		else if(type!=null)
            		{
            			SConditions.adaptConditionType(var, type);
            		}
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return var;
    }
    // $ANTLR end "multiFieldVariable"


    // $ANTLR start "typename"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:454:1: typename returns [String id] : tmp= identifier ( '.' tmp= identifier )* ;
    public final String typename() throws RecognitionException {
        String id = null;

        Token tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:455:2: (tmp= identifier ( '.' tmp= identifier )* )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:456:2: tmp= identifier ( '.' tmp= identifier )*
            {

            		StringBuffer buf = new StringBuffer();
            	
            pushFollow(FOLLOW_identifier_in_typename1179);
            tmp=identifier();

            state._fsp--;


            		buf.append(tmp.getText());
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:463:2: ( '.' tmp= identifier )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==36) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:463:3: '.' tmp= identifier
            	    {
            	    match(input,36,FOLLOW_36_in_typename1187); 
            	    pushFollow(FOLLOW_identifier_in_typename1191);
            	    tmp=identifier();

            	    state._fsp--;


            	    		buf.append(".").append(tmp.getText());
            	    	

            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);


            		id = buf.toString();
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return id;
    }
    // $ANTLR end "typename"


    // $ANTLR start "slotname"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:480:1: slotname returns [String id] : tmp= identifier ( '.' tmp= identifier | ':' tmp= identifier | ( '[' tmp= identifier ']' ) | ( '[' StringLiteral ']' ) )* ;
    public final String slotname() throws RecognitionException {
        String id = null;

        Token StringLiteral2=null;
        Token tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:481:2: (tmp= identifier ( '.' tmp= identifier | ':' tmp= identifier | ( '[' tmp= identifier ']' ) | ( '[' StringLiteral ']' ) )* )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:482:2: tmp= identifier ( '.' tmp= identifier | ':' tmp= identifier | ( '[' tmp= identifier ']' ) | ( '[' StringLiteral ']' ) )*
            {

            		StringBuffer buf = new StringBuffer();
            	
            pushFollow(FOLLOW_identifier_in_slotname1226);
            tmp=identifier();

            state._fsp--;


            		buf.append(tmp.getText());
            	
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:489:2: ( '.' tmp= identifier | ':' tmp= identifier | ( '[' tmp= identifier ']' ) | ( '[' StringLiteral ']' ) )*
            loop25:
            do {
                int alt25=5;
                switch ( input.LA(1) ) {
                case 35:
                    {
                    int LA25_2 = input.LA(2);

                    if ( (LA25_2==Identifiertoken||LA25_2==26||(LA25_2>=28 && LA25_2<=29)||LA25_2==32||(LA25_2>=48 && LA25_2<=49)) ) {
                        alt25=2;
                    }


                    }
                    break;
                case 36:
                    {
                    alt25=1;
                    }
                    break;
                case 37:
                    {
                    int LA25_4 = input.LA(2);

                    if ( (LA25_4==StringLiteral) ) {
                        alt25=4;
                    }
                    else if ( (LA25_4==Identifiertoken||LA25_4==26||(LA25_4>=28 && LA25_4<=29)||LA25_4==32||(LA25_4>=48 && LA25_4<=49)) ) {
                        alt25=3;
                    }


                    }
                    break;

                }

                switch (alt25) {
            	case 1 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:489:3: '.' tmp= identifier
            	    {
            	    match(input,36,FOLLOW_36_in_slotname1234); 
            	    pushFollow(FOLLOW_identifier_in_slotname1238);
            	    tmp=identifier();

            	    state._fsp--;


            	    		buf.append(".").append(tmp.getText());
            	    	

            	    }
            	    break;
            	case 2 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:493:3: ':' tmp= identifier
            	    {
            	    match(input,35,FOLLOW_35_in_slotname1245); 
            	    pushFollow(FOLLOW_identifier_in_slotname1249);
            	    tmp=identifier();

            	    state._fsp--;


            	    		buf.append(":").append(tmp.getText());
            	    	

            	    }
            	    break;
            	case 3 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:497:3: ( '[' tmp= identifier ']' )
            	    {
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:497:3: ( '[' tmp= identifier ']' )
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:497:4: '[' tmp= identifier ']'
            	    {
            	    match(input,37,FOLLOW_37_in_slotname1257); 
            	    pushFollow(FOLLOW_identifier_in_slotname1261);
            	    tmp=identifier();

            	    state._fsp--;

            	    match(input,38,FOLLOW_38_in_slotname1263); 

            	    }


            	    		buf.append("[").append(tmp.getText()).append("]");
            	    	

            	    }
            	    break;
            	case 4 :
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:501:3: ( '[' StringLiteral ']' )
            	    {
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:501:3: ( '[' StringLiteral ']' )
            	    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:501:4: '[' StringLiteral ']'
            	    {
            	    match(input,37,FOLLOW_37_in_slotname1273); 
            	    StringLiteral2=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_slotname1275); 
            	    match(input,38,FOLLOW_38_in_slotname1277); 

            	    }


            	    		buf.append("[").append((StringLiteral2!=null?StringLiteral2.getText():null).substring(1, (StringLiteral2!=null?StringLiteral2.getText():null).length()-1)).append("]");
            	    	

            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);


            		id = buf.toString();
            	

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return id;
    }
    // $ANTLR end "slotname"


    // $ANTLR start "methodname"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:512:1: methodname returns [String id] : tmp= identifier ;
    public final String methodname() throws RecognitionException {
        String id = null;

        Token tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:513:2: (tmp= identifier )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:513:4: tmp= identifier
            {
            pushFollow(FOLLOW_identifier_in_methodname1308);
            tmp=identifier();

            state._fsp--;

            id = tmp.getText();

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return id;
    }
    // $ANTLR end "methodname"


    // $ANTLR start "functionName"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:516:1: functionName returns [String id] : tmp= typename ;
    public final String functionName() throws RecognitionException {
        String id = null;

        String tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:517:2: (tmp= typename )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:517:4: tmp= typename
            {
            pushFollow(FOLLOW_typename_in_functionName1327);
            tmp=typename();

            state._fsp--;

            id = tmp;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return id;
    }
    // $ANTLR end "functionName"


    // $ANTLR start "literal"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:520:1: literal returns [Object val] : (lit= floatingPointLiteral | lit= integerLiteral | CharacterLiteral | StringLiteral | BooleanLiteral | 'null' );
    public final Object literal() throws RecognitionException {
        Object val = null;

        Token CharacterLiteral3=null;
        Token StringLiteral4=null;
        Token BooleanLiteral5=null;
        Object lit = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:521:2: (lit= floatingPointLiteral | lit= integerLiteral | CharacterLiteral | StringLiteral | BooleanLiteral | 'null' )
            int alt26=6;
            switch ( input.LA(1) ) {
            case 40:
            case 41:
                {
                int LA26_1 = input.LA(2);

                if ( ((LA26_1>=HexLiteral && LA26_1<=DecimalLiteral)) ) {
                    alt26=2;
                }
                else if ( (LA26_1==FloatingPointLiteral) ) {
                    alt26=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 26, 1, input);

                    throw nvae;
                }
                }
                break;
            case FloatingPointLiteral:
                {
                alt26=1;
                }
                break;
            case HexLiteral:
            case OctalLiteral:
            case DecimalLiteral:
                {
                alt26=2;
                }
                break;
            case CharacterLiteral:
                {
                alt26=3;
                }
                break;
            case StringLiteral:
                {
                alt26=4;
                }
                break;
            case BooleanLiteral:
                {
                alt26=5;
                }
                break;
            case 39:
                {
                alt26=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }

            switch (alt26) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:521:4: lit= floatingPointLiteral
                    {
                    pushFollow(FOLLOW_floatingPointLiteral_in_literal1347);
                    lit=floatingPointLiteral();

                    state._fsp--;

                    val = lit;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:522:4: lit= integerLiteral
                    {
                    pushFollow(FOLLOW_integerLiteral_in_literal1356);
                    lit=integerLiteral();

                    state._fsp--;

                    val = lit;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:523:4: CharacterLiteral
                    {
                    CharacterLiteral3=(Token)match(input,CharacterLiteral,FOLLOW_CharacterLiteral_in_literal1363); 
                    val = new Character((CharacterLiteral3!=null?CharacterLiteral3.getText():null).charAt(0));

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:524:4: StringLiteral
                    {
                    StringLiteral4=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_literal1370); 
                    val = (StringLiteral4!=null?StringLiteral4.getText():null).substring(1, (StringLiteral4!=null?StringLiteral4.getText():null).length()-1);

                    }
                    break;
                case 5 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:525:4: BooleanLiteral
                    {
                    BooleanLiteral5=(Token)match(input,BooleanLiteral,FOLLOW_BooleanLiteral_in_literal1377); 
                    val = (BooleanLiteral5!=null?BooleanLiteral5.getText():null).equals("true")? Boolean.TRUE: Boolean.FALSE;

                    }
                    break;
                case 6 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:526:4: 'null'
                    {
                    match(input,39,FOLLOW_39_in_literal1384); 
                    val = null;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return val;
    }
    // $ANTLR end "literal"


    // $ANTLR start "floatingPointLiteral"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:529:1: floatingPointLiteral returns [Object val] : (sign= ( '+' | '-' ) )? FloatingPointLiteral ;
    public final Object floatingPointLiteral() throws RecognitionException {
        Object val = null;

        Token sign=null;
        Token FloatingPointLiteral6=null;

        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:530:2: ( (sign= ( '+' | '-' ) )? FloatingPointLiteral )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:530:4: (sign= ( '+' | '-' ) )? FloatingPointLiteral
            {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:530:8: (sign= ( '+' | '-' ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( ((LA27_0>=40 && LA27_0<=41)) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:530:8: sign= ( '+' | '-' )
                    {
                    sign=(Token)input.LT(1);
                    if ( (input.LA(1)>=40 && input.LA(1)<=41) ) {
                        input.consume();
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }

            FloatingPointLiteral6=(Token)match(input,FloatingPointLiteral,FOLLOW_FloatingPointLiteral_in_floatingPointLiteral1410); 
            val = sign!=null && "-".equals(sign.getText())? new Double("-"+(FloatingPointLiteral6!=null?FloatingPointLiteral6.getText():null)): new Double((FloatingPointLiteral6!=null?FloatingPointLiteral6.getText():null));

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return val;
    }
    // $ANTLR end "floatingPointLiteral"


    // $ANTLR start "integerLiteral"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:533:1: integerLiteral returns [Object val] : (sign= ( '+' | '-' ) )? ( HexLiteral | OctalLiteral | DecimalLiteral ) ;
    public final Object integerLiteral() throws RecognitionException {
        Object val = null;

        Token sign=null;
        Token HexLiteral7=null;
        Token OctalLiteral8=null;
        Token DecimalLiteral9=null;

        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:2: ( (sign= ( '+' | '-' ) )? ( HexLiteral | OctalLiteral | DecimalLiteral ) )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:4: (sign= ( '+' | '-' ) )? ( HexLiteral | OctalLiteral | DecimalLiteral )
            {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:8: (sign= ( '+' | '-' ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( ((LA28_0>=40 && LA28_0<=41)) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:8: sign= ( '+' | '-' )
                    {
                    sign=(Token)input.LT(1);
                    if ( (input.LA(1)>=40 && input.LA(1)<=41) ) {
                        input.consume();
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }

            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:20: ( HexLiteral | OctalLiteral | DecimalLiteral )
            int alt29=3;
            switch ( input.LA(1) ) {
            case HexLiteral:
                {
                alt29=1;
                }
                break;
            case OctalLiteral:
                {
                alt29=2;
                }
                break;
            case DecimalLiteral:
                {
                alt29=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 29, 0, input);

                throw nvae;
            }

            switch (alt29) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:534:21: HexLiteral
                    {
                    HexLiteral7=(Token)match(input,HexLiteral,FOLLOW_HexLiteral_in_integerLiteral1438); 
                    val = sign!=null && "-".equals(sign.getText())? new Integer("-"+(HexLiteral7!=null?HexLiteral7.getText():null)): new Integer((HexLiteral7!=null?HexLiteral7.getText():null));

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:535:4: OctalLiteral
                    {
                    OctalLiteral8=(Token)match(input,OctalLiteral,FOLLOW_OctalLiteral_in_integerLiteral1445); 
                    val = sign!=null && "-".equals(sign.getText())? new Integer("-"+(OctalLiteral8!=null?OctalLiteral8.getText():null)): new Integer((OctalLiteral8!=null?OctalLiteral8.getText():null));

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:536:4: DecimalLiteral
                    {
                    DecimalLiteral9=(Token)match(input,DecimalLiteral,FOLLOW_DecimalLiteral_in_integerLiteral1452); 
                    val = sign!=null && "-".equals(sign.getText())? new Integer("-"+(DecimalLiteral9!=null?DecimalLiteral9.getText():null)): new Integer((DecimalLiteral9!=null?DecimalLiteral9.getText():null));

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return val;
    }
    // $ANTLR end "integerLiteral"


    // $ANTLR start "operator"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:539:1: operator returns [IOperator operator] : (tmp= equalOperator | '!=' | '~' | '>' | '<' | '>=' | '<=' | 'contains' | 'excludes' );
    public final IOperator operator() throws RecognitionException {
        IOperator operator = null;

        IOperator tmp = null;


        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:540:2: (tmp= equalOperator | '!=' | '~' | '>' | '<' | '>=' | '<=' | 'contains' | 'excludes' )
            int alt30=9;
            switch ( input.LA(1) ) {
            case 50:
                {
                alt30=1;
                }
                break;
            case 42:
                {
                alt30=2;
                }
                break;
            case 43:
                {
                alt30=3;
                }
                break;
            case 44:
                {
                alt30=4;
                }
                break;
            case 45:
                {
                alt30=5;
                }
                break;
            case 46:
                {
                alt30=6;
                }
                break;
            case 47:
                {
                alt30=7;
                }
                break;
            case 48:
                {
                alt30=8;
                }
                break;
            case 49:
                {
                alt30=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }

            switch (alt30) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:540:4: tmp= equalOperator
                    {
                    pushFollow(FOLLOW_equalOperator_in_operator1472);
                    tmp=equalOperator();

                    state._fsp--;

                    operator = tmp;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:541:4: '!='
                    {
                    match(input,42,FOLLOW_42_in_operator1480); 
                    operator = IOperator.NOTEQUAL;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:542:4: '~'
                    {
                    match(input,43,FOLLOW_43_in_operator1487); 
                    operator = IOperator.NOTEQUAL;

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:543:4: '>'
                    {
                    match(input,44,FOLLOW_44_in_operator1494); 
                    operator = IOperator.GREATER;

                    }
                    break;
                case 5 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:544:4: '<'
                    {
                    match(input,45,FOLLOW_45_in_operator1501); 
                    operator = IOperator.LESS;

                    }
                    break;
                case 6 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:545:4: '>='
                    {
                    match(input,46,FOLLOW_46_in_operator1508); 
                    operator = IOperator.GREATEROREQUAL;

                    }
                    break;
                case 7 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:546:4: '<='
                    {
                    match(input,47,FOLLOW_47_in_operator1515); 
                    operator = IOperator.LESSOREQUAL;

                    }
                    break;
                case 8 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:547:4: 'contains'
                    {
                    match(input,48,FOLLOW_48_in_operator1522); 
                    operator = IOperator.CONTAINS;

                    }
                    break;
                case 9 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:548:4: 'excludes'
                    {
                    match(input,49,FOLLOW_49_in_operator1529); 
                    operator = IOperator.EXCLUDES;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return operator;
    }
    // $ANTLR end "operator"


    // $ANTLR start "equalOperator"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:551:1: equalOperator returns [IOperator operator] : '==' ;
    public final IOperator equalOperator() throws RecognitionException {
        IOperator operator = null;

        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:552:2: ( '==' )
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:552:4: '=='
            {
            match(input,50,FOLLOW_50_in_equalOperator1546); 
            operator = IOperator.EQUAL;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return operator;
    }
    // $ANTLR end "equalOperator"


    // $ANTLR start "identifier"
    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:555:1: identifier returns [Token identifier] : (tmp= Identifiertoken | tmp= 'test' | tmp= 'not' | tmp= 'and' | tmp= 'collect' | tmp= 'contains' | tmp= 'excludes' );
    public final Token identifier() throws RecognitionException {
        Token identifier = null;

        Token tmp=null;

        try {
            // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:556:2: (tmp= Identifiertoken | tmp= 'test' | tmp= 'not' | tmp= 'and' | tmp= 'collect' | tmp= 'contains' | tmp= 'excludes' )
            int alt31=7;
            switch ( input.LA(1) ) {
            case Identifiertoken:
                {
                alt31=1;
                }
                break;
            case 29:
                {
                alt31=2;
                }
                break;
            case 28:
                {
                alt31=3;
                }
                break;
            case 26:
                {
                alt31=4;
                }
                break;
            case 32:
                {
                alt31=5;
                }
                break;
            case 48:
                {
                alt31=6;
                }
                break;
            case 49:
                {
                alt31=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }

            switch (alt31) {
                case 1 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:556:4: tmp= Identifiertoken
                    {
                    tmp=(Token)match(input,Identifiertoken,FOLLOW_Identifiertoken_in_identifier1566); 
                    identifier = tmp;

                    }
                    break;
                case 2 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:557:4: tmp= 'test'
                    {
                    tmp=(Token)match(input,29,FOLLOW_29_in_identifier1575); 
                    identifier = tmp;

                    }
                    break;
                case 3 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:558:4: tmp= 'not'
                    {
                    tmp=(Token)match(input,28,FOLLOW_28_in_identifier1584); 
                    identifier = tmp;

                    }
                    break;
                case 4 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:559:4: tmp= 'and'
                    {
                    tmp=(Token)match(input,26,FOLLOW_26_in_identifier1593); 
                    identifier = tmp;

                    }
                    break;
                case 5 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:560:4: tmp= 'collect'
                    {
                    tmp=(Token)match(input,32,FOLLOW_32_in_identifier1602); 
                    identifier = tmp;

                    }
                    break;
                case 6 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:561:4: tmp= 'contains'
                    {
                    tmp=(Token)match(input,48,FOLLOW_48_in_identifier1611); 
                    identifier = tmp;

                    }
                    break;
                case 7 :
                    // C:\\Files\\Checkouts\\jadexv2\\jadex-rules\\src\\main\\java\\jadex\\rules\\parser\\conditions\\ClipsJadex.g:562:4: tmp= 'excludes'
                    {
                    tmp=(Token)match(input,49,FOLLOW_49_in_identifier1620); 
                    identifier = tmp;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return identifier;
    }
    // $ANTLR end "identifier"

    // Delegated rules


    protected DFA9 dfa9 = new DFA9(this);
    protected DFA13 dfa13 = new DFA13(this);
    protected DFA15 dfa15 = new DFA15(this);
    protected DFA22 dfa22 = new DFA22(this);
    static final String DFA9_eotS =
        "\15\uffff";
    static final String DFA9_eofS =
        "\15\uffff";
    static final String DFA9_minS =
        "\1\31\1\uffff\1\14\7\5\3\uffff";
    static final String DFA9_maxS =
        "\1\33\1\uffff\1\61\7\62\3\uffff";
    static final String DFA9_acceptS =
        "\1\uffff\1\4\10\uffff\1\3\1\1\1\2";
    static final String DFA9_specialS =
        "\15\uffff}>";
    static final String[] DFA9_transitionS = {
            "\1\2\1\uffff\1\1",
            "",
            "\1\3\14\uffff\1\12\1\6\1\uffff\1\5\1\4\2\uffff\1\7\17\uffff"+
            "\1\10\1\11",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "\7\13\15\uffff\1\14\7\uffff\5\13\1\uffff\14\13",
            "",
            "",
            ""
    };

    static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
    static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
    static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
    static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
    static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
    static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
    static final short[][] DFA9_transition;

    static {
        int numStates = DFA9_transitionS.length;
        DFA9_transition = new short[numStates][];
        for (int i=0; i=0 ) return s;
                        break;
            }
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 22, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_ce_in_rhs53 = new BitSet(new long[]{0x0000000602000000L});
    public static final BitSet FOLLOW_EOF_in_rhs68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_andce_in_ce93 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_notce_in_ce109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_testce_in_ce125 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_collectce_in_ce137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_objectce_in_ce151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_andce175 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_andce177 = new BitSet(new long[]{0x0000000602000000L});
    public static final BitSet FOLLOW_ce_in_andce182 = new BitSet(new long[]{0x000000060A000000L});
    public static final BitSet FOLLOW_27_in_andce192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_notce211 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_notce213 = new BitSet(new long[]{0x0000000602000000L});
    public static final BitSet FOLLOW_ce_in_notce217 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_notce220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_testce239 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_testce241 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_operatorCall_in_testce249 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_functionCall_in_testce261 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_testce269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multiFieldVariable_in_collectce296 = new BitSet(new long[]{0x00000000C0000000L});
    public static final BitSet FOLLOW_set_in_collectce299 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_collectce311 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_collectce313 = new BitSet(new long[]{0x0000000602000000L});
    public static final BitSet FOLLOW_ce_in_collectce318 = new BitSet(new long[]{0x0000000E0A000000L});
    public static final BitSet FOLLOW_predicateConstraint_in_collectce331 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_collectce335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_singleFieldVariable_in_objectce364 = new BitSet(new long[]{0x00000000C0000000L});
    public static final BitSet FOLLOW_set_in_objectce367 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_objectce379 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_typename_in_objectce385 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_attributeConstraint_in_objectce394 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_methodConstraint_in_objectce405 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_functionConstraint_in_objectce416 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_27_in_objectce428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_attributeConstraint450 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_slotname_in_attributeConstraint454 = new BitSet(new long[]{0x0007FF8E00000FE0L});
    public static final BitSet FOLLOW_constraint_in_attributeConstraint458 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_attributeConstraint461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_methodConstraint488 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_methodname_in_methodConstraint492 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_methodConstraint494 = new BitSet(new long[]{0x0007FF860A000FE0L});
    public static final BitSet FOLLOW_parameter_in_methodConstraint498 = new BitSet(new long[]{0x0007FF860A000FE0L});
    public static final BitSet FOLLOW_27_in_methodConstraint508 = new BitSet(new long[]{0x0007FF8E00000FE0L});
    public static final BitSet FOLLOW_constraint_in_methodConstraint512 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_methodConstraint515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_functionConstraint542 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_functionCall_in_functionConstraint546 = new BitSet(new long[]{0x0007FF8E00000FE0L});
    public static final BitSet FOLLOW_constraint_in_functionConstraint551 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_functionConstraint554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_constraint584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_constraint590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_singleConstraint_in_constraint598 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ConstraintOperator_in_constraint607 = new BitSet(new long[]{0x0007FF8E00000FE0L});
    public static final BitSet FOLLOW_singleConstraint_in_constraint611 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_literalConstraint_in_singleConstraint643 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_boundConstraint_in_singleConstraint654 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multiBoundConstraint_in_singleConstraint664 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_predicateConstraint_in_singleConstraint674 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_returnValueConstraint_in_singleConstraint684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operator_in_literalConstraint706 = new BitSet(new long[]{0x0007FF8000000FE0L});
    public static final BitSet FOLLOW_constant_in_literalConstraint711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_boundConstraint_in_someBoundConstraint734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multiBoundConstraint_in_someBoundConstraint747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operator_in_boundConstraint770 = new BitSet(new long[]{0x0007FC0600000000L});
    public static final BitSet FOLLOW_variable_in_boundConstraint775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operator_in_multiBoundConstraint803 = new BitSet(new long[]{0x0007FC0600000000L});
    public static final BitSet FOLLOW_variable_in_multiBoundConstraint808 = new BitSet(new long[]{0x0007FC0600000000L});
    public static final BitSet FOLLOW_variable_in_multiBoundConstraint818 = new BitSet(new long[]{0x0007FC0600000002L});
    public static final BitSet FOLLOW_35_in_predicateConstraint846 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_functionCall_in_predicateConstraint853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operatorCall_in_predicateConstraint864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_equalOperator_in_returnValueConstraint888 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_functionCall_in_returnValueConstraint895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operatorCall_in_returnValueConstraint906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_functionCall936 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_functionName_in_functionCall940 = new BitSet(new long[]{0x0007FF860A000FE0L});
    public static final BitSet FOLLOW_parameter_in_functionCall945 = new BitSet(new long[]{0x0007FF860A000FE0L});
    public static final BitSet FOLLOW_27_in_functionCall955 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_operatorCall976 = new BitSet(new long[]{0x0007FC0000000000L});
    public static final BitSet FOLLOW_operator_in_operatorCall981 = new BitSet(new long[]{0x0007FF8602000FE0L});
    public static final BitSet FOLLOW_parameter_in_operatorCall986 = new BitSet(new long[]{0x0007FF8602000FE0L});
    public static final BitSet FOLLOW_parameter_in_operatorCall991 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_operatorCall994 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constant_in_parameter1017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variable_in_parameter1027 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionCall_in_parameter1039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operatorCall_in_parameter1049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_constant1070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_singleFieldVariable_in_variable1093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multiFieldVariable_in_variable1103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_singleFieldVariable1123 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_singleFieldVariable1127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_multiFieldVariable1149 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_multiFieldVariable1153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifier_in_typename1179 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_typename1187 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_typename1191 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_identifier_in_slotname1226 = new BitSet(new long[]{0x0000003800000002L});
    public static final BitSet FOLLOW_36_in_slotname1234 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_slotname1238 = new BitSet(new long[]{0x0000003800000002L});
    public static final BitSet FOLLOW_35_in_slotname1245 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_slotname1249 = new BitSet(new long[]{0x0000003800000002L});
    public static final BitSet FOLLOW_37_in_slotname1257 = new BitSet(new long[]{0x0003000134001000L});
    public static final BitSet FOLLOW_identifier_in_slotname1261 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_slotname1263 = new BitSet(new long[]{0x0000003800000002L});
    public static final BitSet FOLLOW_37_in_slotname1273 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_StringLiteral_in_slotname1275 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_slotname1277 = new BitSet(new long[]{0x0000003800000002L});
    public static final BitSet FOLLOW_identifier_in_methodname1308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typename_in_functionName1327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_floatingPointLiteral_in_literal1347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_integerLiteral_in_literal1356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CharacterLiteral_in_literal1363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_StringLiteral_in_literal1370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BooleanLiteral_in_literal1377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_literal1384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_floatingPointLiteral1403 = new BitSet(new long[]{0x0000000000000100L});
    public static final BitSet FOLLOW_FloatingPointLiteral_in_floatingPointLiteral1410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_integerLiteral1430 = new BitSet(new long[]{0x0000000000000E00L});
    public static final BitSet FOLLOW_HexLiteral_in_integerLiteral1438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OctalLiteral_in_integerLiteral1445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DecimalLiteral_in_integerLiteral1452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_equalOperator_in_operator1472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_operator1480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_operator1487 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_operator1494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_operator1501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_operator1508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_operator1515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_operator1522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_operator1529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_equalOperator1546 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Identifiertoken_in_identifier1566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_identifier1575 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_identifier1584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_identifier1593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_identifier1602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_identifier1611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_identifier1620 = new BitSet(new long[]{0x0000000000000002L});

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy