[jboss-svn-commits] JBL Code SVN: r8296 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/lang main/resources/org/drools/lang test/java/org/drools/lang test/resources/org/drools/lang

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 13 13:53:58 EST 2006


Author: tirelli
Date: 2006-12-13 13:53:45 -0500 (Wed, 13 Dec 2006)
New Revision: 8296

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/comment.drl
Log:
Fixing tests

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2006-12-13 17:37:12 UTC (rev 8295)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2006-12-13 18:53:45 UTC (rev 8296)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2006-12-12 20:21:06
+// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2006-12-13 16:45:07
 
 	package org.drools.lang;
 
@@ -11,27 +11,29 @@
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
     public static final int T29=29;
-    public static final int HexDigit=18;
+    public static final int END=16;
+    public static final int HexDigit=21;
     public static final int CURLY_CHUNK=5;
     public static final int T36=36;
     public static final int T58=58;
     public static final int T70=70;
-    public static final int MISC=25;
-    public static final int FLOAT=10;
+    public static final int MISC=28;
+    public static final int FLOAT=11;
+    public static final int THEN=17;
+    public static final int RULE=6;
     public static final int T35=35;
-    public static final int NO_CURLY=23;
+    public static final int NO_CURLY=26;
     public static final int T61=61;
     public static final int T45=45;
     public static final int T34=34;
     public static final int T64=64;
     public static final int T37=37;
-    public static final int EscapeSequence=17;
-    public static final int INT=7;
-    public static final int T26=26;
+    public static final int EscapeSequence=20;
+    public static final int INT=8;
     public static final int T32=32;
     public static final int T51=51;
-    public static final int LEFT_SQUARE=13;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=21;
+    public static final int LEFT_SQUARE=14;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=24;
     public static final int T46=46;
     public static final int T38=38;
     public static final int T41=41;
@@ -41,16 +43,16 @@
     public static final int T62=62;
     public static final int T44=44;
     public static final int T55=55;
-    public static final int LEFT_PAREN=11;
-    public static final int BOOL=8;
+    public static final int LEFT_PAREN=12;
+    public static final int BOOL=9;
     public static final int T73=73;
     public static final int T68=68;
     public static final int T33=33;
     public static final int T50=50;
-    public static final int WS=16;
-    public static final int STRING=9;
+    public static final int WHEN=7;
+    public static final int WS=19;
+    public static final int STRING=10;
     public static final int T43=43;
-    public static final int T28=28;
     public static final int T42=42;
     public static final int T66=66;
     public static final int T40=40;
@@ -60,28 +62,26 @@
     public static final int T72=72;
     public static final int T65=65;
     public static final int T56=56;
-    public static final int UnicodeEscape=19;
+    public static final int UnicodeEscape=22;
     public static final int T59=59;
     public static final int T48=48;
     public static final int T54=54;
     public static final int EOF=-1;
     public static final int T67=67;
     public static final int T47=47;
-    public static final int RHS=6;
-    public static final int EOL=15;
+    public static final int EOL=18;
     public static final int Tokens=74;
     public static final int T53=53;
     public static final int T60=60;
     public static final int T31=31;
-    public static final int OctalEscape=20;
-    public static final int MULTI_LINE_COMMENT=24;
+    public static final int OctalEscape=23;
+    public static final int MULTI_LINE_COMMENT=27;
     public static final int T49=49;
-    public static final int T27=27;
     public static final int T52=52;
-    public static final int RIGHT_PAREN=12;
+    public static final int RIGHT_PAREN=13;
     public static final int T30=30;
-    public static final int RIGHT_SQUARE=14;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=22;
+    public static final int RIGHT_SQUARE=15;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=25;
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
@@ -89,11 +89,11 @@
      }
     public String getGrammarFileName() { return "D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g"; }
 
