[jboss-svn-commits] JBL Code SVN: r9995 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/org/drools/clp and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 6 00:11:31 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-03-06 00:11:31 -0500 (Tue, 06 Mar 2007)
New Revision: 9995

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp.tokens
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp__.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
Log:
JBRULES-720 Clips Parser
-Added 'test'

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java	2007-03-06 05:11:31 UTC (rev 9995)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-06 00:33:00
+// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-06 05:09:16
 
 	package org.drools.clp;
 
@@ -26,6 +26,7 @@
     public static final int T34=34;
     public static final int VAR=7;
     public static final int UnicodeEscape=17;
+    public static final int T37=37;
     public static final int EscapeSequence=15;
     public static final int INT=9;
     public static final int EOF=-1;
@@ -33,22 +34,24 @@
     public static final int NULL=12;
     public static final int EOL=13;
     public static final int LEFT_SQUARE=21;
-    public static final int Tokens=37;
+    public static final int Tokens=40;
     public static final int T31=31;
     public static final int SH_STYLE_SINGLE_LINE_COMMENT=19;
     public static final int OctalEscape=18;
     public static final int MULTI_LINE_COMMENT=25;
+    public static final int T38=38;
     public static final int T27=27;
     public static final int RIGHT_PAREN=6;
     public static final int T30=30;
     public static final int LEFT_CURLY=23;
+    public static final int T39=39;
     public static final int RIGHT_SQUARE=22;
     public static final int ID=5;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=20;
     public CLPLexer() {;} 
     public CLPLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[35+1];
+        ruleMemo = new HashMap[38+1];
      }
     public String getGrammarFileName() { return "C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g"; }
 