-    // $ANTLR start T26
-    public void mT26() throws RecognitionException {
+    // $ANTLR start T29
+    public void mT29() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T26;
+            int _type = T29;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
@@ -118,13 +118,13 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T26
+    // $ANTLR end T29
 
-    // $ANTLR start T27
-    public void mT27() throws RecognitionException {
+    // $ANTLR start T30
+    public void mT30() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T27;
+            int _type = T30;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
@@ -150,101 +150,6 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T27
-
-    // $ANTLR start T28
-    public void mT28() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            int _type = T28;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: ( 'import' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: 'import'
-            {
-            match("import"); if (failed) return ;
-
-
-            }
-
-
-            if ( backtracking==0 ) {
-
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
-
-                      
-            }    }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end T28
-
-    // $ANTLR start T29
-    public void mT29() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            int _type = T29;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ( 'function' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: 'function'
-            {
-            match("function"); if (failed) return ;
-
-
-            }
-
-
-            if ( backtracking==0 ) {
-
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
-
-                      
-            }    }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end T29
-
-    // $ANTLR start T30
-    public void mT30() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            int _type = T30;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ( '.' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10: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 T30
 
     // $ANTLR start T31
@@ -256,10 +161,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: ( '.*' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: '.*'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: ( 'import' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: 'import'
             {
-            match(".*"); if (failed) return ;
+            match("import"); if (failed) return ;
 
 
             }
@@ -288,10 +193,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: ( 'global' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: 'global'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ( 'function' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: 'function'
             {
-            match("global"); if (failed) return ;
+            match("function"); if (failed) return ;
 
 
             }
@@ -320,10 +225,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ( ',' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ','
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ( '.' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: '.'
             {
-            match(','); if (failed) return ;
+            match('.'); if (failed) return ;
 
             }
 
@@ -351,10 +256,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: ( 'query' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: 'query'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: ( '.*' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: '.*'
             {
-            match("query"); if (failed) return ;
+            match(".*"); if (failed) return ;
 
 
             }
@@ -383,10 +288,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: ( 'end' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: 'end'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: ( 'global' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: 'global'
             {
-            match("end"); if (failed) return ;
+            match("global"); if (failed) return ;
 
 
             }
@@ -415,12 +320,11 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ( 'template' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: 'template'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ( ',' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ','
             {
-            match("template"); if (failed) return ;
+            match(','); if (failed) return ;
 
-
             }
 
 
@@ -447,10 +351,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: ( 'rule' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: 'rule'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: ( 'query' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: 'query'
             {
-            match("rule"); if (failed) return ;
+            match("query"); if (failed) return ;
 
 
             }
@@ -479,10 +383,10 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: ( 'when' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: 'when'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: ( 'template' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: 'template'
             {
-            match("when"); if (failed) return ;
+            match("template"); if (failed) return ;
 
 
             }
@@ -511,8 +415,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ( ':' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ':'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ( ':' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ':'
             {
             match(':'); if (failed) return ;
 
@@ -542,8 +446,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: ( 'attributes' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: 'attributes'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: ( 'attributes' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: 'attributes'
             {
             match("attributes"); if (failed) return ;
 
@@ -574,8 +478,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: ( 'salience' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: 'salience'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: ( 'salience' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: 'salience'
             {
             match("salience"); if (failed) return ;
 
@@ -606,8 +510,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: ( 'no-loop' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: 'no-loop'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ( 'no-loop' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: 'no-loop'
             {
             match("no-loop"); if (failed) return ;
 
@@ -638,8 +542,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: ( 'auto-focus' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: 'auto-focus'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: ( 'auto-focus' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: 'auto-focus'
             {
             match("auto-focus"); if (failed) return ;
 
@@ -670,8 +574,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: ( 'activation-group' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: 'activation-group'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: ( 'activation-group' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: 'activation-group'
             {
             match("activation-group"); if (failed) return ;
 
@@ -702,8 +606,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: ( 'agenda-group' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: 'agenda-group'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: ( 'agenda-group' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: 'agenda-group'
             {
             match("agenda-group"); if (failed) return ;
 
@@ -734,8 +638,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: ( 'duration' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: 'duration'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: ( 'duration' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: 'duration'
             {
             match("duration"); if (failed) return ;
 
@@ -766,8 +670,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: ( 'from' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: 'from'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: ( 'from' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -798,8 +702,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: ( 'accumulate' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: 'accumulate'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: ( 'accumulate' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: 'accumulate'
             {
             match("accumulate"); if (failed) return ;
 
@@ -830,8 +734,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: ( 'init' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: 'init'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: ( 'init' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: 'init'
             {
             match("init"); if (failed) return ;
 
@@ -862,8 +766,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: ( 'action' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: 'action'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: ( 'action' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: 'action'
             {
             match("action"); if (failed) return ;
 
@@ -894,8 +798,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: ( 'result' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: 'result'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: ( 'result' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: 'result'
             {
             match("result"); if (failed) return ;
 
@@ -926,8 +830,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: ( 'collect' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: 'collect'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: ( 'collect' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: 'collect'
             {
             match("collect"); if (failed) return ;
 
@@ -958,8 +862,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: ( 'or' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: 'or'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: ( 'or' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: 'or'
             {
             match("or"); if (failed) return ;
 
@@ -990,8 +894,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: ( '||' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: '||'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: ( '||' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: '||'
             {
             match("||"); if (failed) return ;
 
@@ -1022,8 +926,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: ( '&' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: '&'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: ( '&' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: '&'
             {
             match('&'); if (failed) return ;
 
@@ -1053,8 +957,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: ( '|' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: '|'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: ( '|' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: '|'
             {
             match('|'); if (failed) return ;
 
@@ -1084,8 +988,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: ( '==' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: '=='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: ( '==' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: '=='
             {
             match("=="); if (failed) return ;
 
@@ -1116,8 +1020,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: ( '>' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: '>'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: ( '>' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: '>'
             {
             match('>'); if (failed) return ;
 
@@ -1147,8 +1051,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: ( '>=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: '>='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: ( '>=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: '>='
             {
             match(">="); if (failed) return ;
 
@@ -1179,8 +1083,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: ( '<' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: '<'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: ( '<' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: '<'
             {
             match('<'); if (failed) return ;
 
@@ -1210,8 +1114,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: ( '<=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: '<='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: ( '<=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: '<='
             {
             match("<="); if (failed) return ;
 
@@ -1242,8 +1146,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: ( '!=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: '!='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: ( '!=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: '!='
             {
             match("!="); if (failed) return ;
 
@@ -1274,8 +1178,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: ( 'contains' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: 'contains'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: ( 'contains' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: 'contains'
             {
             match("contains"); if (failed) return ;
 
@@ -1306,8 +1210,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: ( 'matches' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: 'matches'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: ( 'matches' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: 'matches'
             {
             match("matches"); if (failed) return ;
 
@@ -1338,8 +1242,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: ( 'excludes' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: 'excludes'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: ( 'excludes' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: 'excludes'
             {
             match("excludes"); if (failed) return ;
 
@@ -1370,8 +1274,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: ( 'null' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: 'null'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: ( 'null' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -1402,8 +1306,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: ( '->' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: '->'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: ( '->' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: '->'
             {
             match("->"); if (failed) return ;
 
@@ -1434,8 +1338,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: ( 'and' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: 'and'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: ( 'and' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: 'and'
             {
             match("and"); if (failed) return ;
 
@@ -1466,8 +1370,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: ( '&&' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: '&&'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: ( '&&' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: '&&'
             {
             match("&&"); if (failed) return ;
 
@@ -1498,8 +1402,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: ( 'exists' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: 'exists'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: ( 'exists' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: 'exists'
             {
             match("exists"); if (failed) return ;
 
@@ -1530,8 +1434,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:51:7: ( 'not' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:51:7: 'not'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: ( 'not' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: 'not'
             {
             match("not"); if (failed) return ;
 
@@ -1562,8 +1466,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:52:7: ( 'eval' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:52:7: 'eval'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: ( 'eval' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: 'eval'
             {
             match("eval"); if (failed) return ;
 
@@ -1594,8 +1498,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:53:7: ( 'use' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:53:7: 'use'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: ( 'use' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: 'use'
             {
             match("use"); if (failed) return ;
 
@@ -1617,104 +1521,6 @@
     }
     // $ANTLR end T73
 
-    // $ANTLR start RHS
-    public void mRHS() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            int _type = RHS;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:6: ( 'then' ( options {greedy=false; } : . )* ('\\n'|'\\r') ( (' '|'\\t'|'\\f'))* 'end' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:6: 'then' ( options {greedy=false; } : . )* ('\\n'|'\\r') ( (' '|'\\t'|'\\f'))* 'end'
-            {
-            match("then"); if (failed) return ;
-
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:13: ( options {greedy=false; } : . )*
-            loop1:
-            do {
-                int alt1=2;
-                alt1 = dfa1.predict(input);
-                switch (alt1) {
-            	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:39: .
-            	    {
-            	    matchAny(); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop1;
-                }
-            } while (true);
-
-            if ( input.LA(1)=='\n'||input.LA(1)=='\r' ) {
-                input.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
-
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:55: ( (' '|'\\t'|'\\f'))*
-            loop2:
-            do {
-                int alt2=2;
-                int LA2_0 = input.LA(1);
-                if ( (LA2_0=='\t'||LA2_0=='\f'||LA2_0==' ') ) {
-                    alt2=1;
-                }
-
-
-                switch (alt2) {
-            	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:56: (' '|'\\t'|'\\f')
-            	    {
-            	    if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
-            	        input.consume();
-            	    failed=false;
-            	    }
-            	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop2;
-                }
-            } while (true);
-
-            match("end"); if (failed) return ;
-
-
-            }
-
-
-            if ( backtracking==0 ) {
-
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
-
-                      
-            }    }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end RHS
-
     // $ANTLR start WS
     public void mWS() throws RecognitionException {
         try {
@@ -1724,57 +1530,57 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1320:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1320:17: ( ' ' | '\\t' | '\\f' | EOL )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:17: ( ' ' | '\\t' | '\\f' | EOL )
-            int alt3=4;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1320:17: ( ' ' | '\\t' | '\\f' | EOL )
+            int alt1=4;
             switch ( input.LA(1) ) {
             case ' ':
-                alt3=1;
+                alt1=1;
                 break;
             case '\t':
-                alt3=2;
+                alt1=2;
                 break;
             case '\f':
-                alt3=3;
+                alt1=3;
                 break;
             case '\n':
             case '\r':
-                alt3=4;
+                alt1=4;
                 break;
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1312:17: ( ' ' | '\\t' | '\\f' | EOL )", 3, 0, input);
+                    new NoViableAltException("1320:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt3) {
+            switch (alt1) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:19: ' '
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1320:19: ' '
                     {
                     match(' '); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:19: '\\t'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1321:19: '\\t'
                     {
                     match('\t'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1314:19: '\\f'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1322:19: '\\f'
                     {
                     match('\f'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1315:19: EOL
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:19: EOL
                     {
                     mEOL(); if (failed) return ;
 
@@ -1808,33 +1614,33 @@
     public void mEOL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1322:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1322:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1322:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            int alt4=3;
-            int LA4_0 = input.LA(1);
-            if ( (LA4_0=='\r') ) {
-                int LA4_1 = input.LA(2);
-                if ( (LA4_1=='\n') ) {
-                    alt4=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            int alt2=3;
+            int LA2_0 = input.LA(1);
+            if ( (LA2_0=='\r') ) {
+                int LA2_1 = input.LA(2);
+                if ( (LA2_1=='\n') ) {
+                    alt2=1;
                 }
                 else {
-                    alt4=2;}
+                    alt2=2;}
             }
-            else if ( (LA4_0=='\n') ) {
-                alt4=3;
+            else if ( (LA2_0=='\n') ) {
+                alt2=3;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1322:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 4, 0, input);
+                    new NoViableAltException("1330:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
-            switch (alt4) {
+            switch (alt2) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1322:14: ( '\\r\\n' )=> '\\r\\n'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -1842,14 +1648,14 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:25: '\\r'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1331:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1324:25: '\\n'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1332:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -1877,18 +1683,18 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:4: ( ( '-' )? ( '0' .. '9' )+ )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:4: ( '-' )? ( '0' .. '9' )+
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( ( '-' )? ( '0' .. '9' )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( '-' )? ( '0' .. '9' )+
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:4: ( '-' )?
-            int alt5=2;
-            int LA5_0 = input.LA(1);
-            if ( (LA5_0=='-') ) {
-                alt5=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( '-' )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+            if ( (LA3_0=='-') ) {
+                alt3=1;
             }
-            switch (alt5) {
+            switch (alt3) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:5: '-'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -1897,20 +1703,20 @@
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:10: ( '0' .. '9' )+
-            int cnt6=0;
-            loop6:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:10: ( '0' .. '9' )+
+            int cnt4=0;
+            loop4:
             do {
-                int alt6=2;
-                int LA6_0 = input.LA(1);
-                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
-                    alt6=1;
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+                    alt4=1;
                 }
 
 
-                switch (alt6) {
+                switch (alt4) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:11: '0' .. '9'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -1918,13 +1724,13 @@
             	    break;
 
             	default :
-            	    if ( cnt6 >= 1 ) break loop6;
+            	    if ( cnt4 >= 1 ) break loop4;
             	    if (backtracking>0) {failed=true; return ;}
                         EarlyExitException eee =
-                            new EarlyExitException(6, input);
+                            new EarlyExitException(4, input);
                         throw eee;
                 }
-                cnt6++;
+                cnt4++;
             } while (true);
 
 
@@ -1954,18 +1760,18 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( '-' )?
-            int alt7=2;
-            int LA7_0 = input.LA(1);
-            if ( (LA7_0=='-') ) {
-                alt7=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:4: ( '-' )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+            if ( (LA5_0=='-') ) {
+                alt5=1;
             }
-            switch (alt7) {
+            switch (alt5) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:5: '-'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -1974,20 +1780,20 @@
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:10: ( '0' .. '9' )+
-            int cnt8=0;
-            loop8:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:10: ( '0' .. '9' )+
+            int cnt6=0;
+            loop6:
             do {
-                int alt8=2;
-                int LA8_0 = input.LA(1);
-                if ( ((LA8_0>='0' && LA8_0<='9')) ) {
-                    alt8=1;
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+                    alt6=1;
                 }
 
 
-                switch (alt8) {
+                switch (alt6) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:11: '0' .. '9'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -1995,30 +1801,30 @@
             	    break;
 
             	default :
-            	    if ( cnt8 >= 1 ) break loop8;
+            	    if ( cnt6 >= 1 ) break loop6;
             	    if (backtracking>0) {failed=true; return ;}
                         EarlyExitException eee =
-                            new EarlyExitException(8, input);
+                            new EarlyExitException(6, input);
                         throw eee;
                 }
-                cnt8++;
+                cnt6++;
             } while (true);
 
             match('.'); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:26: ( '0' .. '9' )+
-            int cnt9=0;
-            loop9:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:26: ( '0' .. '9' )+
+            int cnt7=0;
+            loop7:
             do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-                if ( ((LA9_0>='0' && LA9_0<='9')) ) {
-                    alt9=1;
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+                if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+                    alt7=1;
                 }
 
 
-                switch (alt9) {
+                switch (alt7) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:27: '0' .. '9'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2026,13 +1832,13 @@
             	    break;
 
             	default :
-            	    if ( cnt9 >= 1 ) break loop9;
+            	    if ( cnt7 >= 1 ) break loop7;
             	    if (backtracking>0) {failed=true; return ;}
                         EarlyExitException eee =
-                            new EarlyExitException(9, input);
+                            new EarlyExitException(7, input);
                         throw eee;
                 }
-                cnt9++;
+                cnt7++;
             } while (true);
 
 
@@ -2062,53 +1868,53 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
-            int alt12=2;
-            int LA12_0 = input.LA(1);
-            if ( (LA12_0=='\"') ) {
-                alt12=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+            if ( (LA10_0=='\"') ) {
+                alt10=1;
             }
-            else if ( (LA12_0=='\'') ) {
-                alt12=2;
+            else if ( (LA10_0=='\'') ) {
+                alt10=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1336:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 12, 0, input);
+                    new NoViableAltException("1344:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 10, 0, input);
 
                 throw nvae;
             }
-            switch (alt12) {
+            switch (alt10) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
-                    loop10:
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
+                    loop8:
                     do {
-                        int alt10=3;
-                        int LA10_0 = input.LA(1);
-                        if ( (LA10_0=='\\') ) {
-                            alt10=1;
+                        int alt8=3;
+                        int LA8_0 = input.LA(1);
+                        if ( (LA8_0=='\\') ) {
+                            alt8=1;
                         }
-                        else if ( ((LA10_0>='\u0000' && LA10_0<='!')||(LA10_0>='#' && LA10_0<='[')||(LA10_0>=']' && LA10_0<='\uFFFE')) ) {
-                            alt10=2;
+                        else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE')) ) {
+                            alt8=2;
                         }
 
 
-                        switch (alt10) {
+                        switch (alt8) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:15: EscapeSequence
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:32: ~ ('\\\\'|'\"')
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1345:32: ~ ('\\\\'|'\"')
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -2126,7 +1932,7 @@
                     	    break;
 
                     	default :
-                    	    break loop10;
+                    	    break loop8;
                         }
                     } while (true);
 
@@ -2138,35 +1944,35 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
-                    loop11:
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
+                    loop9:
                     do {
-                        int alt11=3;
-                        int LA11_0 = input.LA(1);
-                        if ( (LA11_0=='\\') ) {
-                            alt11=1;
+                        int alt9=3;
+                        int LA9_0 = input.LA(1);
+                        if ( (LA9_0=='\\') ) {
+                            alt9=1;
                         }
-                        else if ( ((LA11_0>='\u0000' && LA11_0<='&')||(LA11_0>='(' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFE')) ) {
-                            alt11=2;
+                        else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE')) ) {
+                            alt9=2;
                         }
 
 
-                        switch (alt11) {
+                        switch (alt9) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:16: EscapeSequence
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1338:33: ~ ('\\\\'|'\\'')
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:33: ~ ('\\\\'|'\\'')
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -2184,7 +1990,7 @@
                     	    break;
 
                     	default :
-                    	    break loop11;
+                    	    break loop9;
                         }
                     } while (true);
 
@@ -2216,8 +2022,8 @@
     public void mHexDigit() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:12: ('0'..'9'|'a'..'f'|'A'..'F')
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350: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();
@@ -2244,13 +2050,13 @@
     public void mEscapeSequence() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
-            int alt13=3;
-            int LA13_0 = input.LA(1);
-            if ( (LA13_0=='\\') ) {
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
+            int alt11=3;
+            int LA11_0 = input.LA(1);
+            if ( (LA11_0=='\\') ) {
                 switch ( input.LA(2) ) {
                 case 'u':
-                    alt13=2;
+                    alt11=2;
                     break;
                 case '\"':
                 case '\'':
@@ -2260,7 +2066,7 @@
                 case 'n':
                 case 'r':
                 case 't':
-                    alt13=1;
+                    alt11=1;
                     break;
                 case '0':
                 case '1':
@@ -2270,12 +2076,12 @@
                 case '5':
                 case '6':
                 case '7':
-                    alt13=3;
+                    alt11=3;
                     break;
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1344:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 13, 1, input);
+                        new NoViableAltException("1352:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 1, input);
 
                     throw nvae;
                 }
@@ -2284,13 +2090,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1344:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 13, 0, input);
+                    new NoViableAltException("1352:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt11) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:9: '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\')
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354: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' ) {
@@ -2308,14 +2114,14 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1347:9: UnicodeEscape
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1355:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1348:9: OctalEscape
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1356:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -2334,36 +2140,36 @@
     public void mOctalEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
-            int alt14=3;
-            int LA14_0 = input.LA(1);
-            if ( (LA14_0=='\\') ) {
-                int LA14_1 = input.LA(2);
-                if ( ((LA14_1>='0' && LA14_1<='3')) ) {
-                    int LA14_2 = input.LA(3);
-                    if ( ((LA14_2>='0' && LA14_2<='7')) ) {
-                        int LA14_4 = input.LA(4);
-                        if ( ((LA14_4>='0' && LA14_4<='7')) ) {
-                            alt14=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            int alt12=3;
+            int LA12_0 = input.LA(1);
+            if ( (LA12_0=='\\') ) {
+                int LA12_1 = input.LA(2);
+                if ( ((LA12_1>='0' && LA12_1<='3')) ) {
+                    int LA12_2 = input.LA(3);
+                    if ( ((LA12_2>='0' && LA12_2<='7')) ) {
+                        int LA12_5 = input.LA(4);
+                        if ( ((LA12_5>='0' && LA12_5<='7')) ) {
+                            alt12=1;
                         }
                         else {
-                            alt14=2;}
+                            alt12=2;}
                     }
                     else {
-                        alt14=3;}
+                        alt12=3;}
                 }
-                else if ( ((LA14_1>='4' && LA14_1<='7')) ) {
-                    int LA14_3 = input.LA(3);
-                    if ( ((LA14_3>='0' && LA14_3<='7')) ) {
-                        alt14=2;
+                else if ( ((LA12_1>='4' && LA12_1<='7')) ) {
+                    int LA12_3 = input.LA(3);
+                    if ( ((LA12_3>='0' && LA12_3<='7')) ) {
+                        alt12=2;
                     }
                     else {
-                        alt14=3;}
+                        alt12=3;}
                 }
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1351:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 14, 1, input);
+                        new NoViableAltException("1359:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -2371,31 +2177,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1351:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 14, 0, input);
+                    new NoViableAltException("1359:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
 
                 throw nvae;
             }
-            switch (alt14) {
+            switch (alt12) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:14: ( '0' .. '3' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:15: '0' .. '3'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:14: ( '0' .. '3' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:25: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:26: '0' .. '7'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:25: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:36: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1353:37: '0' .. '7'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:36: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1361:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -2405,18 +2211,18 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1362:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:14: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:15: '0' .. '7'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1362:14: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1362:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:25: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1354:26: '0' .. '7'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1362:25: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1362:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -2426,11 +2232,11 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1355:9: '\\\\' ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1363:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1355:14: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1355:15: '0' .. '7'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1363:14: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1363:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -2452,8 +2258,8 @@
     public void mUnicodeEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1360:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1360:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -2480,28 +2286,28 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:4: ( ( 'true' | 'false' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:4: ( 'true' | 'false' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:4: ( ( 'true' | 'false' ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:4: ( 'true' | 'false' )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:4: ( 'true' | 'false' )
-            int alt15=2;
-            int LA15_0 = input.LA(1);
-            if ( (LA15_0=='t') ) {
-                alt15=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:4: ( 'true' | 'false' )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+            if ( (LA13_0=='t') ) {
+                alt13=1;
             }
-            else if ( (LA15_0=='f') ) {
-                alt15=2;
+            else if ( (LA13_0=='f') ) {
+                alt13=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1364:4: ( 'true' | 'false' )", 15, 0, input);
+                    new NoViableAltException("1372:4: ( 'true' | 'false' )", 13, 0, input);
 
                 throw nvae;
             }
-            switch (alt15) {
+            switch (alt13) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:5: 'true'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -2509,7 +2315,7 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:12: 'false'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -2537,6 +2343,134 @@
     }
     // $ANTLR end BOOL
 
+    // $ANTLR start RULE
+    public void mRULE() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = RULE;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1375:11: ( 'rule' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1375:11: 'rule'
+            {
+            match("rule"); if (failed) return ;
+
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }    }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end RULE
+
+    // $ANTLR start WHEN
+    public void mWHEN() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = WHEN;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1377:11: ( 'when' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1377:11: 'when'
+            {
+            match("when"); if (failed) return ;
+
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }    }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end WHEN
+
+    // $ANTLR start THEN
+    public void mTHEN() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = THEN;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:12: ( 'then' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:12: 'then'
+            {
+            match("then"); if (failed) return ;
+
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }    }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end THEN
+
+    // $ANTLR start END
+    public void mEND() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = END;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:11: ( 'end' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:11: 'end'
+            {
+            match("end"); if (failed) return ;
+
+
+            }
+
+
+            if ( backtracking==0 ) {
+
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }    }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end END
+
     // $ANTLR start ID
     public void mID() throws RecognitionException {
         try {
@@ -2546,8 +2480,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:4: ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1384:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1384: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();
@@ -2560,19 +2494,19 @@
                 recover(mse);    throw mse;
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
-            loop16:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1384:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            loop14:
             do {
-                int alt16=2;
-                int LA16_0 = input.LA(1);
-                if ( ((LA16_0>='0' && LA16_0<='9')||(LA16_0>='A' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='z')||(LA16_0>='\u00C0' && LA16_0<='\u00FF')) ) {
-                    alt16=1;
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+                if ( ((LA14_0>='0' && LA14_0<='9')||(LA14_0>='A' && LA14_0<='Z')||LA14_0=='_'||(LA14_0>='a' && LA14_0<='z')||(LA14_0>='\u00C0' && LA14_0<='\u00FF')) ) {
+                    alt14=1;
                 }
 
 
-                switch (alt16) {
+                switch (alt14) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:51: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff')
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1384: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();
@@ -2590,7 +2524,7 @@
             	    break;
 
             	default :
-            	    break loop16;
+            	    break loop14;
                 }
             } while (true);
 
@@ -2621,29 +2555,29 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:4: ( '#' ( options {greedy=false; } : . )* EOL )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:4: '#' ( options {greedy=false; } : . )* EOL
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1389:4: ( '#' ( options {greedy=false; } : . )* EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1389:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:8: ( options {greedy=false; } : . )*
-            loop17:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1389:8: ( options {greedy=false; } : . )*
+            loop15:
             do {
-                int alt17=2;
-                int LA17_0 = input.LA(1);
-                if ( (LA17_0=='\r') ) {
-                    alt17=2;
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+                if ( (LA15_0=='\r') ) {
+                    alt15=2;
                 }
-                else if ( (LA17_0=='\n') ) {
-                    alt17=2;
+                else if ( (LA15_0=='\n') ) {
+                    alt15=2;
                 }
-                else if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFE')) ) {
-                    alt17=1;
+                else if ( ((LA15_0>='\u0000' && LA15_0<='\t')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\uFFFE')) ) {
+                    alt15=1;
                 }
 
 
-                switch (alt17) {
+                switch (alt15) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:35: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1389:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2651,7 +2585,7 @@
             	    break;
 
             	default :
-            	    break loop17;
+            	    break loop15;
                 }
             } while (true);
 
@@ -2686,30 +2620,30 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:4: ( '//' ( options {greedy=false; } : . )* EOL )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:4: '//' ( options {greedy=false; } : . )* EOL
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1395:4: ( '//' ( options {greedy=false; } : . )* EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1395:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:9: ( options {greedy=false; } : . )*
-            loop18:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1395:9: ( options {greedy=false; } : . )*
+            loop16:
             do {
-                int alt18=2;
-                int LA18_0 = input.LA(1);
-                if ( (LA18_0=='\r') ) {
-                    alt18=2;
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+                if ( (LA16_0=='\r') ) {
+                    alt16=2;
                 }
-                else if ( (LA18_0=='\n') ) {
-                    alt18=2;
+                else if ( (LA16_0=='\n') ) {
+                    alt16=2;
                 }
-                else if ( ((LA18_0>='\u0000' && LA18_0<='\t')||(LA18_0>='\u000B' && LA18_0<='\f')||(LA18_0>='\u000E' && LA18_0<='\uFFFE')) ) {
-                    alt18=1;
+                else if ( ((LA16_0>='\u0000' && LA16_0<='\t')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\uFFFE')) ) {
+                    alt16=1;
                 }
 
 
-                switch (alt18) {
+                switch (alt16) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:36: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1395:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2717,7 +2651,7 @@
             	    break;
 
             	default :
-            	    break loop18;
+            	    break loop16;
                 }
             } while (true);
 
@@ -2752,33 +2686,33 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1386:2: ( '{' ( CURLY_CHUNK | NO_CURLY )* '}' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1386:2: '{' ( CURLY_CHUNK | NO_CURLY )* '}'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:2: ( '{' ( CURLY_CHUNK | NO_CURLY )* '}' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:2: '{' ( CURLY_CHUNK | NO_CURLY )* '}'
             {
             match('{'); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1386:6: ( CURLY_CHUNK | NO_CURLY )*
-            loop19:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:6: ( CURLY_CHUNK | NO_CURLY )*
+            loop17:
             do {
-                int alt19=3;
-                int LA19_0 = input.LA(1);
-                if ( (LA19_0=='{') ) {
-                    alt19=1;
+                int alt17=3;
+                int LA17_0 = input.LA(1);
+                if ( (LA17_0=='{') ) {
+                    alt17=1;
                 }
-                else if ( ((LA19_0>='\u0000' && LA19_0<='z')||LA19_0=='|'||(LA19_0>='~' && LA19_0<='\uFFFE')) ) {
-                    alt19=2;
+                else if ( ((LA17_0>='\u0000' && LA17_0<='z')||LA17_0=='|'||(LA17_0>='~' && LA17_0<='\uFFFE')) ) {
+                    alt17=2;
                 }
 
 
-                switch (alt19) {
+                switch (alt17) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1386:8: CURLY_CHUNK
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:8: CURLY_CHUNK
             	    {
             	    mCURLY_CHUNK(); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1386:22: NO_CURLY
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:22: NO_CURLY
             	    {
             	    mNO_CURLY(); if (failed) return ;
 
@@ -2786,7 +2720,7 @@
             	    break;
 
             	default :
-            	    break loop19;
+            	    break loop17;
                 }
             } while (true);
 
@@ -2818,8 +2752,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1390:11: ( '(' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1390:11: '('
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1406:11: ( '(' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1406:11: '('
             {
             match('('); if (failed) return ;
 
@@ -2849,8 +2783,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1394:11: ( ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1394:11: ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1410:11: ( ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1410:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -2880,8 +2814,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1398:11: ( '[' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1398:11: '['
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1414:11: ( '[' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1414:11: '['
             {
             match('['); if (failed) return ;
 
@@ -2911,8 +2845,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:11: ( ']' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1402:11: ']'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1418:11: ( ']' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1418:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -2937,8 +2871,8 @@
     public void mNO_CURLY() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1407:4: (~ ('{'|'}'))
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1407:4: ~ ('{'|'}')
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1423:4: (~ ('{'|'}'))
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1423:4: ~ ('{'|'}')
             {
             if ( (input.LA(1)>='\u0000' && input.LA(1)<='z')||input.LA(1)=='|'||(input.LA(1)>='~' && input.LA(1)<='\uFFFE') ) {
                 input.consume();
@@ -2970,35 +2904,35 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1411:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1411:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1411:9: ( options {greedy=false; } : . )*
-            loop20:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:9: ( options {greedy=false; } : . )*
+            loop18:
             do {
-                int alt20=2;
-                int LA20_0 = input.LA(1);
-                if ( (LA20_0=='*') ) {
-                    int LA20_1 = input.LA(2);
-                    if ( (LA20_1=='/') ) {
-                        alt20=2;
+                int alt18=2;
+                int LA18_0 = input.LA(1);
+                if ( (LA18_0=='*') ) {
+                    int LA18_1 = input.LA(2);
+                    if ( (LA18_1=='/') ) {
+                        alt18=2;
                     }
-                    else if ( ((LA20_1>='\u0000' && LA20_1<='.')||(LA20_1>='0' && LA20_1<='\uFFFE')) ) {
-                        alt20=1;
+                    else if ( ((LA18_1>='\u0000' && LA18_1<='.')||(LA18_1>='0' && LA18_1<='\uFFFE')) ) {
+                        alt18=1;
                     }
 
 
                 }
-                else if ( ((LA20_0>='\u0000' && LA20_0<=')')||(LA20_0>='+' && LA20_0<='\uFFFE')) ) {
-                    alt20=1;
+                else if ( ((LA18_0>='\u0000' && LA18_0<=')')||(LA18_0>='+' && LA18_0<='\uFFFE')) ) {
+                    alt18=1;
                 }
 
 
-                switch (alt20) {
+                switch (alt18) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1411:35: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -3006,7 +2940,7 @@
             	    break;
 
             	default :
-            	    break loop20;
+            	    break loop18;
                 }
             } while (true);
 
@@ -3042,8 +2976,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1415:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1416:3: ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\')
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1431:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1432: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();
@@ -3075,453 +3009,453 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: ( T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | RHS | WS | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | CURLY_CHUNK | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | MULTI_LINE_COMMENT | MISC )
-        int alt21=64;
-        alt21 = dfa21.predict(input);
-        switch (alt21) {
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | WS | INT | FLOAT | STRING | BOOL | RULE | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | CURLY_CHUNK | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | MULTI_LINE_COMMENT | MISC )
+        int alt19=64;
+        alt19 = dfa19.predict(input);
+        switch (alt19) {
             case 1 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: T26
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: T29
                 {
-                mT26(); if (failed) return ;
+                mT29(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:14: T27
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:14: T30
                 {
-                mT27(); if (failed) return ;
+                mT30(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:18: T28
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:18: T31
                 {
-                mT28(); if (failed) return ;
+                mT31(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:22: T29
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:22: T32
                 {
-                mT29(); if (failed) return ;
+                mT32(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:26: T30
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:26: T33
                 {
-                mT30(); if (failed) return ;
+                mT33(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:30: T31
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:30: T34
                 {
-                mT31(); if (failed) return ;
+                mT34(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:34: T32
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:34: T35
                 {
-                mT32(); if (failed) return ;
+                mT35(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:38: T33
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:38: T36
                 {
-                mT33(); if (failed) return ;
+                mT36(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:42: T34
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:42: T37
                 {
-                mT34(); if (failed) return ;
+                mT37(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:46: T35
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:46: T38
                 {
-                mT35(); if (failed) return ;
+                mT38(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:50: T36
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:50: T39
                 {
-                mT36(); if (failed) return ;
+                mT39(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:54: T37
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:54: T40
                 {
-                mT37(); if (failed) return ;
+                mT40(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:58: T38
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:58: T41
                 {
-                mT38(); if (failed) return ;
+                mT41(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:62: T39
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:62: T42
                 {
-                mT39(); if (failed) return ;
+                mT42(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:66: T40
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:66: T43
                 {
-                mT40(); if (failed) return ;
+                mT43(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:70: T41
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:70: T44
                 {
-                mT41(); if (failed) return ;
+                mT44(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:74: T42
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:74: T45
                 {
-                mT42(); if (failed) return ;
+                mT45(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:78: T43
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:78: T46
                 {
-                mT43(); if (failed) return ;
+                mT46(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:82: T44
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:82: T47
                 {
-                mT44(); if (failed) return ;
+                mT47(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:86: T45
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:86: T48
                 {
-                mT45(); if (failed) return ;
+                mT48(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:90: T46
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:90: T49
                 {
-                mT46(); if (failed) return ;
+                mT49(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:94: T47
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:94: T50
                 {
-                mT47(); if (failed) return ;
+                mT50(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:98: T48
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:98: T51
                 {
-                mT48(); if (failed) return ;
+                mT51(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:102: T49
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:102: T52
                 {
-                mT49(); if (failed) return ;
+                mT52(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:106: T50
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:106: T53
                 {
-                mT50(); if (failed) return ;
+                mT53(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:110: T51
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:110: T54
                 {
-                mT51(); if (failed) return ;
+                mT54(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:114: T52
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:114: T55
                 {
-                mT52(); if (failed) return ;
+                mT55(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:118: T53
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:118: T56
                 {
-                mT53(); if (failed) return ;
+                mT56(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:122: T54
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:122: T57
                 {
-                mT54(); if (failed) return ;
+                mT57(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:126: T55
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:126: T58
                 {
-                mT55(); if (failed) return ;
+                mT58(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:130: T56
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:130: T59
                 {
-                mT56(); if (failed) return ;
+                mT59(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:134: T57
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:134: T60
                 {
-                mT57(); if (failed) return ;
+                mT60(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:138: T58
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:138: T61
                 {
-                mT58(); if (failed) return ;
+                mT61(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:142: T59
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:142: T62
                 {
-                mT59(); if (failed) return ;
+                mT62(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:146: T60
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:146: T63
                 {
-                mT60(); if (failed) return ;
+                mT63(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:150: T61
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:150: T64
                 {
-                mT61(); if (failed) return ;
+                mT64(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:154: T62
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:154: T65
                 {
-                mT62(); if (failed) return ;
+                mT65(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:158: T63
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:158: T66
                 {
-                mT63(); if (failed) return ;
+                mT66(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:162: T64
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:162: T67
                 {
-                mT64(); if (failed) return ;
+                mT67(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:166: T65
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:166: T68
                 {
-                mT65(); if (failed) return ;
+                mT68(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:170: T66
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:170: T69
                 {
-                mT66(); if (failed) return ;
+                mT69(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:174: T67
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:174: T70
                 {
-                mT67(); if (failed) return ;
+                mT70(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:178: T68
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:178: T71
                 {
-                mT68(); if (failed) return ;
+                mT71(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:182: T69
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:182: T72
                 {
-                mT69(); if (failed) return ;
+                mT72(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:186: T70
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:186: T73
                 {
-                mT70(); if (failed) return ;
+                mT73(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:190: T71
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:190: WS
                 {
-                mT71(); if (failed) return ;
+                mWS(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:194: T72
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:193: INT
                 {
-                mT72(); if (failed) return ;
+                mINT(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:198: T73
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:197: FLOAT
                 {
-                mT73(); if (failed) return ;
+                mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:202: RHS
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:203: STRING
                 {
-                mRHS(); if (failed) return ;
+                mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:206: WS
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:210: BOOL
                 {
-                mWS(); if (failed) return ;
+                mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:209: INT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:215: RULE
                 {
-                mINT(); if (failed) return ;
+                mRULE(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:213: FLOAT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:220: WHEN
                 {
-                mFLOAT(); if (failed) return ;
+                mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:219: STRING
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:225: THEN
                 {
-                mSTRING(); if (failed) return ;
+                mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:226: BOOL
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:230: END
                 {
-                mBOOL(); if (failed) return ;
+                mEND(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:231: ID
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:234: ID
                 {
                 mID(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:234: SH_STYLE_SINGLE_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:237: SH_STYLE_SINGLE_LINE_COMMENT
                 {
                 mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:263: C_STYLE_SINGLE_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:266: C_STYLE_SINGLE_LINE_COMMENT
                 {
                 mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:291: CURLY_CHUNK
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:294: CURLY_CHUNK
                 {
                 mCURLY_CHUNK(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:303: LEFT_PAREN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:306: LEFT_PAREN
                 {
                 mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:314: RIGHT_PAREN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:317: RIGHT_PAREN
                 {
                 mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:326: LEFT_SQUARE
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:329: LEFT_SQUARE
                 {
                 mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:338: RIGHT_SQUARE
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:341: RIGHT_SQUARE
                 {
                 mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:351: MULTI_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:354: MULTI_LINE_COMMENT
                 {
                 mMULTI_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 64 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:370: MISC
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:373: MISC
                 {
                 mMISC(); if (failed) return ;
 
@@ -3533,162 +3467,119 @@
     }
 
 
-    protected DFA1 dfa1 = new DFA1(this);
-    protected DFA21 dfa21 = new DFA21(this);
-    public static final String DFA1_eotS =
-        "\7\uffff";
-    public static final String DFA1_eofS =
-        "\7\uffff";
-    public static final String DFA1_minS =
-        "\2\0\1\uffff\3\0\1\uffff";
-    public static final String DFA1_maxS =
-        "\2\ufffe\1\uffff\3\ufffe\1\uffff";
-    public static final String DFA1_acceptS =
-        "\2\uffff\1\1\3\uffff\1\2";
-    public static final String DFA1_specialS =
-        "\7\uffff}>";
-    public static final String[] DFA1_transition = {
-        "\12\2\1\1\2\2\1\1\ufff1\2",
-        "\11\2\1\3\2\2\1\3\23\2\1\3\104\2\1\4\uff99\2",
+    protected DFA19 dfa19 = new DFA19(this);
+    public static final String DFA19_eotS =
+        "\2\uffff\3\51\1\62\1\51\1\uffff\2\51\1\uffff\7\51\1\107\1\111\1"+
+        "\52\1\114\1\116\1\52\2\51\1\52\1\51\1\uffff\1\127\1\uffff\1\52\1"+
+        "\51\2\uffff\1\52\7\uffff\6\51\2\uffff\1\51\1\uffff\20\51\1\165\12"+
+        "\uffff\4\51\1\uffff\1\51\2\uffff\1\51\2\uffff\17\51\1\u008c\3\51"+
+        "\1\u0090\1\uffff\5\51\1\uffff\4\51\1\u009a\1\u009b\3\51\1\u009f"+
+        "\2\51\1\u00a2\3\51\1\u00a6\1\u00a7\4\51\1\uffff\2\51\1\u00af\1\uffff"+
+        "\2\51\1\u00b2\5\51\1\u00b8\2\uffff\1\u00b9\2\51\1\uffff\1\u00a6"+
+        "\1\51\1\uffff\1\51\1\u00be\1\51\2\uffff\5\51\1\uffff\1\51\1\uffff"+
+        "\2\51\1\uffff\5\51\2\uffff\1\51\1\u00ce\1\51\1\u00d0\1\uffff\2\51"+
+        "\1\u00d3\5\51\1\u00d9\3\51\1\u00dd\1\51\1\u00df\1\uffff\1\51\1\uffff"+
+        "\2\51\1\uffff\2\51\1\uffff\2\51\1\uffff\1\u00e7\1\51\1\u00e9\1\uffff"+
+        "\1\51\1\uffff\1\u00eb\1\u00ec\3\51\1\u00f0\1\u00f1\1\uffff\1\u00f2"+
+        "\1\uffff\1\u00f3\2\uffff\3\51\4\uffff\1\51\1\u00f8\1\u00f9\3\uffff";
+    public static final String DFA19_eofS =
+        "\u00fa\uffff";
+    public static final String DFA19_minS =
+        "\1\11\1\uffff\1\141\1\155\1\141\1\52\1\154\1\uffff\1\165\1\145\1"+
+        "\uffff\1\143\1\141\1\157\1\165\1\145\1\157\1\162\1\174\1\46\4\75"+
+        "\1\141\1\156\1\60\1\163\1\uffff\1\56\1\uffff\1\0\1\150\2\uffff\1"+
+        "\52\7\uffff\1\143\1\160\1\151\1\154\1\156\1\157\2\uffff\1\157\1"+
+        "\uffff\1\145\1\155\1\165\1\145\1\143\1\164\1\145\1\144\1\164\2\154"+
+        "\1\55\1\162\1\163\2\154\1\60\12\uffff\1\164\1\143\1\141\1\144\1"+
+        "\uffff\1\145\2\uffff\1\145\2\uffff\1\153\1\157\1\164\1\163\1\143"+
+        "\1\155\1\142\1\162\1\160\1\145\1\156\1\151\1\165\1\162\1\156\1\60"+
+        "\1\157\1\151\1\154\1\60\1\uffff\1\141\1\165\1\145\1\154\1\164\1"+
+        "\uffff\1\143\1\163\2\154\2\60\1\156\1\141\1\162\1\60\1\145\1\164"+
+        "\1\60\1\141\1\171\1\154\2\60\1\157\1\155\1\151\1\144\1\uffff\1\55"+
+        "\1\145\1\60\1\uffff\1\164\1\154\1\60\1\145\1\141\1\150\1\164\1\165"+
+        "\1\60\2\uffff\1\60\1\147\1\164\1\uffff\1\60\1\151\1\uffff\1\154"+
+        "\1\60\1\141\2\uffff\1\141\1\156\1\165\1\142\1\141\1\uffff\1\156"+
+        "\1\uffff\1\151\1\164\1\uffff\1\143\1\151\1\145\1\163\1\144\2\uffff"+
+        "\1\145\1\60\1\157\1\60\1\uffff\2\164\1\60\1\154\1\165\1\55\1\143"+
+        "\1\157\1\60\1\164\1\156\1\163\1\60\1\145\1\60\1\uffff\1\156\1\uffff"+
+        "\1\145\1\151\1\uffff\1\141\1\164\1\uffff\1\145\1\156\1\uffff\1\60"+
+        "\1\163\1\60\1\uffff\1\163\1\uffff\2\60\1\157\1\164\1\145\2\60\1"+
+        "\uffff\1\60\1\uffff\1\60\2\uffff\1\156\1\145\1\163\4\uffff\1\55"+
+        "\2\60\3\uffff";
+    public static final String DFA19_maxS =
+        "\1\u00ff\1\uffff\1\141\1\156\1\165\1\52\1\154\1\uffff\1\165\1\162"+
+        "\1\uffff\1\165\1\141\3\165\1\157\1\162\1\174\1\46\4\75\1\141\1\170"+
+        "\1\76\1\163\1\uffff\1\71\1\uffff\1\ufffe\1\150\2\uffff\1\57\7\uffff"+
+        "\1\143\1\160\1\151\1\154\1\156\1\157\2\uffff\1\157\1\uffff\1\145"+
+        "\1\155\1\165\1\145\2\164\1\145\1\144\1\164\2\154\1\164\1\162\1\163"+
+        "\1\154\1\156\1\u00ff\12\uffff\1\164\1\151\1\141\1\144\1\uffff\1"+
+        "\145\2\uffff\1\145\2\uffff\1\153\1\157\1\164\1\163\1\143\1\155\1"+
+        "\142\1\162\1\160\1\145\1\156\1\151\1\165\1\162\1\156\1\u00ff\1\157"+
+        "\1\151\1\154\1\u00ff\1\uffff\1\141\1\165\1\145\1\154\1\164\1\uffff"+
+        "\1\143\1\163\2\154\2\u00ff\1\156\1\141\1\162\1\u00ff\1\145\1\164"+
+        "\1\u00ff\1\141\1\171\1\154\2\u00ff\1\166\1\155\1\151\1\144\1\uffff"+
+        "\1\55\1\145\1\u00ff\1\uffff\1\164\1\154\1\u00ff\1\145\1\141\1\150"+
+        "\1\164\1\165\1\u00ff\2\uffff\1\u00ff\1\147\1\164\1\uffff\1\u00ff"+
+        "\1\151\1\uffff\1\154\1\u00ff\1\141\2\uffff\1\141\1\156\1\165\1\142"+
+        "\1\141\1\uffff\1\156\1\uffff\1\151\1\164\1\uffff\1\143\1\151\1\145"+
+        "\1\163\1\144\2\uffff\1\145\1\u00ff\1\157\1\u00ff\1\uffff\2\164\1"+
+        "\u00ff\1\154\1\165\1\55\1\143\1\157\1\u00ff\1\164\1\156\1\163\1"+
+        "\u00ff\1\145\1\u00ff\1\uffff\1\156\1\uffff\1\145\1\151\1\uffff\1"+
+        "\141\1\164\1\uffff\1\145\1\156\1\uffff\1\u00ff\1\163\1\u00ff\1\uffff"+
+        "\1\163\1\uffff\2\u00ff\1\157\1\164\1\145\2\u00ff\1\uffff\1\u00ff"+
+        "\1\uffff\1\u00ff\2\uffff\1\156\1\145\1\163\4\uffff\1\55\2\u00ff"+
+        "\3\uffff";
+    public static final String DFA19_acceptS =
+        "\1\uffff\1\1\5\uffff\1\10\2\uffff\1\13\21\uffff\1\56\1\uffff\1\61"+
+        "\2\uffff\1\67\1\70\1\uffff\1\72\1\73\1\74\1\75\1\76\1\67\1\100\6"+
+        "\uffff\1\6\1\5\1\uffff\1\10\21\uffff\1\32\1\34\1\51\1\33\1\35\1"+
+        "\37\1\36\1\41\1\40\1\42\4\uffff\1\47\1\uffff\1\60\1\57\1\uffff\1"+
+        "\71\1\77\24\uffff\1\16\5\uffff\1\31\26\uffff\1\50\3\uffff\1\53\11"+
+        "\uffff\1\66\1\55\3\uffff\1\25\2\uffff\1\23\3\uffff\1\62\1\65\5\uffff"+
+        "\1\17\1\uffff\1\46\2\uffff\1\63\5\uffff\1\54\1\64\4\uffff\1\11\17"+
+        "\uffff\1\3\1\uffff\1\7\2\uffff\1\26\2\uffff\1\21\2\uffff\1\27\3"+
+        "\uffff\1\52\1\uffff\1\2\7\uffff\1\30\1\uffff\1\44\1\uffff\1\4\1"+
+        "\12\3\uffff\1\15\1\22\1\43\1\45\3\uffff\1\20\1\24\1\14";
+    public static final String DFA19_specialS =
+        "\u00fa\uffff}>";
+    public static final String[] DFA19_transition = {
+        "\2\34\1\uffff\2\34\22\uffff\1\34\1\27\1\36\1\42\1\41\1\52\1\23\1"+
+        "\37\1\45\1\46\2\52\1\7\1\32\1\5\1\43\12\35\1\12\1\1\1\26\1\24\1"+
+        "\25\2\52\32\51\1\47\1\52\1\50\1\52\1\41\1\uffff\1\13\1\51\1\20\1"+
+        "\16\1\31\1\4\1\6\1\51\1\3\3\51\1\30\1\15\1\21\1\2\1\10\1\17\1\14"+
+        "\1\11\1\33\1\51\1\40\3\51\1\44\1\22\103\uffff\100\51",
         "",
-        "\11\2\1\3\2\2\1\3\23\2\1\3\104\2\1\4\uff99\2",
-        "\156\2\1\5\uff90\2",
-        "\144\2\1\6\uff9a\2",
-        ""
-    };
-
-    class DFA1 extends DFA {
-        public DFA1(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 1;
-            this.eot = DFA.unpackEncodedString(DFA1_eotS);
-            this.eof = DFA.unpackEncodedString(DFA1_eofS);
-            this.min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
-            this.max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
-            this.accept = DFA.unpackEncodedString(DFA1_acceptS);
-            this.special = DFA.unpackEncodedString(DFA1_specialS);
-            int numStates = DFA1_transition.length;
-            this.transition = new short[numStates][];
-            for (int i=0; i<numStates; i++) {
-                transition[i] = DFA.unpackEncodedString(DFA1_transition[i]);
-            }
-        }
-        public String getDescription() {
-            return "()* loopback of 1309:13: ( options {greedy=false; } : . )*";
-        }
-    }
-    public static final String DFA21_eotS =
-        "\2\uffff\3\51\1\62\1\51\1\uffff\5\51\1\uffff\6\51\1\113\1\115\1"+
-        "\52\1\120\1\122\1\52\1\51\1\52\1\51\1\uffff\1\130\1\uffff\1\52\2"+
-        "\uffff\1\52\7\uffff\6\51\2\uffff\1\51\1\uffff\24\51\1\172\12\uffff"+
-        "\1\51\1\uffff\1\51\4\uffff\10\51\1\u0085\13\51\1\u0091\4\51\1\u0096"+
-        "\1\uffff\4\51\1\uffff\1\51\1\u009c\1\51\1\u009e\2\51\1\u00a1\3\51"+
-        "\1\uffff\1\u00a5\4\51\1\u00ab\1\51\1\u00ad\1\u00ae\2\51\1\uffff"+
-        "\4\51\1\uffff\1\u00b6\4\51\1\uffff\1\51\1\uffff\1\51\1\u00ab\1\uffff"+
-        "\2\51\1\u00bf\1\uffff\2\51\1\uffff\2\51\1\uffff\1\51\3\uffff\6\51"+
-        "\1\uffff\5\51\1\u00cf\1\51\1\u00d1\1\uffff\1\u00d2\2\51\1\u00d5"+
-        "\2\51\1\u00d8\7\51\1\u00e0\1\uffff\1\51\2\uffff\2\51\1\uffff\2\51"+
-        "\1\uffff\1\51\1\uffff\2\51\1\u00e9\1\51\1\u00eb\1\uffff\1\u00ec"+
-        "\1\u00ed\1\u00ee\3\51\1\u00f2\1\u00f3\1\uffff\1\u00f4\4\uffff\3"+
-        "\51\3\uffff\1\u00f8\1\51\1\u00fa\3\uffff";
-    public static final String DFA21_eofS =
-        "\u00fb\uffff";
-    public static final String DFA21_minS =
-        "\1\11\1\uffff\1\141\1\155\1\141\1\52\1\154\1\uffff\1\165\1\156\2"+
-        "\145\1\150\1\uffff\1\143\1\141\1\157\1\165\1\157\1\162\1\174\1\46"+
-        "\4\75\1\141\1\60\1\163\1\uffff\1\56\1\uffff\1\0\2\uffff\1\52\7\uffff"+
-        "\1\143\1\151\1\160\1\154\1\157\1\156\2\uffff\1\157\1\uffff\1\145"+
-        "\1\144\1\141\1\143\1\145\1\155\1\165\1\163\1\154\1\145\2\164\1\144"+
-        "\1\143\1\145\1\154\1\55\1\154\1\162\1\154\1\60\12\uffff\1\164\1"+
-        "\uffff\1\145\4\uffff\1\153\1\164\1\157\1\163\1\155\1\143\1\142\1"+
-        "\162\1\60\1\154\1\163\1\154\1\156\1\160\1\145\1\165\1\145\1\156"+
-        "\1\157\1\162\1\60\1\151\1\165\1\156\1\151\1\60\1\uffff\1\154\1\141"+
-        "\1\154\1\164\1\uffff\1\143\1\60\1\141\1\60\1\162\1\145\1\60\1\164"+
-        "\1\141\1\171\1\uffff\1\60\1\164\1\165\1\0\1\154\1\60\1\154\2\60"+
-        "\1\55\1\151\1\uffff\1\157\1\155\1\144\1\145\1\uffff\1\60\1\164\1"+
-        "\145\1\141\1\150\1\uffff\1\147\1\uffff\1\164\1\60\1\uffff\1\151"+
-        "\1\154\1\60\1\uffff\1\163\1\144\1\uffff\1\0\1\141\1\uffff\1\164"+
-        "\3\uffff\1\142\1\141\1\156\1\165\1\141\1\156\1\uffff\1\151\1\143"+
-        "\1\151\2\145\1\60\1\157\1\60\1\uffff\1\60\1\145\1\164\1\60\1\165"+
-        "\1\164\1\60\1\154\1\55\1\143\1\157\1\164\1\156\1\163\1\60\1\uffff"+
-        "\1\156\2\uffff\1\163\1\145\1\uffff\1\164\1\151\1\uffff\1\141\1\uffff"+
-        "\1\145\1\156\1\60\1\163\1\60\1\uffff\3\60\1\145\1\157\1\164\2\60"+
-        "\1\uffff\1\60\4\uffff\1\163\1\156\1\145\3\uffff\1\60\1\55\1\60\3"+
-        "\uffff";
-    public static final String DFA21_maxS =
-        "\1\u00ff\1\uffff\1\141\1\156\1\165\1\52\1\154\1\uffff\1\165\1\170"+
-        "\1\162\1\165\1\150\1\uffff\1\165\1\141\2\165\1\157\1\162\1\174\1"+
-        "\46\4\75\1\141\1\76\1\163\1\uffff\1\71\1\uffff\1\ufffe\2\uffff\1"+
-        "\57\7\uffff\1\143\1\151\1\160\1\154\1\157\1\156\2\uffff\1\157\1"+
-        "\uffff\1\145\1\144\1\141\1\151\1\145\1\155\1\165\1\163\1\154\1\145"+
-        "\2\164\1\144\1\164\1\145\1\154\1\164\1\154\1\162\1\156\1\u00ff\12"+
-        "\uffff\1\164\1\uffff\1\145\4\uffff\1\153\1\164\1\157\1\163\1\155"+
-        "\1\143\1\142\1\162\1\u00ff\1\154\1\163\1\154\1\156\1\160\1\145\1"+
-        "\165\1\145\1\156\1\157\1\162\1\u00ff\1\151\1\165\1\156\1\151\1\u00ff"+
-        "\1\uffff\1\154\1\141\1\154\1\164\1\uffff\1\143\1\u00ff\1\141\1\u00ff"+
-        "\1\162\1\145\1\u00ff\1\164\1\141\1\171\1\uffff\1\u00ff\1\164\1\165"+
-        "\1\ufffe\1\154\1\u00ff\1\154\2\u00ff\1\55\1\151\1\uffff\1\166\1"+
-        "\155\1\144\1\145\1\uffff\1\u00ff\1\164\1\145\1\141\1\150\1\uffff"+
-        "\1\147\1\uffff\1\164\1\u00ff\1\uffff\1\151\1\154\1\u00ff\1\uffff"+
-        "\1\163\1\144\1\uffff\1\ufffe\1\141\1\uffff\1\164\3\uffff\1\142\1"+
-        "\141\1\156\1\165\1\141\1\156\1\uffff\1\151\1\143\1\151\2\145\1\u00ff"+
-        "\1\157\1\u00ff\1\uffff\1\u00ff\1\145\1\164\1\u00ff\1\165\1\164\1"+
-        "\u00ff\1\154\1\55\1\143\1\157\1\164\1\156\1\163\1\u00ff\1\uffff"+
-        "\1\156\2\uffff\1\163\1\145\1\uffff\1\164\1\151\1\uffff\1\141\1\uffff"+
-        "\1\145\1\156\1\u00ff\1\163\1\u00ff\1\uffff\3\u00ff\1\145\1\157\1"+
-        "\164\2\u00ff\1\uffff\1\u00ff\4\uffff\1\163\1\156\1\145\3\uffff\1"+
-        "\u00ff\1\55\1\u00ff\3\uffff";
-    public static final String DFA21_acceptS =
-        "\1\uffff\1\1\5\uffff\1\10\5\uffff\1\16\17\uffff\1\62\1\uffff\1\65"+
-        "\1\uffff\1\67\1\70\1\uffff\1\72\1\73\1\74\1\75\1\76\1\67\1\100\6"+
-        "\uffff\1\6\1\5\1\uffff\1\10\25\uffff\1\35\1\37\1\54\1\36\1\40\1"+
-        "\42\1\41\1\44\1\43\1\45\1\uffff\1\52\1\uffff\1\64\1\63\1\71\1\77"+
-        "\32\uffff\1\21\4\uffff\1\34\12\uffff\1\12\13\uffff\1\53\4\uffff"+
-        "\1\56\5\uffff\1\60\1\uffff\1\30\2\uffff\1\26\3\uffff\1\57\2\uffff"+
-        "\1\61\2\uffff\1\66\1\uffff\1\14\1\15\1\22\6\uffff\1\51\10\uffff"+
-        "\1\11\17\uffff\1\3\1\uffff\1\7\1\55\2\uffff\1\32\2\uffff\1\31\1"+
-        "\uffff\1\24\5\uffff\1\2\10\uffff\1\33\1\uffff\1\47\1\4\1\50\1\13"+
-        "\3\uffff\1\20\1\25\1\46\3\uffff\1\17\1\23\1\27";
-    public static final String DFA21_specialS =
-        "\u00fb\uffff}>";
-    public static final String[] DFA21_transition = {
-        "\2\35\1\uffff\2\35\22\uffff\1\35\1\31\1\37\1\42\1\41\1\52\1\25\1"+
-        "\40\1\45\1\46\2\52\1\7\1\33\1\5\1\43\12\36\1\15\1\1\1\30\1\26\1"+
-        "\27\2\52\32\51\1\47\1\52\1\50\1\52\1\41\1\uffff\1\16\1\51\1\22\1"+
-        "\21\1\11\1\4\1\6\1\51\1\3\3\51\1\32\1\20\1\23\1\2\1\10\1\13\1\17"+
-        "\1\12\1\34\1\51\1\14\3\51\1\44\1\24\103\uffff\100\51",
-        "",
         "\1\53",
-        "\1\55\1\54",
-        "\1\56\20\uffff\1\57\2\uffff\1\60",
+        "\1\54\1\55",
+        "\1\56\20\uffff\1\60\2\uffff\1\57",
         "\1\61",
         "\1\63",
         "",
         "\1\65",
-        "\1\66\7\uffff\1\67\1\uffff\1\70",
-        "\1\72\2\uffff\1\71\11\uffff\1\73",
-        "\1\74\17\uffff\1\75",
-        "\1\76",
+        "\1\66\2\uffff\1\70\11\uffff\1\67",
         "",
-        "\1\102\3\uffff\1\103\6\uffff\1\101\5\uffff\1\100\1\77",
+        "\1\71\3\uffff\1\73\6\uffff\1\74\5\uffff\1\72\1\75",
+        "\1\76",
+        "\1\100\5\uffff\1\77",
+        "\1\101",
+        "\1\102\17\uffff\1\103",
         "\1\104",
-        "\1\105\5\uffff\1\106",
-        "\1\107",
+        "\1\105",
+        "\1\106",
         "\1\110",
-        "\1\111",
         "\1\112",
-        "\1\114",
-        "\1\116",
+        "\1\113",
+        "\1\115",
         "\1\117",
-        "\1\121",
-        "\1\123",
-        "\1\124",
-        "\12\36\4\uffff\1\125",
-        "\1\126",
+        "\1\120",
+        "\1\123\7\uffff\1\122\1\uffff\1\121",
+        "\12\35\4\uffff\1\124",
+        "\1\125",
         "",
-        "\1\127\1\uffff\12\36",
+        "\1\126\1\uffff\12\35",
         "",
-        "\uffff\37",
+        "\uffff\36",
+        "\1\130",
         "",
         "",
         "\1\132\4\uffff\1\131",
@@ -3712,23 +3603,19 @@
         "\1\142",
         "\1\143",
         "\1\144",
-        "\1\146\5\uffff\1\145",
-        "\1\147",
+        "\1\145",
+        "\1\147\20\uffff\1\146",
         "\1\150",
         "\1\151",
         "\1\152",
         "\1\153",
         "\1\154",
         "\1\155",
-        "\1\156",
-        "\1\157",
-        "\1\161\20\uffff\1\160",
+        "\1\157\106\uffff\1\156",
+        "\1\160",
+        "\1\161",
         "\1\162",
-        "\1\163",
-        "\1\165\106\uffff\1\164",
-        "\1\166",
-        "\1\167",
-        "\1\170\1\uffff\1\171",
+        "\1\163\1\uffff\1\164",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "",
@@ -3740,13 +3627,17 @@
         "",
         "",
         "",
+        "\1\166",
+        "\1\170\5\uffff\1\167",
+        "\1\171",
+        "\1\172",
+        "",
         "\1\173",
         "",
+        "",
         "\1\174",
         "",
         "",
-        "",
-        "",
         "\1\175",
         "\1\176",
         "\1\177",
@@ -3755,180 +3646,177 @@
         "\1\u0082",
         "\1\u0083",
         "\1\u0084",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u0085",
         "\1\u0086",
         "\1\u0087",
         "\1\u0088",
         "\1\u0089",
         "\1\u008a",
         "\1\u008b",
-        "\1\u008c",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u008d",
         "\1\u008e",
         "\1\u008f",
-        "\1\u0090",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "",
+        "\1\u0091",
         "\1\u0092",
         "\1\u0093",
         "\1\u0094",
         "\1\u0095",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
+        "\1\u0096",
         "\1\u0097",
         "\1\u0098",
         "\1\u0099",
-        "\1\u009a",
-        "",
-        "\1\u009b",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u009c",
         "\1\u009d",
+        "\1\u009e",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u009f",
         "\1\u00a0",
+        "\1\u00a1",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00a2",
         "\1\u00a3",
         "\1\u00a4",
-        "",
+        "\1\u00a5",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00a6",
-        "\1\u00a7",
-        "\60\u00a8\12\u00a9\7\u00a8\32\u00a9\4\u00a8\1\u00a9\1\u00a8\32\u00a9"+
-        "\105\u00a8\100\u00a9\ufeff\u00a8",
-        "\1\u00aa",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00a9\6\uffff\1\u00a8",
+        "\1\u00aa",
+        "\1\u00ab",
         "\1\u00ac",
+        "",
+        "\1\u00ad",
+        "\1\u00ae",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00af",
-        "\1\u00b0",
         "",
-        "\1\u00b2\6\uffff\1\u00b1",
+        "\1\u00b0",
+        "\1\u00b1",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00b3",
         "\1\u00b4",
         "\1\u00b5",
+        "\1\u00b6",
+        "\1\u00b7",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
+        "",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00b7",
-        "\1\u00b8",
-        "\1\u00b9",
         "\1\u00ba",
-        "",
         "\1\u00bb",
         "",
-        "\1\u00bc",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00bc",
         "",
         "\1\u00bd",
-        "\1\u00be",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00bf",
         "",
+        "",
         "\1\u00c0",
         "\1\u00c1",
-        "",
-        "\60\u00a8\12\u00a9\7\u00a8\32\u00a9\4\u00a8\1\u00a9\1\u00a8\32\u00a9"+
-        "\105\u00a8\100\u00a9\ufeff\u00a8",
         "\1\u00c2",
-        "",
         "\1\u00c3",
-        "",
-        "",
-        "",
         "\1\u00c4",
+        "",
         "\1\u00c5",
+        "",
         "\1\u00c6",
         "\1\u00c7",
+        "",
         "\1\u00c8",
         "\1\u00c9",
-        "",
         "\1\u00ca",
         "\1\u00cb",
         "\1\u00cc",
+        "",
+        "",
         "\1\u00cd",
-        "\1\u00ce",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00d0",
+        "\1\u00cf",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
+        "\1\u00d1",
+        "\1\u00d2",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00d3",
         "\1\u00d4",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00d5",
         "\1\u00d6",
         "\1\u00d7",
+        "\1\u00d8",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00d9",
         "\1\u00da",
         "\1\u00db",
         "\1\u00dc",
-        "\1\u00dd",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00de",
-        "\1\u00df",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\1\u00e1",
+        "\1\u00e0",
         "",
-        "",
+        "\1\u00e1",
         "\1\u00e2",
-        "\1\u00e3",
         "",
+        "\1\u00e3",
         "\1\u00e4",
-        "\1\u00e5",
         "",
+        "\1\u00e5",
         "\1\u00e6",
         "",
-        "\1\u00e7",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00e8",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "",
         "\1\u00ea",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00ed",
+        "\1\u00ee",
         "\1\u00ef",
-        "\1\u00f0",
-        "\1\u00f1",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "",
-        "",
+        "\1\u00f4",
         "\1\u00f5",
         "\1\u00f6",
-        "\1\u00f7",
         "",
         "",
         "",
+        "",
+        "\1\u00f7",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
-        "\1\u00f9",
         "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "",
         ""
     };
 
-    class DFA21 extends DFA {
-        public DFA21(BaseRecognizer recognizer) {
+    class DFA19 extends DFA {
+        public DFA19(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 21;
-            this.eot = DFA.unpackEncodedString(DFA21_eotS);
-            this.eof = DFA.unpackEncodedString(DFA21_eofS);
-            this.min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
-            this.max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
-            this.accept = DFA.unpackEncodedString(DFA21_acceptS);
-            this.special = DFA.unpackEncodedString(DFA21_specialS);
-            int numStates = DFA21_transition.length;
+            this.decisionNumber = 19;
+            this.eot = DFA.unpackEncodedString(DFA19_eotS);
+            this.eof = DFA.unpackEncodedString(DFA19_eofS);
+            this.min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
+            this.max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
+            this.accept = DFA.unpackEncodedString(DFA19_acceptS);
+            this.special = DFA.unpackEncodedString(DFA19_specialS);
+            int numStates = DFA19_transition.length;
             this.transition = new short[numStates][];
             for (int i=0; i<numStates; i++) {
-                transition[i] = DFA.unpackEncodedString(DFA21_transition[i]);
+                transition[i] = DFA.unpackEncodedString(DFA19_transition[i]);
             }
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | RHS | WS | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | CURLY_CHUNK | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | WS | INT | FLOAT | STRING | BOOL | RULE | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | CURLY_CHUNK | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2006-12-13 17:37:12 UTC (rev 8295)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2006-12-13 18:53:45 UTC (rev 8296)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2006-12-12 20:21:05
+// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2006-12-13 16:45:06
 
 	package org.drools.lang;
 	import java.util.List;
@@ -19,35 +19,38 @@
 import java.util.HashMap;
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ID", "CURLY_CHUNK", "RHS", "INT", "BOOL", "STRING", "FLOAT", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_SQUARE", "RIGHT_SQUARE", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "NO_CURLY", "MULTI_LINE_COMMENT", "MISC", "';'", "'package'", "'import'", "'function'", "'.'", "'.*'", "'global'", "','", "'query'", "'end'", "'template'", "'rule'", "'when'", "':'", "'attributes'", "'salience'", "'no-loop'", "'auto-focus'", "'activation-group'", "'agenda-group'", "'duration'", "'from'", "'accumulate'", "'init'", "'action'", "'result'", "'collect'", "'or'", "'||'", "'&'", "'|'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'contains'", "'matches'", "'excludes'", "'null'", "'->'", "'and'", "'&&'", "'exists'", "'not'", "'eval'", "'use'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ID", "CURLY_CHUNK", "RULE", "WHEN", "INT", "BOOL", "STRING", "FLOAT", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_SQUARE", "RIGHT_SQUARE", "END", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "NO_CURLY", "MULTI_LINE_COMMENT", "MISC", "';'", "'package'", "'import'", "'function'", "'.'", "'.*'", "'global'", "','", "'query'", "'template'", "':'", "'attributes'", "'salience'", "'no-loop'", "'auto-focus'", "'activation-group'", "'agenda-group'", "'duration'", "'from'", "'accumulate'", "'init'", "'action'", "'result'", "'collect'", "'or'", "'||'", "'&'", "'|'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'contains'", "'matches'", "'excludes'", "'null'", "'->'", "'and'", "'&&'", "'exists'", "'not'", "'eval'", "'use'"
     };
-    public static final int LEFT_PAREN=11;
-    public static final int BOOL=8;
-    public static final int HexDigit=18;
+    public static final int LEFT_PAREN=12;
+    public static final int BOOL=9;
+    public static final int END=16;
+    public static final int HexDigit=21;
+    public static final int WHEN=7;
     public static final int CURLY_CHUNK=5;
-    public static final int WS=16;
-    public static final int MISC=25;
-    public static final int STRING=9;
-    public static final int FLOAT=10;
-    public static final int NO_CURLY=23;
-    public static final int UnicodeEscape=19;
-    public static final int EscapeSequence=17;
-    public static final int INT=7;
+    public static final int WS=19;
+    public static final int MISC=28;
+    public static final int STRING=10;
+    public static final int FLOAT=11;
+    public static final int THEN=17;
+    public static final int RULE=6;
+    public static final int NO_CURLY=26;
+    public static final int UnicodeEscape=22;
+    public static final int EscapeSequence=20;
+    public static final int INT=8;
     public static final int EOF=-1;
-    public static final int RHS=6;
-    public static final int EOL=15;
-    public static final int LEFT_SQUARE=13;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=21;
-    public static final int OctalEscape=20;
-    public static final int MULTI_LINE_COMMENT=24;
-    public static final int RIGHT_PAREN=12;
-    public static final int RIGHT_SQUARE=14;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=22;
+    public static final int EOL=18;
+    public static final int LEFT_SQUARE=14;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=24;
+    public static final int OctalEscape=23;
+    public static final int MULTI_LINE_COMMENT=27;
+    public static final int RIGHT_PAREN=13;
+    public static final int RIGHT_SQUARE=15;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=25;
     public static final int ID=4;
 
         public DRLParser(TokenStream input) {
             super(input);
-            ruleMemo = new HashMap[133+1];
+            ruleMemo = new HashMap[135+1];
          }
         
 
@@ -327,14 +330,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:283:4: ( ( ';' )=> ';' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
-            if ( (LA1_0==26) ) {
+            if ( (LA1_0==29) ) {
                 alt1=1;
             }
             switch (alt1) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ';' )=> ';'
                     {
-                    match(input,26,FOLLOW_26_in_opt_semicolon46); if (failed) return ;
+                    match(input,29,FOLLOW_29_in_opt_semicolon46); if (failed) return ;
 
                     }
                     break;
@@ -357,22 +360,23 @@
 
 
     // $ANTLR start compilation_unit
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:286:1: compilation_unit : prolog ( ( statement )=> statement )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:286:1: compilation_unit : prolog ( ( statement )=> statement )+ ;
     public void compilation_unit() throws RecognitionException {   
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:287:4: ( prolog ( ( statement )=> statement )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:287:4: prolog ( ( statement )=> statement )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:287:4: ( prolog ( ( statement )=> statement )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:287:4: prolog ( ( statement )=> statement )+
             {
             pushFollow(FOLLOW_prolog_in_compilation_unit58);
             prolog();
             _fsp--;
             if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:288:3: ( ( statement )=> statement )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:288:3: ( ( statement )=> statement )+
+            int cnt2=0;
             loop2:
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
-                if ( ((LA2_0>=28 && LA2_0<=29)||LA2_0==32||LA2_0==34||(LA2_0>=36 && LA2_0<=37)) ) {
+                if ( (LA2_0==RULE||(LA2_0>=31 && LA2_0<=32)||LA2_0==35||(LA2_0>=37 && LA2_0<=38)) ) {
                     alt2=1;
                 }
 
@@ -390,8 +394,13 @@
             	    break;
 
             	default :
-            	    break loop2;
+            	    if ( cnt2 >= 1 ) break loop2;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
                 }
+                cnt2++;
             } while (true);
 
 
@@ -425,7 +434,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:295:4: ( ( package_statement )=>name= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
-            if ( (LA3_0==27) ) {
+            if ( (LA3_0==30) ) {
                 alt3=1;
             }
             switch (alt3) {
@@ -482,9 +491,9 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:303:2: ( ( import_statement )=> import_statement | ( function_import_statement )=> function_import_statement | ( global )=> global | ( function )=> function | ( template )=>t= template | ( rule )=>r= rule | q= query )
             int alt4=7;
             switch ( input.LA(1) ) {
-            case 28:
+            case 31:
                 int LA4_1 = input.LA(2);
-                if ( (LA4_1==29) ) {
+                if ( (LA4_1==32) ) {
                     alt4=2;
                 }
                 else if ( (LA4_1==ID) ) {
@@ -498,19 +507,19 @@
                     throw nvae;
                 }
                 break;
-            case 32:
+            case 35:
                 alt4=3;
                 break;
-            case 29:
+            case 32:
                 alt4=4;
                 break;
-            case 36:
+            case 38:
                 alt4=5;
                 break;
-            case 37:
+            case RULE:
                 alt4=6;
                 break;
-            case 34:
+            case 37:
                 alt4=7;
                 break;
             default:
@@ -535,7 +544,7 @@
                 case 2 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:304:10: ( function_import_statement )=> function_import_statement
                     {
-                    pushFollow(FOLLOW_function_import_statement_in_statement125);
+                    pushFollow(FOLLOW_function_import_statement_in_statement126);
                     function_import_statement();
                     _fsp--;
                     if (failed) return ;
@@ -545,7 +554,7 @@
                 case 3 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:305:4: ( global )=> global
                     {
-                    pushFollow(FOLLOW_global_in_statement130);
+                    pushFollow(FOLLOW_global_in_statement132);
                     global();
                     _fsp--;
                     if (failed) return ;
@@ -555,7 +564,7 @@
                 case 4 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:306:4: ( function )=> function
                     {
-                    pushFollow(FOLLOW_function_in_statement135);
+                    pushFollow(FOLLOW_function_in_statement138);
                     function();
                     _fsp--;
                     if (failed) return ;
@@ -565,7 +574,7 @@
                 case 5 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:307:10: ( template )=>t= template
                     {
-                    pushFollow(FOLLOW_template_in_statement148);
+                    pushFollow(FOLLOW_template_in_statement152);
                     t=template();
                     _fsp--;
                     if (failed) return ;
@@ -578,7 +587,7 @@
                 case 6 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:308:4: ( rule )=>r= rule
                     {
-                    pushFollow(FOLLOW_rule_in_statement157);
+                    pushFollow(FOLLOW_rule_in_statement161);
                     r=rule();
                     _fsp--;
                     if (failed) return ;
@@ -591,7 +600,7 @@
                 case 7 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:309:4: q= query
                     {
-                    pushFollow(FOLLOW_query_in_statement167);
+                    pushFollow(FOLLOW_query_in_statement171);
                     q=query();
                     _fsp--;
                     if (failed) return ;
@@ -634,12 +643,12 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:318:3: ( 'package' name= dotted_name opt_semicolon )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:318:3: 'package' name= dotted_name opt_semicolon
             {
-            match(input,27,FOLLOW_27_in_package_statement195); if (failed) return packageName;
-            pushFollow(FOLLOW_dotted_name_in_package_statement199);
+            match(input,30,FOLLOW_30_in_package_statement200); if (failed) return packageName;
+            pushFollow(FOLLOW_dotted_name_in_package_statement204);
             name=dotted_name();
             _fsp--;
             if (failed) return packageName;
-            pushFollow(FOLLOW_opt_semicolon_in_package_statement201);
+            pushFollow(FOLLOW_opt_semicolon_in_package_statement206);
             opt_semicolon();
             _fsp--;
             if (failed) return packageName;
@@ -673,12 +682,12 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:326:4: ( 'import' name= import_name opt_semicolon )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:326:4: 'import' name= import_name opt_semicolon
             {
-            match(input,28,FOLLOW_28_in_import_statement218); if (failed) return ;
-            pushFollow(FOLLOW_import_name_in_import_statement222);
+            match(input,31,FOLLOW_31_in_import_statement223); if (failed) return ;
+            pushFollow(FOLLOW_import_name_in_import_statement227);
             name=import_name();
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_import_statement224);
+            pushFollow(FOLLOW_opt_semicolon_in_import_statement229);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -713,13 +722,13 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:334:4: ( 'import' 'function' name= import_name opt_semicolon )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:334:4: 'import' 'function' name= import_name opt_semicolon
             {
-            match(input,28,FOLLOW_28_in_function_import_statement240); if (failed) return ;
-            match(input,29,FOLLOW_29_in_function_import_statement242); if (failed) return ;
-            pushFollow(FOLLOW_import_name_in_function_import_statement246);
+            match(input,31,FOLLOW_31_in_function_import_statement245); if (failed) return ;
+            match(input,32,FOLLOW_32_in_function_import_statement247); if (failed) return ;
+            pushFollow(FOLLOW_import_name_in_function_import_statement251);
             name=import_name();
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement248);
+            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement253);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -760,7 +769,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:347:3: id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '.*' )=>star= '.*' )?
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_name280); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_import_name285); if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
@@ -769,7 +778,7 @@
             do {
                 int alt5=2;
                 int LA5_0 = input.LA(1);
-                if ( (LA5_0==30) ) {
+                if ( (LA5_0==33) ) {
                     alt5=1;
                 }
 
@@ -778,9 +787,9 @@
             	case 1 :
             	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:347:34: ( '.' ID )=> '.' id= ID
             	    {
-            	    match(input,30,FOLLOW_30_in_import_name286); if (failed) return name;
+            	    match(input,33,FOLLOW_33_in_import_name291); if (failed) return name;
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_import_name290); if (failed) return name;
+            	    match(input,ID,FOLLOW_ID_in_import_name295); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "." + id.getText(); 
             	    }
@@ -796,7 +805,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:347:85: ( ( '.*' )=>star= '.*' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
-            if ( (LA6_0==31) ) {
+            if ( (LA6_0==34) ) {
                 alt6=1;
             }
             switch (alt6) {
@@ -804,7 +813,7 @@
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:347:86: ( '.*' )=>star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,31,FOLLOW_31_in_import_name300); if (failed) return name;
+                    match(input,34,FOLLOW_34_in_import_name305); if (failed) return name;
                     if ( backtracking==0 ) {
                        name = name + star.getText(); 
                     }
@@ -842,14 +851,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:355:3: ( 'global' type= dotted_name id= ID opt_semicolon )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:355:3: 'global' type= dotted_name id= ID opt_semicolon
             {
-            match(input,32,FOLLOW_32_in_global324); if (failed) return ;
-            pushFollow(FOLLOW_dotted_name_in_global328);
+            match(input,35,FOLLOW_35_in_global329); if (failed) return ;
+            pushFollow(FOLLOW_dotted_name_in_global333);
             type=dotted_name();
             _fsp--;
             if (failed) return ;
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global332); if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_global334);
+            match(input,ID,FOLLOW_ID_in_global337); if (failed) return ;
+            pushFollow(FOLLOW_opt_semicolon_in_global339);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -894,13 +903,13 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:367:3: loc= 'function' ( ( dotted_name )=>retType= dotted_name )? name= ID '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= CURLY_CHUNK
             {
             loc=(Token)input.LT(1);
-            match(input,29,FOLLOW_29_in_function361); if (failed) return ;
+            match(input,32,FOLLOW_32_in_function366); if (failed) return ;
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:367:18: ( ( dotted_name )=>retType= dotted_name )?
             int alt7=2;
             int LA7_0 = input.LA(1);
             if ( (LA7_0==ID) ) {
                 int LA7_1 = input.LA(2);
-                if ( (LA7_1==ID||LA7_1==LEFT_SQUARE||LA7_1==30) ) {
+                if ( (LA7_1==ID||LA7_1==LEFT_SQUARE||LA7_1==33) ) {
                     alt7=1;
                 }
             }
@@ -908,7 +917,7 @@
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:367:19: ( dotted_name )=>retType= dotted_name
                     {
-                    pushFollow(FOLLOW_dotted_name_in_function366);
+                    pushFollow(FOLLOW_dotted_name_in_function371);
                     retType=dotted_name();
                     _fsp--;
                     if (failed) return ;
@@ -919,7 +928,7 @@
             }
 
             name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function372); if (failed) return ;
+            match(input,ID,FOLLOW_ID_in_function377); if (failed) return ;
             if ( backtracking==0 ) {
               
               			//System.err.println( "function :: " + name.getText() );
@@ -927,7 +936,7 @@
               			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function381); if (failed) return ;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function386); if (failed) return ;
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:374:4: ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )?
             int alt11=2;
             int LA11_0 = input.LA(1);
@@ -945,7 +954,7 @@
                         case 1 :
                             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:374:7: ( dotted_name )=>paramType= dotted_name
                             {
-                            pushFollow(FOLLOW_dotted_name_in_function391);
+                            pushFollow(FOLLOW_dotted_name_in_function396);
                             paramType=dotted_name();
                             _fsp--;
                             if (failed) return ;
@@ -955,7 +964,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_argument_in_function397);
+                    pushFollow(FOLLOW_argument_in_function402);
                     paramName=argument();
                     _fsp--;
                     if (failed) return ;
@@ -969,7 +978,7 @@
                     do {
                         int alt10=2;
                         int LA10_0 = input.LA(1);
-                        if ( (LA10_0==33) ) {
+                        if ( (LA10_0==36) ) {
                             alt10=1;
                         }
 
@@ -978,7 +987,7 @@
                     	case 1 :
                     	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:378:7: ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument
                     	    {
-                    	    match(input,33,FOLLOW_33_in_function411); if (failed) return ;
+                    	    match(input,36,FOLLOW_36_in_function416); if (failed) return ;
                     	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:378:11: ( ( dotted_name )=>paramType= dotted_name )?
                     	    int alt9=2;
                     	    alt9 = dfa9.predict(input);
@@ -986,7 +995,7 @@
                     	        case 1 :
                     	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:378:12: ( dotted_name )=>paramType= dotted_name
                     	            {
-                    	            pushFollow(FOLLOW_dotted_name_in_function416);
+                    	            pushFollow(FOLLOW_dotted_name_in_function421);
                     	            paramType=dotted_name();
                     	            _fsp--;
                     	            if (failed) return ;
@@ -996,7 +1005,7 @@
 
                     	    }
 
-                    	    pushFollow(FOLLOW_argument_in_function422);
+                    	    pushFollow(FOLLOW_argument_in_function427);
                     	    paramName=argument();
                     	    _fsp--;
                     	    if (failed) return ;
@@ -1020,9 +1029,9 @@
 
             }
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function446); if (failed) return ;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function451); if (failed) return ;
             body=(Token)input.LT(1);
-            match(input,CURLY_CHUNK,FOLLOW_CURLY_CHUNK_in_function452); if (failed) return ;
+            match(input,CURLY_CHUNK,FOLLOW_CURLY_CHUNK_in_function457); if (failed) return ;
             if ( backtracking==0 ) {
               
               			//strip out '{','}'
@@ -1066,8 +1075,8 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:404:3: loc= 'query' queryName= word ( normal_lhs_block[lhs] ) 'end'
             {
             loc=(Token)input.LT(1);
-            match(input,34,FOLLOW_34_in_query483); if (failed) return query;
-            pushFollow(FOLLOW_word_in_query487);
+            match(input,37,FOLLOW_37_in_query488); if (failed) return query;
+            pushFollow(FOLLOW_word_in_query492);
             queryName=word();
             _fsp--;
             if (failed) return query;
@@ -1082,14 +1091,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:411:3: ( normal_lhs_block[lhs] )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:413:4: normal_lhs_block[lhs]
             {
-            pushFollow(FOLLOW_normal_lhs_block_in_query501);
+            pushFollow(FOLLOW_normal_lhs_block_in_query506);
             normal_lhs_block(lhs);
             _fsp--;
             if (failed) return query;
 
             }
 
-            match(input,35,FOLLOW_35_in_query516); if (failed) return query;
+            match(input,END,FOLLOW_END_in_query521); if (failed) return query;
 
             }
 
@@ -1123,10 +1132,10 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:425:3: loc= 'template' templateName= ID opt_semicolon ( ( template_slot )=>slot= template_slot )+ 'end' opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,36,FOLLOW_36_in_template542); if (failed) return template;
+            match(input,38,FOLLOW_38_in_template547); if (failed) return template;
             templateName=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template546); if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template548);
+            match(input,ID,FOLLOW_ID_in_template551); if (failed) return template;
+            pushFollow(FOLLOW_opt_semicolon_in_template553);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
@@ -1151,7 +1160,7 @@
             	case 1 :
             	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:431:4: ( template_slot )=>slot= template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template563);
+            	    pushFollow(FOLLOW_template_slot_in_template568);
             	    slot=template_slot();
             	    _fsp--;
             	    if (failed) return template;
@@ -1174,8 +1183,8 @@
                 cnt12++;
             } while (true);
 
-            match(input,35,FOLLOW_35_in_template578); if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template580);
+            match(input,END,FOLLOW_END_in_template583); if (failed) return template;
+            pushFollow(FOLLOW_opt_semicolon_in_template585);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
@@ -1210,13 +1219,13 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:445:4: (fieldType= dotted_name name= ID opt_semicolon )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:445:4: fieldType= dotted_name name= ID opt_semicolon
             {
-            pushFollow(FOLLOW_dotted_name_in_template_slot612);
+            pushFollow(FOLLOW_dotted_name_in_template_slot617);
             fieldType=dotted_name();
             _fsp--;
             if (failed) return field;
             name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template_slot616); if (failed) return field;
-            pushFollow(FOLLOW_opt_semicolon_in_template_slot618);
+            match(input,ID,FOLLOW_ID_in_template_slot621); if (failed) return field;
+            pushFollow(FOLLOW_opt_semicolon_in_template_slot623);
             opt_semicolon();
             _fsp--;
             if (failed) return field;
@@ -1244,12 +1253,11 @@
 
 
     // $ANTLR start rule
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:454:1: rule returns [RuleDescr rule] : loc= 'rule' ruleName= word rule_attributes[rule] ( ( 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs= RHS ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:454:1: rule returns [RuleDescr rule] : loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
     public RuleDescr rule() throws RecognitionException {   
         RuleDescr rule = null;
 
         Token loc=null;
-        Token rhs=null;
         String ruleName = null;
 
 
@@ -1259,12 +1267,12 @@
         		AndDescr lhs = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:461:3: (loc= 'rule' ruleName= word rule_attributes[rule] ( ( 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs= RHS )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:461:3: loc= 'rule' ruleName= word rule_attributes[rule] ( ( 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs= RHS
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:461:3: (loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:461:3: loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
             {
             loc=(Token)input.LT(1);
-            match(input,37,FOLLOW_37_in_rule649); if (failed) return rule;
-            pushFollow(FOLLOW_word_in_rule653);
+            match(input,RULE,FOLLOW_RULE_in_rule654); if (failed) return rule;
+            pushFollow(FOLLOW_word_in_rule658);
             ruleName=word();
             _fsp--;
             if (failed) return rule;
@@ -1275,23 +1283,23 @@
               			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            pushFollow(FOLLOW_rule_attributes_in_rule662);
+            pushFollow(FOLLOW_rule_attributes_in_rule667);
             rule_attributes(rule);
             _fsp--;
             if (failed) return rule;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:3: ( ( 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:3: ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )?
             int alt14=2;
             int LA14_0 = input.LA(1);
-            if ( (LA14_0==38) ) {
+            if ( (LA14_0==WHEN) ) {
                 alt14=1;
             }
             switch (alt14) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:5: ( 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= 'when' ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:5: ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] )
                     {
                     loc=(Token)input.LT(1);
-                    match(input,38,FOLLOW_38_in_rule671); if (failed) return rule;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:16: ( ( ':' )=> ':' )?
+                    match(input,WHEN,FOLLOW_WHEN_in_rule676); if (failed) return rule;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:468:14: ( ( ':' )=> ':' )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
                     if ( (LA13_0==39) ) {
@@ -1301,7 +1309,7 @@
                         case 1 :
                             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ':' )=> ':'
                             {
-                            match(input,39,FOLLOW_39_in_rule673); if (failed) return rule;
+                            match(input,39,FOLLOW_39_in_rule678); if (failed) return rule;
 
                             }
                             break;
@@ -1317,7 +1325,7 @@
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:473:4: ( normal_lhs_block[lhs] )
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:475:5: normal_lhs_block[lhs]
                     {
-                    pushFollow(FOLLOW_normal_lhs_block_in_rule691);
+                    pushFollow(FOLLOW_normal_lhs_block_in_rule696);
                     normal_lhs_block(lhs);
                     _fsp--;
                     if (failed) return rule;
@@ -1330,24 +1338,10 @@
 
             }
 
-            rhs=(Token)input.LT(1);
-            match(input,RHS,FOLLOW_RHS_in_rule714); if (failed) return rule;
-            if ( backtracking==0 ) {
-              
-              				consequence = rhs.getText();
-              				//strip out "then", "end"
-              				consequence = consequence.substring(4,consequence.length()-3);
-              				
-              				if ( expander != null ) {
-              					String expanded = runThenExpander( consequence, offset(rhs.getLine()) );
-              					rule.setConsequence( expanded );
-              				} else { 
-              					rule.setConsequence( consequence ); 
-              				}
-              				rule.setConsequenceLocation(offset(rhs.getLine()), rhs.getCharPositionInLine());
-              				debug( "end rule: " + ruleName );
-              			
-            }
+            pushFollow(FOLLOW_rhs_chunk_in_rule717);
+            rhs_chunk(rule);
+            _fsp--;
+            if (failed) return rule;
 
             }
 
@@ -1364,16 +1358,16 @@
 
 
     // $ANTLR start rule_attributes
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:498:1: rule_attributes[RuleDescr rule] : ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:484:1: rule_attributes[RuleDescr rule] : ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* ;
     public void rule_attributes(RuleDescr rule) throws RecognitionException {   
         AttributeDescr a = null;
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:500:4: ( ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:500:4: ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:486:4: ( ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:486:4: ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:500:4: ( ( 'attributes' ':' )=> 'attributes' ':' )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:486:4: ( ( 'attributes' ':' )=> 'attributes' ':' )?
             int alt15=2;
             int LA15_0 = input.LA(1);
             if ( (LA15_0==40) ) {
@@ -1381,48 +1375,48 @@
             }
             switch (alt15) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:500:5: ( 'attributes' ':' )=> 'attributes' ':'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:486:5: ( 'attributes' ':' )=> 'attributes' ':'
                     {
-                    match(input,40,FOLLOW_40_in_rule_attributes739); if (failed) return ;
-                    match(input,39,FOLLOW_39_in_rule_attributes741); if (failed) return ;
+                    match(input,40,FOLLOW_40_in_rule_attributes738); if (failed) return ;
+                    match(input,39,FOLLOW_39_in_rule_attributes740); if (failed) return ;
 
                     }
                     break;
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:4: ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:487:4: ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
             loop17:
             do {
                 int alt17=2;
                 int LA17_0 = input.LA(1);
-                if ( (LA17_0==33||(LA17_0>=41 && LA17_0<=46)) ) {
+                if ( (LA17_0==36||(LA17_0>=41 && LA17_0<=46)) ) {
                     alt17=1;
                 }
 
 
                 switch (alt17) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:6: ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:487:6: ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute
             	    {
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:6: ( ( ',' )=> ',' )?
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:487:6: ( ( ',' )=> ',' )?
             	    int alt16=2;
             	    int LA16_0 = input.LA(1);
-            	    if ( (LA16_0==33) ) {
+            	    if ( (LA16_0==36) ) {
             	        alt16=1;
             	    }
             	    switch (alt16) {
             	        case 1 :
             	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ',' )=> ','
             	            {
-            	            match(input,33,FOLLOW_33_in_rule_attributes750); if (failed) return ;
+            	            match(input,36,FOLLOW_36_in_rule_attributes749); if (failed) return ;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes755);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes754);
             	    a=rule_attribute();
             	    _fsp--;
             	    if (failed) return ;
@@ -1456,7 +1450,7 @@
 
 
     // $ANTLR start rule_attribute
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:510:1: rule_attribute returns [AttributeDescr d] : ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:496:1: rule_attribute returns [AttributeDescr d] : ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus );
     public AttributeDescr rule_attribute() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1467,7 +1461,7 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:515:4: ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:4: ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus )
             int alt18=6;
             switch ( input.LA(1) ) {
             case 41:
@@ -1491,16 +1485,16 @@
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("510:1: rule_attribute returns [AttributeDescr d] : ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus );", 18, 0, input);
+                    new NoViableAltException("496:1: rule_attribute returns [AttributeDescr d] : ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | a= auto_focus );", 18, 0, input);
 
                 throw nvae;
             }
 
             switch (alt18) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:515:4: ( salience )=>a= salience
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:4: ( salience )=>a= salience
                     {
-                    pushFollow(FOLLOW_salience_in_rule_attribute796);
+                    pushFollow(FOLLOW_salience_in_rule_attribute795);
                     a=salience();
                     _fsp--;
                     if (failed) return d;
@@ -1511,9 +1505,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:516:5: ( no_loop )=>a= no_loop
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:502:5: ( no_loop )=>a= no_loop
                     {
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute806);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute805);
                     a=no_loop();
                     _fsp--;
                     if (failed) return d;
@@ -1524,9 +1518,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:517:5: ( agenda_group )=>a= agenda_group
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:503:5: ( agenda_group )=>a= agenda_group
                     {
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute817);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute816);
                     a=agenda_group();
                     _fsp--;
                     if (failed) return d;
@@ -1537,9 +1531,9 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:518:5: ( duration )=>a= duration
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:504:5: ( duration )=>a= duration
                     {
-                    pushFollow(FOLLOW_duration_in_rule_attribute830);
+                    pushFollow(FOLLOW_duration_in_rule_attribute829);
                     a=duration();
                     _fsp--;
                     if (failed) return d;
@@ -1550,9 +1544,9 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:519:5: ( activation_group )=>a= activation_group
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:505:5: ( activation_group )=>a= activation_group
                     {
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute844);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute843);
                     a=activation_group();
                     _fsp--;
                     if (failed) return d;
@@ -1563,9 +1557,9 @@
                     }
                     break;
                 case 6 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:520:5: a= auto_focus
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:5: a= auto_focus
                     {
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute855);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute854);
                     a=auto_focus();
                     _fsp--;
                     if (failed) return d;
@@ -1590,7 +1584,7 @@
 
 
     // $ANTLR start salience
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:525:1: salience returns [AttributeDescr d ] : loc= 'salience' i= INT opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:511:1: salience returns [AttributeDescr d ] : loc= 'salience' i= INT opt_semicolon ;
     public AttributeDescr salience() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1601,14 +1595,14 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: (loc= 'salience' i= INT opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: loc= 'salience' i= INT opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:516:3: (loc= 'salience' i= INT opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:516:3: loc= 'salience' i= INT opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,41,FOLLOW_41_in_salience889); if (failed) return d;
+            match(input,41,FOLLOW_41_in_salience888); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_salience893); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_salience895);
+            match(input,INT,FOLLOW_INT_in_salience892); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_salience894);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -1634,7 +1628,7 @@
 
 
     // $ANTLR start no_loop
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:537:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:523:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );
     public AttributeDescr no_loop() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1645,7 +1639,7 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:542:3: ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:528:3: ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) )
             int alt19=2;
             int LA19_0 = input.LA(1);
             if ( (LA19_0==42) ) {
@@ -1653,13 +1647,13 @@
                 if ( (LA19_1==BOOL) ) {
                     alt19=2;
                 }
-                else if ( (LA19_1==EOF||LA19_1==RHS||LA19_1==26||LA19_1==33||LA19_1==38||(LA19_1>=41 && LA19_1<=46)) ) {
+                else if ( (LA19_1==EOF||LA19_1==WHEN||LA19_1==THEN||LA19_1==29||LA19_1==36||(LA19_1>=41 && LA19_1<=46)) ) {
                     alt19=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("537:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 1, input);
+                        new NoViableAltException("523:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 1, input);
 
                     throw nvae;
                 }
@@ -1667,20 +1661,20 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("537:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 0, input);
+                    new NoViableAltException("523:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 0, input);
 
                 throw nvae;
             }
             switch (alt19) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:542:3: ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:528:3: ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:542:3: (loc= 'no-loop' opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:543:4: loc= 'no-loop' opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:528:3: (loc= 'no-loop' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:529:4: loc= 'no-loop' opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,42,FOLLOW_42_in_no_loop930); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_no_loop932);
+                    match(input,42,FOLLOW_42_in_no_loop929); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_no_loop931);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1697,16 +1691,16 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:550:3: (loc= 'no-loop' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:536:3: (loc= 'no-loop' t= BOOL opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:550:3: (loc= 'no-loop' t= BOOL opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:551:4: loc= 'no-loop' t= BOOL opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:536:3: (loc= 'no-loop' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:537:4: loc= 'no-loop' t= BOOL opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,42,FOLLOW_42_in_no_loop957); if (failed) return d;
+                    match(input,42,FOLLOW_42_in_no_loop956); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop961); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_no_loop963);
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop960); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_no_loop962);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1737,7 +1731,7 @@
 
 
     // $ANTLR start auto_focus
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:561:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:547:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );
     public AttributeDescr auto_focus() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1748,7 +1742,7 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:552:3: ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) )
             int alt20=2;
             int LA20_0 = input.LA(1);
             if ( (LA20_0==43) ) {
@@ -1756,13 +1750,13 @@
                 if ( (LA20_1==BOOL) ) {
                     alt20=2;
                 }
-                else if ( (LA20_1==EOF||LA20_1==RHS||LA20_1==26||LA20_1==33||LA20_1==38||(LA20_1>=41 && LA20_1<=46)) ) {
+                else if ( (LA20_1==EOF||LA20_1==WHEN||LA20_1==THEN||LA20_1==29||LA20_1==36||(LA20_1>=41 && LA20_1<=46)) ) {
                     alt20=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("561:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 1, input);
+                        new NoViableAltException("547:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 1, input);
 
                     throw nvae;
                 }
@@ -1770,20 +1764,20 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("561:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 0, input);
+                    new NoViableAltException("547:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 0, input);
 
                 throw nvae;
             }
             switch (alt20) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:552:3: ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: (loc= 'auto-focus' opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:567:4: loc= 'auto-focus' opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:552:3: (loc= 'auto-focus' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:553:4: loc= 'auto-focus' opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_auto_focus1009); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1011);
+                    match(input,43,FOLLOW_43_in_auto_focus1008); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1010);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1800,16 +1794,16 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:574:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:560:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:574:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:575:4: loc= 'auto-focus' t= BOOL opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:560:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:561:4: loc= 'auto-focus' t= BOOL opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_auto_focus1036); if (failed) return d;
+                    match(input,43,FOLLOW_43_in_auto_focus1035); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1040); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1042);
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1039); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1041);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1840,7 +1834,7 @@
 
 
     // $ANTLR start activation_group
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:585:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' name= STRING opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:571:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' name= STRING opt_semicolon ;
     public AttributeDescr activation_group() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1851,14 +1845,14 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:590:3: (loc= 'activation-group' name= STRING opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:590:3: loc= 'activation-group' name= STRING opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:576:3: (loc= 'activation-group' name= STRING opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:576:3: loc= 'activation-group' name= STRING opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,44,FOLLOW_44_in_activation_group1084); if (failed) return d;
+            match(input,44,FOLLOW_44_in_activation_group1083); if (failed) return d;
             name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1088); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_activation_group1090);
+            match(input,STRING,FOLLOW_STRING_in_activation_group1087); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_activation_group1089);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -1884,7 +1878,7 @@
 
 
     // $ANTLR start agenda_group
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:597:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' name= STRING opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:583:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' name= STRING opt_semicolon ;
     public AttributeDescr agenda_group() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1895,14 +1889,14 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:602:3: (loc= 'agenda-group' name= STRING opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:602:3: loc= 'agenda-group' name= STRING opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:588:3: (loc= 'agenda-group' name= STRING opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:588:3: loc= 'agenda-group' name= STRING opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,45,FOLLOW_45_in_agenda_group1119); if (failed) return d;
+            match(input,45,FOLLOW_45_in_agenda_group1118); if (failed) return d;
             name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1123); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_agenda_group1125);
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1122); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_agenda_group1124);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -1928,7 +1922,7 @@
 
 
     // $ANTLR start duration
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:610:1: duration returns [AttributeDescr d] : loc= 'duration' i= INT ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:596:1: duration returns [AttributeDescr d] : loc= 'duration' i= INT ;
     public AttributeDescr duration() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1939,13 +1933,13 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:615:3: (loc= 'duration' i= INT )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:615:3: loc= 'duration' i= INT
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:601:3: (loc= 'duration' i= INT )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:601:3: loc= 'duration' i= INT
             {
             loc=(Token)input.LT(1);
-            match(input,46,FOLLOW_46_in_duration1157); if (failed) return d;
+            match(input,46,FOLLOW_46_in_duration1156); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1161); if (failed) return d;
+            match(input,INT,FOLLOW_INT_in_duration1160); if (failed) return d;
             if ( backtracking==0 ) {
               
               			d = new AttributeDescr( "duration", i.getText() );
@@ -1968,16 +1962,16 @@
 
 
     // $ANTLR start normal_lhs_block
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:623:1: normal_lhs_block[AndDescr descrs] : ( ( lhs )=>d= lhs )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:609:1: normal_lhs_block[AndDescr descrs] : ( ( lhs )=>d= lhs )* ;
     public void normal_lhs_block(AndDescr descrs) throws RecognitionException {   
         BaseDescr d = null;
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:625:3: ( ( ( lhs )=>d= lhs )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:625:3: ( ( lhs )=>d= lhs )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:3: ( ( ( lhs )=>d= lhs )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:3: ( ( lhs )=>d= lhs )*
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:625:3: ( ( lhs )=>d= lhs )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:3: ( ( lhs )=>d= lhs )*
             loop21:
             do {
                 int alt21=2;
@@ -1989,9 +1983,9 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:625:5: ( lhs )=>d= lhs
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:5: ( lhs )=>d= lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1187);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1186);
             	    d=lhs();
             	    _fsp--;
             	    if (failed) return ;
@@ -2023,7 +2017,7 @@
 
 
     // $ANTLR start lhs
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:679:1: lhs returns [BaseDescr d] : l= lhs_or ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:665:1: lhs returns [BaseDescr d] : l= lhs_or ;
     public BaseDescr lhs() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -2034,10 +2028,10 @@
         		d=null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:683:4: (l= lhs_or )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:683:4: l= lhs_or
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:669:4: (l= lhs_or )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:669:4: l= lhs_or
             {
-            pushFollow(FOLLOW_lhs_or_in_lhs1225);
+            pushFollow(FOLLOW_lhs_or_in_lhs1224);
             l=lhs_or();
             _fsp--;
             if (failed) return d;
@@ -2060,7 +2054,7 @@
 
 
     // $ANTLR start lhs_column
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:687:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:673:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );
     public BaseDescr lhs_column() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -2071,7 +2065,7 @@
         		d=null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:691:4: ( ( fact_binding )=>f= fact_binding | f= fact )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:677:4: ( ( fact_binding )=>f= fact_binding | f= fact )
             int alt22=2;
             int LA22_0 = input.LA(1);
             if ( (LA22_0==ID) ) {
@@ -2079,13 +2073,13 @@
                 if ( (LA22_1==39) ) {
                     alt22=1;
                 }
-                else if ( (LA22_1==LEFT_PAREN||LA22_1==LEFT_SQUARE||LA22_1==30) ) {
+                else if ( (LA22_1==LEFT_PAREN||LA22_1==LEFT_SQUARE||LA22_1==33) ) {
                     alt22=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("687:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );", 22, 1, input);
+                        new NoViableAltException("673:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );", 22, 1, input);
 
                     throw nvae;
                 }
@@ -2093,15 +2087,15 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("687:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );", 22, 0, input);
+                    new NoViableAltException("673:1: lhs_column returns [BaseDescr d] : ( ( fact_binding )=>f= fact_binding | f= fact );", 22, 0, input);
 
                 throw nvae;
             }
             switch (alt22) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:691:4: ( fact_binding )=>f= fact_binding
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:677:4: ( fact_binding )=>f= fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_column1253);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_column1252);
                     f=fact_binding();
                     _fsp--;
                     if (failed) return d;
@@ -2112,9 +2106,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:692:4: f= fact
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:678:4: f= fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_column1262);
+                    pushFollow(FOLLOW_fact_in_lhs_column1261);
                     f=fact();
                     _fsp--;
                     if (failed) return d;
@@ -2139,7 +2133,7 @@
 
 
     // $ANTLR start from_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:695:1: from_statement returns [FromDescr d] : 'from' ds= from_source ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:681:1: from_statement returns [FromDescr d] : 'from' ds= from_source ;
     public FromDescr from_statement() throws RecognitionException {   
         FromDescr d = null;
 
@@ -2150,11 +2144,11 @@
         		d=factory.createFrom();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:700:2: ( 'from' ds= from_source )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:700:2: 'from' ds= from_source
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:686:2: ( 'from' ds= from_source )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:686:2: 'from' ds= from_source
             {
-            match(input,47,FOLLOW_47_in_from_statement1287); if (failed) return d;
-            pushFollow(FOLLOW_from_source_in_from_statement1291);
+            match(input,47,FOLLOW_47_in_from_statement1286); if (failed) return d;
+            pushFollow(FOLLOW_from_source_in_from_statement1290);
             ds=from_source();
             _fsp--;
             if (failed) return d;
@@ -2180,7 +2174,7 @@
 
 
     // $ANTLR start from_source
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:710:1: from_source returns [DeclarativeInvokerDescr ds] : ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:696:1: from_source returns [DeclarativeInvokerDescr ds] : ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? ;
     public DeclarativeInvokerDescr from_source() throws RecognitionException {   
         DeclarativeInvokerDescr ds = null;
 
@@ -2194,10 +2188,10 @@
         		AccessorDescr ad = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:3: ( ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:3: ( ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )?
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )
             int alt23=2;
             int LA23_0 = input.LA(1);
             if ( (LA23_0==ID) ) {
@@ -2210,7 +2204,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ds;}
                     NoViableAltException nvae =
-                        new NoViableAltException("716:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 1, input);
+                        new NoViableAltException("702:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 1, input);
 
                     throw nvae;
                 }
@@ -2218,20 +2212,20 @@
             else {
                 if (backtracking>0) {failed=true; return ds;}
                 NoViableAltException nvae =
-                    new NoViableAltException("716:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 0, input);
+                    new NoViableAltException("702:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 0, input);
 
                 throw nvae;
             }
             switch (alt23) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:4: ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:4: ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:4: (functionName= ID args= paren_chunk )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:6: functionName= ID args= paren_chunk
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:4: (functionName= ID args= paren_chunk )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:6: functionName= ID args= paren_chunk
                     {
                     functionName=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1334); if (failed) return ds;
-                    pushFollow(FOLLOW_paren_chunk_in_from_source1338);
+                    match(input,ID,FOLLOW_ID_in_from_source1333); if (failed) return ds;
+                    pushFollow(FOLLOW_paren_chunk_in_from_source1337);
                     args=paren_chunk();
                     _fsp--;
                     if (failed) return ds;
@@ -2253,13 +2247,13 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:728:3: (var= ID )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:714:3: (var= ID )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:728:3: (var= ID )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:728:7: var= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:714:3: (var= ID )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:714:7: var= ID
                     {
                     var=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1371); if (failed) return ds;
+                    match(input,ID,FOLLOW_ID_in_from_source1370); if (failed) return ds;
                     if ( backtracking==0 ) {
                       
                       			ad = new AccessorDescr(var.getText());	
@@ -2276,17 +2270,17 @@
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:736:3: ( ( expression_chain[ad] )=> expression_chain[ad] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:722:3: ( ( expression_chain[ad] )=> expression_chain[ad] )?
             int alt24=2;
             int LA24_0 = input.LA(1);
-            if ( (LA24_0==30) ) {
+            if ( (LA24_0==33) ) {
                 alt24=1;
             }
             switch (alt24) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( expression_chain[ad] )=> expression_chain[ad]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source1394);
+                    pushFollow(FOLLOW_expression_chain_in_from_source1393);
                     expression_chain(ad);
                     _fsp--;
                     if (failed) return ds;
@@ -2312,7 +2306,7 @@
 
 
     // $ANTLR start expression_chain
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:739:1: expression_chain[AccessorDescr as] : ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:725:1: expression_chain[AccessorDescr as] : ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) ;
     public void expression_chain(AccessorDescr as) throws RecognitionException {   
         Token field=null;
         String sqarg = null;
@@ -2325,22 +2319,22 @@
         	    	MethodAccessDescr ma = null;	
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:745:2: ( ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:745:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:731:2: ( ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:731:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:745:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:745:4: '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:731:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:731:4: '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )?
             {
-            match(input,30,FOLLOW_30_in_expression_chain1419); if (failed) return ;
+            match(input,33,FOLLOW_33_in_expression_chain1418); if (failed) return ;
             field=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain1423); if (failed) return ;
+            match(input,ID,FOLLOW_ID_in_expression_chain1422); if (failed) return ;
             if ( backtracking==0 ) {
               
               	        fa = new FieldAccessDescr(field.getText());	
               		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
               	    
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:750:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:736:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?
             int alt25=3;
             int LA25_0 = input.LA(1);
             if ( (LA25_0==LEFT_SQUARE) ) {
@@ -2353,9 +2347,9 @@
             }
             switch (alt25) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:751:6: ( LEFT_SQUARE )=>sqarg= square_chunk
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:737:6: ( LEFT_SQUARE )=>sqarg= square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain1454);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain1453);
                     sqarg=square_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -2368,9 +2362,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:756:6: ( LEFT_PAREN )=>paarg= paren_chunk
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:742:6: ( LEFT_PAREN )=>paarg= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1487);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1486);
                     paarg=paren_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -2395,17 +2389,17 @@
               	      }
               	  
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:769:4: ( ( expression_chain[as] )=> expression_chain[as] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:755:4: ( ( expression_chain[as] )=> expression_chain[as] )?
             int alt26=2;
             int LA26_0 = input.LA(1);
-            if ( (LA26_0==30) ) {
+            if ( (LA26_0==33) ) {
                 alt26=1;
             }
             switch (alt26) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( expression_chain[as] )=> expression_chain[as]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1507);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1506);
                     expression_chain(as);
                     _fsp--;
                     if (failed) return ;
@@ -2434,7 +2428,7 @@
 
 
     // $ANTLR start accumulate_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:773:1: accumulate_statement returns [AccumulateDescr d] : loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:759:1: accumulate_statement returns [AccumulateDescr d] : loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' ;
     public AccumulateDescr accumulate_statement() throws RecognitionException {   
         AccumulateDescr d = null;
 
@@ -2448,56 +2442,56 @@
         		d = factory.createAccumulate();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:778:10: (loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:778:10: loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:764:10: (loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:764:10: loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')'
             {
             loc=(Token)input.LT(1);
-            match(input,47,FOLLOW_47_in_accumulate_statement1548); if (failed) return d;
-            match(input,48,FOLLOW_48_in_accumulate_statement1550); if (failed) return d;
+            match(input,47,FOLLOW_47_in_accumulate_statement1547); if (failed) return d;
+            match(input,48,FOLLOW_48_in_accumulate_statement1549); if (failed) return d;
             if ( backtracking==0 ) {
                
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement1560); if (failed) return d;
-            pushFollow(FOLLOW_lhs_column_in_accumulate_statement1564);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement1559); if (failed) return d;
+            pushFollow(FOLLOW_lhs_column_in_accumulate_statement1563);
             column=lhs_column();
             _fsp--;
             if (failed) return d;
-            match(input,33,FOLLOW_33_in_accumulate_statement1566); if (failed) return d;
+            match(input,36,FOLLOW_36_in_accumulate_statement1565); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setSourceColumn( (ColumnDescr)column );
               		
             }
-            match(input,49,FOLLOW_49_in_accumulate_statement1575); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1579);
+            match(input,49,FOLLOW_49_in_accumulate_statement1574); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1578);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,33,FOLLOW_33_in_accumulate_statement1581); if (failed) return d;
+            match(input,36,FOLLOW_36_in_accumulate_statement1580); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setInitCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,50,FOLLOW_50_in_accumulate_statement1590); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1594);
+            match(input,50,FOLLOW_50_in_accumulate_statement1589); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1593);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,33,FOLLOW_33_in_accumulate_statement1596); if (failed) return d;
+            match(input,36,FOLLOW_36_in_accumulate_statement1595); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setActionCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,51,FOLLOW_51_in_accumulate_statement1605); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1609);
+            match(input,51,FOLLOW_51_in_accumulate_statement1604); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1608);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement1611); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement1610); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setResultCode( text.substring(1, text.length()-1) );
@@ -2519,7 +2513,7 @@
 
 
     // $ANTLR start collect_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:800:1: collect_statement returns [CollectDescr d] : loc= 'from' 'collect' '(' column= lhs_column ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:786:1: collect_statement returns [CollectDescr d] : loc= 'from' 'collect' '(' column= lhs_column ')' ;
     public CollectDescr collect_statement() throws RecognitionException {   
         CollectDescr d = null;
 
@@ -2531,23 +2525,23 @@
         		d = factory.createCollect();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:10: (loc= 'from' 'collect' '(' column= lhs_column ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:10: loc= 'from' 'collect' '(' column= lhs_column ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:791:10: (loc= 'from' 'collect' '(' column= lhs_column ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:791:10: loc= 'from' 'collect' '(' column= lhs_column ')'
             {
             loc=(Token)input.LT(1);
-            match(input,47,FOLLOW_47_in_collect_statement1654); if (failed) return d;
-            match(input,52,FOLLOW_52_in_collect_statement1656); if (failed) return d;
+            match(input,47,FOLLOW_47_in_collect_statement1653); if (failed) return d;
+            match(input,52,FOLLOW_52_in_collect_statement1655); if (failed) return d;
             if ( backtracking==0 ) {
                
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement1666); if (failed) return d;
-            pushFollow(FOLLOW_lhs_column_in_collect_statement1670);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement1665); if (failed) return d;
+            pushFollow(FOLLOW_lhs_column_in_collect_statement1669);
             column=lhs_column();
             _fsp--;
             if (failed) return d;
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement1672); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement1671); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setSourceColumn( (ColumnDescr)column );
@@ -2569,7 +2563,7 @@
 
 
     // $ANTLR start fact_binding
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:886:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:872:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
     public BaseDescr fact_binding() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -2582,13 +2576,13 @@
         		boolean multi=false;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:892:4: (id= ID ':' fe= fact_expression[id.getText()] )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:892:4: id= ID ':' fe= fact_expression[id.getText()]
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:878:4: (id= ID ':' fe= fact_expression[id.getText()] )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:878:4: id= ID ':' fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding1707); if (failed) return d;
-            match(input,39,FOLLOW_39_in_fact_binding1717); if (failed) return d;
-            pushFollow(FOLLOW_fact_expression_in_fact_binding1721);
+            match(input,ID,FOLLOW_ID_in_fact_binding1706); if (failed) return d;
+            match(input,39,FOLLOW_39_in_fact_binding1716); if (failed) return d;
+            pushFollow(FOLLOW_fact_expression_in_fact_binding1720);
             fe=fact_expression(id.getText());
             _fsp--;
             if (failed) return d;
@@ -2613,7 +2607,7 @@
 
 
     // $ANTLR start fact_expression
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:900:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:886:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );
     public BaseDescr fact_expression(String id) throws RecognitionException {   
         BaseDescr pd = null;
 
@@ -2627,7 +2621,7 @@
          		boolean multi = false;
          	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:905:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:891:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact )
             int alt27=2;
             int LA27_0 = input.LA(1);
             if ( (LA27_0==LEFT_PAREN) ) {
@@ -2639,20 +2633,20 @@
             else {
                 if (backtracking>0) {failed=true; return pd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("900:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );", 27, 0, input);
+                    new NoViableAltException("886:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );", 27, 0, input);
 
                 throw nvae;
             }
             switch (alt27) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:905:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:891:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression1753); if (failed) return pd;
-                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression1757);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression1752); if (failed) return pd;
+                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression1756);
                     fe=fact_expression_in_paren(id);
                     _fsp--;
                     if (failed) return pd;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression1760); if (failed) return pd;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression1759); if (failed) return pd;
                     if ( backtracking==0 ) {
                        pd=fe; 
                     }
@@ -2660,9 +2654,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:906:6: f= fact
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:892:6: f= fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_expression1771);
+                    pushFollow(FOLLOW_fact_in_fact_expression1770);
                     f=fact();
                     _fsp--;
                     if (failed) return pd;
@@ -2690,7 +2684,7 @@
 
 
     // $ANTLR start fact_expression_in_paren
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:914:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:900:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );
     public BaseDescr fact_expression_in_paren(String id) throws RecognitionException {   
         BaseDescr pd = null;
 
@@ -2704,7 +2698,7 @@
          		boolean multi = false;
          	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:919:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:905:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* )
             int alt29=2;
             int LA29_0 = input.LA(1);
             if ( (LA29_0==LEFT_PAREN) ) {
@@ -2716,20 +2710,20 @@
             else {
                 if (backtracking>0) {failed=true; return pd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("914:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );", 29, 0, input);
+                    new NoViableAltException("900:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );", 29, 0, input);
 
                 throw nvae;
             }
             switch (alt29) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:919:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:905:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression_in_paren1802); if (failed) return pd;
-                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren1806);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression_in_paren1801); if (failed) return pd;
+                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren1805);
                     fe=fact_expression_in_paren(id);
                     _fsp--;
                     if (failed) return pd;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren1808); if (failed) return pd;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren1807); if (failed) return pd;
                     if ( backtracking==0 ) {
                        pd=fe; 
                     }
@@ -2737,9 +2731,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:920:6: f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:906:6: f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
                     {
-                    pushFollow(FOLLOW_fact_in_fact_expression_in_paren1819);
+                    pushFollow(FOLLOW_fact_in_fact_expression_in_paren1818);
                     f=fact();
                     _fsp--;
                     if (failed) return pd;
@@ -2749,7 +2743,7 @@
                        			pd = f;
                        		
                     }
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:925:4: ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:911:4: ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
                     loop28:
                     do {
                         int alt28=2;
@@ -2761,7 +2755,7 @@
 
                         switch (alt28) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:925:6: ( ('or'|'||') fact )=> ('or'|'||')f= fact
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:911:6: ( ('or'|'||') fact )=> ('or'|'||')f= fact
                     	    {
                     	    if ( (input.LA(1)>=53 && input.LA(1)<=54) ) {
                     	        input.consume();
@@ -2771,7 +2765,7 @@
                     	        if (backtracking>0) {failed=true; return pd;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression_in_paren1832);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression_in_paren1831);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -2783,7 +2777,7 @@
                     	       				}
                     	       			
                     	    }
-                    	    pushFollow(FOLLOW_fact_in_fact_expression_in_paren1849);
+                    	    pushFollow(FOLLOW_fact_in_fact_expression_in_paren1848);
                     	    f=fact();
                     	    _fsp--;
                     	    if (failed) return pd;
@@ -2820,7 +2814,7 @@
 
 
     // $ANTLR start fact
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:941:1: fact returns [BaseDescr d] : id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:927:1: fact returns [BaseDescr d] : id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')' ;
     public BaseDescr fact() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -2835,10 +2829,10 @@
         		d=null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:5: (id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:5: id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:931:5: (id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:931:5: id= dotted_name loc= '(' ( ( constraints )=>c= constraints )? endLoc= ')'
             {
-            pushFollow(FOLLOW_dotted_name_in_fact1888);
+            pushFollow(FOLLOW_dotted_name_in_fact1887);
             id=dotted_name();
             _fsp--;
             if (failed) return d;
@@ -2848,13 +2842,13 @@
                		
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact1901); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact1900); if (failed) return d;
             if ( backtracking==0 ) {
               
                				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                			
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:952:4: ( ( constraints )=>c= constraints )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:938:4: ( ( constraints )=>c= constraints )?
             int alt30=2;
             int LA30_0 = input.LA(1);
             if ( (LA30_0==ID) ) {
@@ -2862,9 +2856,9 @@
             }
             switch (alt30) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:952:6: ( constraints )=>c= constraints
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:938:6: ( constraints )=>c= constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact1913);
+                    pushFollow(FOLLOW_constraints_in_fact1912);
                     c=constraints();
                     _fsp--;
                     if (failed) return d;
@@ -2882,7 +2876,7 @@
             }
 
             endLoc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact1934); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact1933); if (failed) return d;
             if ( backtracking==0 ) {
               
               			d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
@@ -2904,7 +2898,7 @@
 
 
     // $ANTLR start constraints
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:1: constraints returns [List constraints] : ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:952:1: constraints returns [List constraints] : ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )* ;
     public List constraints() throws RecognitionException {   
         List constraints = null;
 
@@ -2912,10 +2906,10 @@
         		constraints = new ArrayList();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:970:4: ( ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:956:4: ( ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )*
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
             int alt31=2;
             int LA31_0 = input.LA(1);
             if ( (LA31_0==ID) ) {
@@ -2927,13 +2921,13 @@
                         if ( (LA31_4==67) ) {
                             alt31=2;
                         }
-                        else if ( (LA31_4==EOF||LA31_4==RIGHT_PAREN||LA31_4==33||(LA31_4>=57 && LA31_4<=65)) ) {
+                        else if ( (LA31_4==EOF||LA31_4==RIGHT_PAREN||LA31_4==36||(LA31_4>=57 && LA31_4<=65)) ) {
                             alt31=1;
                         }
                         else {
                             if (backtracking>0) {failed=true; return constraints;}
                             NoViableAltException nvae =
-                                new NoViableAltException("970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 4, input);
+                                new NoViableAltException("956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 4, input);
 
                             throw nvae;
                         }
@@ -2941,18 +2935,18 @@
                     else {
                         if (backtracking>0) {failed=true; return constraints;}
                         NoViableAltException nvae =
-                            new NoViableAltException("970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 2, input);
+                            new NoViableAltException("956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 2, input);
 
                         throw nvae;
                     }
                 }
-                else if ( (LA31_1==EOF||LA31_1==RIGHT_PAREN||LA31_1==33||(LA31_1>=57 && LA31_1<=65)) ) {
+                else if ( (LA31_1==EOF||LA31_1==RIGHT_PAREN||LA31_1==36||(LA31_1>=57 && LA31_1<=65)) ) {
                     alt31=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return constraints;}
                     NoViableAltException nvae =
-                        new NoViableAltException("970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 1, input);
+                        new NoViableAltException("956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 1, input);
 
                     throw nvae;
                 }
@@ -2960,15 +2954,15 @@
             else {
                 if (backtracking>0) {failed=true; return constraints;}
                 NoViableAltException nvae =
-                    new NoViableAltException("970:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 0, input);
+                    new NoViableAltException("956:4: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 31, 0, input);
 
                 throw nvae;
             }
             switch (alt31) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:970:5: ( constraint[constraints] )=> constraint[constraints]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:956:5: ( constraint[constraints] )=> constraint[constraints]
                     {
-                    pushFollow(FOLLOW_constraint_in_constraints1964);
+                    pushFollow(FOLLOW_constraint_in_constraints1963);
                     constraint(constraints);
                     _fsp--;
                     if (failed) return constraints;
@@ -2976,9 +2970,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:970:29: predicate[constraints]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:956:29: predicate[constraints]
                     {
-                    pushFollow(FOLLOW_predicate_in_constraints1967);
+                    pushFollow(FOLLOW_predicate_in_constraints1966);
                     predicate(constraints);
                     _fsp--;
                     if (failed) return constraints;
@@ -2988,22 +2982,22 @@
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:971:3: ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:957:3: ( ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )*
             loop33:
             do {
                 int alt33=2;
                 int LA33_0 = input.LA(1);
-                if ( (LA33_0==33) ) {
+                if ( (LA33_0==36) ) {
                     alt33=1;
                 }
 
 
                 switch (alt33) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:971:5: ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:957:5: ( ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] ) )=> ',' ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
             	    {
-            	    match(input,33,FOLLOW_33_in_constraints1975); if (failed) return constraints;
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:971:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
+            	    match(input,36,FOLLOW_36_in_constraints1974); if (failed) return constraints;
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:957:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )
             	    int alt32=2;
             	    int LA32_0 = input.LA(1);
             	    if ( (LA32_0==ID) ) {
@@ -3015,13 +3009,13 @@
             	                if ( (LA32_4==67) ) {
             	                    alt32=2;
             	                }
-            	                else if ( (LA32_4==EOF||LA32_4==RIGHT_PAREN||LA32_4==33||(LA32_4>=57 && LA32_4<=65)) ) {
+            	                else if ( (LA32_4==EOF||LA32_4==RIGHT_PAREN||LA32_4==36||(LA32_4>=57 && LA32_4<=65)) ) {
             	                    alt32=1;
             	                }
             	                else {
             	                    if (backtracking>0) {failed=true; return constraints;}
             	                    NoViableAltException nvae =
-            	                        new NoViableAltException("971:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 4, input);
+            	                        new NoViableAltException("957:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 4, input);
 
             	                    throw nvae;
             	                }
@@ -3029,18 +3023,18 @@
             	            else {
             	                if (backtracking>0) {failed=true; return constraints;}
             	                NoViableAltException nvae =
-            	                    new NoViableAltException("971:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 2, input);
+            	                    new NoViableAltException("957:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 2, input);
 
             	                throw nvae;
             	            }
             	        }
-            	        else if ( (LA32_1==EOF||LA32_1==RIGHT_PAREN||LA32_1==33||(LA32_1>=57 && LA32_1<=65)) ) {
+            	        else if ( (LA32_1==EOF||LA32_1==RIGHT_PAREN||LA32_1==36||(LA32_1>=57 && LA32_1<=65)) ) {
             	            alt32=1;
             	        }
             	        else {
             	            if (backtracking>0) {failed=true; return constraints;}
             	            NoViableAltException nvae =
-            	                new NoViableAltException("971:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 1, input);
+            	                new NoViableAltException("957:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 1, input);
 
             	            throw nvae;
             	        }
@@ -3048,15 +3042,15 @@
             	    else {
             	        if (backtracking>0) {failed=true; return constraints;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("971:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 0, input);
+            	            new NoViableAltException("957:9: ( ( constraint[constraints] )=> constraint[constraints] | predicate[constraints] )", 32, 0, input);
 
             	        throw nvae;
             	    }
             	    switch (alt32) {
             	        case 1 :
-            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:971:10: ( constraint[constraints] )=> constraint[constraints]
+            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:957:10: ( constraint[constraints] )=> constraint[constraints]
             	            {
-            	            pushFollow(FOLLOW_constraint_in_constraints1978);
+            	            pushFollow(FOLLOW_constraint_in_constraints1977);
             	            constraint(constraints);
             	            _fsp--;
             	            if (failed) return constraints;
@@ -3064,9 +3058,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:971:34: predicate[constraints]
+            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:957:34: predicate[constraints]
             	            {
-            	            pushFollow(FOLLOW_predicate_in_constraints1981);
+            	            pushFollow(FOLLOW_predicate_in_constraints1980);
             	            predicate(constraints);
             	            _fsp--;
             	            if (failed) return constraints;
@@ -3101,7 +3095,7 @@
 
 
     // $ANTLR start constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:974:1: constraint[List constraints] : ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:960:1: constraint[List constraints] : ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )? ;
     public void constraint(List constraints) throws RecognitionException {   
         Token fb=null;
         Token f=null;
@@ -3114,10 +3108,10 @@
         		FieldConstraintDescr fc = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:980:3: ( ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:980:3: ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:3: ( ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:3: ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )?
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:980:3: ( ( ID ':' )=>fb= ID ':' )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:3: ( ( ID ':' )=>fb= ID ':' )?
             int alt34=2;
             int LA34_0 = input.LA(1);
             if ( (LA34_0==ID) ) {
@@ -3128,11 +3122,11 @@
             }
             switch (alt34) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:980:5: ( ID ':' )=>fb= ID ':'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:5: ( ID ':' )=>fb= ID ':'
                     {
                     fb=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint2010); if (failed) return ;
-                    match(input,39,FOLLOW_39_in_constraint2012); if (failed) return ;
+                    match(input,ID,FOLLOW_ID_in_constraint2009); if (failed) return ;
+                    match(input,39,FOLLOW_39_in_constraint2011); if (failed) return ;
 
                     }
                     break;
@@ -3140,7 +3134,7 @@
             }
 
             f=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_constraint2022); if (failed) return ;
+            match(input,ID,FOLLOW_ID_in_constraint2021); if (failed) return ;
             if ( backtracking==0 ) {
               
               			if ( fb != null ) {
@@ -3152,7 +3146,7 @@
               			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:991:3: ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:977:3: ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )?
             int alt36=2;
             int LA36_0 = input.LA(1);
             if ( ((LA36_0>=57 && LA36_0<=65)) ) {
@@ -3160,9 +3154,9 @@
             }
             switch (alt36) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:992:4: ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:978:4: ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* )=>rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
                     {
-                    pushFollow(FOLLOW_constraint_expression_in_constraint2038);
+                    pushFollow(FOLLOW_constraint_expression_in_constraint2037);
                     rd=constraint_expression();
                     _fsp--;
                     if (failed) return ;
@@ -3172,7 +3166,7 @@
                       				constraints.add(fc);
                       			
                     }
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:997:4: ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:983:4: ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
                     loop35:
                     do {
                         int alt35=2;
@@ -3184,7 +3178,7 @@
 
                         switch (alt35) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:998:5: ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:984:5: ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression
                     	    {
                     	    con=(Token)input.LT(1);
                     	    if ( (input.LA(1)>=55 && input.LA(1)<=56) ) {
@@ -3195,7 +3189,7 @@
                     	        if (backtracking>0) {failed=true; return ;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2057);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2056);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -3207,7 +3201,7 @@
                     	      					}							
                     	      				
                     	    }
-                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2074);
+                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2073);
                     	    rd=constraint_expression();
                     	    _fsp--;
                     	    if (failed) return ;
@@ -3247,7 +3241,7 @@
 
 
     // $ANTLR start constraint_expression
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1014:1: constraint_expression returns [RestrictionDescr rd] : op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1000:1: constraint_expression returns [RestrictionDescr rd] : op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) ;
     public RestrictionDescr constraint_expression() throws RecognitionException {   
         RestrictionDescr rd = null;
 
@@ -3259,8 +3253,8 @@
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1016:3: (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1016:3: op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1002:3: (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1002:3: op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
             {
             op=(Token)input.LT(1);
             if ( (input.LA(1)>=57 && input.LA(1)<=65) ) {
@@ -3271,24 +3265,24 @@
                 if (backtracking>0) {failed=true; return rd;}
                 MismatchedSetException mse =
                     new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2126);    throw mse;
+                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2125);    throw mse;
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1026:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1012:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
             int alt37=4;
             switch ( input.LA(1) ) {
             case ID:
                 int LA37_1 = input.LA(2);
-                if ( (LA37_1==30) ) {
+                if ( (LA37_1==33) ) {
                     alt37=2;
                 }
-                else if ( (LA37_1==EOF||LA37_1==RIGHT_PAREN||LA37_1==33||(LA37_1>=55 && LA37_1<=56)) ) {
+                else if ( (LA37_1==EOF||LA37_1==RIGHT_PAREN||LA37_1==36||(LA37_1>=55 && LA37_1<=56)) ) {
                     alt37=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return rd;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1026:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 1, input);
+                        new NoViableAltException("1012:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 1, input);
 
                     throw nvae;
                 }
@@ -3306,17 +3300,17 @@
             default:
                 if (backtracking>0) {failed=true; return rd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1026:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 0, input);
+                    new NoViableAltException("1012:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 0, input);
 
                 throw nvae;
             }
 
             switch (alt37) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1026:5: ( ID )=>bvc= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1012:5: ( ID )=>bvc= ID
                     {
                     bvc=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint_expression2193); if (failed) return rd;
+                    match(input,ID,FOLLOW_ID_in_constraint_expression2192); if (failed) return rd;
                     if ( backtracking==0 ) {
                       
                       				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
@@ -3326,9 +3320,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1031:4: ( enum_constraint )=>lc= enum_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1017:4: ( enum_constraint )=>lc= enum_constraint
                     {
-                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2209);
+                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2208);
                     lc=enum_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3341,9 +3335,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1036:4: ( literal_constraint )=>lc= literal_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1022:4: ( literal_constraint )=>lc= literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2232);
+                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2231);
                     lc=literal_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3356,9 +3350,9 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1040:5: rvc= retval_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1026:5: rvc= retval_constraint
                     {
-                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2246);
+                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2245);
                     rvc=retval_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3389,7 +3383,7 @@
 
 
     // $ANTLR start literal_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1047:1: literal_constraint returns [String text] : ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1033:1: literal_constraint returns [String text] : ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) ;
     public String literal_constraint() throws RecognitionException {   
         String text = null;
 
@@ -3399,10 +3393,10 @@
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1051:4: ( ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1051:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1037:4: ( ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1037:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1051:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1037:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
             int alt38=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -3423,17 +3417,17 @@
             default:
                 if (backtracking>0) {failed=true; return text;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1051:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )", 38, 0, input);
+                    new NoViableAltException("1037:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )", 38, 0, input);
 
                 throw nvae;
             }
 
             switch (alt38) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1051:6: ( STRING )=>t= STRING
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1037:6: ( STRING )=>t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2285); if (failed) return text;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2284); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = getString( t ); 
                     }
@@ -3441,10 +3435,10 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1052:5: ( INT )=>t= INT
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1038:5: ( INT )=>t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2296); if (failed) return text;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2295); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3452,10 +3446,10 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1053:5: ( FLOAT )=>t= FLOAT
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1039:5: ( FLOAT )=>t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2309); if (failed) return text;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2308); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3463,10 +3457,10 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1054:5: ( BOOL )=>t= BOOL
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1040:5: ( BOOL )=>t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2320); if (failed) return text;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2319); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3474,10 +3468,10 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1055:5: t= 'null'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1041:5: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,66,FOLLOW_66_in_literal_constraint2332); if (failed) return text;
+                    match(input,66,FOLLOW_66_in_literal_constraint2331); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = null; 
                     }
@@ -3503,7 +3497,7 @@
 
 
     // $ANTLR start enum_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1059:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1045:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
     public String enum_constraint() throws RecognitionException {   
         String text = null;
 
@@ -3514,17 +3508,17 @@
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1063:4: ( (cls= ID '.' en= ID ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1063:4: (cls= ID '.' en= ID )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1049:4: ( (cls= ID '.' en= ID ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1049:4: (cls= ID '.' en= ID )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1063:4: (cls= ID '.' en= ID )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1063:5: cls= ID '.' en= ID
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1049:4: (cls= ID '.' en= ID )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1049:5: cls= ID '.' en= ID
             {
             cls=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2363); if (failed) return text;
-            match(input,30,FOLLOW_30_in_enum_constraint2365); if (failed) return text;
+            match(input,ID,FOLLOW_ID_in_enum_constraint2362); if (failed) return text;
+            match(input,33,FOLLOW_33_in_enum_constraint2364); if (failed) return text;
             en=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2369); if (failed) return text;
+            match(input,ID,FOLLOW_ID_in_enum_constraint2368); if (failed) return text;
 
             }
 
@@ -3547,7 +3541,7 @@
 
 
     // $ANTLR start predicate
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1067:1: predicate[List constraints] : decl= ID ':' field= ID '->' text= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1053:1: predicate[List constraints] : decl= ID ':' field= ID '->' text= paren_chunk ;
     public void predicate(List constraints) throws RecognitionException {   
         Token decl=null;
         Token field=null;
@@ -3555,16 +3549,16 @@
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1069:3: (decl= ID ':' field= ID '->' text= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1069:3: decl= ID ':' field= ID '->' text= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1055:3: (decl= ID ':' field= ID '->' text= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1055:3: decl= ID ':' field= ID '->' text= paren_chunk
             {
             decl=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate2391); if (failed) return ;
-            match(input,39,FOLLOW_39_in_predicate2393); if (failed) return ;
+            match(input,ID,FOLLOW_ID_in_predicate2390); if (failed) return ;
+            match(input,39,FOLLOW_39_in_predicate2392); if (failed) return ;
             field=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate2397); if (failed) return ;
-            match(input,67,FOLLOW_67_in_predicate2399); if (failed) return ;
-            pushFollow(FOLLOW_paren_chunk_in_predicate2403);
+            match(input,ID,FOLLOW_ID_in_predicate2396); if (failed) return ;
+            match(input,67,FOLLOW_67_in_predicate2398); if (failed) return ;
+            pushFollow(FOLLOW_paren_chunk_in_predicate2402);
             text=paren_chunk();
             _fsp--;
             if (failed) return ;
@@ -3591,7 +3585,7 @@
 
 
     // $ANTLR start paren_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1077:1: paren_chunk returns [String text] : loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1063:1: paren_chunk returns [String text] : loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN ;
     public String paren_chunk() throws RecognitionException {   
         String text = null;
 
@@ -3604,8 +3598,8 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1083:10: (loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1083:10: loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1069:10: (loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1069:10: loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
               
@@ -3615,14 +3609,14 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2450); if (failed) return text;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2449); if (failed) return text;
             if ( backtracking==0 ) {
               
               		    buf.append( loc.getText());
                
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1093:3: ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1079:3: ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )*
             loop39:
             do {
                 int alt39=3;
@@ -3637,7 +3631,7 @@
 
                 switch (alt39) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1094:4: (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN)
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1080:4: (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN)
             	    {
             	    if ( (input.LA(1)>=ID && input.LA(1)<=FLOAT)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=73) ) {
             	        input.consume();
@@ -3647,7 +3641,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2466);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2465);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -3659,9 +3653,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1099:4: ( paren_chunk )=>chunk= paren_chunk
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1085:4: ( paren_chunk )=>chunk= paren_chunk
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2490);
+            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2489);
             	    chunk=paren_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -3689,7 +3683,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk2526); if (failed) return text;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk2525); if (failed) return text;
             if ( backtracking==0 ) {
               
                                   buf.append( loc.getText() );
@@ -3712,7 +3706,7 @@
 
 
     // $ANTLR start square_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1118:1: square_chunk returns [String text] : loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1104:1: square_chunk returns [String text] : loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE ;
     public String square_chunk() throws RecognitionException {   
         String text = null;
 
@@ -3725,8 +3719,8 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:10: (loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:10: loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1110:10: (loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1110:10: loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE
             {
             if ( backtracking==0 ) {
               
@@ -3736,19 +3730,19 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk2587); if (failed) return text;
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk2586); if (failed) return text;
             if ( backtracking==0 ) {
               
               		    buf.append( loc.getText());
                
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1134:3: ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1120:3: ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )*
             loop40:
             do {
                 int alt40=3;
                 int LA40_0 = input.LA(1);
-                if ( ((LA40_0>=ID && LA40_0<=RIGHT_PAREN)||(LA40_0>=EOL && LA40_0<=73)) ) {
+                if ( ((LA40_0>=ID && LA40_0<=RIGHT_PAREN)||(LA40_0>=END && LA40_0<=73)) ) {
                     alt40=1;
                 }
                 else if ( (LA40_0==LEFT_SQUARE) ) {
@@ -3758,9 +3752,9 @@
 
                 switch (alt40) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1135:4: (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE)
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1121:4: (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE)
             	    {
-            	    if ( (input.LA(1)>=ID && input.LA(1)<=RIGHT_PAREN)||(input.LA(1)>=EOL && input.LA(1)<=73) ) {
+            	    if ( (input.LA(1)>=ID && input.LA(1)<=RIGHT_PAREN)||(input.LA(1)>=END && input.LA(1)<=73) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -3768,7 +3762,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk2603);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk2602);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -3780,9 +3774,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:4: ( square_chunk )=>chunk= square_chunk
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1126:4: ( square_chunk )=>chunk= square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_square_chunk2627);
+            	    pushFollow(FOLLOW_square_chunk_in_square_chunk2626);
             	    chunk=square_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -3810,7 +3804,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk2663); if (failed) return text;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk2662); if (failed) return text;
             if ( backtracking==0 ) {
               
                                   buf.append( loc.getText() );
@@ -3833,7 +3827,7 @@
 
 
     // $ANTLR start retval_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1159:1: retval_constraint returns [String text] : c= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1145:1: retval_constraint returns [String text] : c= paren_chunk ;
     public String retval_constraint() throws RecognitionException {   
         String text = null;
 
@@ -3844,10 +3838,10 @@
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:3: (c= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:3: c= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1150:3: (c= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1150:3: c= paren_chunk
             {
-            pushFollow(FOLLOW_paren_chunk_in_retval_constraint2708);
+            pushFollow(FOLLOW_paren_chunk_in_retval_constraint2707);
             c=paren_chunk();
             _fsp--;
             if (failed) return text;
@@ -3870,7 +3864,7 @@
 
 
     // $ANTLR start lhs_or
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1172:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1158:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* ;
     public BaseDescr lhs_or() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -3884,17 +3878,17 @@
         		OrDescr or = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1178:3: (left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1178:3: left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:3: (left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:3: left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
             {
-            pushFollow(FOLLOW_lhs_and_in_lhs_or2741);
+            pushFollow(FOLLOW_lhs_and_in_lhs_or2740);
             left=lhs_and();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               d = left; 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1179:3: ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:3: ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
             loop41:
             do {
                 int alt41=2;
@@ -3906,7 +3900,7 @@
 
                 switch (alt41) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1179:5: ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:5: ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and
             	    {
             	    if ( (input.LA(1)>=53 && input.LA(1)<=54) ) {
             	        input.consume();
@@ -3916,10 +3910,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or2750);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or2749);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_and_in_lhs_or2760);
+            	    pushFollow(FOLLOW_lhs_and_in_lhs_or2759);
             	    right=lhs_and();
             	    _fsp--;
             	    if (failed) return d;
@@ -3959,7 +3953,7 @@
 
 
     // $ANTLR start lhs_and
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1193:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1179:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* ;
     public BaseDescr lhs_and() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -3973,17 +3967,17 @@
         		AndDescr and = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1199:3: (left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1199:3: left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1185:3: (left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1185:3: left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
             {
-            pushFollow(FOLLOW_lhs_unary_in_lhs_and2796);
+            pushFollow(FOLLOW_lhs_unary_in_lhs_and2795);
             left=lhs_unary();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                d = left; 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1200:3: ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1186:3: ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
             loop42:
             do {
                 int alt42=2;
@@ -3995,7 +3989,7 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1200:5: ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1186:5: ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary
             	    {
             	    if ( (input.LA(1)>=68 && input.LA(1)<=69) ) {
             	        input.consume();
@@ -4005,10 +3999,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and2805);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and2804);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2815);
+            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2814);
             	    right=lhs_unary();
             	    _fsp--;
             	    if (failed) return d;
@@ -4048,7 +4042,7 @@
 
 
     // $ANTLR start lhs_unary
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1214:1: lhs_unary returns [BaseDescr d] : ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1200:1: lhs_unary returns [BaseDescr d] : ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon ;
     public BaseDescr lhs_unary() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4065,10 +4059,10 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1218:4: ( ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1218:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:4: ( ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' ) opt_semicolon
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1218:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' )
             int alt44=5;
             switch ( input.LA(1) ) {
             case 70:
@@ -4089,16 +4083,16 @@
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1218:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' )", 44, 0, input);
+                    new NoViableAltException("1204:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | '(' u= lhs ')' )", 44, 0, input);
 
                 throw nvae;
             }
 
             switch (alt44) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1218:6: ( lhs_exist )=>u= lhs_exist
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:6: ( lhs_exist )=>u= lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2852);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2851);
                     u=lhs_exist();
                     _fsp--;
                     if (failed) return d;
@@ -4106,9 +4100,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1219:5: ( lhs_not )=>u= lhs_not
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1205:5: ( lhs_not )=>u= lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2860);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2859);
                     u=lhs_not();
                     _fsp--;
                     if (failed) return d;
@@ -4116,9 +4110,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1220:5: ( lhs_eval )=>u= lhs_eval
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1206:5: ( lhs_eval )=>u= lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2868);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2867);
                     u=lhs_eval();
                     _fsp--;
                     if (failed) return d;
@@ -4126,23 +4120,23 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:5: ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1207:5: ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_unary2876);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_unary2875);
                     u=lhs_column();
                     _fsp--;
                     if (failed) return d;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:18: ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1207:18: ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
                     int alt43=4;
                     int LA43_0 = input.LA(1);
                     if ( (LA43_0==47) ) {
                         switch ( input.LA(2) ) {
+                            case 48:
+                                alt43=2;
+                                break;
                             case 52:
                                 alt43=3;
                                 break;
-                            case 48:
-                                alt43=2;
-                                break;
                             case ID:
                                 alt43=1;
                                 break;
@@ -4151,12 +4145,12 @@
                     }
                     switch (alt43) {
                         case 1 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1222:14: ( ( from_statement ) )=> (fm= from_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:14: ( ( from_statement ) )=> (fm= from_statement )
                             {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1222:14: (fm= from_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1222:15: fm= from_statement
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:14: (fm= from_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:15: fm= from_statement
                             {
-                            pushFollow(FOLLOW_from_statement_in_lhs_unary2896);
+                            pushFollow(FOLLOW_from_statement_in_lhs_unary2895);
                             fm=from_statement();
                             _fsp--;
                             if (failed) return d;
@@ -4170,12 +4164,12 @@
                             }
                             break;
                         case 2 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:14: ( ( accumulate_statement ) )=> (ac= accumulate_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1209:14: ( ( accumulate_statement ) )=> (ac= accumulate_statement )
                             {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:14: (ac= accumulate_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:15: ac= accumulate_statement
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1209:14: (ac= accumulate_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1209:15: ac= accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_lhs_unary2918);
+                            pushFollow(FOLLOW_accumulate_statement_in_lhs_unary2917);
                             ac=accumulate_statement();
                             _fsp--;
                             if (failed) return d;
@@ -4189,12 +4183,12 @@
                             }
                             break;
                         case 3 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1224:14: ( ( collect_statement ) )=> (cs= collect_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1210:14: ( ( collect_statement ) )=> (cs= collect_statement )
                             {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1224:14: (cs= collect_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1224:15: cs= collect_statement
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1210:14: (cs= collect_statement )
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1210:15: cs= collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_lhs_unary2939);
+                            pushFollow(FOLLOW_collect_statement_in_lhs_unary2938);
                             cs=collect_statement();
                             _fsp--;
                             if (failed) return d;
@@ -4214,14 +4208,14 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1226:5: '(' u= lhs ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1212:5: '(' u= lhs ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2962); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_in_lhs_unary2966);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2961); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_in_lhs_unary2965);
                     u=lhs();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2968); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2967); if (failed) return d;
 
                     }
                     break;
@@ -4231,7 +4225,7 @@
             if ( backtracking==0 ) {
                d = u; 
             }
-            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary2978);
+            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary2977);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -4251,7 +4245,7 @@
 
 
     // $ANTLR start lhs_exist
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1231:1: lhs_exist returns [BaseDescr d] : loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1217:1: lhs_exist returns [BaseDescr d] : loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) ;
     public BaseDescr lhs_exist() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4263,12 +4257,12 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1235:4: (loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1235:4: loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:4: (loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:4: loc= 'exists' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,70,FOLLOW_70_in_lhs_exist3002); if (failed) return d;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1235:17: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
+            match(input,70,FOLLOW_70_in_lhs_exist3001); if (failed) return d;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:17: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
             int alt45=2;
             int LA45_0 = input.LA(1);
             if ( (LA45_0==LEFT_PAREN) ) {
@@ -4280,27 +4274,27 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1235:17: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )", 45, 0, input);
+                    new NoViableAltException("1221:17: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1235:18: ( '(' lhs_column ')' )=> '(' column= lhs_column ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:18: ( '(' lhs_column ')' )=> '(' column= lhs_column ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3005); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3009);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3004); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3008);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3011); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3010); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1235:46: column= lhs_column
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1221:46: column= lhs_column
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3017);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3016);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
@@ -4332,7 +4326,7 @@
 
 
     // $ANTLR start lhs_not
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1242:1: lhs_not returns [NotDescr d] : loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:1: lhs_not returns [NotDescr d] : loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) ;
     public NotDescr lhs_not() throws RecognitionException {   
         NotDescr d = null;
 
@@ -4344,12 +4338,12 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1246:4: (loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1246:4: loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:4: (loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:4: loc= 'not' ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,71,FOLLOW_71_in_lhs_not3047); if (failed) return d;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1246:14: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
+            match(input,71,FOLLOW_71_in_lhs_not3046); if (failed) return d;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:14: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )
             int alt46=2;
             int LA46_0 = input.LA(1);
             if ( (LA46_0==LEFT_PAREN) ) {
@@ -4361,27 +4355,27 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1246:14: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )", 46, 0, input);
+                    new NoViableAltException("1232:14: ( ( '(' lhs_column ')' )=> '(' column= lhs_column ')' | column= lhs_column )", 46, 0, input);
 
                 throw nvae;
             }
             switch (alt46) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1246:15: ( '(' lhs_column ')' )=> '(' column= lhs_column ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:15: ( '(' lhs_column ')' )=> '(' column= lhs_column ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3050); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_column_in_lhs_not3054);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3049); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_column_in_lhs_not3053);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3057); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3056); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1246:44: column= lhs_column
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:44: column= lhs_column
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_not3063);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_not3062);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
@@ -4413,7 +4407,7 @@
 
 
     // $ANTLR start lhs_eval
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1253:1: lhs_eval returns [BaseDescr d] : loc= 'eval' c= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1239:1: lhs_eval returns [BaseDescr d] : loc= 'eval' c= paren_chunk ;
     public BaseDescr lhs_eval() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4425,12 +4419,12 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1257:4: (loc= 'eval' c= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1257:4: loc= 'eval' c= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1243:4: (loc= 'eval' c= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1243:4: loc= 'eval' c= paren_chunk
             {
             loc=(Token)input.LT(1);
-            match(input,72,FOLLOW_72_in_lhs_eval3091); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3095);
+            match(input,72,FOLLOW_72_in_lhs_eval3090); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3094);
             c=paren_chunk();
             _fsp--;
             if (failed) return d;
@@ -4457,7 +4451,7 @@
 
 
     // $ANTLR start dotted_name
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1265:1: dotted_name returns [String name] : id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1251:1: dotted_name returns [String name] : id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* ;
     public String dotted_name() throws RecognitionException {   
         String name = null;
 
@@ -4467,31 +4461,31 @@
         		name = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:3: (id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:3: id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:3: (id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:3: id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name3126); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_dotted_name3125); if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:32: ( ( '.' ID )=> '.' id= ID )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:32: ( ( '.' ID )=> '.' id= ID )*
             loop47:
             do {
                 int alt47=2;
                 int LA47_0 = input.LA(1);
-                if ( (LA47_0==30) ) {
+                if ( (LA47_0==33) ) {
                     alt47=1;
                 }
 
 
                 switch (alt47) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:34: ( '.' ID )=> '.' id= ID
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:34: ( '.' ID )=> '.' id= ID
             	    {
-            	    match(input,30,FOLLOW_30_in_dotted_name3132); if (failed) return name;
+            	    match(input,33,FOLLOW_33_in_dotted_name3131); if (failed) return name;
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_dotted_name3136); if (failed) return name;
+            	    match(input,ID,FOLLOW_ID_in_dotted_name3135); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "." + id.getText(); 
             	    }
@@ -4504,7 +4498,7 @@
                 }
             } while (true);
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:85: ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:85: ( ( '[' ']' )=> '[' ']' )*
             loop48:
             do {
                 int alt48=2;
@@ -4516,10 +4510,10 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:87: ( '[' ']' )=> '[' ']'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:87: ( '[' ']' )=> '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name3145); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name3147); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name3144); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name3146); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -4548,7 +4542,7 @@
 
 
     // $ANTLR start argument
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1273:1: argument returns [String name] : id= ID ( ( '[' ']' )=> '[' ']' )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1259:1: argument returns [String name] : id= ID ( ( '[' ']' )=> '[' ']' )* ;
     public String argument() throws RecognitionException {   
         String name = null;
 
@@ -4558,15 +4552,15 @@
         		name = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1278:3: (id= ID ( ( '[' ']' )=> '[' ']' )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1278:3: id= ID ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:3: (id= ID ( ( '[' ']' )=> '[' ']' )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:3: id= ID ( ( '[' ']' )=> '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument3177); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_argument3176); if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1278:32: ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:32: ( ( '[' ']' )=> '[' ']' )*
             loop49:
             do {
                 int alt49=2;
@@ -4578,10 +4572,10 @@
 
                 switch (alt49) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1278:34: ( '[' ']' )=> '[' ']'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:34: ( '[' ']' )=> '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument3183); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument3185); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument3182); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument3184); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -4609,8 +4603,100 @@
     // $ANTLR end argument
 
 
+    // $ANTLR start rhs_chunk
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1267:1: rhs_chunk[RuleDescr rule] : start= 'then' ( (~ END )=>~ END )* END ;
+    public void rhs_chunk(RuleDescr rule) throws RecognitionException {   
+        Token start=null;
+
+        
+                   StringBuffer buf = null;
+                   Integer channel = null;
+                
+        try {
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1273:10: (start= 'then' ( (~ END )=>~ END )* END )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1273:10: start= 'then' ( (~ END )=>~ END )* END
+            {
+            if ( backtracking==0 ) {
+              
+              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+              		    buf = new StringBuffer();
+              	        
+            }
+            start=(Token)input.LT(1);
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk3228); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1279:3: ( (~ END )=>~ END )*
+            loop50:
+            do {
+                int alt50=2;
+                int LA50_0 = input.LA(1);
+                if ( ((LA50_0>=ID && LA50_0<=RIGHT_SQUARE)||(LA50_0>=THEN && LA50_0<=73)) ) {
+                    alt50=1;
+                }
+
+
+                switch (alt50) {
+            	case 1 :
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1280:6: (~ END )=>~ END
+            	    {
+            	    if ( (input.LA(1)>=ID && input.LA(1)<=RIGHT_SQUARE)||(input.LA(1)>=THEN && input.LA(1)<=73) ) {
+            	        input.consume();
+            	        errorRecovery=false;failed=false;
+            	    }
+            	    else {
+            	        if (backtracking>0) {failed=true; return ;}
+            	        MismatchedSetException mse =
+            	            new MismatchedSetException(null,input);
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk3240);    throw mse;
+            	    }
+
+            	    if ( backtracking==0 ) {
+            	      
+            	      			    buf.append( input.LT(-1).getText() );
+            	      			  
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop50;
+                }
+            } while (true);
+
+            if ( backtracking==0 ) {
+              
+              		    if( channel != null ) {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+              		    } else {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+              		    }
+              		
+            }
+            match(input,END,FOLLOW_END_in_rhs_chunk3275); if (failed) return ;
+            if ( backtracking==0 ) {
+              
+              		    rule.setConsequence( buf.toString() );
+                   		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
+                              
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+       }
+        return ;
+    }
+    // $ANTLR end rhs_chunk
+
+
     // $ANTLR start word
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1282:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( 'rule' )=> 'rule' | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( 'when' )=> 'when' | ( 'then' )=> 'then' | ( 'end' )=> 'end' | str= STRING );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1300:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING );
     public String word() throws RecognitionException {   
         String word = null;
 
@@ -4621,56 +4707,56 @@
         		word = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1286:4: ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( 'rule' )=> 'rule' | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( 'when' )=> 'when' | ( 'then' )=> 'then' | ( 'end' )=> 'end' | str= STRING )
-            int alt50=11;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1304:4: ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING )
+            int alt51=11;
             switch ( input.LA(1) ) {
             case ID:
-                alt50=1;
+                alt51=1;
                 break;
-            case 28:
-                alt50=2;
+            case 31:
+                alt51=2;
                 break;
             case 73:
-                alt50=3;
+                alt51=3;
                 break;
+            case RULE:
+                alt51=4;
+                break;
             case 37:
-                alt50=4;
+                alt51=5;
                 break;
-            case 34:
-                alt50=5;
-                break;
             case 41:
-                alt50=6;
+                alt51=6;
                 break;
             case 42:
-                alt50=7;
+                alt51=7;
                 break;
-            case 38:
-                alt50=8;
+            case WHEN:
+                alt51=8;
                 break;
-            case RHS:
-                alt50=9;
+            case THEN:
+                alt51=9;
                 break;
-            case 35:
-                alt50=10;
+            case END:
+                alt51=10;
                 break;
             case STRING:
-                alt50=11;
+                alt51=11;
                 break;
             default:
                 if (backtracking>0) {failed=true; return word;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1282:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( 'rule' )=> 'rule' | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( 'when' )=> 'when' | ( 'then' )=> 'then' | ( 'end' )=> 'end' | str= STRING );", 50, 0, input);
+                    new NoViableAltException("1300:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING );", 51, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1286:4: ( ID )=>id= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1304:4: ( ID )=>id= ID
                     {
                     id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_word3213); if (failed) return word;
+                    match(input,ID,FOLLOW_ID_in_word3317); if (failed) return word;
                     if ( backtracking==0 ) {
                        word=id.getText(); 
                     }
@@ -4678,9 +4764,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1287:4: ( 'import' )=> 'import'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1305:4: ( 'import' )=> 'import'
                     {
-                    match(input,28,FOLLOW_28_in_word3225); if (failed) return word;
+                    match(input,31,FOLLOW_31_in_word3329); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="import"; 
                     }
@@ -4688,9 +4774,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:4: ( 'use' )=> 'use'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1306:4: ( 'use' )=> 'use'
                     {
-                    match(input,73,FOLLOW_73_in_word3234); if (failed) return word;
+                    match(input,73,FOLLOW_73_in_word3338); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="use"; 
                     }
@@ -4698,9 +4784,9 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1289:4: ( 'rule' )=> 'rule'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1307:4: ( RULE )=> RULE
                     {
-                    match(input,37,FOLLOW_37_in_word3246); if (failed) return word;
+                    match(input,RULE,FOLLOW_RULE_in_word3350); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="rule"; 
                     }
@@ -4708,9 +4794,9 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1290:4: ( 'query' )=> 'query'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1308:4: ( 'query' )=> 'query'
                     {
-                    match(input,34,FOLLOW_34_in_word3257); if (failed) return word;
+                    match(input,37,FOLLOW_37_in_word3363); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="query"; 
                     }
@@ -4718,9 +4804,9 @@
                     }
                     break;
                 case 6 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1291:4: ( 'salience' )=> 'salience'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:4: ( 'salience' )=> 'salience'
                     {
-                    match(input,41,FOLLOW_41_in_word3267); if (failed) return word;
+                    match(input,41,FOLLOW_41_in_word3373); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="salience"; 
                     }
@@ -4728,9 +4814,9 @@
                     }
                     break;
                 case 7 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:5: ( 'no-loop' )=> 'no-loop'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1310:5: ( 'no-loop' )=> 'no-loop'
                     {
-                    match(input,42,FOLLOW_42_in_word3275); if (failed) return word;
+                    match(input,42,FOLLOW_42_in_word3381); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="no-loop"; 
                     }
@@ -4738,9 +4824,9 @@
                     }
                     break;
                 case 8 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1293:4: ( 'when' )=> 'when'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1311:4: ( WHEN )=> WHEN
                     {
-                    match(input,38,FOLLOW_38_in_word3283); if (failed) return word;
+                    match(input,WHEN,FOLLOW_WHEN_in_word3389); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="when"; 
                     }
@@ -4748,9 +4834,9 @@
                     }
                     break;
                 case 9 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1294:4: ( 'then' )=> 'then'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:4: ( THEN )=> THEN
                     {
-                    match(input,RHS,FOLLOW_RHS_in_word3294); if (failed) return word;
+                    match(input,THEN,FOLLOW_THEN_in_word3402); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="then"; 
                     }
@@ -4758,9 +4844,9 @@
                     }
                     break;
                 case 10 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1295:4: ( 'end' )=> 'end'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:4: ( END )=> END
                     {
-                    match(input,35,FOLLOW_35_in_word3305); if (failed) return word;
+                    match(input,END,FOLLOW_END_in_word3415); if (failed) return word;
                     if ( backtracking==0 ) {
                        word="end"; 
                     }
@@ -4768,10 +4854,10 @@
                     }
                     break;
                 case 11 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:4: str= STRING
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1314:4: str= STRING
                     {
                     str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_word3319); if (failed) return word;
+                    match(input,STRING,FOLLOW_STRING_in_word3431); if (failed) return word;
                     if ( backtracking==0 ) {
                        word=getString(str);
                     }
@@ -4793,14 +4879,14 @@
 
     // $ANTLR start synpred32
     public void synpred32_fragment() throws RecognitionException {   
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:4: ( ( ID paren_chunk ) )
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:4: ( ID paren_chunk )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:4: ( ( ID paren_chunk ) )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:4: ( ID paren_chunk )
         {
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:4: ( ID paren_chunk )
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:6: ID paren_chunk
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:4: ( ID paren_chunk )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:702:6: ID paren_chunk
         {
-        match(input,ID,FOLLOW_ID_in_synpred321334); if (failed) return ;
-        pushFollow(FOLLOW_paren_chunk_in_synpred321338);
+        match(input,ID,FOLLOW_ID_in_synpred321333); if (failed) return ;
+        pushFollow(FOLLOW_paren_chunk_in_synpred321337);
         paren_chunk();
         _fsp--;
         if (failed) return ;
@@ -4814,10 +4900,10 @@
 
     // $ANTLR start synpred35
     public void synpred35_fragment() throws RecognitionException {   
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:756:6: ( LEFT_PAREN )
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:756:8: LEFT_PAREN
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:742:6: ( LEFT_PAREN )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:742:8: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred351479); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred351478); if (failed) return ;
 
         }
     }
@@ -4860,20 +4946,20 @@
     public static final String DFA8_eofS =
         "\6\uffff";
     public static final String DFA8_minS =
-        "\2\4\1\uffff\1\16\1\uffff\1\4";
+        "\2\4\1\uffff\1\17\1\uffff\1\4";
     public static final String DFA8_maxS =
-        "\1\4\1\41\1\uffff\1\16\1\uffff\1\41";
+        "\1\4\1\44\1\uffff\1\17\1\uffff\1\44";
     public static final String DFA8_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\1\uffff";
     public static final String DFA8_specialS =
         "\6\uffff}>";
     public static final String[] DFA8_transition = {
         "\1\1",
-        "\1\2\7\uffff\1\4\1\3\20\uffff\1\2\2\uffff\1\4",
+        "\1\2\10\uffff\1\4\1\3\22\uffff\1\2\2\uffff\1\4",
         "",
         "\1\5",
         "",
-        "\1\2\7\uffff\1\4\1\3\23\uffff\1\4"
+        "\1\2\10\uffff\1\4\1\3\25\uffff\1\4"
     };
 
     class DFA8 extends DFA {
@@ -4901,20 +4987,20 @@
     public static final String DFA9_eofS =
         "\6\uffff";
     public static final String DFA9_minS =
-        "\2\4\1\16\2\uffff\1\4";
+        "\2\4\1\17\2\uffff\1\4";
     public static final String DFA9_maxS =
-        "\1\4\1\41\1\16\2\uffff\1\41";
+        "\1\4\1\44\1\17\2\uffff\1\44";
     public static final String DFA9_acceptS =
         "\3\uffff\1\2\1\1\1\uffff";
     public static final String DFA9_specialS =
         "\6\uffff}>";
     public static final String[] DFA9_transition = {
         "\1\1",
-        "\1\4\7\uffff\1\3\1\2\20\uffff\1\4\2\uffff\1\3",
+        "\1\4\10\uffff\1\3\1\2\22\uffff\1\4\2\uffff\1\3",
         "\1\5",
         "",
         "",
-        "\1\4\7\uffff\1\3\1\2\23\uffff\1\3"
+        "\1\4\10\uffff\1\3\1\2\25\uffff\1\3"
     };
 
     class DFA9 extends DFA {
@@ -4939,236 +5025,239 @@
     }
  
 
-    public static final BitSet FOLLOW_26_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000003530000002L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000003530000002L});
+    public static final BitSet FOLLOW_29_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000006980000040L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000006980000042L});
     public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement114 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement130 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement148 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_27_in_package_statement195 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement199 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_package_statement201 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_import_statement218 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_import_name_in_import_statement222 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_import_statement224 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_function_import_statement240 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_29_in_function_import_statement242 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement246 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement248 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name280 = new BitSet(new long[]{0x00000000C0000002L});
-    public static final BitSet FOLLOW_30_in_import_name286 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_import_name290 = new BitSet(new long[]{0x00000000C0000002L});
-    public static final BitSet FOLLOW_31_in_import_name300 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_32_in_global324 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_global328 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_global332 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_global334 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_29_in_function361 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_function366 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_function372 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_function381 = new BitSet(new long[]{0x0000000000001010L});
-    public static final BitSet FOLLOW_dotted_name_in_function391 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_argument_in_function397 = new BitSet(new long[]{0x0000000200001000L});
-    public static final BitSet FOLLOW_33_in_function411 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_function416 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_argument_in_function422 = new BitSet(new long[]{0x0000000200001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_function446 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_CURLY_CHUNK_in_function452 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_query483 = new BitSet(new long[]{0x0000066C10000250L,0x0000000000000200L});
-    public static final BitSet FOLLOW_word_in_query487 = new BitSet(new long[]{0x0000000800000810L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query501 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_query516 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_template542 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_template546 = new BitSet(new long[]{0x0000000004000010L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template548 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_template_slot_in_template563 = new BitSet(new long[]{0x0000000800000010L});
-    public static final BitSet FOLLOW_35_in_template578 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template580 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_template_slot612 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_template_slot616 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template_slot618 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_rule649 = new BitSet(new long[]{0x0000066C10000250L,0x0000000000000200L});
-    public static final BitSet FOLLOW_word_in_rule653 = new BitSet(new long[]{0x00007F4200000040L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule662 = new BitSet(new long[]{0x0000004000000040L});
-    public static final BitSet FOLLOW_38_in_rule671 = new BitSet(new long[]{0x0000008000000850L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_39_in_rule673 = new BitSet(new long[]{0x0000000000000850L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule691 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_RHS_in_rule714 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_rule_attributes739 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_rule_attributes741 = new BitSet(new long[]{0x00007E0200000002L});
-    public static final BitSet FOLLOW_33_in_rule_attributes750 = new BitSet(new long[]{0x00007E0000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes755 = new BitSet(new long[]{0x00007E0200000002L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute806 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute817 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute830 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute844 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_salience889 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_INT_in_salience893 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_salience895 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_42_in_no_loop930 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_no_loop932 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_42_in_no_loop957 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop961 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_no_loop963 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_auto_focus1009 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_auto_focus1036 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1040 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1042 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_44_in_activation_group1084 = new BitSet(new long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1088 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_activation_group1090 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_agenda_group1119 = new BitSet(new long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1123 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_agenda_group1125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_46_in_duration1157 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_INT_in_duration1161 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1187 = new BitSet(new long[]{0x0000000000000812L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs1225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_column1253 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_column1262 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_47_in_from_statement1287 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_from_source_in_from_statement1291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1334 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source1338 = new BitSet(new long[]{0x0000000040000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1371 = new BitSet(new long[]{0x0000000040000002L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source1394 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_30_in_expression_chain1419 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1423 = new BitSet(new long[]{0x0000000040002802L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain1454 = new BitSet(new long[]{0x0000000040000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1487 = new BitSet(new long[]{0x0000000040000002L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1507 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_47_in_accumulate_statement1548 = new BitSet(new long[]{0x0001000000000000L});
-    public static final BitSet FOLLOW_48_in_accumulate_statement1550 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement1560 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_accumulate_statement1564 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_accumulate_statement1566 = new BitSet(new long[]{0x0002000000000000L});
-    public static final BitSet FOLLOW_49_in_accumulate_statement1575 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1579 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_accumulate_statement1581 = new BitSet(new long[]{0x0004000000000000L});
-    public static final BitSet FOLLOW_50_in_accumulate_statement1590 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1594 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_accumulate_statement1596 = new BitSet(new long[]{0x0008000000000000L});
-    public static final BitSet FOLLOW_51_in_accumulate_statement1605 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1609 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement1611 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_47_in_collect_statement1654 = new BitSet(new long[]{0x0010000000000000L});
-    public static final BitSet FOLLOW_52_in_collect_statement1656 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement1666 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_collect_statement1670 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement1672 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding1707 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_fact_binding1717 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_binding1721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression1753 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression1757 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression1760 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression1771 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression_in_paren1802 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren1806 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren1808 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren1819 = new BitSet(new long[]{0x0060000000000002L});
-    public static final BitSet FOLLOW_set_in_fact_expression_in_paren1832 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren1849 = new BitSet(new long[]{0x0060000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_fact1888 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact1901 = new BitSet(new long[]{0x0000000000001010L});
-    public static final BitSet FOLLOW_constraints_in_fact1913 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact1934 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints1964 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_predicate_in_constraints1967 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_33_in_constraints1975 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_constraint_in_constraints1978 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_predicate_in_constraints1981 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_ID_in_constraint2010 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_constraint2012 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_constraint2022 = new BitSet(new long[]{0xFE00000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2038 = new BitSet(new long[]{0x0180000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint2057 = new BitSet(new long[]{0xFE00000000000000L,0x0000000000000003L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2074 = new BitSet(new long[]{0x0180000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint_expression2126 = new BitSet(new long[]{0x0000000000000F90L,0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_constraint_expression2193 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2209 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2232 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2246 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2296 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2309 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2320 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_66_in_literal_constraint2332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2363 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_enum_constraint2365 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2369 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_predicate2391 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_predicate2393 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_predicate2397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_predicate2399 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2450 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk2466 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2490 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk2526 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk2587 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_set_in_square_chunk2603 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_square_chunk_in_square_chunk2627 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk2663 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2708 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2741 = new BitSet(new long[]{0x0060000000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or2750 = new BitSet(new long[]{0x0000000000000810L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2760 = new BitSet(new long[]{0x0060000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2796 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
-    public static final BitSet FOLLOW_set_in_lhs_and2805 = new BitSet(new long[]{0x0000000000000810L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2815 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2852 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2860 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2868 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_unary2876 = new BitSet(new long[]{0x0000800004000002L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary2896 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary2918 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_collect_statement_in_lhs_unary2939 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2962 = new BitSet(new long[]{0x0000000000000810L,0x00000000000001C0L});
-    public static final BitSet FOLLOW_lhs_in_lhs_unary2966 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2968 = new BitSet(new long[]{0x0000000004000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary2978 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_70_in_lhs_exist3002 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3005 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3009 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3017 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_71_in_lhs_not3047 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3050 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3054 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3057 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3063 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_72_in_lhs_eval3091 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3095 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3126 = new BitSet(new long[]{0x0000000040002002L});
-    public static final BitSet FOLLOW_30_in_dotted_name3132 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3136 = new BitSet(new long[]{0x0000000040002002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name3145 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name3147 = new BitSet(new long[]{0x0000000000002002L});
-    public static final BitSet FOLLOW_ID_in_argument3177 = new BitSet(new long[]{0x0000000000002002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument3183 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument3185 = new BitSet(new long[]{0x0000000000002002L});
-    public static final BitSet FOLLOW_ID_in_word3213 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_word3225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_73_in_word3234 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_word3246 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_word3257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_word3267 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_42_in_word3275 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_38_in_word3283 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RHS_in_word3294 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_word3305 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_word3319 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_synpred321334 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_paren_chunk_in_synpred321338 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred351479 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement132 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement138 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement152 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement161 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement171 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_30_in_package_statement200 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement204 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_package_statement206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_import_statement223 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_import_name_in_import_statement227 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_import_statement229 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_function_import_statement245 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_32_in_function_import_statement247 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement251 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name285 = new BitSet(new long[]{0x0000000600000002L});
+    public static final BitSet FOLLOW_33_in_import_name291 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_import_name295 = new BitSet(new long[]{0x0000000600000002L});
+    public static final BitSet FOLLOW_34_in_import_name305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_global329 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_dotted_name_in_global333 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_global337 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_global339 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_32_in_function366 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_dotted_name_in_function371 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_function377 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function386 = new BitSet(new long[]{0x0000000000002010L});
+    public static final BitSet FOLLOW_dotted_name_in_function396 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_argument_in_function402 = new BitSet(new long[]{0x0000001000002000L});
+    public static final BitSet FOLLOW_36_in_function416 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_dotted_name_in_function421 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_argument_in_function427 = new BitSet(new long[]{0x0000001000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function451 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_CURLY_CHUNK_in_function457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_query488 = new BitSet(new long[]{0x00000620800304D0L,0x0000000000000200L});
+    public static final BitSet FOLLOW_word_in_query492 = new BitSet(new long[]{0x0000000000011010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query506 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_END_in_query521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_38_in_template547 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_template551 = new BitSet(new long[]{0x0000000020000010L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template553 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_template_slot_in_template568 = new BitSet(new long[]{0x0000000000010010L});
+    public static final BitSet FOLLOW_END_in_template583 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template585 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_template_slot617 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_template_slot621 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template_slot623 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_rule654 = new BitSet(new long[]{0x00000620800304D0L,0x0000000000000200L});
+    public static final BitSet FOLLOW_word_in_rule658 = new BitSet(new long[]{0x00007F1000020080L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule667 = new BitSet(new long[]{0x0000000000020080L});
+    public static final BitSet FOLLOW_WHEN_in_rule676 = new BitSet(new long[]{0x0000008000021010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_39_in_rule678 = new BitSet(new long[]{0x0000000000021010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule696 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_rule_attributes738 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_39_in_rule_attributes740 = new BitSet(new long[]{0x00007E1000000002L});
+    public static final BitSet FOLLOW_36_in_rule_attributes749 = new BitSet(new long[]{0x00007E0000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes754 = new BitSet(new long[]{0x00007E1000000002L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute795 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute805 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute816 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute829 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute854 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_salience888 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_INT_in_salience892 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_salience894 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_42_in_no_loop929 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_no_loop931 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_42_in_no_loop956 = new BitSet(new long[]{0x0000000000000200L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop960 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_no_loop962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_auto_focus1008 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1010 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_auto_focus1035 = new BitSet(new long[]{0x0000000000000200L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1039 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1041 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_44_in_activation_group1083 = new BitSet(new long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1087 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_activation_group1089 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_45_in_agenda_group1118 = new BitSet(new long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1122 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_agenda_group1124 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_46_in_duration1156 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_INT_in_duration1160 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1186 = new BitSet(new long[]{0x0000000000001012L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs1224 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_column1252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_column1261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_47_in_from_statement1286 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_from_source_in_from_statement1290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source1333 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source1337 = new BitSet(new long[]{0x0000000200000002L});
+    public static final BitSet FOLLOW_ID_in_from_source1370 = new BitSet(new long[]{0x0000000200000002L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source1393 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_expression_chain1418 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_expression_chain1422 = new BitSet(new long[]{0x0000000200005002L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain1453 = new BitSet(new long[]{0x0000000200000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1486 = new BitSet(new long[]{0x0000000200000002L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1506 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_47_in_accumulate_statement1547 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_48_in_accumulate_statement1549 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement1559 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_lhs_column_in_accumulate_statement1563 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_accumulate_statement1565 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_49_in_accumulate_statement1574 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1578 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_accumulate_statement1580 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_50_in_accumulate_statement1589 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1593 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_accumulate_statement1595 = new BitSet(new long[]{0x0008000000000000L});
+    public static final BitSet FOLLOW_51_in_accumulate_statement1604 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1608 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement1610 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_47_in_collect_statement1653 = new BitSet(new long[]{0x0010000000000000L});
+    public static final BitSet FOLLOW_52_in_collect_statement1655 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement1665 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_lhs_column_in_collect_statement1669 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement1671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding1706 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_39_in_fact_binding1716 = new BitSet(new long[]{0x0000000000001010L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_binding1720 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression1752 = new BitSet(new long[]{0x0000000000001010L});
+    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression1756 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression1759 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression1770 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression_in_paren1801 = new BitSet(new long[]{0x0000000000001010L});
+    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren1805 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren1807 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren1818 = new BitSet(new long[]{0x0060000000000002L});
+    public static final BitSet FOLLOW_set_in_fact_expression_in_paren1831 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren1848 = new BitSet(new long[]{0x0060000000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_fact1887 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact1900 = new BitSet(new long[]{0x0000000000002010L});
+    public static final BitSet FOLLOW_constraints_in_fact1912 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact1933 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints1963 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_predicate_in_constraints1966 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_36_in_constraints1974 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_constraint_in_constraints1977 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_predicate_in_constraints1980 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_ID_in_constraint2009 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_39_in_constraint2011 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_constraint2021 = new BitSet(new long[]{0xFE00000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2037 = new BitSet(new long[]{0x0180000000000002L});
+    public static final BitSet FOLLOW_set_in_constraint2056 = new BitSet(new long[]{0xFE00000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2073 = new BitSet(new long[]{0x0180000000000002L});
+    public static final BitSet FOLLOW_set_in_constraint_expression2125 = new BitSet(new long[]{0x0000000000001F10L,0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_constraint_expression2192 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2245 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2284 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2308 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2319 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_66_in_literal_constraint2331 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2362 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_enum_constraint2364 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_predicate2390 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_39_in_predicate2392 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_predicate2396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_predicate2398 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2402 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2449 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk2465 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2489 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk2525 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk2586 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_set_in_square_chunk2602 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_square_chunk_in_square_chunk2626 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk2662 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2707 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2740 = new BitSet(new long[]{0x0060000000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_or2749 = new BitSet(new long[]{0x0000000000001010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2759 = new BitSet(new long[]{0x0060000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2795 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
+    public static final BitSet FOLLOW_set_in_lhs_and2804 = new BitSet(new long[]{0x0000000000001010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2814 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2851 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2859 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2867 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_unary2875 = new BitSet(new long[]{0x0000800020000002L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary2895 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary2917 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_collect_statement_in_lhs_unary2938 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2961 = new BitSet(new long[]{0x0000000000001010L,0x00000000000001C0L});
+    public static final BitSet FOLLOW_lhs_in_lhs_unary2965 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2967 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary2977 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_70_in_lhs_exist3001 = new BitSet(new long[]{0x0000000000001010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3004 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3008 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3010 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3016 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_71_in_lhs_not3046 = new BitSet(new long[]{0x0000000000001010L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3049 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3053 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3056 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_72_in_lhs_eval3090 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3094 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3125 = new BitSet(new long[]{0x0000000200004002L});
+    public static final BitSet FOLLOW_33_in_dotted_name3131 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3135 = new BitSet(new long[]{0x0000000200004002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name3144 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name3146 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_ID_in_argument3176 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument3182 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument3184 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk3228 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk3240 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x00000000000003FFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk3275 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_word3317 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_word3329 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_73_in_word3338 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_word3350 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_word3363 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_word3373 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_42_in_word3381 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_word3389 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_word3402 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_END_in_word3415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_word3431 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_synpred321333 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_paren_chunk_in_synpred321337 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred351478 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2006-12-13 17:37:12 UTC (rev 8295)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2006-12-13 18:53:45 UTC (rev 8296)
@@ -285,7 +285,7 @@
 
 compilation_unit
 	:	prolog 
-		( statement )*
+		( statement )+
 	;
 	
 prolog
@@ -300,14 +300,14 @@
 	
 statement
 	:
-	(	import_statement
-	|       function_import_statement
-	|	global
-	|	function
+	(	import_statement 
+	|       function_import_statement 
+	|	global 
+	|	function 
 	|       t=template {this.packageDescr.addFactTemplate( t ); }
 	|	r=rule 	{this.packageDescr.addRule( r ); }
 	|	q=query	{this.packageDescr.addRule( q ); }
-	)
+	) 
 	;
 
 package_statement returns [String packageName]
@@ -458,14 +458,14 @@
 		AndDescr lhs = null;
 	}
 	:
-		loc='rule' ruleName=word 
+		loc=RULE ruleName=word 
 		{ 
 			debug( "start rule: " + ruleName );
 			rule = new RuleDescr( ruleName, null ); 
 			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
 		}
 		rule_attributes[rule]
-		(	loc='when' ':'?
+		(	loc=WHEN ':'?
 			{ 
 				lhs = new AndDescr(); rule.setLhs( lhs ); 
 				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -476,21 +476,7 @@
 			)
 					
 		)?
-		rhs=RHS
-			{
-				consequence = rhs.getText();
-				//strip out "then", "end"
-				consequence = consequence.substring(4,consequence.length()-3);
-				
-				if ( expander != null ) {
-					String expanded = runThenExpander( consequence, offset(rhs.getLine()) );
-					rule.setConsequence( expanded );
-				} else { 
-					rule.setConsequence( consequence ); 
-				}
-				rule.setConsequenceLocation(offset(rhs.getLine()), rhs.getCharPositionInLine());
-				debug( "end rule: " + ruleName );
-			}
+		rhs_chunk[rule]
 	;
 	
 
@@ -1278,6 +1264,38 @@
 		id=ID { name=id.getText(); } ( '[' ']' { name = name + "[]";})*
 	;
 
+rhs_chunk[RuleDescr rule]
+        @init {
+           StringBuffer buf = null;
+           Integer channel = null;
+        }
+	:
+	        {
+	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+		    buf = new StringBuffer();
+	        }
+		start='then'
+		( 
+			  ~END
+			  {
+			    buf.append( input.LT(-1).getText() );
+			  }
+		)*
+		{
+		    if( channel != null ) {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+		    } else {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+		    }
+		}
+                END
+                {
+		    rule.setConsequence( buf.toString() );
+     		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
+                }
+	;
+
 	
 word returns [String word]
 	@init{
@@ -1286,18 +1304,18 @@
 	:	id=ID      { word=id.getText(); }
 	|	'import'   { word="import"; }
 	|	'use'      { word="use"; }
-	|	'rule'     { word="rule"; }
+	|	RULE       { word="rule"; }
 	|	'query'    { word="query"; }
 	|	'salience' { word="salience"; }
  	|	'no-loop'  { word="no-loop"; }
-	|	'when'     { word="when"; }
-	|	'then'     { word="then"; }
-	|	'end'      { word="end"; }
+	|	WHEN       { word="when"; }
+	|	THEN       { word="then"; }
+	|	END        { word="end"; }
 	|	str=STRING { word=getString(str);} //str.getText(); word=word.substring( 1, word.length()-1 ); }
 	;
 
-RHS	:'then' (options{greedy=false;} : .)* ('\n'|'\r') (' '|'\t'|'\f')* 'end'
-	;
+//RHS	:'then' (options{greedy=false;} : .)* ('\n'|'\r') (' '|'\t'|'\f')* 'end'
+//	;
 
 WS      :       (	' '
                 |	'\t'
@@ -1354,6 +1372,14 @@
 	:	('true'|'false') 
 	;	
 	
+RULE    :	'rule';
+
+WHEN    :	'when';
+
+THEN	:    	'then';
+
+END     :	'end';
+
 ID	
 	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')* 
 	;

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-12-13 17:37:12 UTC (rev 8295)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-12-13 18:53:45 UTC (rev 8296)
@@ -2055,7 +2055,7 @@
         assertEquals( "foo.bar",
                       pack.getName() );
 
-        assertFalse( parser.hasErrors() );
+        assertFalse( parser.getErrorMessages().toString(), parser.hasErrors() );
     }
 
     public void testAttributes() throws Exception {
@@ -2466,15 +2466,4 @@
 		}
     }
     
-//    public void testStop() {
-//        while(true) {
-//            try {
-//                Thread.sleep( 100000 );
-//            } catch ( InterruptedException e ) {
-//                // TODO Auto-generated catch block
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/comment.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/comment.drl	2006-12-13 17:37:12 UTC (rev 8295)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/comment.drl	2006-12-13 18:53:45 UTC (rev 8296)
@@ -7,4 +7,9 @@
 yet
 	   another
    				style
-*/
\ No newline at end of file
+*/
+
+rule "test"
+  when
+  then
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list