@@ -192,10 +195,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:10:7: ( '<-' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:10:7: '<-'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:10:7: ( 'not' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:10:7: 'not'
             {
-            match("<-"); if (failed) return ;
+            match("not"); if (failed) return ;
 
 
             }
@@ -225,11 +228,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:11:7: ( '&' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:11:7: '&'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:11:7: ( 'exists' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:11:7: 'exists'
             {
-            match('&'); if (failed) return ;
+            match("exists"); if (failed) return ;
 
+
             }
 
 
@@ -257,11 +261,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:12:7: ( '|' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:12:7: '|'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:12:7: ( 'test' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:12:7: 'test'
             {
-            match('|'); if (failed) return ;
+            match("test"); if (failed) return ;
 
+
             }
 
 
@@ -289,11 +294,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:13:7: ( '~' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:13:7: '~'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:13:7: ( '<-' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:13:7: '<-'
             {
-            match('~'); if (failed) return ;
+            match("<-"); if (failed) return ;
 
+
             }
 
 
@@ -321,10 +327,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:14:7: ( ':' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:14:7: ':'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:14:7: ( '&' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:14:7: '&'
             {
-            match(':'); if (failed) return ;
+            match('&'); if (failed) return ;
 
             }
 
@@ -353,10 +359,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:15:7: ( '=' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:15:7: '='
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:15:7: ( '|' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:15:7: '|'
             {
-            match('='); if (failed) return ;
+            match('|'); if (failed) return ;
 
             }
 
@@ -376,6 +382,102 @@
     }
     // $ANTLR end T36
 
+    // $ANTLR start T37
+    public void mT37() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = T37;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:16:7: ( '~' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:16:7: '~'
+            {
+            match('~'); if (failed) return ;
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }
+        }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end T37
+
+    // $ANTLR start T38
+    public void mT38() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = T38;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:17:7: ( ':' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:17:7: ':'
+            {
+            match(':'); if (failed) return ;
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }
+        }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end T38
+
+    // $ANTLR start T39
+    public void mT39() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = T39;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:18:7: ( '=' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:18:7: '='
+            {
+            match('='); if (failed) return ;
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }
+        }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end T39
+
     // $ANTLR start VAR
     public void mVAR() throws RecognitionException {
         try {
@@ -385,8 +487,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:440:8: ( '?' ID )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:440:8: '?' ID
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:461:8: ( '?' ID )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:461:8: '?' ID
             {
             match('?'); if (failed) return ;
             mID(); if (failed) return ;
@@ -418,8 +520,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:444:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:444:4: ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:465:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:465:4: ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
             {
             if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                 input.consume();
@@ -432,7 +534,7 @@
                 recover(mse);    throw mse;
             }
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:444:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:465:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
             loop1:
             do {
                 int alt1=2;
@@ -444,7 +546,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:444:51: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff')
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:465:51: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff')
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
             	        input.consume();
@@ -494,8 +596,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:447:8: ( 'null' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:447:8: 'null'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:468:8: ( 'null' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:468:8: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -527,10 +629,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:449:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:449:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:17: ( ' ' | '\\t' | '\\f' | EOL )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:449:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:17: ( ' ' | '\\t' | '\\f' | EOL )
             int alt2=4;
             switch ( input.LA(1) ) {
             case ' ':
@@ -549,35 +651,35 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("449:17: ( ' ' | '\\t' | '\\f' | EOL )", 2, 0, input);
+                    new NoViableAltException("470:17: ( ' ' | '\\t' | '\\f' | EOL )", 2, 0, input);
 
                 throw nvae;
             }
 
             switch (alt2) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:449:19: ' '
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:19: ' '
                     {
                     match(' '); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:450:19: '\\t'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:471:19: '\\t'
                     {
                     match('\t'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:451:19: '\\f'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:472:19: '\\f'
                     {
                     match('\f'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:452:19: EOL
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:473:19: EOL
                     {
                     mEOL(); if (failed) return ;
 
@@ -612,10 +714,10 @@
     public void mEOL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:459:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:459:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:480:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:480:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:459:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:480:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt3=3;
             int LA3_0 = input.LA(1);
             if ( (LA3_0=='\r') ) {
@@ -632,13 +734,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("459:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 3, 0, input);
+                    new NoViableAltException("480:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:459:14: ( '\\r\\n' )=> '\\r\\n'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:480:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -646,14 +748,14 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:460:25: '\\r'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:481:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:461:25: '\\n'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:482:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -681,10 +783,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:4: ( ( '-' )? ( '0' .. '9' )+ )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:4: ( '-' )? ( '0' .. '9' )+
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:4: ( ( '-' )? ( '0' .. '9' )+ )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:4: ( '-' )? ( '0' .. '9' )+
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:4: ( '-' )?
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:4: ( '-' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
             if ( (LA4_0=='-') ) {
@@ -692,7 +794,7 @@
             }
             switch (alt4) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:5: '-'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -701,7 +803,7 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:10: ( '0' .. '9' )+
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:10: ( '0' .. '9' )+
             int cnt5=0;
             loop5:
             do {
@@ -714,7 +816,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:466:11: '0' .. '9'
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:487:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -759,10 +861,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:4: ( '-' )?
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: ( '-' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
             if ( (LA6_0=='-') ) {
@@ -770,7 +872,7 @@
             }
             switch (alt6) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:5: '-'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -779,7 +881,7 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:10: ( '0' .. '9' )+
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:10: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -792,7 +894,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:11: '0' .. '9'
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -810,7 +912,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:26: ( '0' .. '9' )+
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:26: ( '0' .. '9' )+
             int cnt8=0;
             loop8:
             do {
@@ -823,7 +925,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:470:27: '0' .. '9'
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -868,7 +970,7 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
             int alt11=2;
             int LA11_0 = input.LA(1);
             if ( (LA11_0=='\"') ) {
@@ -880,19 +982,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("473:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 11, 0, input);
+                    new NoViableAltException("494:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
                     {
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
                     loop9:
                     do {
                         int alt9=3;
@@ -907,14 +1009,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:15: EscapeSequence
+                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:474:32: ~ ('\\\\'|'\"')
+                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:495:32: ~ ('\\\\'|'\"')
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -944,13 +1046,13 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
                     {
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
                     loop10:
                     do {
                         int alt10=3;
@@ -965,14 +1067,14 @@
 
                         switch (alt10) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:16: EscapeSequence
+                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:475:33: ~ ('\\\\'|'\\'')
+                    	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:496:33: ~ ('\\\\'|'\\'')
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -1023,8 +1125,8 @@
     public void mHexDigit() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:479:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:479:12: ('0'..'9'|'a'..'f'|'A'..'F')
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:500:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:500:12: ('0'..'9'|'a'..'f'|'A'..'F')
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
@@ -1051,7 +1153,7 @@
     public void mEscapeSequence() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:483:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:504:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
             int alt12=3;
             int LA12_0 = input.LA(1);
             if ( (LA12_0=='\\') ) {
@@ -1082,7 +1184,7 @@
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("481:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 12, 1, input);
+                        new NoViableAltException("502:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -1091,13 +1193,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("481:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 12, 0, input);
+                    new NoViableAltException("502:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:483:9: '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\')
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:504:9: '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\')
                     {
                     match('\\'); if (failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
@@ -1115,14 +1217,14 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:484:9: UnicodeEscape
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:505:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:485:9: OctalEscape
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:506:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -1141,7 +1243,7 @@
     public void mOctalEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt13=3;
             int LA13_0 = input.LA(1);
             if ( (LA13_0=='\\') ) {
@@ -1149,8 +1251,8 @@
                 if ( ((LA13_1>='0' && LA13_1<='3')) ) {
                     int LA13_2 = input.LA(3);
                     if ( ((LA13_2>='0' && LA13_2<='7')) ) {
-                        int LA13_5 = input.LA(4);
-                        if ( ((LA13_5>='0' && LA13_5<='7')) ) {
+                        int LA13_4 = input.LA(4);
+                        if ( ((LA13_4>='0' && LA13_4<='7')) ) {
                             alt13=1;
                         }
                         else {
@@ -1170,7 +1272,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("488:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 13, 1, input);
+                        new NoViableAltException("509:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 13, 1, input);
 
                     throw nvae;
                 }
@@ -1178,31 +1280,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("488:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 13, 0, input);
+                    new NoViableAltException("509:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:14: ( '0' .. '3' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:15: '0' .. '3'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:14: ( '0' .. '3' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:25: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:26: '0' .. '7'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:25: ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:36: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:490:37: '0' .. '7'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:36: ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1212,18 +1314,18 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:512:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:14: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:15: '0' .. '7'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:512:14: ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:512:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:25: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:26: '0' .. '7'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:512:25: ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:512:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1233,11 +1335,11 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:492:9: '\\\\' ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:513:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:492:14: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:492:15: '0' .. '7'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:513:14: ( '0' .. '7' )
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:513:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1259,8 +1361,8 @@
     public void mUnicodeEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:497:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:497:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:518:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:518:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -1287,10 +1389,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:501:4: ( ( 'true' | 'false' ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:501:4: ( 'true' | 'false' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:522:4: ( ( 'true' | 'false' ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:522:4: ( 'true' | 'false' )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:501:4: ( 'true' | 'false' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:522:4: ( 'true' | 'false' )
             int alt14=2;
             int LA14_0 = input.LA(1);
             if ( (LA14_0=='t') ) {
@@ -1302,13 +1404,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("501:4: ( 'true' | 'false' )", 14, 0, input);
+                    new NoViableAltException("522:4: ( 'true' | 'false' )", 14, 0, input);
 
                 throw nvae;
             }
             switch (alt14) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:501:5: 'true'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:522:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -1316,7 +1418,7 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:501:12: 'false'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:522:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -1354,11 +1456,11 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:505:4: ( '#' ( options {greedy=false; } : . )* EOL )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:505:4: '#' ( options {greedy=false; } : . )* EOL
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:526:4: ( '#' ( options {greedy=false; } : . )* EOL )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:526:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:505:8: ( options {greedy=false; } : . )*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:526:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -1376,7 +1478,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:505:35: .
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:526:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1420,12 +1522,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:4: ( '//' ( options {greedy=false; } : . )* EOL )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:4: '//' ( options {greedy=false; } : . )* EOL
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:532:4: ( '//' ( options {greedy=false; } : . )* EOL )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:532:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:9: ( options {greedy=false; } : . )*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:532:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -1443,7 +1545,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:511:36: .
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:532:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1487,8 +1589,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:517:4: ( '(' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:517:4: '('
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:538:4: ( '(' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:538:4: '('
             {
             match('('); if (failed) return ;
 
@@ -1519,8 +1621,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:521:4: ( ')' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:521:4: ')'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:542:4: ( ')' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:542:4: ')'
             {
             match(')'); if (failed) return ;
 
@@ -1551,8 +1653,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:525:4: ( '[' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:525:4: '['
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:546:4: ( '[' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:546:4: '['
             {
             match('['); if (failed) return ;
 
@@ -1583,8 +1685,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:529:4: ( ']' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:529:4: ']'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:550:4: ( ']' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:550:4: ']'
             {
             match(']'); if (failed) return ;
 
@@ -1615,8 +1717,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:533:4: ( '{' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:533:4: '{'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:554:4: ( '{' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:554:4: '{'
             {
             match('{'); if (failed) return ;
 
@@ -1647,8 +1749,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:537:4: ( '}' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:537:4: '}'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:558:4: ( '}' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:558:4: '}'
             {
             match('}'); if (failed) return ;
 
@@ -1679,12 +1781,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:541:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:541:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:562:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:562:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:541:9: ( options {greedy=false; } : . )*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:562:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1707,7 +1809,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:541:35: .
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:562:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1752,8 +1854,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:545:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:546:3: ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\')
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:566:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:567:3: ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\')
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='-')||input.LA(1)=='/'||input.LA(1)=='='||(input.LA(1)>='?' && input.LA(1)<='@')||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
                 input.consume();
@@ -1786,8 +1888,8 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:10: ( T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | VAR | ID | NULL | WS | INT | FLOAT | STRING | BOOL | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
-        int alt18=28;
+        // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:10: ( T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | VAR | ID | NULL | WS | INT | FLOAT | STRING | BOOL | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
+        int alt18=31;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
@@ -1861,127 +1963,148 @@
                 }
                 break;
             case 11 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:50: VAR
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:50: T37
                 {
-                mVAR(); if (failed) return ;
+                mT37(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:54: ID
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:54: T38
                 {
-                mID(); if (failed) return ;
+                mT38(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:57: NULL
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:58: T39
                 {
-                mNULL(); if (failed) return ;
+                mT39(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:62: WS
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:62: VAR
                 {
-                mWS(); if (failed) return ;
+                mVAR(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:65: INT
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:66: ID
                 {
-                mINT(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:69: FLOAT
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:69: NULL
                 {
-                mFLOAT(); if (failed) return ;
+                mNULL(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:75: STRING
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:74: WS
                 {
-                mSTRING(); if (failed) return ;
+                mWS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:82: BOOL
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:77: INT
                 {
-                mBOOL(); if (failed) return ;
+                mINT(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:87: SH_STYLE_SINGLE_LINE_COMMENT
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:81: FLOAT
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:116: C_STYLE_SINGLE_LINE_COMMENT
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:87: STRING
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:144: LEFT_PAREN
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:94: BOOL
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:155: RIGHT_PAREN
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:99: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:167: LEFT_SQUARE
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:128: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:179: RIGHT_SQUARE
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:156: LEFT_PAREN
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:192: LEFT_CURLY
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:167: RIGHT_PAREN
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:203: RIGHT_CURLY
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:179: LEFT_SQUARE
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:215: MULTI_LINE_COMMENT
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:191: RIGHT_SQUARE
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:234: MISC
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:204: LEFT_CURLY
                 {
+                mLEFT_CURLY(); if (failed) return ;
+
+                }
+                break;
+            case 29 :
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:215: RIGHT_CURLY
+                {
+                mRIGHT_CURLY(); if (failed) return ;
+
+                }
+                break;
+            case 30 :
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:227: MULTI_LINE_COMMENT
+                {
+                mMULTI_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 31 :
+                // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:1:246: MISC
+                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -1994,58 +2117,62 @@
 
     protected DFA18 dfa18 = new DFA18(this);
     public static final String DFA18_eotS =
-        "\2\uffff\3\35\6\uffff\1\36\2\35\1\uffff\1\36\1\51\1\uffff\1\36\1"+
-        "\35\2\uffff\1\36\10\uffff\2\35\1\57\4\uffff\2\35\2\uffff\1\35\2"+
-        "\uffff\1\35\1\64\1\uffff\4\35\3\uffff\2\35\1\uffff\1\35\1\74\1\uffff";
+        "\2\uffff\6\36\6\uffff\1\37\1\36\1\uffff\1\37\1\55\1\uffff\1\37\2"+
+        "\uffff\1\37\10\uffff\2\36\1\63\5\36\4\uffff\1\36\4\uffff\1\36\1"+
+        "\73\1\uffff\1\36\1\75\5\36\3\uffff\1\36\1\uffff\1\104\3\36\2\uffff"+
+        "\1\36\1\111\1\112\2\uffff";
     public static final String DFA18_eofS =
-        "\75\uffff";
+        "\113\uffff";
     public static final String DFA18_minS =
-        "\1\11\1\uffff\1\145\1\156\1\162\6\uffff\1\44\1\165\1\162\1\uffff"+
-        "\1\60\1\56\1\uffff\1\0\1\141\2\uffff\1\52\10\uffff\1\146\1\144\1"+
-        "\60\4\uffff\1\154\1\165\2\uffff\1\154\2\uffff\1\162\1\60\1\uffff"+
-        "\1\154\1\145\1\163\1\165\3\uffff\1\145\1\154\1\uffff\1\145\1\60"+
-        "\1\uffff";
+        "\1\11\1\uffff\1\145\1\156\1\162\1\157\1\170\1\145\6\uffff\1\44\1"+
+        "\141\1\uffff\1\60\1\56\1\uffff\1\0\2\uffff\1\52\10\uffff\1\146\1"+
+        "\144\1\60\1\154\1\164\1\151\1\165\1\163\4\uffff\1\154\4\uffff\1"+
+        "\162\1\60\1\uffff\1\154\1\60\1\163\1\145\1\164\1\163\1\165\3\uffff"+
+        "\1\164\1\uffff\1\60\1\145\1\154\1\163\2\uffff\1\145\2\60\2\uffff";
     public static final String DFA18_maxS =
-        "\1\u00ff\1\uffff\1\145\1\156\1\162\6\uffff\1\u00ff\1\165\1\162\1"+
-        "\uffff\2\71\1\uffff\1\ufffe\1\141\2\uffff\1\57\10\uffff\1\146\1"+
-        "\144\1\u00ff\4\uffff\1\154\1\165\2\uffff\1\154\2\uffff\1\162\1\u00ff"+
-        "\1\uffff\1\154\1\145\1\163\1\165\3\uffff\1\145\1\154\1\uffff\1\145"+
-        "\1\u00ff\1\uffff";
+        "\1\u00ff\1\uffff\1\145\1\156\1\162\1\165\1\170\1\162\6\uffff\1\u00ff"+
+        "\1\141\1\uffff\2\71\1\uffff\1\ufffe\2\uffff\1\57\10\uffff\1\146"+
+        "\1\144\1\u00ff\1\154\1\164\1\151\1\165\1\163\4\uffff\1\154\4\uffff"+
+        "\1\162\1\u00ff\1\uffff\1\154\1\u00ff\1\163\1\145\1\164\1\163\1\165"+
+        "\3\uffff\1\164\1\uffff\1\u00ff\1\145\1\154\1\163\2\uffff\1\145\2"+
+        "\u00ff\2\uffff";
     public static final String DFA18_acceptS =
-        "\1\uffff\1\1\3\uffff\1\5\1\6\1\7\1\10\1\11\1\12\3\uffff\1\16\2\uffff"+
-        "\1\21\2\uffff\1\14\1\23\1\uffff\1\25\1\26\1\27\1\30\1\31\1\32\1"+
-        "\14\1\34\3\uffff\1\6\1\7\1\12\1\13\2\uffff\1\20\1\17\1\uffff\1\24"+
-        "\1\33\2\uffff\1\4\4\uffff\1\3\2\14\2\uffff\1\14\2\uffff\1\2";
+        "\1\uffff\1\1\6\uffff\1\10\1\11\1\12\1\13\1\14\1\15\2\uffff\1\21"+
+        "\2\uffff\1\24\1\uffff\1\17\1\26\1\uffff\1\30\1\31\1\32\1\33\1\34"+
+        "\1\35\1\17\1\37\10\uffff\1\11\1\12\1\15\1\16\1\uffff\1\22\1\23\1"+
+        "\36\1\27\2\uffff\1\4\7\uffff\1\3\1\17\1\5\1\uffff\1\17\4\uffff\1"+
+        "\7\1\17\3\uffff\1\6\1\2";
     public static final String DFA18_specialS =
-        "\75\uffff}>";
+        "\113\uffff}>";
     public static final String[] DFA18_transition = {
-        "\2\16\1\uffff\2\16\22\uffff\1\16\1\36\1\21\1\25\1\24\1\36\1\6\1"+
-        "\22\1\27\1\30\3\36\1\17\1\uffff\1\26\12\20\1\11\1\1\1\5\1\12\1\uffff"+
-        "\1\13\1\36\32\35\1\31\1\36\1\32\1\36\1\24\1\uffff\1\3\2\35\1\2\1"+
-        "\35\1\23\7\35\1\14\1\4\4\35\1\15\6\35\1\33\1\7\1\34\1\10\101\uffff"+
-        "\100\35",
+        "\2\20\1\uffff\2\20\22\uffff\1\20\1\37\1\23\1\26\1\25\1\37\1\11\1"+
+        "\24\1\30\1\31\3\37\1\21\1\uffff\1\27\12\22\1\14\1\1\1\10\1\15\1"+
+        "\uffff\1\16\1\37\32\36\1\32\1\37\1\33\1\37\1\25\1\uffff\1\3\2\36"+
+        "\1\2\1\6\1\17\7\36\1\5\1\4\4\36\1\7\6\36\1\34\1\12\1\35\1\13\101"+
+        "\uffff\100\36",
         "",
-        "\1\37",
         "\1\40",
         "\1\41",
+        "\1\42",
+        "\1\44\5\uffff\1\43",
+        "\1\45",
+        "\1\47\14\uffff\1\46",
         "",
         "",
         "",
         "",
         "",
         "",
-        "\1\45\34\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100\45",
-        "\1\46",
-        "\1\47",
+        "\1\53\34\uffff\32\53\4\uffff\1\53\1\uffff\32\53\105\uffff\100\53",
+        "\1\54",
         "",
-        "\12\20",
-        "\1\50\1\uffff\12\20",
+        "\12\22",
+        "\1\56\1\uffff\12\22",
         "",
-        "\uffff\21",
-        "\1\52",
+        "\uffff\23",
         "",
         "",
-        "\1\54\4\uffff\1\53",
+        "\1\57\4\uffff\1\60",
         "",
         "",
         "",
@@ -2054,35 +2181,48 @@
         "",
         "",
         "",
-        "\1\55",
-        "\1\56",
-        "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100\35",
+        "\1\61",
+        "\1\62",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
+        "\1\64",
+        "\1\65",
+        "\1\66",
+        "\1\67",
+        "\1\70",
         "",
         "",
         "",
         "",
-        "\1\60",
-        "\1\61",
+        "\1\71",
         "",
         "",
-        "\1\62",
         "",
         "",
-        "\1\63",
-        "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100\35",
+        "\1\72",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
         "",
-        "\1\65",
-        "\1\66",
-        "\1\67",
-        "\1\70",
+        "\1\74",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
+        "\1\76",
+        "\1\77",
+        "\1\100",
+        "\1\101",
+        "\1\102",
         "",
         "",
         "",
-        "\1\71",
-        "\1\72",
+        "\1\103",
         "",
-        "\1\73",
-        "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100\35",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
+        "\1\105",
+        "\1\106",
+        "\1\107",
+        "",
+        "",
+        "\1\110",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
+        "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100\36",
+        "",
         ""
     };
 
@@ -2103,7 +2243,7 @@
             }
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | VAR | ID | NULL | WS | INT | FLOAT | STRING | BOOL | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | VAR | ID | NULL | WS | INT | FLOAT | STRING | BOOL | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java	2007-03-06 05:11:31 UTC (rev 9995)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-06 00:33:00
+// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-06 05:09:16
 
 	package org.drools.clp;
 	import java.util.List;
@@ -17,7 +17,7 @@
 
 public class CLPParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "LEFT_PAREN", "ID", "RIGHT_PAREN", "VAR", "STRING", "INT", "FLOAT", "BOOL", "NULL", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "LEFT_SQUARE", "RIGHT_SQUARE", "LEFT_CURLY", "RIGHT_CURLY", "MULTI_LINE_COMMENT", "MISC", "';'", "'defrule'", "'and'", "'or'", "'<-'", "'&'", "'|'", "'~'", "':'", "'='"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "LEFT_PAREN", "ID", "RIGHT_PAREN", "VAR", "STRING", "INT", "FLOAT", "BOOL", "NULL", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "LEFT_SQUARE", "RIGHT_SQUARE", "LEFT_CURLY", "RIGHT_CURLY", "MULTI_LINE_COMMENT", "MISC", "';'", "'defrule'", "'and'", "'or'", "'not'", "'exists'", "'test'", "'<-'", "'&'", "'|'", "'~'", "':'", "'='"
     };
     public static final int LEFT_PAREN=4;
     public static final int RIGHT_CURLY=24;
@@ -319,48 +319,57 @@
 
 
     // $ANTLR start lhs
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:235:1: lhs[ConditionalElementDescr in_ce] : ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] ) ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:235:1: lhs[ConditionalElementDescr in_ce] : ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] ) ;
     public void lhs(ConditionalElementDescr in_ce) throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:237:2: ( ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:237:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:236:4: ( ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:236:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:237:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )
-            int alt3=4;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:236:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )
+            int alt3=7;
             int LA3_0 = input.LA(1);
             if ( (LA3_0==LEFT_PAREN) ) {
                 switch ( input.LA(2) ) {
                 case 30:
                     alt3=2;
                     break;
+                case 32:
+                    alt3=4;
+                    break;
                 case ID:
-                    alt3=3;
+                    alt3=6;
                     break;
                 case 29:
                     alt3=1;
                     break;
+                case 31:
+                    alt3=3;
+                    break;
+                case 33:
+                    alt3=5;
+                    break;
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("237:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )", 3, 1, input);
+                        new NoViableAltException("236:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )", 3, 1, input);
 
                     throw nvae;
                 }
 
             }
             else if ( (LA3_0==VAR) ) {
-                alt3=4;
+                alt3=7;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("237:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )", 3, 0, input);
+                    new NoViableAltException("236:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] | bound_pattern[in_ce] )", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:237:6: and_ce[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:236:8: and_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_and_ce_in_lhs110);
+                    pushFollow(FOLLOW_and_ce_in_lhs109);
                     and_ce(in_ce);
                     _fsp--;
 
@@ -368,7 +377,7 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:238:6: or_ce[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:237:7: or_ce[in_ce]
                     {
                     pushFollow(FOLLOW_or_ce_in_lhs119);
                     or_ce(in_ce);
@@ -378,19 +387,49 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:239:6: normal_pattern[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:238:7: not_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_normal_pattern_in_lhs127);
-                    normal_pattern(in_ce);
+                    pushFollow(FOLLOW_not_ce_in_lhs128);
+                    not_ce(in_ce);
                     _fsp--;
 
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:240:6: bound_pattern[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:239:7: exists_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_bound_pattern_in_lhs135);
+                    pushFollow(FOLLOW_exists_ce_in_lhs137);
+                    exists_ce(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 5 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:240:8: eval_ce[in_ce]
+                    {
+                    pushFollow(FOLLOW_eval_ce_in_lhs151);
+                    eval_ce(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 6 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:241:7: normal_pattern[in_ce]
+                    {
+                    pushFollow(FOLLOW_normal_pattern_in_lhs165);
+                    normal_pattern(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 7 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:242:7: bound_pattern[in_ce]
+                    {
+                    pushFollow(FOLLOW_bound_pattern_in_lhs174);
                     bound_pattern(in_ce);
                     _fsp--;
 
@@ -416,29 +455,38 @@
 
 
     // $ANTLR start ce
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:244:1: ce[ConditionalElementDescr in_ce] : ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] ) ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:246:1: ce[ConditionalElementDescr in_ce] : ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] ) ;
     public void ce(ConditionalElementDescr in_ce) throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:246:2: ( ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:246:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:247:4: ( ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:247:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:246:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] )
-            int alt4=3;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:247:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] )
+            int alt4=6;
             int LA4_0 = input.LA(1);
             if ( (LA4_0==LEFT_PAREN) ) {
                 switch ( input.LA(2) ) {
-                case 30:
-                    alt4=2;
-                    break;
                 case 29:
                     alt4=1;
                     break;
-                case ID:
+                case 31:
                     alt4=3;
                     break;
+                case ID:
+                    alt4=6;
+                    break;
+                case 33:
+                    alt4=5;
+                    break;
+                case 30:
+                    alt4=2;
+                    break;
+                case 32:
+                    alt4=4;
+                    break;
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("246:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] )", 4, 1, input);
+                        new NoViableAltException("247:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] )", 4, 1, input);
 
                     throw nvae;
                 }
@@ -446,15 +494,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("246:2: ( and_ce[in_ce] | or_ce[in_ce] | normal_pattern[in_ce] )", 4, 0, input);
+                    new NoViableAltException("247:4: ( and_ce[in_ce] | or_ce[in_ce] | not_ce[in_ce] | exists_ce[in_ce] | eval_ce[in_ce] | normal_pattern[in_ce] )", 4, 0, input);
 
                 throw nvae;
             }
             switch (alt4) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:246:6: and_ce[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:247:8: and_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_and_ce_in_ce157);
+                    pushFollow(FOLLOW_and_ce_in_ce196);
                     and_ce(in_ce);
                     _fsp--;
 
@@ -462,9 +510,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:247:6: or_ce[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:248:10: or_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_or_ce_in_ce166);
+                    pushFollow(FOLLOW_or_ce_in_ce209);
                     or_ce(in_ce);
                     _fsp--;
 
@@ -472,9 +520,39 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:248:6: normal_pattern[in_ce]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:249:7: not_ce[in_ce]
                     {
-                    pushFollow(FOLLOW_normal_pattern_in_ce174);
+                    pushFollow(FOLLOW_not_ce_in_ce218);
+                    not_ce(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 4 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:250:7: exists_ce[in_ce]
+                    {
+                    pushFollow(FOLLOW_exists_ce_in_ce227);
+                    exists_ce(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 5 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:251:8: eval_ce[in_ce]
+                    {
+                    pushFollow(FOLLOW_eval_ce_in_ce241);
+                    eval_ce(in_ce);
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 6 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:252:10: normal_pattern[in_ce]
+                    {
+                    pushFollow(FOLLOW_normal_pattern_in_ce265);
                     normal_pattern(in_ce);
                     _fsp--;
 
@@ -500,21 +578,20 @@
 
 
     // $ANTLR start and_ce
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:253:1: and_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:257:1: and_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN ;
     public void and_ce(ConditionalElementDescr in_ce) throws RecognitionException {
         
-                AndDescr andDescr= null;
-                
+                AndDescr andDescr= null;        
             
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:260:3: ( LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:260:3: LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:261:4: ( LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:261:4: LEFT_PAREN 'and' ( ce[andDescr] )* RIGHT_PAREN
             {
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_and_ce208); 
-            match(input,29,FOLLOW_29_in_and_ce213); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_and_ce297); 
+            match(input,29,FOLLOW_29_in_and_ce302); 
             
-            		    andDescr = new AndDescr();
-            		    in_ce.addDescr( andDescr );
+            	    	andDescr = new AndDescr();
+            			in_ce.addDescr( andDescr );
             		
             // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:266:3: ( ce[andDescr] )*
             loop5:
@@ -530,7 +607,7 @@
             	case 1 :
             	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:266:3: ce[andDescr]
             	    {
-            	    pushFollow(FOLLOW_ce_in_and_ce221);
+            	    pushFollow(FOLLOW_ce_in_and_ce308);
             	    ce(andDescr);
             	    _fsp--;
 
@@ -543,7 +620,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_and_ce230); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_and_ce317); 
 
             }
 
@@ -563,20 +640,19 @@
     // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:270:1: or_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'or' ( ce[orDescr] )* RIGHT_PAREN ;
     public void or_ce(ConditionalElementDescr in_ce) throws RecognitionException {
         
-                OrDescr orDescr= null;
-                 
+                OrDescr orDescr= null;         
             
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:277:3: ( LEFT_PAREN 'or' ( ce[orDescr] )* RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:277:3: LEFT_PAREN 'or' ( ce[orDescr] )* RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:274:4: ( LEFT_PAREN 'or' ( ce[orDescr] )* RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:274:4: LEFT_PAREN 'or' ( ce[orDescr] )* RIGHT_PAREN
             {
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_or_ce264); 
-            match(input,30,FOLLOW_30_in_or_ce269); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_or_ce345); 
+            match(input,30,FOLLOW_30_in_or_ce350); 
             
-            		    orDescr = new OrDescr();
-            		    in_ce.addDescr( orDescr );
+            	    	orDescr = new OrDescr();
+            			in_ce.addDescr( orDescr );
             		
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:283:3: ( ce[orDescr] )*
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:279:3: ( ce[orDescr] )*
             loop6:
             do {
                 int alt6=2;
@@ -588,9 +664,9 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:283:3: ce[orDescr]
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:279:3: ce[orDescr]
             	    {
-            	    pushFollow(FOLLOW_ce_in_or_ce277);
+            	    pushFollow(FOLLOW_ce_in_or_ce356);
             	    ce(orDescr);
             	    _fsp--;
 
@@ -603,7 +679,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_or_ce286); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_or_ce365); 
 
             }
 
@@ -619,8 +695,153 @@
     // $ANTLR end or_ce
 
 
+    // $ANTLR start not_ce
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:283:1: not_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'not' ( ce[notDescr] )? RIGHT_PAREN ;
+    public void not_ce(ConditionalElementDescr in_ce) throws RecognitionException {
+        
+                NotDescr notDescr= null;         
+            
+        try {
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:287:4: ( LEFT_PAREN 'not' ( ce[notDescr] )? RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:287:4: LEFT_PAREN 'not' ( ce[notDescr] )? RIGHT_PAREN
+            {
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_not_ce393); 
+            match(input,31,FOLLOW_31_in_not_ce398); 
+            
+            			notDescr = new NotDescr();
+            		    in_ce.addDescr( notDescr );
+            		
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:292:3: ( ce[notDescr] )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+            if ( (LA7_0==LEFT_PAREN) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:292:3: ce[notDescr]
+                    {
+                    pushFollow(FOLLOW_ce_in_not_ce404);
+                    ce(notDescr);
+                    _fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_not_ce413); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end not_ce
+
+
+    // $ANTLR start exists_ce
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:296:1: exists_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'exists' ( ce[existsDescr] )? RIGHT_PAREN ;
+    public void exists_ce(ConditionalElementDescr in_ce) throws RecognitionException {
+        
+                ExistsDescr existsDescr= null;         
+            
+        try {
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:300:4: ( LEFT_PAREN 'exists' ( ce[existsDescr] )? RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:300:4: LEFT_PAREN 'exists' ( ce[existsDescr] )? RIGHT_PAREN
+            {
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_exists_ce442); 
+            match(input,32,FOLLOW_32_in_exists_ce447); 
+            
+            		    existsDescr = new ExistsDescr();
+            		    in_ce.addDescr( existsDescr );
+            		
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:305:3: ( ce[existsDescr] )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+            if ( (LA8_0==LEFT_PAREN) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:305:3: ce[existsDescr]
+                    {
+                    pushFollow(FOLLOW_ce_in_exists_ce453);
+                    ce(existsDescr);
+                    _fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_exists_ce462); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end exists_ce
+
+
+    // $ANTLR start eval_ce
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:309:1: eval_ce[ConditionalElementDescr in_ce] : LEFT_PAREN 'test' LEFT_PAREN t= ID RIGHT_PAREN RIGHT_PAREN ;
+    public void eval_ce(ConditionalElementDescr in_ce) throws RecognitionException {
+        Token t=null;
+
+        
+                EvalDescr evalDescr= null;         
+            
+        try {
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:313:4: ( LEFT_PAREN 'test' LEFT_PAREN t= ID RIGHT_PAREN RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:313:4: LEFT_PAREN 'test' LEFT_PAREN t= ID RIGHT_PAREN RIGHT_PAREN
+            {
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_eval_ce490); 
+            match(input,33,FOLLOW_33_in_eval_ce495); 
+            
+            		    evalDescr = new EvalDescr();
+            		    in_ce.addDescr( evalDescr );
+            		
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_eval_ce501); 
+            t=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_eval_ce510); 
+            
+            			evalDescr.setText( t.getText() );
+            		
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_eval_ce516); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_eval_ce520); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end eval_ce
+
+
     // $ANTLR start normal_pattern
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:287:1: normal_pattern[ConditionalElementDescr in_ce] : LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:326:1: normal_pattern[ConditionalElementDescr in_ce] : LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN ;
     public void normal_pattern(ConditionalElementDescr in_ce) throws RecognitionException {
         Token name=null;
 
@@ -628,31 +849,31 @@
                 ColumnDescr column = null;
             
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:292:5: ( LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:292:5: LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:330:4: ( LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:330:4: LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN
             {
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_normal_pattern318); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_normal_pattern548); 
             name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_normal_pattern326); 
+            match(input,ID,FOLLOW_ID_in_normal_pattern555); 
             
-            	      column = new ColumnDescr(name.getText());
-            	      in_ce.addDescr( column );
-            	  
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:298:7: ( field_constriant[column] )*
-            loop7:
+            			column = new ColumnDescr(name.getText());
+            			in_ce.addDescr( column );
+            		
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:335:3: ( field_constriant[column] )*
+            loop9:
             do {
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-                if ( (LA7_0==LEFT_PAREN) ) {
-                    alt7=1;
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+                if ( (LA9_0==LEFT_PAREN) ) {
+                    alt9=1;
                 }
 
 
-                switch (alt7) {
+                switch (alt9) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:298:7: field_constriant[column]
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:335:3: field_constriant[column]
             	    {
-            	    pushFollow(FOLLOW_field_constriant_in_normal_pattern340);
+            	    pushFollow(FOLLOW_field_constriant_in_normal_pattern561);
             	    field_constriant(column);
             	    _fsp--;
 
@@ -661,11 +882,11 @@
             	    break;
 
             	default :
-            	    break loop7;
+            	    break loop9;
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_normal_pattern351); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_normal_pattern571); 
 
             }
 
@@ -682,7 +903,7 @@
 
 
     // $ANTLR start bound_pattern
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:304:1: bound_pattern[ConditionalElementDescr in_ce] : var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:341:1: bound_pattern[ConditionalElementDescr in_ce] : var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN ;
     public void bound_pattern(ConditionalElementDescr in_ce) throws RecognitionException {
         Token var=null;
         Token name=null;
@@ -692,38 +913,38 @@
                 String identifier = null;
             
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:311:2: (var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:311:2: var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:346:4: (var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:346:4: var= VAR '<-' LEFT_PAREN name= ID ( field_constriant[column] )* RIGHT_PAREN
             {
             var=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_bound_pattern385); 
+            match(input,VAR,FOLLOW_VAR_in_bound_pattern599); 
             
-            	    identifier = var.getText();
-            	
-            match(input,31,FOLLOW_31_in_bound_pattern392); 
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_bound_pattern399); 
+            			identifier = var.getText();
+            		
+            match(input,34,FOLLOW_34_in_bound_pattern605); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_bound_pattern610); 
             name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_bound_pattern405); 
+            match(input,ID,FOLLOW_ID_in_bound_pattern617); 
             
-            	    column = new ColumnDescr(name.getText());
-            	    column.setIdentifier( identifier );
-                    in_ce.addDescr( column );	    
-            	
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:323:5: ( field_constriant[column] )*
-            loop8:
+            			column = new ColumnDescr(name.getText());
+            			column.setIdentifier( identifier );
+            			in_ce.addDescr( column );	    
+            		
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:356:3: ( field_constriant[column] )*
+            loop10:
             do {
-                int alt8=2;
-                int LA8_0 = input.LA(1);
-                if ( (LA8_0==LEFT_PAREN) ) {
-                    alt8=1;
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+                if ( (LA10_0==LEFT_PAREN) ) {
+                    alt10=1;
                 }
 
 
-                switch (alt8) {
+                switch (alt10) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:323:5: field_constriant[column]
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:356:3: field_constriant[column]
             	    {
-            	    pushFollow(FOLLOW_field_constriant_in_bound_pattern415);
+            	    pushFollow(FOLLOW_field_constriant_in_bound_pattern623);
             	    field_constriant(column);
             	    _fsp--;
 
@@ -732,11 +953,11 @@
             	    break;
 
             	default :
-            	    break loop8;
+            	    break loop10;
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_bound_pattern421); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_bound_pattern630); 
 
             }
 
@@ -753,7 +974,7 @@
 
 
     // $ANTLR start field_constriant
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:327:1: field_constriant[ColumnDescr column] : LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:360:1: field_constriant[ColumnDescr column] : LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN ;
     public void field_constriant(ColumnDescr column) throws RecognitionException {
         Token f=null;
 
@@ -764,41 +985,41 @@
         		String op = "==";
         	
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:334:4: ( LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:334:4: LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:367:4: ( LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:367:4: LEFT_PAREN f= ID restriction[fc, column] ( connective[fc] restriction[fc, column] )* RIGHT_PAREN
             {
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_field_constriant449); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_field_constriant658); 
             f=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_field_constriant457); 
+            match(input,ID,FOLLOW_ID_in_field_constriant665); 
             
             			fc = new FieldConstraintDescr(f.getText());
             			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
             			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
-             	        column.addDescr( fc );			
-            	  
-            pushFollow(FOLLOW_restriction_in_field_constriant479);
+            			column.addDescr( fc );			
+            		
+            pushFollow(FOLLOW_restriction_in_field_constriant677);
             restriction(fc,  column);
             _fsp--;
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:344:4: ( connective[fc] restriction[fc, column] )*
-            loop9:
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:376:3: ( connective[fc] restriction[fc, column] )*
+            loop11:
             do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-                if ( ((LA9_0>=32 && LA9_0<=33)) ) {
-                    alt9=1;
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+                if ( ((LA11_0>=35 && LA11_0<=36)) ) {
+                    alt11=1;
                 }
 
 
-                switch (alt9) {
+                switch (alt11) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:345:5: connective[fc] restriction[fc, column]
+            	    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:377:5: connective[fc] restriction[fc, column]
             	    {
-            	    pushFollow(FOLLOW_connective_in_field_constriant491);
+            	    pushFollow(FOLLOW_connective_in_field_constriant689);
             	    connective(fc);
             	    _fsp--;
 
-            	    pushFollow(FOLLOW_restriction_in_field_constriant508);
+            	    pushFollow(FOLLOW_restriction_in_field_constriant706);
             	    restriction(fc,  column);
             	    _fsp--;
 
@@ -807,11 +1028,11 @@
             	    break;
 
             	default :
-            	    break loop9;
+            	    break loop11;
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_field_constriant536); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_field_constriant729); 
 
             }
 
@@ -828,45 +1049,41 @@
 
 
     // $ANTLR start connective
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:352:1: connective[FieldConstraintDescr fc] : ( '&' | '|' ) ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:383:1: connective[FieldConstraintDescr fc] : ( '&' | '|' ) ;
     public void connective(FieldConstraintDescr fc) throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:354:8: ( ( '&' | '|' ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:354:8: ( '&' | '|' )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:384:4: ( ( '&' | '|' ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:384:4: ( '&' | '|' )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:354:8: ( '&' | '|' )
-            int alt10=2;
-            int LA10_0 = input.LA(1);
-            if ( (LA10_0==32) ) {
-                alt10=1;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:384:4: ( '&' | '|' )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+            if ( (LA12_0==35) ) {
+                alt12=1;
             }
-            else if ( (LA10_0==33) ) {
-                alt10=2;
+            else if ( (LA12_0==36) ) {
+                alt12=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("354:8: ( '&' | '|' )", 10, 0, input);
+                    new NoViableAltException("384:4: ( '&' | '|' )", 12, 0, input);
 
                 throw nvae;
             }
-            switch (alt10) {
+            switch (alt12) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:354:11: '&'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:384:6: '&'
                     {
-                    match(input,32,FOLLOW_32_in_connective562); 
-                    
-                    		   		fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));
-                    	         
+                    match(input,35,FOLLOW_35_in_connective747); 
+                     fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); 
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:359:11: '|'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:385:9: '|'
                     {
-                    match(input,33,FOLLOW_33_in_connective598); 
-                    
-                     				fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	      
-                    	         
+                    match(input,36,FOLLOW_36_in_connective759); 
+                    fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); 
 
                     }
                     break;
@@ -889,7 +1106,7 @@
 
 
     // $ANTLR start restriction
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:366:1: restriction[FieldConstraintDescr fc, ColumnDescr column] : ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction ) ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:389:1: restriction[FieldConstraintDescr fc, ColumnDescr column] : ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction ) ;
     public void restriction(FieldConstraintDescr fc, ColumnDescr column) throws RecognitionException {
         String lc = null;
 
@@ -898,20 +1115,20 @@
         			String op = "==";
         	
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:371:7: ( ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:371:7: ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:393:4: ( ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:393:4: ( '~' )? ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:371:7: ( '~' )?
-            int alt11=2;
-            int LA11_0 = input.LA(1);
-            if ( (LA11_0==34) ) {
-                alt11=1;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:393:4: ( '~' )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+            if ( (LA13_0==37) ) {
+                alt13=1;
             }
-            switch (alt11) {
+            switch (alt13) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:371:8: '~'
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:393:5: '~'
                     {
-                    match(input,34,FOLLOW_34_in_restriction661); 
+                    match(input,37,FOLLOW_37_in_restriction794); 
                     op = "!=";
 
                     }
@@ -919,17 +1136,17 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:372:7: ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )
-            int alt12=4;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:394:3: ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )
+            int alt14=4;
             switch ( input.LA(1) ) {
-            case 35:
-                alt12=1;
+            case 38:
+                alt14=1;
                 break;
-            case 36:
-                alt12=2;
+            case 39:
+                alt14=2;
                 break;
             case VAR:
-                alt12=3;
+                alt14=3;
                 break;
             case ID:
             case STRING:
@@ -937,20 +1154,20 @@
             case FLOAT:
             case BOOL:
             case NULL:
-                alt12=4;
+                alt14=4;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("372:7: ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )", 12, 0, input);
+                    new NoViableAltException("394:3: ( predicate_constraint[op, column] | return_value_restriction[op, fc] | variable_restriction[op, fc] | lc= literal_restriction )", 14, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt12) {
+            switch (alt14) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:373:8: predicate_constraint[op, column]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:394:7: predicate_constraint[op, column]
                     {
-                    pushFollow(FOLLOW_predicate_constraint_in_restriction688);
+                    pushFollow(FOLLOW_predicate_constraint_in_restriction812);
                     predicate_constraint(op,  column);
                     _fsp--;
 
@@ -958,9 +1175,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:375:8: return_value_restriction[op, fc]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:395:11: return_value_restriction[op, fc]
                     {
-                    pushFollow(FOLLOW_return_value_restriction_in_restriction721);
+                    pushFollow(FOLLOW_return_value_restriction_in_restriction832);
                     return_value_restriction(op,  fc);
                     _fsp--;
 
@@ -968,9 +1185,9 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:377:9: variable_restriction[op, fc]
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:396:10: variable_restriction[op, fc]
                     {
-                    pushFollow(FOLLOW_variable_restriction_in_restriction741);
+                    pushFollow(FOLLOW_variable_restriction_in_restriction844);
                     variable_restriction(op,  fc);
                     _fsp--;
 
@@ -978,16 +1195,16 @@
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:379:7: lc= literal_restriction
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:397:12: lc= literal_restriction
                     {
-                    pushFollow(FOLLOW_literal_restriction_in_restriction762);
+                    pushFollow(FOLLOW_literal_restriction_in_restriction860);
                     lc=literal_restriction();
                     _fsp--;
 
                     
-                         	      fc.addRestriction( new LiteralRestrictionDescr(op, lc, true) );
-                    		      op = "==";
-                    		    
+                         	      	fc.addRestriction( new LiteralRestrictionDescr(op, lc, true) );
+                    		      	op = "==";
+                    		      
 
                     }
                     break;
@@ -1010,22 +1227,20 @@
 
 
     // $ANTLR start predicate_constraint
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:387:1: predicate_constraint[String op, ColumnDescr column] : ':' LEFT_PAREN id= ID RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:404:1: predicate_constraint[String op, ColumnDescr column] : ':' LEFT_PAREN id= ID RIGHT_PAREN ;
     public void predicate_constraint(String op, ColumnDescr column) throws RecognitionException {
         Token id=null;
 
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:389:3: ( ':' LEFT_PAREN id= ID RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:389:3: ':' LEFT_PAREN id= ID RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:405:4: ( ':' LEFT_PAREN id= ID RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:405:4: ':' LEFT_PAREN id= ID RIGHT_PAREN
             {
-            match(input,35,FOLLOW_35_in_predicate_constraint807); 
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_predicate_constraint808); 
+            match(input,38,FOLLOW_38_in_predicate_constraint893); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_predicate_constraint894); 
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate_constraint815); 
-             
-            			column.addDescr( new PredicateDescr( id.getText() ) );
-            		
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_predicate_constraint824); 
+            match(input,ID,FOLLOW_ID_in_predicate_constraint901); 
+             column.addDescr( new PredicateDescr( id.getText() ) ); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_predicate_constraint908); 
 
             }
 
@@ -1042,7 +1257,7 @@
 
 
     // $ANTLR start return_value_restriction
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:398:1: return_value_restriction[String op, FieldConstraintDescr fc] : '=' LEFT_PAREN id= ID RIGHT_PAREN ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:411:1: return_value_restriction[String op, FieldConstraintDescr fc] : '=' LEFT_PAREN id= ID RIGHT_PAREN ;
     public void return_value_restriction(String op, FieldConstraintDescr fc) throws RecognitionException {
         Token id=null;
 
@@ -1050,17 +1265,15 @@
         		PredicateDescr d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:404:3: ( '=' LEFT_PAREN id= ID RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:404:3: '=' LEFT_PAREN id= ID RIGHT_PAREN
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:415:4: ( '=' LEFT_PAREN id= ID RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:415:4: '=' LEFT_PAREN id= ID RIGHT_PAREN
             {
-            match(input,36,FOLLOW_36_in_return_value_restriction847); 
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_return_value_restriction848); 
+            match(input,39,FOLLOW_39_in_return_value_restriction927); 
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_return_value_restriction928); 
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_return_value_restriction855); 
-             
-            			fc.addRestriction( new ReturnValueRestrictionDescr(op, id.getText() ) );
-            		
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_return_value_restriction864); 
+            match(input,ID,FOLLOW_ID_in_return_value_restriction935); 
+             fc.addRestriction( new ReturnValueRestrictionDescr(op, id.getText() ) ); 
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_return_value_restriction942); 
 
             }
 
@@ -1077,19 +1290,19 @@
 
 
     // $ANTLR start variable_restriction
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:412:1: variable_restriction[String op, FieldConstraintDescr fc] : var= VAR ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:420:1: variable_restriction[String op, FieldConstraintDescr fc] : var= VAR ;
     public void variable_restriction(String op, FieldConstraintDescr fc) throws RecognitionException {
         Token var=null;
 
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:414:2: (var= VAR )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:414:2: var= VAR
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:421:4: (var= VAR )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:421:4: var= VAR
             {
             var=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_variable_restriction881); 
+            match(input,VAR,FOLLOW_VAR_in_variable_restriction958); 
             
-            		fc.addRestriction( new VariableRestrictionDescr(op, var.getText()) );
-            	
+            			fc.addRestriction( new VariableRestrictionDescr(op, var.getText()) );
+            		
 
             }
 
@@ -1106,98 +1319,215 @@
 
 
     // $ANTLR start literal_restriction
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:421:1: literal_restriction returns [String text] : (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:427:1: literal_restriction returns [String text] : t= literal ;
     public String literal_restriction() throws RecognitionException {
         String text = null;
 
+        String t = null;
+
+
+        
+        		text = null;
+        	
+        try {
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:432:6: (t= literal )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:432:6: t= literal
+            {
+            pushFollow(FOLLOW_literal_in_literal_restriction991);
+            t=literal();
+            _fsp--;
+
+            
+            	    	text = t;
+            	    
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return text;
+    }
+    // $ANTLR end literal_restriction
+
+
+    // $ANTLR start function
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:437:1: function : LEFT_PAREN ID ( VAR | literal | function ) RIGHT_PAREN ;
+    public void function() throws RecognitionException {
+        try {
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:438:4: ( LEFT_PAREN ID ( VAR | literal | function ) RIGHT_PAREN )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:438:4: LEFT_PAREN ID ( VAR | literal | function ) RIGHT_PAREN
+            {
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function1011); 
+            match(input,ID,FOLLOW_ID_in_function1015); 
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:440:6: ( VAR | literal | function )
+            int alt15=3;
+            switch ( input.LA(1) ) {
+            case VAR:
+                alt15=1;
+                break;
+            case ID:
+            case STRING:
+            case INT:
+            case FLOAT:
+            case BOOL:
+            case NULL:
+                alt15=2;
+                break;
+            case LEFT_PAREN:
+                alt15=3;
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("440:6: ( VAR | literal | function )", 15, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt15) {
+                case 1 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:440:10: VAR
+                    {
+                    match(input,VAR,FOLLOW_VAR_in_function1026); 
+
+                    }
+                    break;
+                case 2 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:441:10: literal
+                    {
+                    pushFollow(FOLLOW_literal_in_function1037);
+                    literal();
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 3 :
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:442:10: function
+                    {
+                    pushFollow(FOLLOW_function_in_function1048);
+                    function();
+                    _fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function1062); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end function
+
+
+    // $ANTLR start literal
+    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:448:1: literal returns [String text] : (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+    public String literal() throws RecognitionException {
+        String text = null;
+
         Token t=null;
 
         
         		text = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:425:4: ( (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:425:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:452:4: ( (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:452:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )
             {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:425:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )
-            int alt13=6;
+            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:452:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            int alt16=6;
             switch ( input.LA(1) ) {
             case STRING:
-                alt13=1;
+                alt16=1;
                 break;
             case ID:
-                alt13=2;
+                alt16=2;
                 break;
             case INT:
-                alt13=3;
+                alt16=3;
                 break;
             case FLOAT:
-                alt13=4;
+                alt16=4;
                 break;
             case BOOL:
-                alt13=5;
+                alt16=5;
                 break;
             case NULL:
-                alt13=6;
+                alt16=6;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("425:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )", 13, 0, input);
+                    new NoViableAltException("452:4: (t= STRING | t= ID | t= INT | t= FLOAT | t= BOOL | t= NULL )", 16, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt13) {
+            switch (alt16) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:425:6: t= STRING
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:452:8: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_restriction912); 
+                    match(input,STRING,FOLLOW_STRING_in_literal1091); 
                      text = getString( t ); 
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:426:7: t= ID
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:453:7: t= ID
                     {
                     t=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_literal_restriction925); 
+                    match(input,ID,FOLLOW_ID_in_literal1104); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:427:5: t= INT
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:454:7: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_restriction939); 
+                    match(input,INT,FOLLOW_INT_in_literal1120); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:428:5: t= FLOAT
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:455:7: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_restriction952); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal1135); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:429:5: t= BOOL
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:456:7: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_restriction963); 
+                    match(input,BOOL,FOLLOW_BOOL_in_literal1148); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 6 :
-                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:430:5: t= NULL
+                    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:457:7: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_restriction975); 
+                    match(input,NULL,FOLLOW_NULL_in_literal1162); 
                      text = null; 
 
                     }
@@ -1217,26 +1547,9 @@
         }
         return text;
     }
-    // $ANTLR end literal_restriction
+    // $ANTLR end literal
 
 
-    // $ANTLR start function
-    // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:435:1: function : ;
-    public void function() throws RecognitionException {
-        try {
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:438:2: ()
-            // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:438:2: 
-            {
-            }
-
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end function
-
-
  
 
     public static final BitSet FOLLOW_27_in_opt_semicolon38 = new BitSet(new long[]{0x0000000000000002L});
@@ -1245,58 +1558,85 @@
     public static final BitSet FOLLOW_ID_in_rule74 = new BitSet(new long[]{0x00000000000000D0L});
     public static final BitSet FOLLOW_lhs_in_rule85 = new BitSet(new long[]{0x00000000000000D0L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_rule92 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_ce_in_lhs110 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_ce_in_lhs109 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_or_ce_in_lhs119 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_normal_pattern_in_lhs127 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_bound_pattern_in_lhs135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_ce_in_ce157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_ce_in_ce166 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_normal_pattern_in_ce174 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_and_ce208 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_29_in_and_ce213 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_ce_in_and_ce221 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_and_ce230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_or_ce264 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_or_ce269 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_ce_in_or_ce277 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_or_ce286 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_normal_pattern318 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_normal_pattern326 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_field_constriant_in_normal_pattern340 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_normal_pattern351 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_bound_pattern385 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_31_in_bound_pattern392 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_bound_pattern399 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_bound_pattern405 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_field_constriant_in_bound_pattern415 = new BitSet(new long[]{0x0000000000000050L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_bound_pattern421 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_field_constriant449 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_field_constriant457 = new BitSet(new long[]{0x0000001C00001FA0L});
-    public static final BitSet FOLLOW_restriction_in_field_constriant479 = new BitSet(new long[]{0x0000000300000040L});
-    public static final BitSet FOLLOW_connective_in_field_constriant491 = new BitSet(new long[]{0x0000001C00001FA0L});
-    public static final BitSet FOLLOW_restriction_in_field_constriant508 = new BitSet(new long[]{0x0000000300000040L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_field_constriant536 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_32_in_connective562 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_33_in_connective598 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_restriction661 = new BitSet(new long[]{0x0000001800001FA0L});
-    public static final BitSet FOLLOW_predicate_constraint_in_restriction688 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_return_value_restriction_in_restriction721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variable_restriction_in_restriction741 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_restriction_in_restriction762 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_predicate_constraint807 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_predicate_constraint808 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_predicate_constraint815 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_predicate_constraint824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_return_value_restriction847 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_return_value_restriction848 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_return_value_restriction855 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_return_value_restriction864 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_variable_restriction881 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_restriction912 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_literal_restriction925 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_restriction939 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_restriction952 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_restriction963 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_restriction975 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_ce_in_lhs128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_ce_in_lhs137 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_ce_in_lhs151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_normal_pattern_in_lhs165 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_bound_pattern_in_lhs174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_ce_in_ce196 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_ce_in_ce209 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_ce_in_ce218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_ce_in_ce227 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_ce_in_ce241 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_normal_pattern_in_ce265 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_and_ce297 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_and_ce302 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_ce_in_and_ce308 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_and_ce317 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_or_ce345 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_or_ce350 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_ce_in_or_ce356 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_or_ce365 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_not_ce393 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_31_in_not_ce398 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_ce_in_not_ce404 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_not_ce413 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_exists_ce442 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_32_in_exists_ce447 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_ce_in_exists_ce453 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_exists_ce462 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_eval_ce490 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_eval_ce495 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_eval_ce501 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_eval_ce510 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_eval_ce516 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_eval_ce520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_normal_pattern548 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_normal_pattern555 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_field_constriant_in_normal_pattern561 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_normal_pattern571 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_bound_pattern599 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_34_in_bound_pattern605 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_bound_pattern610 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_bound_pattern617 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_field_constriant_in_bound_pattern623 = new BitSet(new long[]{0x0000000000000050L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_bound_pattern630 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_field_constriant658 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_field_constriant665 = new BitSet(new long[]{0x000000E000001FA0L});
+    public static final BitSet FOLLOW_restriction_in_field_constriant677 = new BitSet(new long[]{0x0000001800000040L});
+    public static final BitSet FOLLOW_connective_in_field_constriant689 = new BitSet(new long[]{0x000000E000001FA0L});
+    public static final BitSet FOLLOW_restriction_in_field_constriant706 = new BitSet(new long[]{0x0000001800000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_field_constriant729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_connective747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_36_in_connective759 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_restriction794 = new BitSet(new long[]{0x000000C000001FA0L});
+    public static final BitSet FOLLOW_predicate_constraint_in_restriction812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_return_value_restriction_in_restriction832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variable_restriction_in_restriction844 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_restriction_in_restriction860 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_38_in_predicate_constraint893 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_predicate_constraint894 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_predicate_constraint901 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_predicate_constraint908 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_39_in_return_value_restriction927 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_return_value_restriction928 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_return_value_restriction935 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_return_value_restriction942 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_variable_restriction958 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_literal_restriction991 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function1011 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_function1015 = new BitSet(new long[]{0x0000000000001FB0L});
+    public static final BitSet FOLLOW_VAR_in_function1026 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_literal_in_function1037 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_function_in_function1048 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function1062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal1091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_literal1104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal1120 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal1135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal1148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal1162 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp.tokens
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp.tokens	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp.tokens	2007-03-06 05:11:31 UTC (rev 9995)
@@ -22,12 +22,15 @@
 C_STYLE_SINGLE_LINE_COMMENT=20
 ID=5
 'and'=29
-'&'=32
-':'=35
-'|'=33
-'='=36
-'<-'=31
+'exists'=32
+'|'=36
+'test'=33
+'<-'=34
+';'=27
+'&'=35
+':'=38
+'not'=31
+'='=39
 'defrule'=28
 'or'=30
-';'=27
-'~'=34
+'~'=37

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp__.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp__.g	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/clp__.g	2007-03-06 05:11:31 UTC (rev 9995)
@@ -7,26 +7,29 @@
 T28 : 'defrule' ;
 T29 : 'and' ;
 T30 : 'or' ;
-T31 : '<-' ;
-T32 : '&' ;
-T33 : '|' ;
-T34 : '~' ;
-T35 : ':' ;
-T36 : '=' ;
+T31 : 'not' ;
+T32 : 'exists' ;
+T33 : 'test' ;
+T34 : '<-' ;
+T35 : '&' ;
+T36 : '|' ;
+T37 : '~' ;
+T38 : ':' ;
+T39 : '=' ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 440
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 461
 VAR 	: '?'ID	
         ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 443
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 464
 ID	
 	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')* 
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 447
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 468
 NULL	:	'null';
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 449
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 470
 WS      :       (	' '
                 |	'\t'
                 |	'\f'
@@ -35,7 +38,7 @@
                 { $channel=HIDDEN; }
         ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 457
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 478
 fragment
 EOL 	:	     
    		(       ( '\r\n' )=> '\r\n'  // Evil DOS
@@ -44,27 +47,27 @@
                 )
         ;  
         
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 465
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 486
 INT	
 	:	('-')?('0'..'9')+
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 469
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 490
 FLOAT
 	:	('-')?('0'..'9')+ '.' ('0'..'9')+
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 473
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 494
 STRING
     :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
      | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
     ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 478
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 499
 fragment
 HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 481
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 502
 fragment
 EscapeSequence
     :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
@@ -72,7 +75,7 @@
     |   OctalEscape
     ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 488
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 509
 fragment
 OctalEscape
     :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
@@ -80,68 +83,68 @@
     |   '\\' ('0'..'7')
     ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 495
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 516
 fragment
 UnicodeEscape
     :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
     ;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 500
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 521
 BOOL
 	:	('true'|'false') 
 	;
 	
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 504
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 525
 SH_STYLE_SINGLE_LINE_COMMENT	
 	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
                 { $channel=HIDDEN; }
 	;
         
         
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 510
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 531
 C_STYLE_SINGLE_LINE_COMMENT	
 	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
                 { $channel=HIDDEN; }
 	;
 
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 516
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 537
 LEFT_PAREN
 	:	'('
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 520
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 541
 RIGHT_PAREN
 	:	')'
 	;
         
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 524
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 545
 LEFT_SQUARE
 	:	'['
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 528
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 549
 RIGHT_SQUARE
 	:	']'
 	;        
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 532
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 553
 LEFT_CURLY
 	:	'{'
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 536
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 557
 RIGHT_CURLY
 	:	'}'
 	;
         
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 540
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 561
 MULTI_LINE_COMMENT
 	:	'/*' (options{greedy=false;} : .)* '*/'
                 { $channel=HIDDEN; }
 	;
 
-// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 545
+// $ANTLR src "C:\dev\jbossrules\trunk\drools-compiler\src\main\resources\org\drools\clp\CLP.g" 566
 MISC 	:
 		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?' | '|' | ',' | '=' | '/' | '\'' | '\\'
 	;		

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g	2007-03-06 05:11:31 UTC (rev 9995)
@@ -233,34 +233,35 @@
 
 
 lhs[ConditionalElementDescr in_ce]
-	:
-	(   and_ce[in_ce]	
-	  | or_ce[in_ce]
-	  | normal_pattern[in_ce]
-	  | bound_pattern[in_ce]
-	)
+	:	(   and_ce[in_ce]	
+		  | or_ce[in_ce]
+		  | not_ce[in_ce]
+		  | exists_ce[in_ce]		  
+ 		  | eval_ce[in_ce] 		  
+		  | normal_pattern[in_ce]
+		  | bound_pattern[in_ce]
+		)
 	;
 	
 ce[ConditionalElementDescr in_ce]
-	:
-	(   and_ce[in_ce]	
-	  | or_ce[in_ce]
-	  | normal_pattern[in_ce]
-	)
+	:	(   and_ce[in_ce]	
+	      | or_ce[in_ce]
+		  | not_ce[in_ce]
+		  | exists_ce[in_ce]		  
+ 		  | eval_ce[in_ce] 		  	      
+	      | normal_pattern[in_ce]
+	    )
 	;
 	
 	
 and_ce[ConditionalElementDescr in_ce]
-    @init
-    {
-        AndDescr andDescr= null;
-        
+    @init {
+        AndDescr andDescr= null;        
     }
-	:
-		LEFT_PAREN	
+	:	LEFT_PAREN	
 		'and' {
-		    andDescr = new AndDescr();
-		    in_ce.addDescr( andDescr );
+	    	andDescr = new AndDescr();
+			in_ce.addDescr( andDescr );
 		}
 		ce[andDescr]*		 
 		RIGHT_PAREN					
@@ -270,11 +271,10 @@
     @init {
         OrDescr orDescr= null;         
     }
-	:
-		LEFT_PAREN	
+	:	LEFT_PAREN	
 		'or' {
-		    orDescr = new OrDescr();
-		    in_ce.addDescr( orDescr );
+	    	orDescr = new OrDescr();
+			in_ce.addDescr( orDescr );
 		}
 		ce[orDescr]*		 
 		RIGHT_PAREN					
@@ -284,10 +284,9 @@
     @init {
         NotDescr notDescr= null;         
     }
-	:
-		LEFT_PAREN	
+	:	LEFT_PAREN	
 		'not' {
-		    notDescr = new NotDescr();
+			notDescr = new NotDescr();
 		    in_ce.addDescr( notDescr );
 		}
 		ce[notDescr]?		 
@@ -298,9 +297,8 @@
     @init {
         ExistsDescr existsDescr= null;         
     }
-	:
-		LEFT_PAREN	
-		'not' {
+	:	LEFT_PAREN	
+		'exists' {
 		    existsDescr = new ExistsDescr();
 		    in_ce.addDescr( existsDescr );
 		}
@@ -308,17 +306,34 @@
 		RIGHT_PAREN					
 	;		
 
+eval_ce[ConditionalElementDescr in_ce]
+    @init {
+        EvalDescr evalDescr= null;         
+    }
+	:	LEFT_PAREN	
+		'test' {
+		    evalDescr = new EvalDescr();
+		    in_ce.addDescr( evalDescr );
+		}
+		LEFT_PAREN		 
+		t=ID {
+			evalDescr.setText( t.getText() );
+		}
+		RIGHT_PAREN
+		RIGHT_PAREN					
+	;		
+
 normal_pattern[ConditionalElementDescr in_ce]
     @init {
         ColumnDescr column = null;
     }
-	:  LEFT_PAREN 
-	  name=ID {
-	      column = new ColumnDescr(name.getText());
-	      in_ce.addDescr( column );
-	  }
-      field_constriant[column]* 	  
-	  RIGHT_PAREN
+	:	LEFT_PAREN 
+		name=ID {
+			column = new ColumnDescr(name.getText());
+			in_ce.addDescr( column );
+		}
+		field_constriant[column]* 	  
+		RIGHT_PAREN
 	;		
 	
 
@@ -328,19 +343,18 @@
         ColumnDescr column = null;
         String identifier = null;
     }
-	: 
-	var=VAR {
-	    identifier = var.getText();
-	}
-	'<-' 
-    LEFT_PAREN 
-	name=ID {
-	    column = new ColumnDescr(name.getText());
-	    column.setIdentifier( identifier );
-        in_ce.addDescr( column );	    
-	}
-    field_constriant[column]* 
-	RIGHT_PAREN	
+	:	var=VAR {
+			identifier = var.getText();
+		}
+		'<-' 
+		LEFT_PAREN 
+		name=ID {
+			column = new ColumnDescr(name.getText());
+			column.setIdentifier( identifier );
+			in_ce.addDescr( column );	    
+		}
+		field_constriant[column]* 
+		RIGHT_PAREN	
 	;			
 	
 field_constriant[ColumnDescr column] 
@@ -350,71 +364,63 @@
 		FieldConstraintDescr fc = null;
 		String op = "==";
 	}    
-	: LEFT_PAREN 
-	  f=ID {
+	:	LEFT_PAREN 
+		f=ID {
 			fc = new FieldConstraintDescr(f.getText());
 			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
 			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
- 	        column.addDescr( fc );			
-	  }	
-	  
-      restriction[fc, column]
-	  (
+			column.addDescr( fc );			
+		}	  
+		
+		restriction[fc, column] 
+		(
 		  connective[fc]	      
 	      restriction[fc, column]      	      
-  
-	  )*
-	  RIGHT_PAREN		
+		)*
+		RIGHT_PAREN		
 	;
 	
 connective	[FieldConstraintDescr fc]
-	:
-	      (   '&' { fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); }
-	        | '|' {fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); }	      
-	      )		
+	:	(	'&' { fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); }
+	    	| '|' {fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); }	      
+		)		
 	;
 	
 restriction[FieldConstraintDescr fc, ColumnDescr column]
 	@init {
 			String op = "==";
 	}
-	:	      
-	  	  ('~'{op = "!=";})?	 	  	 
-	  	  (   predicate_constraint[op, column]	  	  	
+	:	('~'{op = "!=";})?	 	  	 
+		(   predicate_constraint[op, column]	  	  	
 	  	    | return_value_restriction[op, fc]
 	  	  	| variable_restriction[op, fc]
-	  	    |   lc=literal_restriction {
-     	        fc.addRestriction( new LiteralRestrictionDescr(op, lc, true) );
-		        op = "==";
+	  	    | 	lc=literal_restriction {
+     	      	fc.addRestriction( new LiteralRestrictionDescr(op, lc, true) );
+		      	op = "==";
 		      } 	  	  	  
-	  	  )		
+		)		
 	;		
 
 predicate_constraint[String op, ColumnDescr column]	
-	:
-		':'LEFT_PAREN 
+	:	':'LEFT_PAREN 
 		id=ID { column.addDescr( new PredicateDescr( id.getText() ) ); } 
 		RIGHT_PAREN
 	;
 
 
 return_value_restriction[String op, FieldConstraintDescr fc]
-	@init 
-	{
+	@init {
 		PredicateDescr d = null;
 	}
-	:
-		'='LEFT_PAREN 
+	:	'='LEFT_PAREN 
 		id=ID{ fc.addRestriction( new ReturnValueRestrictionDescr(op, id.getText() ) ); }		
 		RIGHT_PAREN
 	;
 		
 variable_restriction[String op, FieldConstraintDescr fc]
-	:
-	var=VAR
-	{
-		fc.addRestriction( new VariableRestrictionDescr(op, var.getText()) );
-	}
+	:	var=VAR {
+			fc.addRestriction( new VariableRestrictionDescr(op, var.getText()) );
+		}
 	;	
 
 	
@@ -422,6 +428,27 @@
 	@init {
 		text = null;
 	}
+	:
+	    t=literal {
+	    	text = t;
+	    }
+	;		
+
+function     
+	:	LEFT_PAREN
+		ID
+	    (   VAR
+	      | literal
+	      | function
+	    )
+	    RIGHT_PAREN
+	;
+
+	
+literal returns [String text]
+	@init {
+		text = null;
+	}
 	:	(   t=STRING { text = getString( t ); } 
 		  | t=ID     { text = t.getText(); }
 		  | t=INT    { text = t.getText(); }
@@ -431,12 +458,6 @@
 		)
 	;
 
-
-function 
-    
-	:
-	;
-
 VAR 	: '?'ID	
         ;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java	2007-03-06 05:09:58 UTC (rev 9994)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java	2007-03-06 05:11:31 UTC (rev 9995)
@@ -16,6 +16,7 @@
 import org.drools.lang.DRLParser;
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.ColumnDescr;
+import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
 import org.drools.lang.descr.FieldConstraintDescr;
 import org.drools.lang.descr.LiteralRestrictionDescr;
@@ -215,7 +216,7 @@
     }
 
     public void testNotExistsRule() throws Exception {
-        RuleDescr rule = parse( "(defrule (or (hobby1 (type qqq1)) (not (and (exists (person (name ppp))) (person (name yyy))))))" ).rule();
+        RuleDescr rule = parse( "(defrule xxx (or (hobby1 (type qqq1)) (not (and (exists (person (name ppp))) (person (name yyy))))))" ).rule();
 
         assertEquals( "xxx",
                       rule.getName() );
@@ -225,7 +226,7 @@
         assertEquals( 1,
                       lhsList.size() );
 
-        OrDescr orDescr = (OrDescr) lhsList.get( 1 );
+        OrDescr orDescr = (OrDescr) lhsList.get( 0 );
         assertEquals( 2,
                       orDescr.getDescrs().size() );
 
@@ -258,9 +259,9 @@
         assertEquals( "==",
                       litDescr.getEvaluator() );
         assertEquals( "ppp",
-                      litDescr.getText() );      
+                      litDescr.getText() );              
         
-        col = (ColumnDescr) andDescr.getDescrs().get( 0 );
+        col = (ColumnDescr) andDescr.getDescrs().get( 1 );
         assertEquals( "person",
                       col.getObjectType() );
         fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
@@ -272,7 +273,22 @@
         assertEquals( "yyy",
                       litDescr.getText() );  
     }
+    
+    public void testTestRule() throws Exception {
+        RuleDescr rule = parse( "(defrule xxx (test (yyy)" ).rule();
 
+        assertEquals( "xxx",
+                      rule.getName() );
+
+        AndDescr lhs = rule.getLhs();
+        List lhsList = lhs.getDescrs();
+        assertEquals( 1,
+                      lhsList.size() );
+
+        EvalDescr evalDescr = (EvalDescr) lhsList.get( 0 );
+        assertEquals( "yyy", evalDescr.getText() );
+    }
+
     private CLPParser parse(final String text) throws Exception {
         this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
         return this.parser;




More information about the jboss-svn-commits mailing list