[jboss-svn-commits] JBL Code SVN: r11396 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/lang/descr and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 26 21:28:00 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-26 21:27:59 -0400 (Thu, 26 Apr 2007)
New Revision: 11396

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL.tokens
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL__.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/descr/PackageDescrTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/package_attributes.drl
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/java/org/drools/lang/descr/PackageDescr.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
Log:
JBRULES-820 package attributes

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL.tokens
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL.tokens	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL.tokens	2007-04-27 01:27:59 UTC (rev 11396)
@@ -0,0 +1,80 @@
+EXISTS=49
+AUTO_FOCUS=22
+END=10
+HexDigit=57
+FORALL=52
+TEMPLATE=11
+MISC=63
+FLOAT=41
+QUERY=9
+THEN=53
+RULE=12
+INIT=30
+IMPORT=6
+DATE_EFFECTIVE=14
+PACKAGE=5
+OR=35
+AND=47
+FUNCTION=7
+GLOBAL=8
+EscapeSequence=56
+DIALECT=27
+INT=20
+LOCK_ON_ACTIVE=28
+DATE_EXPIRES=16
+LEFT_SQUARE=45
+CONTAINS=38
+SH_STYLE_SINGLE_LINE_COMMENT=60
+ATTRIBUTES=4
+RESULT=32
+LEFT_CURLY=43
+FROM=48
+ID=34
+ACTIVATION_GROUP=23
+LEFT_PAREN=36
+RIGHT_CURLY=44
+BOOL=18
+EXCLUDES=40
+WHEN=13
+RULEFLOW_GROUP=24
+WS=55
+STRING=15
+ACTION=31
+COLLECT=33
+NO_LOOP=21
+ACCUMULATE=29
+UnicodeEscape=58
+DURATION=26
+EVAL=51
+MATCHES=39
+EOL=54
+AGENDA_GROUP=25
+NULL=42
+OctalEscape=59
+SALIENCE=19
+MULTI_LINE_COMMENT=62
+NOT=50
+RIGHT_PAREN=37
+ENABLED=17
+RIGHT_SQUARE=46
+C_STYLE_SINGLE_LINE_COMMENT=61
+'->'=72
+'<'=76
+'|'=71
+'>'=74
+')'=37
+'=='=73
+';'=64
+']'=46
+'!='=78
+','=66
+'('=36
+'&'=70
+'&&'=79
+'>='=75
+':'=65
+'.'=67
+'<='=77
+'||'=69
+'['=45
+'.*'=68


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL.tokens
___________________________________________________________________
Name: svn:eol-style
   + native

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	2007-04-27 01:07:05 UTC (rev 11395)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-04-27 01:27:59 UTC (rev 11396)
@@ -1,8 +1,8 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-04-24 04:47:08
-
-	package org.drools.lang;
+// $ANTLR 3.0b7 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-27 11:20:36
 
+	package org.drools.lang;
 
+
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -10,116 +10,99 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int T75=75;
-    public static final int PACKAGE=4;
-    public static final int FUNCTION=6;
-    public static final int ACCUMULATE=28;
-    public static final int T76=76;
-    public static final int RIGHT_SQUARE=45;
-    public static final int T73=73;
+    public static final int EXISTS=49;
+    public static final int T79=79;
+    public static final int AUTO_FOCUS=22;
+    public static final int END=10;
+    public static final int HexDigit=57;
+    public static final int FORALL=52;
+    public static final int TEMPLATE=11;
+    public static final int T70=70;
+    public static final int MISC=63;
+    public static final int FLOAT=41;
     public static final int T74=74;
+    public static final int QUERY=9;
+    public static final int THEN=53;
+    public static final int RULE=12;
+    public static final int INIT=30;
+    public static final int IMPORT=6;
+    public static final int OR=35;
+    public static final int PACKAGE=5;
+    public static final int DATE_EFFECTIVE=14;
+    public static final int T64=64;
+    public static final int AND=47;
+    public static final int FUNCTION=7;
+    public static final int GLOBAL=8;
+    public static final int EscapeSequence=56;
+    public static final int DIALECT=27;
+    public static final int INT=20;
+    public static final int LOCK_ON_ACTIVE=28;
+    public static final int DATE_EXPIRES=16;
+    public static final int LEFT_SQUARE=45;
+    public static final int CONTAINS=38;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=60;
+    public static final int T77=77;
+    public static final int ATTRIBUTES=4;
+    public static final int RESULT=32;
+    public static final int LEFT_CURLY=43;
+    public static final int T69=69;
+    public static final int FROM=48;
+    public static final int ID=34;
     public static final int ACTIVATION_GROUP=23;
-    public static final int T77=77;
-    public static final int RIGHT_CURLY=43;
-    public static final int ATTRIBUTES=13;
+    public static final int LEFT_PAREN=36;
+    public static final int RIGHT_CURLY=44;
+    public static final int BOOL=18;
+    public static final int EXCLUDES=40;
+    public static final int T73=73;
+    public static final int T68=68;
+    public static final int WHEN=13;
     public static final int T78=78;
-    public static final int CONTAINS=37;
+    public static final int RULEFLOW_GROUP=24;
+    public static final int WS=55;
+    public static final int STRING=15;
+    public static final int T66=66;
+    public static final int ACTION=31;
+    public static final int T71=71;
+    public static final int T72=72;
+    public static final int T65=65;
+    public static final int COLLECT=33;
+    public static final int T76=76;
+    public static final int ACCUMULATE=29;
     public static final int NO_LOOP=21;
-    public static final int LOCK_ON_ACTIVE=27;
-    public static final int AGENDA_GROUP=25;
-    public static final int FLOAT=40;
-    public static final int NOT=49;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=59;
-    public static final int ID=33;
-    public static final int AND=46;
+    public static final int UnicodeEscape=58;
+    public static final int T75=75;
+    public static final int DURATION=26;
+    public static final int EVAL=51;
+    public static final int MATCHES=39;
     public static final int EOF=-1;
-    public static final int HexDigit=56;
-    public static final int DATE_EFFECTIVE=14;
-    public static final int T72=72;
-    public static final int ACTION=30;
-    public static final int T71=71;
-    public static final int T70=70;
-    public static final int T63=63;
-    public static final int T64=64;
-    public static final int RIGHT_PAREN=36;
-    public static final int T65=65;
-    public static final int IMPORT=5;
-    public static final int T66=66;
-    public static final int EOL=53;
     public static final int T67=67;
-    public static final int THEN=52;
-    public static final int T68=68;
-    public static final int T69=69;
-    public static final int MATCHES=38;
+    public static final int NULL=42;
+    public static final int AGENDA_GROUP=25;
+    public static final int EOL=54;
+    public static final int Tokens=80;
+    public static final int SALIENCE=19;
+    public static final int OctalEscape=59;
+    public static final int MULTI_LINE_COMMENT=62;
+    public static final int RIGHT_PAREN=37;
+    public static final int NOT=50;
     public static final int ENABLED=17;
-    public static final int EXISTS=48;
-    public static final int RULE=11;
-    public static final int EXCLUDES=39;
-    public static final int AUTO_FOCUS=22;
-    public static final int NULL=41;
-    public static final int BOOL=18;
-    public static final int FORALL=51;
-    public static final int SALIENCE=19;
-    public static final int RULEFLOW_GROUP=24;
-    public static final int RESULT=31;
-    public static final int INT=20;
-    public static final int Tokens=79;
-    public static final int MULTI_LINE_COMMENT=61;
-    public static final int DURATION=26;
-    public static final int WS=54;
-    public static final int TEMPLATE=10;
-    public static final int EVAL=50;
-    public static final int WHEN=12;
-    public static final int UnicodeEscape=57;
-    public static final int LEFT_CURLY=42;
-    public static final int OR=34;
-    public static final int LEFT_PAREN=35;
-    public static final int QUERY=8;
-    public static final int GLOBAL=7;
-    public static final int END=9;
-    public static final int FROM=47;
-    public static final int MISC=62;
-    public static final int COLLECT=32;
-    public static final int INIT=29;
-    public static final int LEFT_SQUARE=44;
-    public static final int EscapeSequence=55;
-    public static final int OctalEscape=58;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=60;
-    public static final int STRING=15;
-    public static final int DATE_EXPIRES=16;
+    public static final int RIGHT_SQUARE=46;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=61;
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[77+1];
+        ruleMemo = new HashMap[78+1];
      }
-    public String getGrammarFileName() { return "C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g"; }
+    public String getGrammarFileName() { return "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
-    // $ANTLR start T63
-    public final void mT63() throws RecognitionException {
-        try {
-            int _type = T63;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:6:7: ( ';' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:6:7: ';'
-            {
-            match(';'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end T63
-
     // $ANTLR start T64
     public final void mT64() throws RecognitionException {
         try {
             int _type = T64;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: ( '.' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: '.'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ( ';' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ';'
             {
-            match('.'); if (failed) return ;
+            match(';'); if (failed) return ;
 
             }
 
@@ -134,12 +117,11 @@
     public final void mT65() throws RecognitionException {
         try {
             int _type = T65;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: ( '.*' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: '.*'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ( ':' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ':'
             {
-            match(".*"); if (failed) return ;
+            match(':'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -153,8 +135,8 @@
     public final void mT66() throws RecognitionException {
         try {
             int _type = T66;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ( ',' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ','
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ( ',' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ','
             {
             match(','); if (failed) return ;
 
@@ -171,10 +153,10 @@
     public final void mT67() throws RecognitionException {
         try {
             int _type = T67;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ( ':' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ':'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: ( '.' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: '.'
             {
-            match(':'); if (failed) return ;
+            match('.'); if (failed) return ;
 
             }
 
@@ -189,10 +171,10 @@
     public final void mT68() throws RecognitionException {
         try {
             int _type = T68;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: ( '||' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: '||'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: ( '.*' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: '.*'
             {
-            match("||"); if (failed) return ;
+            match(".*"); if (failed) return ;
 
 
             }
@@ -208,11 +190,12 @@
     public final void mT69() throws RecognitionException {
         try {
             int _type = T69;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: ( '&' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: '&'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: ( '||' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: '||'
             {
-            match('&'); if (failed) return ;
+            match("||"); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -226,10 +209,10 @@
     public final void mT70() throws RecognitionException {
         try {
             int _type = T70;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ( '|' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: '|'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: ( '&' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: '&'
             {
-            match('|'); if (failed) return ;
+            match('&'); if (failed) return ;
 
             }
 
@@ -244,12 +227,11 @@
     public final void mT71() throws RecognitionException {
         try {
             int _type = T71;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: ( '->' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: '->'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: ( '|' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: '|'
             {
-            match("->"); if (failed) return ;
+            match('|'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -263,10 +245,10 @@
     public final void mT72() throws RecognitionException {
         try {
             int _type = T72;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: ( '==' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: '=='
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: ( '->' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: '->'
             {
-            match("=="); if (failed) return ;
+            match("->"); if (failed) return ;
 
 
             }
@@ -282,11 +264,12 @@
     public final void mT73() throws RecognitionException {
         try {
             int _type = T73;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ( '>' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: '>'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: ( '==' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: '=='
             {
-            match('>'); if (failed) return ;
+            match("=="); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -300,12 +283,11 @@
     public final void mT74() throws RecognitionException {
         try {
             int _type = T74;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: ( '>=' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: '>='
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: ( '>' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: '>'
             {
-            match(">="); if (failed) return ;
+            match('>'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -319,11 +301,12 @@
     public final void mT75() throws RecognitionException {
         try {
             int _type = T75;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: ( '<' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: '<'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: ( '>=' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: '>='
             {
-            match('<'); if (failed) return ;
+            match(">="); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -337,12 +320,11 @@
     public final void mT76() throws RecognitionException {
         try {
             int _type = T76;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ( '<=' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: '<='
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: ( '<' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: '<'
             {
-            match("<="); if (failed) return ;
+            match('<'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -356,10 +338,10 @@
     public final void mT77() throws RecognitionException {
         try {
             int _type = T77;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: ( '!=' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: '!='
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: ( '<=' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: '<='
             {
-            match("!="); if (failed) return ;
+            match("<="); if (failed) return ;
 
 
             }
@@ -375,10 +357,10 @@
     public final void mT78() throws RecognitionException {
         try {
             int _type = T78;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: ( '&&' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: '&&'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: ( '!=' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: '!='
             {
-            match("&&"); if (failed) return ;
+            match("!="); if (failed) return ;
 
 
             }
@@ -390,14 +372,33 @@
     }
     // $ANTLR end T78
 
+    // $ANTLR start T79
+    public final void mT79() throws RecognitionException {
+        try {
+            int _type = T79;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: ( '&&' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: '&&'
+            {
+            match("&&"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T79
+
     // $ANTLR start WS
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ' ' | '\\t' | '\\f' | EOL )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ' ' | '\\t' | '\\f' | EOL )
             int alt1=4;
             switch ( input.LA(1) ) {
             case ' ':
@@ -424,35 +425,35 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1465:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
+                    new NoViableAltException("1489:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:19: ' '
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:19: ' '
                     {
                     match(' '); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1466:19: '\\t'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1490:19: '\\t'
                     {
                     match('\t'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1467:19: '\\f'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1491:19: '\\f'
                     {
                     match('\f'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1468:19: EOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:19: EOL
                     {
                     mEOL(); if (failed) return ;
 
@@ -477,10 +478,10 @@
     // $ANTLR start EOL
     public final void mEOL() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -499,13 +500,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1475:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -513,14 +514,14 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1476:25: '\\r'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1500:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1477:25: '\\n'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1501:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -542,10 +543,10 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:4: ( ( '-' )? ( '0' .. '9' )+ )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:4: ( '-' )? ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( '-' )? ( '0' .. '9' )+
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:4: ( '-' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -554,7 +555,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:5: '-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -563,7 +564,7 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:10: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -577,7 +578,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1482:11: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -608,10 +609,10 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:4: ( '-' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -620,7 +621,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:5: '-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -629,7 +630,7 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:10: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -643,7 +644,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:11: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -661,7 +662,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:26: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -675,7 +676,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1486:27: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -706,7 +707,7 @@
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:8: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -719,19 +720,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1489:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+                    new NoViableAltException("1513:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -747,14 +748,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:15: EscapeSequence
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1490:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -784,13 +785,13 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -806,14 +807,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:16: EscapeSequence
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -854,8 +855,8 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519: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();
@@ -880,12 +881,17 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1499:9: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1523: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':
+                    {
+                    alt11=2;
+                    }
+                    break;
                 case '\"':
                 case '\'':
                 case '.':
@@ -899,11 +905,6 @@
                     alt11=1;
                     }
                     break;
-                case 'u':
-                    {
-                    alt11=2;
-                    }
-                    break;
                 case '0':
                 case '1':
                 case '2':
@@ -919,7 +920,7 @@
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1497:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
+                        new NoViableAltException("1521:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
 
                     throw nvae;
                 }
@@ -928,13 +929,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1497:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
+                    new NoViableAltException("1521:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1499:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1523:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' )
                     {
                     match('\\'); if (failed) return ;
                     if ( input.LA(1)=='\"'||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' ) {
@@ -952,14 +953,14 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1500:9: UnicodeEscape
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1524:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1501:9: OctalEscape
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1525:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -976,7 +977,7 @@
     // $ANTLR start OctalEscape
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -1010,7 +1011,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1504:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+                        new NoViableAltException("1528:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -1018,31 +1019,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1504:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+                    new NoViableAltException("1528:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:14: ( '0' .. '3' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:15: '0' .. '3'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:14: ( '0' .. '3' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:25: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:26: '0' .. '7'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:25: ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:36: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1506:37: '0' .. '7'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:36: ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1052,18 +1053,18 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1507:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1507:14: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1507:15: '0' .. '7'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:14: ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1507:25: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1507:26: '0' .. '7'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:25: ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1073,11 +1074,11 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1508:9: '\\\\' ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1508:14: ( '0' .. '7' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1508:15: '0' .. '7'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:14: ( '0' .. '7' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1097,8 +1098,8 @@
     // $ANTLR start UnicodeEscape
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1513:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1513:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -1119,10 +1120,10 @@
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1517:4: ( ( 'true' | 'false' ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1517:4: ( 'true' | 'false' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( ( 'true' | 'false' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( 'true' | 'false' )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1517:4: ( 'true' | 'false' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1135,13 +1136,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1517:4: ( 'true' | 'false' )", 13, 0, input);
+                    new NoViableAltException("1541:4: ( 'true' | 'false' )", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1517:5: 'true'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -1149,7 +1150,7 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1517:12: 'false'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -1173,8 +1174,8 @@
     public final void mPACKAGE() throws RecognitionException {
         try {
             int _type = PACKAGE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1520:11: ( 'package' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1520:11: 'package'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:11: ( 'package' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:11: 'package'
             {
             match("package"); if (failed) return ;
 
@@ -1192,8 +1193,8 @@
     public final void mIMPORT() throws RecognitionException {
         try {
             int _type = IMPORT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1522:10: ( 'import' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1522:10: 'import'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:10: ( 'import' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:10: 'import'
             {
             match("import"); if (failed) return ;
 
@@ -1211,8 +1212,8 @@
     public final void mFUNCTION() throws RecognitionException {
         try {
             int _type = FUNCTION;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1524:12: ( 'function' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1524:12: 'function'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:12: ( 'function' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:12: 'function'
             {
             match("function"); if (failed) return ;
 
@@ -1230,8 +1231,8 @@
     public final void mGLOBAL() throws RecognitionException {
         try {
             int _type = GLOBAL;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1526:10: ( 'global' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1526:10: 'global'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:10: ( 'global' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:10: 'global'
             {
             match("global"); if (failed) return ;
 
@@ -1249,8 +1250,8 @@
     public final void mRULE() throws RecognitionException {
         try {
             int _type = RULE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1528:11: ( 'rule' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1528:11: 'rule'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:11: ( 'rule' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:11: 'rule'
             {
             match("rule"); if (failed) return ;
 
@@ -1268,8 +1269,8 @@
     public final void mQUERY() throws RecognitionException {
         try {
             int _type = QUERY;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1530:9: ( 'query' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1530:9: 'query'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: ( 'query' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: 'query'
             {
             match("query"); if (failed) return ;
 
@@ -1287,8 +1288,8 @@
     public final void mTEMPLATE() throws RecognitionException {
         try {
             int _type = TEMPLATE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1532:12: ( 'template' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1532:12: 'template'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:12: ( 'template' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:12: 'template'
             {
             match("template"); if (failed) return ;
 
@@ -1306,8 +1307,8 @@
     public final void mATTRIBUTES() throws RecognitionException {
         try {
             int _type = ATTRIBUTES;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1534:14: ( 'attributes' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1534:14: 'attributes'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:14: ( 'attributes' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:14: 'attributes'
             {
             match("attributes"); if (failed) return ;
 
@@ -1325,8 +1326,8 @@
     public final void mDATE_EFFECTIVE() throws RecognitionException {
         try {
             int _type = DATE_EFFECTIVE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1537:4: ( 'date-effective' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1537:4: 'date-effective'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:4: ( 'date-effective' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:4: 'date-effective'
             {
             match("date-effective"); if (failed) return ;
 
@@ -1344,8 +1345,8 @@
     public final void mDATE_EXPIRES() throws RecognitionException {
         try {
             int _type = DATE_EXPIRES;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1540:4: ( 'date-expires' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1540:4: 'date-expires'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: ( 'date-expires' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: 'date-expires'
             {
             match("date-expires"); if (failed) return ;
 
@@ -1363,8 +1364,8 @@
     public final void mENABLED() throws RecognitionException {
         try {
             int _type = ENABLED;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1542:11: ( 'enabled' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1542:11: 'enabled'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:11: ( 'enabled' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:11: 'enabled'
             {
             match("enabled"); if (failed) return ;
 
@@ -1382,8 +1383,8 @@
     public final void mSALIENCE() throws RecognitionException {
         try {
             int _type = SALIENCE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1545:4: ( 'salience' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1545:4: 'salience'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: ( 'salience' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: 'salience'
             {
             match("salience"); if (failed) return ;
 
@@ -1401,8 +1402,8 @@
     public final void mNO_LOOP() throws RecognitionException {
         try {
             int _type = NO_LOOP;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1547:11: ( 'no-loop' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1547:11: 'no-loop'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:11: ( 'no-loop' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:11: 'no-loop'
             {
             match("no-loop"); if (failed) return ;
 
@@ -1420,8 +1421,8 @@
     public final void mAUTO_FOCUS() throws RecognitionException {
         try {
             int _type = AUTO_FOCUS;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1550:4: ( 'auto-focus' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1550:4: 'auto-focus'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:4: ( 'auto-focus' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:4: 'auto-focus'
             {
             match("auto-focus"); if (failed) return ;
 
@@ -1439,8 +1440,8 @@
     public final void mACTIVATION_GROUP() throws RecognitionException {
         try {
             int _type = ACTIVATION_GROUP;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1553:4: ( 'activation-group' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1553:4: 'activation-group'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: ( 'activation-group' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: 'activation-group'
             {
             match("activation-group"); if (failed) return ;
 
@@ -1458,8 +1459,8 @@
     public final void mAGENDA_GROUP() throws RecognitionException {
         try {
             int _type = AGENDA_GROUP;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1556:4: ( 'agenda-group' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1556:4: 'agenda-group'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: ( 'agenda-group' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: 'agenda-group'
             {
             match("agenda-group"); if (failed) return ;
 
@@ -1473,12 +1474,31 @@
     }
     // $ANTLR end AGENDA_GROUP
 
+    // $ANTLR start DIALECT
+    public final void mDIALECT() throws RecognitionException {
+        try {
+            int _type = DIALECT;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: ( 'dialect' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: 'dialect'
+            {
+            match("dialect"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end DIALECT
+
     // $ANTLR start RULEFLOW_GROUP
     public final void mRULEFLOW_GROUP() throws RecognitionException {
         try {
             int _type = RULEFLOW_GROUP;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1559:4: ( 'ruleflow-group' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1559:4: 'ruleflow-group'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: ( 'ruleflow-group' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: 'ruleflow-group'
             {
             match("ruleflow-group"); if (failed) return ;
 
@@ -1496,8 +1516,8 @@
     public final void mDURATION() throws RecognitionException {
         try {
             int _type = DURATION;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1562:4: ( 'duration' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1562:4: 'duration'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: ( 'duration' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: 'duration'
             {
             match("duration"); if (failed) return ;
 
@@ -1515,8 +1535,8 @@
     public final void mLOCK_ON_ACTIVE() throws RecognitionException {
         try {
             int _type = LOCK_ON_ACTIVE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1565:4: ( 'lock-on-active' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1565:4: 'lock-on-active'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: ( 'lock-on-active' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: 'lock-on-active'
             {
             match("lock-on-active"); if (failed) return ;
 
@@ -1534,8 +1554,8 @@
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1567:8: ( 'from' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1567:8: 'from'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:8: ( 'from' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:8: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -1553,8 +1573,8 @@
     public final void mACCUMULATE() throws RecognitionException {
         try {
             int _type = ACCUMULATE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1570:4: ( 'accumulate' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1570:4: 'accumulate'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:4: ( 'accumulate' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:4: 'accumulate'
             {
             match("accumulate"); if (failed) return ;
 
@@ -1572,8 +1592,8 @@
     public final void mINIT() throws RecognitionException {
         try {
             int _type = INIT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1572:8: ( 'init' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1572:8: 'init'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:8: ( 'init' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:8: 'init'
             {
             match("init"); if (failed) return ;
 
@@ -1591,8 +1611,8 @@
     public final void mACTION() throws RecognitionException {
         try {
             int _type = ACTION;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1574:10: ( 'action' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1574:10: 'action'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:10: ( 'action' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:10: 'action'
             {
             match("action"); if (failed) return ;
 
@@ -1610,8 +1630,8 @@
     public final void mRESULT() throws RecognitionException {
         try {
             int _type = RESULT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1576:10: ( 'result' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1576:10: 'result'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:10: ( 'result' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:10: 'result'
             {
             match("result"); if (failed) return ;
 
@@ -1629,8 +1649,8 @@
     public final void mCOLLECT() throws RecognitionException {
         try {
             int _type = COLLECT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1578:11: ( 'collect' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1578:11: 'collect'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:11: ( 'collect' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:11: 'collect'
             {
             match("collect"); if (failed) return ;
 
@@ -1648,8 +1668,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1580:6: ( 'or' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1580:6: 'or'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:6: ( 'or' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:6: 'or'
             {
             match("or"); if (failed) return ;
 
@@ -1667,8 +1687,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1582:7: ( 'and' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1582:7: 'and'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:7: ( 'and' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:7: 'and'
             {
             match("and"); if (failed) return ;
 
@@ -1686,8 +1706,8 @@
     public final void mCONTAINS() throws RecognitionException {
         try {
             int _type = CONTAINS;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1585:4: ( 'contains' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1585:4: 'contains'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: ( 'contains' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: 'contains'
             {
             match("contains"); if (failed) return ;
 
@@ -1705,8 +1725,8 @@
     public final void mEXCLUDES() throws RecognitionException {
         try {
             int _type = EXCLUDES;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1588:4: ( 'excludes' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1588:4: 'excludes'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: ( 'excludes' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: 'excludes'
             {
             match("excludes"); if (failed) return ;
 
@@ -1724,8 +1744,8 @@
     public final void mMATCHES() throws RecognitionException {
         try {
             int _type = MATCHES;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1590:11: ( 'matches' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1590:11: 'matches'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:11: ( 'matches' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:11: 'matches'
             {
             match("matches"); if (failed) return ;
 
@@ -1743,8 +1763,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1592:8: ( 'null' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1592:8: 'null'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:8: ( 'null' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:8: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -1762,8 +1782,8 @@
     public final void mEXISTS() throws RecognitionException {
         try {
             int _type = EXISTS;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1594:10: ( 'exists' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1594:10: 'exists'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:10: ( 'exists' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:10: 'exists'
             {
             match("exists"); if (failed) return ;
 
@@ -1781,8 +1801,8 @@
     public final void mNOT() throws RecognitionException {
         try {
             int _type = NOT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1596:7: ( 'not' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1596:7: 'not'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:7: ( 'not' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:7: 'not'
             {
             match("not"); if (failed) return ;
 
@@ -1800,8 +1820,8 @@
     public final void mEVAL() throws RecognitionException {
         try {
             int _type = EVAL;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1598:8: ( 'eval' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1598:8: 'eval'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:8: ( 'eval' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:8: 'eval'
             {
             match("eval"); if (failed) return ;
 
@@ -1819,8 +1839,8 @@
     public final void mFORALL() throws RecognitionException {
         try {
             int _type = FORALL;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1600:10: ( 'forall' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1600:10: 'forall'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:10: ( 'forall' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:10: 'forall'
             {
             match("forall"); if (failed) return ;
 
@@ -1838,8 +1858,8 @@
     public final void mWHEN() throws RecognitionException {
         try {
             int _type = WHEN;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1602:11: ( 'when' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1602:11: 'when'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:11: ( 'when' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:11: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -1857,8 +1877,8 @@
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1604:12: ( 'then' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1604:12: 'then'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:12: ( 'then' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:12: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -1876,8 +1896,8 @@
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1606:11: ( 'end' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1606:11: 'end'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:11: ( 'end' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:11: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -1895,8 +1915,8 @@
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1609:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1609:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636: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();
@@ -1909,7 +1929,7 @@
                 recover(mse);    throw mse;
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1609:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
             loop14:
             do {
                 int alt14=2;
@@ -1922,7 +1942,7 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             	    {
             	    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();
@@ -1958,11 +1978,11 @@
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1614:4: ( '#' ( options {greedy=false; } : . )* EOL )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1614:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1614:8: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -1981,7 +2001,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1614:35: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2011,12 +2031,12 @@
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1620:4: ( '//' ( options {greedy=false; } : . )* EOL )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1620:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:4: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1620:9: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2035,7 +2055,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1620:36: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2065,8 +2085,8 @@
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1626:11: ( '(' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1626:11: '('
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:11: ( '(' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:11: '('
             {
             match('('); if (failed) return ;
 
@@ -2083,8 +2103,8 @@
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1630:11: ( ')' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1630:11: ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:11: ( ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -2101,8 +2121,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1634:11: ( '[' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1634:11: '['
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:11: ( '[' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:11: '['
             {
             match('['); if (failed) return ;
 
@@ -2119,8 +2139,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1638:11: ( ']' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1638:11: ']'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:11: ( ']' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -2137,8 +2157,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1642:11: ( '{' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1642:11: '{'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:11: ( '{' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -2155,8 +2175,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1646:11: ( '}' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1646:11: '}'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1673:11: ( '}' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1673:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -2173,12 +2193,12 @@
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1650:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1650:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1650:9: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -2203,7 +2223,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1650:35: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2234,8 +2254,8 @@
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1655:3: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '=' | '/' | '\\'' | '\\\\' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:3: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '=' | '/' | '\\'' | '\\\\' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             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();
@@ -2259,496 +2279,503 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: ( T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
-        int alt18=70;
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: ( T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
+        int alt18=71;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: T63
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: T64
                 {
-                mT63(); if (failed) return ;
+                mT64(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:14: T64
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:14: T65
                 {
-                mT64(); if (failed) return ;
+                mT65(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:18: T65
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:18: T66
                 {
-                mT65(); if (failed) return ;
+                mT66(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:22: T66
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:22: T67
                 {
-                mT66(); if (failed) return ;
+                mT67(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:26: T67
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:26: T68
                 {
-                mT67(); if (failed) return ;
+                mT68(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:30: T68
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: T69
                 {
-                mT68(); if (failed) return ;
+                mT69(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:34: T69
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:34: T70
                 {
-                mT69(); if (failed) return ;
+                mT70(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:38: T70
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:38: T71
                 {
-                mT70(); if (failed) return ;
+                mT71(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:42: T71
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:42: T72
                 {
-                mT71(); if (failed) return ;
+                mT72(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:46: T72
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: T73
                 {
-                mT72(); if (failed) return ;
+                mT73(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:50: T73
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:50: T74
                 {
-                mT73(); if (failed) return ;
+                mT74(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:54: T74
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: T75
                 {
-                mT74(); if (failed) return ;
+                mT75(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:58: T75
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:58: T76
                 {
-                mT75(); if (failed) return ;
+                mT76(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:62: T76
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:62: T77
                 {
-                mT76(); if (failed) return ;
+                mT77(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:66: T77
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:66: T78
                 {
-                mT77(); if (failed) return ;
+                mT78(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:70: T78
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:70: T79
                 {
-                mT78(); if (failed) return ;
+                mT79(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:74: WS
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:74: WS
                 {
                 mWS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:77: INT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:77: INT
                 {
                 mINT(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:81: FLOAT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:81: FLOAT
                 {
                 mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:87: STRING
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:87: STRING
                 {
                 mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:94: BOOL
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:94: BOOL
                 {
                 mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:99: PACKAGE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:99: PACKAGE
                 {
                 mPACKAGE(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:107: IMPORT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:107: IMPORT
                 {
                 mIMPORT(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:114: FUNCTION
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:114: FUNCTION
                 {
                 mFUNCTION(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:123: GLOBAL
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:123: GLOBAL
                 {
                 mGLOBAL(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:130: RULE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: RULE
                 {
                 mRULE(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:135: QUERY
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:135: QUERY
                 {
                 mQUERY(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:141: TEMPLATE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:141: TEMPLATE
                 {
                 mTEMPLATE(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:150: ATTRIBUTES
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:150: ATTRIBUTES
                 {
                 mATTRIBUTES(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:161: DATE_EFFECTIVE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:161: DATE_EFFECTIVE
                 {
                 mDATE_EFFECTIVE(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:176: DATE_EXPIRES
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:176: DATE_EXPIRES
                 {
                 mDATE_EXPIRES(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:189: ENABLED
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:189: ENABLED
                 {
                 mENABLED(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:197: SALIENCE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:197: SALIENCE
                 {
                 mSALIENCE(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:206: NO_LOOP
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:206: NO_LOOP
                 {
                 mNO_LOOP(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:214: AUTO_FOCUS
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:214: AUTO_FOCUS
                 {
                 mAUTO_FOCUS(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:225: ACTIVATION_GROUP
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:225: ACTIVATION_GROUP
                 {
                 mACTIVATION_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:242: AGENDA_GROUP
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:242: AGENDA_GROUP
                 {
                 mAGENDA_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:255: RULEFLOW_GROUP
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:255: DIALECT
                 {
-                mRULEFLOW_GROUP(); if (failed) return ;
+                mDIALECT(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:270: DURATION
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:263: RULEFLOW_GROUP
                 {
-                mDURATION(); if (failed) return ;
+                mRULEFLOW_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:279: LOCK_ON_ACTIVE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:278: DURATION
                 {
-                mLOCK_ON_ACTIVE(); if (failed) return ;
+                mDURATION(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:294: FROM
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:287: LOCK_ON_ACTIVE
                 {
-                mFROM(); if (failed) return ;
+                mLOCK_ON_ACTIVE(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:299: ACCUMULATE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:302: FROM
                 {
-                mACCUMULATE(); if (failed) return ;
+                mFROM(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:310: INIT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:307: ACCUMULATE
                 {
-                mINIT(); if (failed) return ;
+                mACCUMULATE(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:315: ACTION
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:318: INIT
                 {
-                mACTION(); if (failed) return ;
+                mINIT(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:322: RESULT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:323: ACTION
                 {
-                mRESULT(); if (failed) return ;
+                mACTION(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:329: COLLECT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:330: RESULT
                 {
-                mCOLLECT(); if (failed) return ;
+                mRESULT(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:337: OR
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:337: COLLECT
                 {
-                mOR(); if (failed) return ;
+                mCOLLECT(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:340: AND
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:345: OR
                 {
-                mAND(); if (failed) return ;
+                mOR(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:344: CONTAINS
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:348: AND
                 {
-                mCONTAINS(); if (failed) return ;
+                mAND(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:353: EXCLUDES
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:352: CONTAINS
                 {
-                mEXCLUDES(); if (failed) return ;
+                mCONTAINS(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:362: MATCHES
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:361: EXCLUDES
                 {
-                mMATCHES(); if (failed) return ;
+                mEXCLUDES(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:370: NULL
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:370: MATCHES
                 {
-                mNULL(); if (failed) return ;
+                mMATCHES(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:375: EXISTS
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:378: NULL
                 {
-                mEXISTS(); if (failed) return ;
+                mNULL(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:382: NOT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:383: EXISTS
                 {
-                mNOT(); if (failed) return ;
+                mEXISTS(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:386: EVAL
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:390: NOT
                 {
-                mEVAL(); if (failed) return ;
+                mNOT(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:391: FORALL
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:394: EVAL
                 {
-                mFORALL(); if (failed) return ;
+                mEVAL(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:398: WHEN
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:399: FORALL
                 {
-                mWHEN(); if (failed) return ;
+                mFORALL(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:403: THEN
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:406: WHEN
                 {
-                mTHEN(); if (failed) return ;
+                mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:408: END
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:411: THEN
                 {
-                mEND(); if (failed) return ;
+                mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:412: ID
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:416: END
                 {
-                mID(); if (failed) return ;
+                mEND(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:415: SH_STYLE_SINGLE_LINE_COMMENT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:420: ID
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:444: C_STYLE_SINGLE_LINE_COMMENT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:423: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:472: LEFT_PAREN
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:452: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 64 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:483: RIGHT_PAREN
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:480: LEFT_PAREN
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 65 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:495: LEFT_SQUARE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:491: RIGHT_PAREN
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 66 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:507: RIGHT_SQUARE
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:503: LEFT_SQUARE
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 67 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:520: LEFT_CURLY
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:515: RIGHT_SQUARE
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 68 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:531: RIGHT_CURLY
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:528: LEFT_CURLY
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 69 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:543: MULTI_LINE_COMMENT
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:539: RIGHT_CURLY
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mRIGHT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 70 :
-                // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:562: MISC
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:551: MULTI_LINE_COMMENT
                 {
+                mMULTI_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 71 :
+                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:570: MISC
+                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -2760,8 +2787,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:14: ( '\\r\\n' )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:16: '\\r\\n'
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:14: ( '\\r\\n' )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 
@@ -2788,90 +2815,92 @@
 
     protected DFA18 dfa18 = new DFA18(this);
     static final String DFA18_eotS =
-        "\2\uffff\1\55\2\uffff\1\60\1\62\2\53\1\66\1\70\1\53\1\uffff\1\73"+
-        "\1\uffff\1\53\21\52\2\uffff\1\53\30\uffff\35\52\1\u0080\2\52\2\uffff"+
-        "\16\52\1\u0091\13\52\1\u009d\1\52\1\u009f\1\uffff\4\52\1\uffff\2"+
-        "\52\1\u00a6\1\u00a7\4\52\1\u00ac\2\52\1\u00af\2\52\1\u00b3\1\52"+
-        "\1\uffff\7\52\1\u00bd\3\52\1\uffff\1\52\1\uffff\1\u00c2\4\52\1\u00c7"+
-        "\2\uffff\2\52\1\u00a7\1\52\1\uffff\2\52\1\uffff\3\52\1\uffff\1\u00d0"+
-        "\1\uffff\5\52\1\uffff\1\52\1\uffff\4\52\2\uffff\3\52\1\uffff\1\52"+
-        "\1\u00e0\2\52\1\u00e3\1\u00e4\1\u00e5\1\52\1\uffff\2\52\1\u00e9"+
-        "\2\52\1\uffff\1\52\1\u00ef\7\52\1\uffff\1\52\1\u00f8\3\uffff\3\52"+
-        "\1\uffff\1\52\3\uffff\1\52\1\uffff\1\52\1\u00ff\1\52\1\u0101\1\52"+
-        "\1\u0103\1\u0104\1\u0105\1\uffff\4\52\1\u010a\1\u010b\1\uffff\1"+
-        "\u010c\1\uffff\1\u010d\4\uffff\3\52\4\uffff\1\u0111\1\52\1\u0113"+
-        "\3\uffff";
+        "\4\uffff\1\56\1\60\1\62\2\53\1\66\1\70\1\53\1\uffff\1\72\1\uffff"+
+        "\1\53\21\52\2\uffff\1\53\30\uffff\36\52\1\u0082\2\52\2\uffff\23"+
+        "\52\1\u0098\7\52\1\u00a0\1\52\1\uffff\1\u00a2\4\52\1\uffff\2\52"+
+        "\1\u00a9\1\u00aa\3\52\1\u00ae\2\52\1\u00b1\3\52\1\u00b6\6\52\1\uffff"+
+        "\3\52\1\u00c1\3\52\1\uffff\1\52\1\uffff\1\u00c6\4\52\1\u00cb\2\uffff"+
+        "\1\52\1\u00a9\1\52\1\uffff\2\52\1\uffff\4\52\1\uffff\1\u00d4\4\52"+
+        "\1\uffff\1\52\1\uffff\2\52\1\uffff\4\52\2\uffff\3\52\1\uffff\2\52"+
+        "\1\u00e6\1\52\1\u00e8\1\u00e9\1\u00ea\1\52\1\uffff\1\52\1\u00ed"+
+        "\3\52\1\uffff\2\52\1\u00f5\10\52\1\uffff\1\u00fe\3\uffff\2\52\1"+
+        "\uffff\1\52\1\uffff\1\52\2\uffff\1\u0103\1\52\1\uffff\1\52\1\u0106"+
+        "\2\52\1\u0109\1\u010a\1\u010b\1\u010c\1\uffff\4\52\1\uffff\1\u0111"+
+        "\1\u0112\1\uffff\1\u0113\1\u0114\5\uffff\3\52\4\uffff\1\u0118\1"+
+        "\52\1\u011a\3\uffff";
     static final String DFA18_eofS =
-        "\u0114\uffff";
+        "\u011b\uffff";
     static final String DFA18_minS =
-        "\1\11\1\uffff\1\52\2\uffff\1\174\1\46\1\60\4\75\1\uffff\1\56\1\uffff"+
-        "\1\0\1\145\2\141\1\155\1\154\1\145\1\165\1\143\1\141\1\156\1\141"+
-        "\3\157\1\162\1\141\1\150\2\uffff\1\52\30\uffff\1\145\1\165\1\155"+
-        "\1\162\1\154\1\156\1\157\1\143\1\160\1\151\1\157\1\163\1\154\1\145"+
-        "\1\144\2\164\1\143\1\145\1\164\1\162\1\141\1\143\1\141\1\154\1\55"+
-        "\1\154\1\143\1\154\1\60\1\164\1\145\2\uffff\1\156\1\145\1\160\1"+
-        "\141\1\163\1\143\1\155\1\153\1\157\1\164\1\142\1\165\1\145\1\162"+
-        "\1\60\1\157\1\162\1\151\1\165\1\156\1\145\1\141\1\154\1\163\1\154"+
-        "\1\142\1\60\1\151\1\60\1\uffff\1\154\1\153\1\154\1\164\1\uffff\1"+
-        "\143\1\156\2\60\2\154\1\145\1\164\1\60\1\141\1\162\1\60\1\141\1"+
-        "\154\1\60\1\171\1\uffff\1\55\1\151\1\157\1\155\1\144\1\55\1\164"+
-        "\1\60\1\164\1\165\1\154\1\uffff\1\145\1\uffff\1\60\1\55\1\145\1"+
-        "\141\1\150\1\60\2\uffff\1\141\1\154\1\60\1\151\1\uffff\1\147\1\164"+
-        "\1\uffff\1\154\1\164\1\154\1\uffff\1\60\1\uffff\1\142\1\141\1\156"+
-        "\1\165\1\141\1\145\1\151\1\uffff\1\163\1\144\1\145\1\156\2\uffff"+
-        "\1\143\1\151\1\145\1\uffff\1\164\1\60\1\157\1\145\3\60\1\157\1\uffff"+
-        "\1\165\1\164\1\60\1\154\1\55\1\146\1\157\1\60\1\145\1\144\1\143"+
-        "\1\164\1\156\1\163\1\145\1\uffff\1\156\1\60\3\uffff\1\167\1\164"+
-        "\1\151\1\uffff\1\141\3\uffff\1\156\1\uffff\1\163\1\60\1\145\1\60"+
-        "\1\163\3\60\1\uffff\1\55\1\145\1\157\1\164\2\60\1\uffff\1\60\1\uffff"+
-        "\1\60\4\uffff\1\163\1\156\1\145\4\uffff\1\60\1\55\1\60\3\uffff";
+        "\1\11\3\uffff\1\52\1\174\1\46\1\60\4\75\1\uffff\1\56\1\uffff\1\0"+
+        "\1\145\2\141\1\155\1\154\1\145\1\165\1\143\1\141\1\156\1\141\3\157"+
+        "\1\162\1\141\1\150\2\uffff\1\52\30\uffff\1\165\1\145\1\155\1\154"+
+        "\1\156\1\157\1\162\1\143\1\151\1\160\1\157\1\163\1\154\1\145\1\143"+
+        "\1\145\2\164\1\144\1\164\1\141\1\162\1\141\1\143\1\141\1\154\1\55"+
+        "\1\154\1\143\1\154\1\60\1\164\1\145\2\uffff\1\145\1\156\1\160\1"+
+        "\163\1\143\1\155\1\141\1\153\1\164\1\157\1\142\1\165\1\145\1\162"+
+        "\1\165\1\151\1\156\1\157\1\162\1\60\1\145\1\154\1\141\1\154\1\163"+
+        "\1\154\1\142\1\60\1\151\1\uffff\1\60\1\154\1\153\1\164\1\154\1\uffff"+
+        "\1\143\1\156\2\60\1\154\1\145\1\164\1\60\1\154\1\141\1\60\1\162"+
+        "\1\141\1\154\1\60\1\171\1\155\1\157\1\144\1\55\1\151\1\uffff\1\55"+
+        "\1\145\1\164\1\60\1\164\1\165\1\154\1\uffff\1\145\1\uffff\1\60\1"+
+        "\55\1\141\1\145\1\150\1\60\2\uffff\1\141\1\60\1\151\1\uffff\1\154"+
+        "\1\147\1\uffff\1\164\1\154\1\164\1\154\1\uffff\1\60\1\165\1\156"+
+        "\2\141\1\uffff\1\142\1\145\1\143\1\151\1\uffff\1\163\1\144\1\145"+
+        "\1\156\2\uffff\1\151\1\143\1\145\1\uffff\1\164\1\157\1\60\1\145"+
+        "\3\60\1\157\1\uffff\1\154\1\60\1\164\1\55\1\165\1\146\1\164\1\157"+
+        "\1\60\1\145\1\144\1\143\1\156\1\164\1\163\1\145\1\156\1\uffff\1"+
+        "\60\3\uffff\1\167\1\141\1\uffff\1\151\1\uffff\1\164\2\uffff\1\60"+
+        "\1\156\1\uffff\1\163\1\60\1\145\1\163\4\60\1\uffff\1\55\1\164\1"+
+        "\157\1\145\1\uffff\2\60\1\uffff\2\60\5\uffff\1\145\1\156\1\163\4"+
+        "\uffff\1\60\1\55\1\60\3\uffff";
     static final String DFA18_maxS =
-        "\1\u00ff\1\uffff\1\52\2\uffff\1\174\1\46\1\76\4\75\1\uffff\1\71"+
-        "\1\uffff\1\ufffe\1\162\1\165\1\141\1\156\1\154\4\165\1\170\1\141"+
-        "\1\165\2\157\1\162\1\141\1\150\2\uffff\1\57\30\uffff\1\145\1\165"+
-        "\1\155\1\162\1\154\1\156\1\157\1\143\1\160\1\151\1\157\1\163\1\154"+
-        "\1\145\1\144\3\164\1\145\1\164\1\162\1\141\1\151\1\144\1\154\1\164"+
-        "\1\154\1\143\1\156\1\u00ff\1\164\1\145\2\uffff\1\156\1\145\1\160"+
-        "\1\141\1\163\1\143\1\155\1\153\1\157\1\164\1\142\1\165\1\145\1\162"+
-        "\1\u00ff\1\157\1\162\1\151\1\165\1\156\1\145\1\141\1\154\1\163\1"+
-        "\154\1\142\1\u00ff\1\151\1\u00ff\1\uffff\1\154\1\153\1\154\1\164"+
-        "\1\uffff\1\143\1\156\2\u00ff\2\154\1\145\1\164\1\u00ff\1\141\1\162"+
-        "\1\u00ff\1\141\1\154\1\u00ff\1\171\1\uffff\1\55\1\151\1\166\1\155"+
-        "\1\144\1\55\1\164\1\u00ff\1\164\1\165\1\154\1\uffff\1\145\1\uffff"+
-        "\1\u00ff\1\55\1\145\1\141\1\150\1\u00ff\2\uffff\1\141\1\154\1\u00ff"+
-        "\1\151\1\uffff\1\147\1\164\1\uffff\1\154\1\164\1\154\1\uffff\1\u00ff"+
-        "\1\uffff\1\142\1\141\1\156\1\165\1\141\1\145\1\151\1\uffff\1\163"+
-        "\1\144\1\145\1\156\2\uffff\1\143\1\151\1\145\1\uffff\1\164\1\u00ff"+
-        "\1\157\1\145\3\u00ff\1\157\1\uffff\1\165\1\164\1\u00ff\1\154\1\55"+
-        "\1\170\1\157\1\u00ff\1\145\1\144\1\143\1\164\1\156\1\163\1\145\1"+
-        "\uffff\1\156\1\u00ff\3\uffff\1\167\1\164\1\151\1\uffff\1\141\3\uffff"+
-        "\1\156\1\uffff\1\163\1\u00ff\1\145\1\u00ff\1\163\3\u00ff\1\uffff"+
-        "\1\55\1\145\1\157\1\164\2\u00ff\1\uffff\1\u00ff\1\uffff\1\u00ff"+
-        "\4\uffff\1\163\1\156\1\145\4\uffff\1\u00ff\1\55\1\u00ff\3\uffff";
+        "\1\u00ff\3\uffff\1\52\1\174\1\46\1\76\4\75\1\uffff\1\71\1\uffff"+
+        "\1\ufffe\1\162\1\165\1\141\1\156\1\154\4\165\1\170\1\141\1\165\2"+
+        "\157\1\162\1\141\1\150\2\uffff\1\57\30\uffff\1\165\1\145\1\155\1"+
+        "\154\1\156\1\157\1\162\1\143\1\151\1\160\1\157\1\163\1\154\1\145"+
+        "\1\164\1\145\2\164\1\144\1\164\1\141\1\162\1\141\1\151\1\144\1\154"+
+        "\1\164\1\154\1\143\1\156\1\u00ff\1\164\1\145\2\uffff\1\145\1\156"+
+        "\1\160\1\163\1\143\1\155\1\141\1\153\1\164\1\157\1\142\1\165\1\145"+
+        "\1\162\1\165\1\151\1\156\1\157\1\162\1\u00ff\1\145\1\154\1\141\1"+
+        "\154\1\163\1\154\1\142\1\u00ff\1\151\1\uffff\1\u00ff\1\154\1\153"+
+        "\1\164\1\154\1\uffff\1\143\1\156\2\u00ff\1\154\1\145\1\164\1\u00ff"+
+        "\1\154\1\141\1\u00ff\1\162\1\141\1\154\1\u00ff\1\171\1\155\1\166"+
+        "\1\144\1\55\1\151\1\uffff\1\55\1\145\1\164\1\u00ff\1\164\1\165\1"+
+        "\154\1\uffff\1\145\1\uffff\1\u00ff\1\55\1\141\1\145\1\150\1\u00ff"+
+        "\2\uffff\1\141\1\u00ff\1\151\1\uffff\1\154\1\147\1\uffff\1\164\1"+
+        "\154\1\164\1\154\1\uffff\1\u00ff\1\165\1\156\2\141\1\uffff\1\142"+
+        "\1\145\1\143\1\151\1\uffff\1\163\1\144\1\145\1\156\2\uffff\1\151"+
+        "\1\143\1\145\1\uffff\1\164\1\157\1\u00ff\1\145\3\u00ff\1\157\1\uffff"+
+        "\1\154\1\u00ff\1\164\1\55\1\165\1\170\1\164\1\157\1\u00ff\1\145"+
+        "\1\144\1\143\1\156\1\164\1\163\1\145\1\156\1\uffff\1\u00ff\3\uffff"+
+        "\1\167\1\141\1\uffff\1\151\1\uffff\1\164\2\uffff\1\u00ff\1\156\1"+
+        "\uffff\1\163\1\u00ff\1\145\1\163\4\u00ff\1\uffff\1\55\1\164\1\157"+
+        "\1\145\1\uffff\2\u00ff\1\uffff\2\u00ff\5\uffff\1\145\1\156\1\163"+
+        "\4\uffff\1\u00ff\1\55\1\u00ff\3\uffff";
     static final String DFA18_acceptS =
-        "\1\uffff\1\1\1\uffff\1\4\1\5\7\uffff\1\21\1\uffff\1\24\22\uffff"+
-        "\1\74\1\75\1\uffff\1\77\1\100\1\101\1\102\1\103\1\104\1\74\1\106"+
-        "\1\3\1\2\1\4\1\6\1\10\1\20\1\7\1\11\1\12\1\14\1\13\1\16\1\15\1\17"+
-        "\1\23\1\22\40\uffff\1\105\1\76\35\uffff\1\42\4\uffff\1\57\20\uffff"+
-        "\1\60\13\uffff\1\73\1\uffff\1\66\6\uffff\1\72\1\25\4\uffff\1\51"+
-        "\2\uffff\1\53\3\uffff\1\32\1\uffff\1\43\7\uffff\1\67\4\uffff\1\64"+
-        "\1\50\3\uffff\1\71\10\uffff\1\33\17\uffff\1\70\2\uffff\1\27\1\31"+
-        "\1\55\3\uffff\1\54\1\uffff\1\45\1\37\1\36\1\uffff\1\65\10\uffff"+
-        "\1\26\6\uffff\1\40\1\uffff\1\56\1\uffff\1\63\1\34\1\30\1\46\3\uffff"+
-        "\1\47\1\62\1\41\1\61\3\uffff\1\35\1\44\1\52";
+        "\1\uffff\1\1\1\2\1\3\10\uffff\1\21\1\uffff\1\24\22\uffff\1\75\1"+
+        "\76\1\uffff\1\100\1\101\1\102\1\103\1\104\1\105\1\75\1\107\1\3\1"+
+        "\5\1\4\1\6\1\10\1\20\1\7\1\11\1\12\1\14\1\13\1\16\1\15\1\17\1\22"+
+        "\1\23\41\uffff\1\106\1\77\35\uffff\1\42\5\uffff\1\60\25\uffff\1"+
+        "\61\7\uffff\1\74\1\uffff\1\67\6\uffff\1\25\1\73\3\uffff\1\52\2\uffff"+
+        "\1\54\4\uffff\1\32\5\uffff\1\43\4\uffff\1\70\4\uffff\1\65\1\51\3"+
+        "\uffff\1\72\10\uffff\1\33\21\uffff\1\71\1\uffff\1\27\1\31\1\56\2"+
+        "\uffff\1\55\1\uffff\1\45\1\uffff\1\36\1\37\2\uffff\1\66\10\uffff"+
+        "\1\26\4\uffff\1\46\2\uffff\1\40\2\uffff\1\57\1\64\1\34\1\30\1\47"+
+        "\3\uffff\1\50\1\63\1\41\1\62\3\uffff\1\53\1\44\1\35";
     static final String DFA18_specialS =
-        "\u0114\uffff}>";
+        "\u011b\uffff}>";
     static final String[] DFA18_transitionS = {
             "\2\14\1\uffff\2\14\22\uffff\1\14\1\13\1\16\1\42\1\41\1\53\1"+
-            "\6\1\17\1\44\1\45\2\53\1\3\1\7\1\2\1\43\12\15\1\4\1\1\1\12\1"+
+            "\6\1\17\1\44\1\45\2\53\1\3\1\7\1\4\1\43\12\15\1\2\1\1\1\12\1"+
             "\10\1\11\2\53\32\52\1\46\1\53\1\47\1\53\1\41\1\uffff\1\27\1"+
             "\52\1\35\1\30\1\31\1\21\1\24\1\52\1\23\2\52\1\34\1\37\1\33\1"+
             "\36\1\22\1\26\1\25\1\32\1\20\2\52\1\40\3\52\1\50\1\5\1\51\102"+
             "\uffff\100\52",
             "",
-            "\1\54",
             "",
             "",
+            "\1\55",
             "\1\57",
             "\1\61",
             "\12\15\4\uffff\1\63",
@@ -2880,29 +2909,29 @@
             "\1\67",
             "\1\71",
             "",
-            "\1\72\1\uffff\12\15",
+            "\1\73\1\uffff\12\15",
             "",
             "\uffff\16",
-            "\1\76\2\uffff\1\74\11\uffff\1\75",
-            "\1\100\15\uffff\1\77\2\uffff\1\102\2\uffff\1\101",
+            "\1\76\2\uffff\1\75\11\uffff\1\74",
+            "\1\77\15\uffff\1\102\2\uffff\1\101\2\uffff\1\100",
             "\1\103",
-            "\1\104\1\105",
+            "\1\105\1\104",
             "\1\106",
             "\1\107\17\uffff\1\110",
             "\1\111",
-            "\1\115\3\uffff\1\116\6\uffff\1\112\5\uffff\1\114\1\113",
-            "\1\117\23\uffff\1\120",
-            "\1\123\7\uffff\1\121\1\uffff\1\122",
-            "\1\124",
-            "\1\125\5\uffff\1\126",
-            "\1\127",
+            "\1\112\3\uffff\1\113\6\uffff\1\116\5\uffff\1\115\1\114",
+            "\1\117\7\uffff\1\120\13\uffff\1\121",
+            "\1\124\7\uffff\1\122\1\uffff\1\123",
+            "\1\125",
+            "\1\126\5\uffff\1\127",
             "\1\130",
             "\1\131",
             "\1\132",
             "\1\133",
+            "\1\134",
             "",
             "",
-            "\1\134\4\uffff\1\135",
+            "\1\135\4\uffff\1\136",
             "",
             "",
             "",
@@ -2927,7 +2956,6 @@
             "",
             "",
             "",
-            "\1\136",
             "\1\137",
             "\1\140",
             "\1\141",
@@ -2942,28 +2970,28 @@
             "\1\152",
             "\1\153",
             "\1\154",
-            "\1\155",
-            "\1\156",
-            "\1\160\20\uffff\1\157",
+            "\1\155\20\uffff\1\156",
+            "\1\157",
+            "\1\160",
             "\1\161",
             "\1\162",
             "\1\163",
             "\1\164",
-            "\1\166\5\uffff\1\165",
-            "\1\167\2\uffff\1\170",
-            "\1\171",
-            "\1\173\106\uffff\1\172",
-            "\1\174",
-            "\1\175",
-            "\1\176\1\uffff\1\177",
+            "\1\165",
+            "\1\166",
+            "\1\170\5\uffff\1\167",
+            "\1\171\2\uffff\1\172",
+            "\1\173",
+            "\1\174\106\uffff\1\175",
+            "\1\176",
+            "\1\177",
+            "\1\u0081\1\uffff\1\u0080",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0081",
-            "\1\u0082",
+            "\1\u0083",
+            "\1\u0084",
             "",
             "",
-            "\1\u0083",
-            "\1\u0084",
             "\1\u0085",
             "\1\u0086",
             "\1\u0087",
@@ -2976,165 +3004,173 @@
             "\1\u008e",
             "\1\u008f",
             "\1\u0090",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u0091",
             "\1\u0092",
             "\1\u0093",
             "\1\u0094",
             "\1\u0095",
             "\1\u0096",
             "\1\u0097",
-            "\1\u0098",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u0099",
             "\1\u009a",
             "\1\u009b",
             "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "\1\u009f",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u009e",
+            "\1\u00a1",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "",
-            "\1\u00a0",
-            "\1\u00a1",
-            "\1\u00a2",
             "\1\u00a3",
-            "",
             "\1\u00a4",
             "\1\u00a5",
+            "\1\u00a6",
+            "",
+            "\1\u00a7",
+            "\1\u00a8",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00a8",
-            "\1\u00a9",
-            "\1\u00aa",
             "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ad",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00ad",
-            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00b0",
-            "\1\u00b1",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00b2\24\52"+
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00b5\24\52"+
             "\105\uffff\100\52",
-            "\1\u00b4",
-            "",
-            "\1\u00b5",
-            "\1\u00b6",
-            "\1\u00b8\6\uffff\1\u00b7",
-            "\1\u00b9",
-            "\1\u00ba",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9\6\uffff\1\u00ba",
             "\1\u00bb",
             "\1\u00bc",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00bd",
+            "",
             "\1\u00be",
             "\1\u00bf",
             "\1\u00c0",
-            "",
-            "\1\u00c1",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u00c2",
             "\1\u00c3",
             "\1\u00c4",
+            "",
             "\1\u00c5",
-            "\1\u00c6",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "",
-            "",
+            "\1\u00c7",
             "\1\u00c8",
             "\1\u00c9",
+            "\1\u00ca",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00ca",
             "",
-            "\1\u00cb",
+            "",
             "\1\u00cc",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
+            "\1\u00cd",
             "",
-            "\1\u00cd",
             "\1\u00ce",
             "\1\u00cf",
             "",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
-            "",
+            "\1\u00d0",
             "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
-            "\1\u00d4",
+            "",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00d5",
             "\1\u00d6",
             "\1\u00d7",
+            "\1\u00d8",
             "",
-            "\1\u00d8",
             "\1\u00d9",
             "\1\u00da",
             "\1\u00db",
+            "\1\u00dc",
             "",
-            "",
-            "\1\u00dc",
             "\1\u00dd",
             "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
             "",
-            "\1\u00df",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "",
             "\1\u00e1",
             "\1\u00e2",
+            "\1\u00e3",
+            "",
+            "\1\u00e4",
+            "\1\u00e5",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u00e7",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00e6",
-            "",
-            "\1\u00e7",
-            "\1\u00e8",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00ea",
             "\1\u00eb",
-            "\1\u00ed\21\uffff\1\u00ec",
-            "\1\u00ee",
+            "",
+            "\1\u00ec",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u00ee",
+            "\1\u00ef",
             "\1\u00f0",
-            "\1\u00f1",
-            "\1\u00f2",
+            "\1\u00f1\21\uffff\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
-            "\1\u00f5",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
             "",
-            "\1\u00f7",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
             "",
             "",
-            "\1\u00f9",
-            "\1\u00fa",
-            "\1\u00fb",
+            "\1\u00ff",
+            "\1\u0100",
             "",
-            "\1\u00fc",
+            "\1\u0101",
             "",
+            "\1\u0102",
             "",
             "",
-            "\1\u00fd",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
+            "\1\u0104",
             "",
-            "\1\u00fe",
+            "\1\u0105",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0100",
+            "\1\u0107",
+            "\1\u0108",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0102",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
@@ -3142,10 +3178,11 @@
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
-            "\1\u0106",
-            "\1\u0107",
-            "\1\u0108",
-            "\1\u0109",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
@@ -3153,23 +3190,23 @@
             "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
             "",
             "",
             "",
-            "\1\u010e",
-            "\1\u010f",
-            "\1\u0110",
             "",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
             "",
             "",
             "",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0112",
+            "\1\u0119",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
@@ -3207,7 +3244,7 @@
             this.transition = DFA18_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-04-27 01:07:05 UTC (rev 11395)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-04-27 01:27:59 UTC (rev 11396)
@@ -1,15 +1,15 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-04-24 04:47:07
-
-	package org.drools.lang;
-	import java.util.List;
-	import java.util.ArrayList;
-	import java.util.Iterator;
-	import java.util.HashMap;	
-	import java.util.StringTokenizer;
-	import org.drools.lang.descr.*;
-	import org.drools.compiler.SwitchingCommonTokenStream;
+// $ANTLR 3.0b7 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-27 11:20:35
 
+	package org.drools.lang;
+	import java.util.List;
+	import java.util.ArrayList;
+	import java.util.Iterator;
+	import java.util.HashMap;	
+	import java.util.StringTokenizer;
+	import org.drools.lang.descr.*;
+	import org.drools.compiler.SwitchingCommonTokenStream;
 
+
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -18,247 +18,248 @@
 import java.util.HashMap;
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PACKAGE", "IMPORT", "FUNCTION", "GLOBAL", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "ATTRIBUTES", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "LOCK_ON_ACTIVE", "ACCUMULATE", "INIT", "ACTION", "RESULT", "COLLECT", "ID", "OR", "LEFT_PAREN", "RIGHT_PAREN", "CONTAINS", "MATCHES", "EXCLUDES", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "AND", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "'.'", "'.*'", "','", "':'", "'||'", "'&'", "'|'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'&&'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ATTRIBUTES", "PACKAGE", "IMPORT", "FUNCTION", "GLOBAL", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "DIALECT", "LOCK_ON_ACTIVE", "ACCUMULATE", "INIT", "ACTION", "RESULT", "COLLECT", "ID", "OR", "LEFT_PAREN", "RIGHT_PAREN", "CONTAINS", "MATCHES", "EXCLUDES", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "AND", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "':'", "','", "'.'", "'.*'", "'||'", "'&'", "'|'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'&&'"
     };
-    public static final int PACKAGE=4;
-    public static final int FUNCTION=6;
-    public static final int ACCUMULATE=28;
-    public static final int RIGHT_SQUARE=45;
+    public static final int EXISTS=49;
+    public static final int AUTO_FOCUS=22;
+    public static final int END=10;
+    public static final int HexDigit=57;
+    public static final int FORALL=52;
+    public static final int TEMPLATE=11;
+    public static final int MISC=63;
+    public static final int FLOAT=41;
+    public static final int QUERY=9;
+    public static final int THEN=53;
+    public static final int RULE=12;
+    public static final int INIT=30;
+    public static final int IMPORT=6;
+    public static final int DATE_EFFECTIVE=14;
+    public static final int PACKAGE=5;
+    public static final int OR=35;
+    public static final int AND=47;
+    public static final int FUNCTION=7;
+    public static final int GLOBAL=8;
+    public static final int EscapeSequence=56;
+    public static final int DIALECT=27;
+    public static final int INT=20;
+    public static final int LOCK_ON_ACTIVE=28;
+    public static final int DATE_EXPIRES=16;
+    public static final int LEFT_SQUARE=45;
+    public static final int CONTAINS=38;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=60;
+    public static final int ATTRIBUTES=4;
+    public static final int RESULT=32;
+    public static final int LEFT_CURLY=43;
+    public static final int FROM=48;
+    public static final int ID=34;
     public static final int ACTIVATION_GROUP=23;
-    public static final int ATTRIBUTES=13;
-    public static final int RIGHT_CURLY=43;
-    public static final int CONTAINS=37;
+    public static final int LEFT_PAREN=36;
+    public static final int RIGHT_CURLY=44;
+    public static final int BOOL=18;
+    public static final int EXCLUDES=40;
+    public static final int WHEN=13;
+    public static final int RULEFLOW_GROUP=24;
+    public static final int WS=55;
+    public static final int STRING=15;
+    public static final int ACTION=31;
+    public static final int COLLECT=33;
     public static final int NO_LOOP=21;
-    public static final int LOCK_ON_ACTIVE=27;
+    public static final int ACCUMULATE=29;
+    public static final int UnicodeEscape=58;
+    public static final int DURATION=26;
+    public static final int EVAL=51;
+    public static final int MATCHES=39;
+    public static final int EOF=-1;
+    public static final int EOL=54;
     public static final int AGENDA_GROUP=25;
-    public static final int FLOAT=40;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=59;
-    public static final int NOT=49;
-    public static final int AND=46;
-    public static final int ID=33;
-    public static final int EOF=-1;
-    public static final int HexDigit=56;
-    public static final int DATE_EFFECTIVE=14;
-    public static final int ACTION=30;
-    public static final int RIGHT_PAREN=36;
-    public static final int IMPORT=5;
-    public static final int EOL=53;
-    public static final int THEN=52;
-    public static final int MATCHES=38;
+    public static final int NULL=42;
+    public static final int OctalEscape=59;
+    public static final int SALIENCE=19;
+    public static final int MULTI_LINE_COMMENT=62;
+    public static final int NOT=50;
+    public static final int RIGHT_PAREN=37;
     public static final int ENABLED=17;
-    public static final int EXISTS=48;
-    public static final int RULE=11;
-    public static final int EXCLUDES=39;
-    public static final int AUTO_FOCUS=22;
-    public static final int NULL=41;
-    public static final int BOOL=18;
-    public static final int FORALL=51;
-    public static final int SALIENCE=19;
-    public static final int RULEFLOW_GROUP=24;
-    public static final int RESULT=31;
-    public static final int INT=20;
-    public static final int MULTI_LINE_COMMENT=61;
-    public static final int DURATION=26;
-    public static final int WS=54;
-    public static final int EVAL=50;
-    public static final int TEMPLATE=10;
-    public static final int WHEN=12;
-    public static final int UnicodeEscape=57;
-    public static final int LEFT_CURLY=42;
-    public static final int OR=34;
-    public static final int LEFT_PAREN=35;
-    public static final int QUERY=8;
-    public static final int MISC=62;
-    public static final int FROM=47;
-    public static final int END=9;
-    public static final int GLOBAL=7;
-    public static final int COLLECT=32;
-    public static final int LEFT_SQUARE=44;
-    public static final int INIT=29;
-    public static final int OctalEscape=58;
-    public static final int EscapeSequence=55;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=60;
-    public static final int DATE_EXPIRES=16;
-    public static final int STRING=15;
+    public static final int RIGHT_SQUARE=46;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=61;
 
         public DRLParser(TokenStream input) {
             super(input);
-            ruleMemo = new HashMap[192+1];
+            ruleMemo = new HashMap[197+1];
          }
         
 
     public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g"; }
+    public String getGrammarFileName() { return "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
-    
-    	private PackageDescr packageDescr;
-    	private List errors = new ArrayList();
-    	private String source = "unknown";
-    	private int lineOffset = 0;
-    	private DescrFactory factory = new DescrFactory();
-    	private boolean parserDebug = false;
-    	
-    	// THE FOLLOWING LINE IS A DUMMY ATTRIBUTE TO WORK AROUND AN ANTLR BUG
-    	private BaseDescr from = null;
-    	
-    	public void setParserDebug(boolean parserDebug) {
-    		this.parserDebug = parserDebug;
-    	}
-    	
-    	public void debug(String message) {
-    		if ( parserDebug ) 
-    			System.err.println( "drl parser: " + message );
-    	}
-    	
-    	public void setSource(String source) {
-    		this.source = source;
-    	}
-    	public DescrFactory getFactory() {
-    		return factory;
-    	}	
-    
-    	public String getSource() {
-    		return this.source;
-    	}
-    	
-    	public PackageDescr getPackageDescr() {
-    		return packageDescr;
-    	}
-    	
-    	private int offset(int line) {
-    		return line + lineOffset;
-    	}
-    	
-    	/**
-    	 * This will set the offset to record when reparsing. Normally is zero of course 
-    	 */
-    	public void setLineOffset(int i) {
-    	 	this.lineOffset = i;
-    	}
-    	
-    	private String getString(Token token) {
-    		String orig = token.getText();
-    		return orig.substring( 1, orig.length() -1 );
-    	}
-    	
-    	public void reportError(RecognitionException ex) {
-    	        // if we've already reported an error and have not matched a token
-                    // yet successfully, don't report any errors.
-                    if ( errorRecovery ) {
-                            return;
-                    }
-                    errorRecovery = true;
-    
-    		ex.line = offset(ex.line); //add the offset if there is one
-    		errors.add( ex ); 
-    	}
-         	
-         	/** return the raw RecognitionException errors */
-         	public List getErrors() {
-         		return errors;
-         	}
-         	
-         	/** Return a list of pretty strings summarising the errors */
-         	public List getErrorMessages() {
-         		List messages = new ArrayList();
-     		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
-         	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
-         	     	}
-         	     	return messages;
-         	}
-         	
-         	/** return true if any parser errors were accumulated */
-         	public boolean hasErrors() {
-      		return ! errors.isEmpty();
-         	}
-         	
-         	/** This will take a RecognitionException, and create a sensible error message out of it */
-         	public String createErrorMessage(RecognitionException e)
-            {
-    		StringBuffer message = new StringBuffer();		
-                    message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
-                    if ( e instanceof MismatchedTokenException ) {
-                            MismatchedTokenException mte = (MismatchedTokenException)e;
-                            message.append("mismatched token: "+
-                                                               e.token+
-                                                               "; expecting type "+
-                                                               tokenNames[mte.expecting]);
-                    }
-                    else if ( e instanceof MismatchedTreeNodeException ) {
-                            MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
-                            message.append("mismatched tree node: "+
-                                                               //mtne.foundNode+  //FIXME
-                                                               "; expecting type "+
-                                                               tokenNames[mtne.expecting]);
-                    }
-                    else if ( e instanceof NoViableAltException ) {
-                            NoViableAltException nvae = (NoViableAltException)e;
-    			message.append( "Unexpected token '" + e.token.getText() + "'" );
-                            /*
-                            message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
-                                                               " state "+nvae.stateNumber+
-                                                               " (decision="+nvae.decisionNumber+
-                                                               ") no viable alt; token="+
-                                                               e.token);
-                                                               */
-                    }
-                    else if ( e instanceof EarlyExitException ) {
-                            EarlyExitException eee = (EarlyExitException)e;
-                            message.append("required (...)+ loop (decision="+
-                                                               eee.decisionNumber+
-                                                               ") did not match anything; token="+
-                                                               e.token);
-                    }
-                    else if ( e instanceof MismatchedSetException ) {
-                            MismatchedSetException mse = (MismatchedSetException)e;
-                            message.append("mismatched token '"+
-                                                               e.token+
-                                                               "' expecting set "+mse.expecting);
-                    }
-                    else if ( e instanceof MismatchedNotSetException ) {
-                            MismatchedNotSetException mse = (MismatchedNotSetException)e;
-                            message.append("mismatched token '"+
-                                                               e.token+
-                                                               "' expecting set "+mse.expecting);
-                    }
-                    else if ( e instanceof FailedPredicateException ) {
-                            FailedPredicateException fpe = (FailedPredicateException)e;
-                            message.append("rule "+fpe.ruleName+" failed predicate: {"+
-                                                               fpe.predicateText+"}?");
-                    } else if (e instanceof GeneralParseException) {
-    			message.append(" " + e.getMessage());
-    		}
-                   	return message.toString();
-            }   
-            
-            void checkTrailingSemicolon(String text, int line) {
-            	if (text.trim().endsWith( ";" ) ) {
-            		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
-            	}
-            }
-          
 
+    	private PackageDescr packageDescr;
+    	private List errors = new ArrayList();
+    	private String source = "unknown";
+    	private int lineOffset = 0;
+    	private DescrFactory factory = new DescrFactory();
+    	private boolean parserDebug = false;
+    	
+    	// THE FOLLOWING LINE IS A DUMMY ATTRIBUTE TO WORK AROUND AN ANTLR BUG
+    	private BaseDescr from = null;
+    	
+    	public void setParserDebug(boolean parserDebug) {
+    		this.parserDebug = parserDebug;
+    	}
+    	
+    	public void debug(String message) {
+    		if ( parserDebug ) 
+    			System.err.println( "drl parser: " + message );
+    	}
+    	
+    	public void setSource(String source) {
+    		this.source = source;
+    	}
+    	public DescrFactory getFactory() {
+    		return factory;
+    	}	
 
+    	public String getSource() {
+    		return this.source;
+    	}
+    	
+    	public PackageDescr getPackageDescr() {
+    		return packageDescr;
+    	}
+    	
+    	private int offset(int line) {
+    		return line + lineOffset;
+    	}
+    	
+    	/**
+    	 * This will set the offset to record when reparsing. Normally is zero of course 
+    	 */
+    	public void setLineOffset(int i) {
+    	 	this.lineOffset = i;
+    	}
+    	
+    	private String getString(Token token) {
+    		String orig = token.getText();
+    		return orig.substring( 1, orig.length() -1 );
+    	}
+    	
+    	public void reportError(RecognitionException ex) {
+    	        // if we've already reported an error and have not matched a token
+                    // yet successfully, don't report any errors.
+                    if ( errorRecovery ) {
+                            return;
+                    }
+                    errorRecovery = true;
 
+    		ex.line = offset(ex.line); //add the offset if there is one
+    		errors.add( ex ); 
+    	}
+         	
+         	/** return the raw RecognitionException errors */
+         	public List getErrors() {
+         		return errors;
+         	}
+         	
+         	/** Return a list of pretty strings summarising the errors */
+         	public List getErrorMessages() {
+         		List messages = new ArrayList();
+     		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+         	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+         	     	}
+         	     	return messages;
+         	}
+         	
+         	/** return true if any parser errors were accumulated */
+         	public boolean hasErrors() {
+      		return ! errors.isEmpty();
+         	}
+         	
+         	/** This will take a RecognitionException, and create a sensible error message out of it */
+         	public String createErrorMessage(RecognitionException e)
+            {
+    		StringBuffer message = new StringBuffer();		
+                    message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+                    if ( e instanceof MismatchedTokenException ) {
+                            MismatchedTokenException mte = (MismatchedTokenException)e;
+                            message.append("mismatched token: "+
+                                                               e.token+
+                                                               "; expecting type "+
+                                                               tokenNames[mte.expecting]);
+                    }
+                    else if ( e instanceof MismatchedTreeNodeException ) {
+                            MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+                            message.append("mismatched tree node: "+
+                                                               mtne.toString() +
+                                                               "; expecting type "+
+                                                               tokenNames[mtne.expecting]);
+                    }
+                    else if ( e instanceof NoViableAltException ) {
+                            NoViableAltException nvae = (NoViableAltException)e;
+    			message.append( "Unexpected token '" + e.token.getText() + "'" );
+                            /*
+                            message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+                                                               " state "+nvae.stateNumber+
+                                                               " (decision="+nvae.decisionNumber+
+                                                               ") no viable alt; token="+
+                                                               e.token);
+                                                               */
+                    }
+                    else if ( e instanceof EarlyExitException ) {
+                            EarlyExitException eee = (EarlyExitException)e;
+                            message.append("required (...)+ loop (decision="+
+                                                               eee.decisionNumber+
+                                                               ") did not match anything; token="+
+                                                               e.token);
+                    }
+                    else if ( e instanceof MismatchedSetException ) {
+                            MismatchedSetException mse = (MismatchedSetException)e;
+                            message.append("mismatched token '"+
+                                                               e.token+
+                                                               "' expecting set "+mse.expecting);
+                    }
+                    else if ( e instanceof MismatchedNotSetException ) {
+                            MismatchedNotSetException mse = (MismatchedNotSetException)e;
+                            message.append("mismatched token '"+
+                                                               e.token+
+                                                               "' expecting set "+mse.expecting);
+                    }
+                    else if ( e instanceof FailedPredicateException ) {
+                            FailedPredicateException fpe = (FailedPredicateException)e;
+                            message.append("rule "+fpe.ruleName+" failed predicate: {"+
+                                                               fpe.predicateText+"}?");
+                    } else if (e instanceof GeneralParseException) {
+    			message.append(" " + e.getMessage());
+    		}
+                   	return message.toString();
+            }   
+            
+            void checkTrailingSemicolon(String text, int line) {
+            	if (text.trim().endsWith( ";" ) ) {
+            		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
+            	}
+            }
+          
+
+
+
     // $ANTLR start opt_semicolon
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:168:1: opt_semicolon : ( ';' )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:168:1: opt_semicolon : ( ';' )? ;
     public final void opt_semicolon() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:169:4: ( ( ';' )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:169:4: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ( ';' )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:169:4: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==63) ) {
+            if ( (LA1_0==64) ) {
                 alt1=1;
             }
             switch (alt1) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ';'
                     {
-                    match(input,63,FOLLOW_63_in_opt_semicolon46); if (failed) return ;
+                    match(input,64,FOLLOW_64_in_opt_semicolon46); if (failed) return ;
 
                     }
                     break;
@@ -281,17 +282,17 @@
 
 
     // $ANTLR start compilation_unit
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:172:1: compilation_unit : prolog ( statement )+ ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:172:1: compilation_unit : prolog ( statement )+ ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:173:4: ( prolog ( statement )+ )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:173:4: prolog ( statement )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: ( prolog ( statement )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: prolog ( statement )+
             {
             pushFollow(FOLLOW_prolog_in_compilation_unit58);
             prolog();
             _fsp--;
             if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:174:3: ( statement )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:3: ( statement )+
             int cnt2=0;
             loop2:
             do {
@@ -305,7 +306,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:174:5: statement
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:5: statement
             	    {
             	    pushFollow(FOLLOW_statement_in_compilation_unit65);
             	    statement();
@@ -341,19 +342,21 @@
 
 
     // $ANTLR start prolog
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:177:1: prolog : (n= package_statement )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:177:1: prolog : (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
     public final void prolog() throws RecognitionException {
         String n = null;
 
+        AttributeDescr a = null;
 
-        
-        		String packageName = "";
+
+
+        		String packageName = "";
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:181:4: ( (n= package_statement )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:181:4: (n= package_statement )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: ( (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:181:4: (n= package_statement )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -362,7 +365,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:181:6: n= package_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:6: n= package_statement
                     {
                     pushFollow(FOLLOW_package_statement_in_prolog90);
                     n=package_statement();
@@ -378,13 +381,83 @@
             }
 
             if ( backtracking==0 ) {
-               
-              			this.packageDescr = factory.createPackage( packageName ); 
+               
+              			this.packageDescr = factory.createPackage( packageName ); 
               		
             }
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:4: ( ATTRIBUTES ':' )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
 
+            if ( (LA4_0==ATTRIBUTES) ) {
+                alt4=1;
             }
+            switch (alt4) {
+                case 1 :
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:5: ATTRIBUTES ':'
+                    {
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_prolog105); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_prolog107); if (failed) return ;
 
+                    }
+                    break;
+
+            }
+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:4: ( ( ',' )? a= rule_attribute )*
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==DATE_EFFECTIVE||(LA6_0>=DATE_EXPIRES && LA6_0<=ENABLED)||LA6_0==SALIENCE||(LA6_0>=NO_LOOP && LA6_0<=LOCK_ON_ACTIVE)||LA6_0==66) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )? a= rule_attribute
+            	    {
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )?
+            	    int alt5=2;
+            	    int LA5_0 = input.LA(1);
+
+            	    if ( (LA5_0==66) ) {
+            	        alt5=1;
+            	    }
+            	    switch (alt5) {
+            	        case 1 :
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
+            	            {
+            	            match(input,66,FOLLOW_66_in_prolog116); if (failed) return ;
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    pushFollow(FOLLOW_rule_attribute_in_prolog121);
+            	    a=rule_attribute();
+            	    _fsp--;
+            	    if (failed) return ;
+            	    if ( backtracking==0 ) {
+
+            	      					this.packageDescr.addAttribute( a );
+            	      				
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+
+            }
+
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -398,7 +471,7 @@
 
 
     // $ANTLR start statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:187:1: statement : ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:193:1: statement : ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) ;
     public final void statement() throws RecognitionException {
         FactTemplateDescr t = null;
 
@@ -408,26 +481,26 @@
 
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:2: ( ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
-            int alt4=7;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
+            int alt7=7;
             switch ( input.LA(1) ) {
             case IMPORT:
                 {
-                int LA4_1 = input.LA(2);
+                int LA7_1 = input.LA(2);
 
-                if ( (synpred4()) ) {
-                    alt4=1;
+                if ( (synpred7()) ) {
+                    alt7=1;
                 }
-                else if ( (synpred5()) ) {
-                    alt4=2;
+                else if ( (synpred8()) ) {
+                    alt7=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("189:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )", 4, 1, input);
+                        new NoViableAltException("195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )", 7, 1, input);
 
                     throw nvae;
                 }
@@ -435,42 +508,42 @@
                 break;
             case GLOBAL:
                 {
-                alt4=3;
+                alt7=3;
                 }
                 break;
             case FUNCTION:
                 {
-                alt4=4;
+                alt7=4;
                 }
                 break;
             case TEMPLATE:
                 {
-                alt4=5;
+                alt7=5;
                 }
                 break;
             case RULE:
                 {
-                alt4=6;
+                alt7=6;
                 }
                 break;
             case QUERY:
                 {
-                alt4=7;
+                alt7=7;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("189:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )", 4, 0, input);
+                    new NoViableAltException("195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )", 7, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt4) {
+            switch (alt7) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:4: function_import_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
                     {
-                    pushFollow(FOLLOW_function_import_statement_in_statement114);
+                    pushFollow(FOLLOW_function_import_statement_in_statement150);
                     function_import_statement();
                     _fsp--;
                     if (failed) return ;
@@ -478,9 +551,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:190:4: import_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
                     {
-                    pushFollow(FOLLOW_import_statement_in_statement120);
+                    pushFollow(FOLLOW_import_statement_in_statement156);
                     import_statement();
                     _fsp--;
                     if (failed) return ;
@@ -488,9 +561,9 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:191:4: global
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:197:4: global
                     {
-                    pushFollow(FOLLOW_global_in_statement126);
+                    pushFollow(FOLLOW_global_in_statement162);
                     global();
                     _fsp--;
                     if (failed) return ;
@@ -498,9 +571,9 @@
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:192:4: function
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:198:4: function
                     {
-                    pushFollow(FOLLOW_function_in_statement132);
+                    pushFollow(FOLLOW_function_in_statement168);
                     function();
                     _fsp--;
                     if (failed) return ;
@@ -508,9 +581,9 @@
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:193:10: t= template
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:199:10: t= template
                     {
-                    pushFollow(FOLLOW_template_in_statement146);
+                    pushFollow(FOLLOW_template_in_statement182);
                     t=template();
                     _fsp--;
                     if (failed) return ;
@@ -521,9 +594,9 @@
                     }
                     break;
                 case 6 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:194:4: r= rule
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:200:4: r= rule
                     {
-                    pushFollow(FOLLOW_rule_in_statement155);
+                    pushFollow(FOLLOW_rule_in_statement191);
                     r=rule();
                     _fsp--;
                     if (failed) return ;
@@ -534,9 +607,9 @@
                     }
                     break;
                 case 7 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:195:4: q= query
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:201:4: q= query
                     {
-                    pushFollow(FOLLOW_query_in_statement167);
+                    pushFollow(FOLLOW_query_in_statement203);
                     q=query();
                     _fsp--;
                     if (failed) return ;
@@ -565,32 +638,32 @@
 
 
     // $ANTLR start package_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:199:1: package_statement returns [String packageName] : PACKAGE n= dotted_name[null] opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:205:1: package_statement returns [String packageName] : PACKAGE n= dotted_name[null] opt_semicolon ;
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
         String n = null;
 
 
-        
-        		packageName = null;
+
+        		packageName = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:3: ( PACKAGE n= dotted_name[null] opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:3: PACKAGE n= dotted_name[null] opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: ( PACKAGE n= dotted_name[null] opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: PACKAGE n= dotted_name[null] opt_semicolon
             {
-            match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement196); if (failed) return packageName;
-            pushFollow(FOLLOW_dotted_name_in_package_statement200);
+            match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement232); if (failed) return packageName;
+            pushFollow(FOLLOW_dotted_name_in_package_statement236);
             n=dotted_name(null);
             _fsp--;
             if (failed) return packageName;
-            pushFollow(FOLLOW_opt_semicolon_in_package_statement203);
+            pushFollow(FOLLOW_opt_semicolon_in_package_statement239);
             opt_semicolon();
             _fsp--;
             if (failed) return packageName;
             if ( backtracking==0 ) {
-              
-              			packageName = n;
+
+              			packageName = n;
               		
             }
 
@@ -609,33 +682,33 @@
 
 
     // $ANTLR start import_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:211:1: import_statement : imp= IMPORT import_name[importDecl] opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:217:1: import_statement : imp= IMPORT import_name[importDecl] opt_semicolon ;
     public final void import_statement() throws RecognitionException {
         Token imp=null;
 
-        
-                	ImportDescr importDecl = null;
+
+                	ImportDescr importDecl = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:215:4: (imp= IMPORT import_name[importDecl] opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:215:4: imp= IMPORT import_name[importDecl] opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: (imp= IMPORT import_name[importDecl] opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: imp= IMPORT import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
-            match(input,IMPORT,FOLLOW_IMPORT_in_import_statement235); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_import_statement271); if (failed) return ;
             if ( backtracking==0 ) {
-              
-              	            importDecl = factory.createImport( );
-              	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
-              		    if (packageDescr != null) {
-              			packageDescr.addImport( importDecl );
-              		    }
+
+              	            importDecl = factory.createImport( );
+              	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
+              		    if (packageDescr != null) {
+              			packageDescr.addImport( importDecl );
+              		    }
               	        
             }
-            pushFollow(FOLLOW_import_name_in_import_statement258);
+            pushFollow(FOLLOW_import_name_in_import_statement294);
             import_name(importDecl);
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_import_statement261);
+            pushFollow(FOLLOW_opt_semicolon_in_import_statement297);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -655,34 +728,34 @@
 
 
     // $ANTLR start function_import_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:226:1: function_import_statement : imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:232:1: function_import_statement : imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
     public final void function_import_statement() throws RecognitionException {
         Token imp=null;
 
-        
-                	FunctionImportDescr importDecl = null;
+
+                	FunctionImportDescr importDecl = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: (imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: (imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
-            match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement287); if (failed) return ;
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_function_import_statement289); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement323); if (failed) return ;
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function_import_statement325); if (failed) return ;
             if ( backtracking==0 ) {
-              
-              	            importDecl = factory.createFunctionImport();
-              	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
-              		    if (packageDescr != null) {
-              			packageDescr.addFunctionImport( importDecl );
-              		    }
+
+              	            importDecl = factory.createFunctionImport();
+              	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
+              		    if (packageDescr != null) {
+              			packageDescr.addFunctionImport( importDecl );
+              		    }
               	        
             }
-            pushFollow(FOLLOW_import_name_in_function_import_statement312);
+            pushFollow(FOLLOW_import_name_in_function_import_statement348);
             import_name(importDecl);
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement315);
+            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement351);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -702,7 +775,7 @@
 
 
     // $ANTLR start import_name
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:242:1: import_name[ImportDescr importDecl] returns [String name] : id= identifier ( '.' id= identifier )* (star= '.*' )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:248:1: import_name[ImportDescr importDecl] returns [String name] : id= identifier ( '.' id= identifier )* (star= '.*' )? ;
     public final String import_name(ImportDescr importDecl) throws RecognitionException {
         String name = null;
 
@@ -710,49 +783,49 @@
         Token id = null;
 
 
-        
-        		name = null;
+
+        		name = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:247:3: (id= identifier ( '.' id= identifier )* (star= '.*' )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:247:3: id= identifier ( '.' id= identifier )* (star= '.*' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: (id= identifier ( '.' id= identifier )* (star= '.*' )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: id= identifier ( '.' id= identifier )* (star= '.*' )?
             {
-            pushFollow(FOLLOW_identifier_in_import_name343);
+            pushFollow(FOLLOW_identifier_in_import_name379);
             id=identifier();
             _fsp--;
             if (failed) return name;
             if ( backtracking==0 ) {
-               
-              		    name=id.getText(); 
-              		    importDecl.setTarget( name );
-              		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
+               
+              		    name=id.getText(); 
+              		    importDecl.setTarget( name );
+              		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:253:3: ( '.' id= identifier )*
-            loop5:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:3: ( '.' id= identifier )*
+            loop8:
             do {
-                int alt5=2;
-                int LA5_0 = input.LA(1);
+                int alt8=2;
+                int LA8_0 = input.LA(1);
 
-                if ( (LA5_0==64) ) {
-                    alt5=1;
+                if ( (LA8_0==67) ) {
+                    alt8=1;
                 }
 
 
-                switch (alt5) {
+                switch (alt8) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:253:5: '.' id= identifier
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:5: '.' id= identifier
             	    {
-            	    match(input,64,FOLLOW_64_in_import_name355); if (failed) return name;
-            	    pushFollow(FOLLOW_identifier_in_import_name359);
+            	    match(input,67,FOLLOW_67_in_import_name391); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_import_name395);
             	    id=identifier();
             	    _fsp--;
             	    if (failed) return name;
             	    if ( backtracking==0 ) {
-            	       
-            	      		        name = name + "." + id.getText(); 
-            	      			importDecl.setTarget( name );
-            	      		        importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
+            	       
+            	      		        name = name + "." + id.getText(); 
+            	      			importDecl.setTarget( name );
+            	      		        importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
             	      		    
             	    }
 
@@ -760,28 +833,28 @@
             	    break;
 
             	default :
-            	    break loop5;
+            	    break loop8;
                 }
             } while (true);
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:260:3: (star= '.*' )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:3: (star= '.*' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
 
-            if ( (LA6_0==65) ) {
-                alt6=1;
+            if ( (LA9_0==68) ) {
+                alt9=1;
             }
-            switch (alt6) {
+            switch (alt9) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:260:5: star= '.*'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:5: star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,65,FOLLOW_65_in_import_name383); if (failed) return name;
+                    match(input,68,FOLLOW_68_in_import_name419); if (failed) return name;
                     if ( backtracking==0 ) {
-                       
-                      		        name = name + star.getText(); 
-                      			importDecl.setTarget( name );
-                      		        importDecl.setEndCharacter( ((CommonToken)star).getStopIndex() );
+                       
+                      		        name = name + star.getText(); 
+                      			importDecl.setTarget( name );
+                      		        importDecl.setEndCharacter( ((CommonToken)star).getStopIndex() );
                       		    
                     }
 
@@ -806,7 +879,7 @@
 
 
     // $ANTLR start global
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:270:1: global : loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:276:1: global : loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon ;
     public final void global() throws RecognitionException {
         Token loc=null;
         String type = null;
@@ -814,43 +887,43 @@
         Token id = null;
 
 
-        
-        	    GlobalDescr global = null;
+
+        	    GlobalDescr global = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:275:3: (loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:275:3: loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: (loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,GLOBAL,FOLLOW_GLOBAL_in_global419); if (failed) return ;
+            match(input,GLOBAL,FOLLOW_GLOBAL_in_global455); if (failed) return ;
             if ( backtracking==0 ) {
-              
-              		    global = factory.createGlobal();
-              	            global.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              		    packageDescr.addGlobal( global );
+
+              		    global = factory.createGlobal();
+              	            global.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              		    packageDescr.addGlobal( global );
               		
             }
-            pushFollow(FOLLOW_dotted_name_in_global430);
+            pushFollow(FOLLOW_dotted_name_in_global466);
             type=dotted_name(null);
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              		    global.setType( type );
+
+              		    global.setType( type );
               		
             }
-            pushFollow(FOLLOW_identifier_in_global442);
+            pushFollow(FOLLOW_identifier_in_global478);
             id=identifier();
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_global444);
+            pushFollow(FOLLOW_opt_semicolon_in_global480);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              		    global.setIdentifier( id.getText() );
-              		    global.setEndCharacter( ((CommonToken)id).getStopIndex() );
+
+              		    global.setIdentifier( id.getText() );
+              		    global.setEndCharacter( ((CommonToken)id).getStopIndex() );
               		
             }
 
@@ -869,7 +942,7 @@
 
 
     // $ANTLR start function
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:293:1: function : loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:299:1: function : loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] ;
     public final void function() throws RecognitionException {
         Token loc=null;
         String retType = null;
@@ -883,31 +956,31 @@
         String body = null;
 
 
-        
-        		FunctionDescr f = null;
+
+        		FunctionDescr f = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:298:3: (loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:298:3: loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: (loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f]
             {
             loc=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_function471); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:298:16: (retType= dotted_name[null] )?
-            int alt7=2;
-            int LA7_0 = input.LA(1);
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function507); if (failed) return ;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:16: (retType= dotted_name[null] )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-            if ( (LA7_0==ID) ) {
-                int LA7_1 = input.LA(2);
+            if ( (LA10_0==ID) ) {
+                int LA10_1 = input.LA(2);
 
-                if ( ((LA7_1>=PACKAGE && LA7_1<=ATTRIBUTES)||LA7_1==ENABLED||LA7_1==SALIENCE||LA7_1==DURATION||(LA7_1>=ACCUMULATE && LA7_1<=OR)||(LA7_1>=CONTAINS && LA7_1<=EXCLUDES)||LA7_1==NULL||LA7_1==LEFT_SQUARE||(LA7_1>=AND && LA7_1<=THEN)||LA7_1==64) ) {
-                    alt7=1;
+                if ( ((LA10_1>=ATTRIBUTES && LA10_1<=WHEN)||LA10_1==ENABLED||LA10_1==SALIENCE||LA10_1==DURATION||(LA10_1>=ACCUMULATE && LA10_1<=OR)||(LA10_1>=CONTAINS && LA10_1<=EXCLUDES)||LA10_1==NULL||LA10_1==LEFT_SQUARE||(LA10_1>=AND && LA10_1<=THEN)||LA10_1==67) ) {
+                    alt10=1;
                 }
             }
-            switch (alt7) {
+            switch (alt10) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:298:17: retType= dotted_name[null]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:17: retType= dotted_name[null]
                     {
-                    pushFollow(FOLLOW_dotted_name_in_function476);
+                    pushFollow(FOLLOW_dotted_name_in_function512);
                     retType=dotted_name(null);
                     _fsp--;
                     if (failed) return ;
@@ -917,39 +990,39 @@
 
             }
 
-            pushFollow(FOLLOW_identifier_in_function483);
+            pushFollow(FOLLOW_identifier_in_function519);
             n=identifier();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              			//System.err.println( "function :: " + n.getText() );
-              			f = factory.createFunction( n.getText(), retType );
-              			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
-              	        	f.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			packageDescr.addFunction( f );
+
+              			//System.err.println( "function :: " + n.getText() );
+              			f = factory.createFunction( n.getText(), retType );
+              			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
+              	        	f.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			packageDescr.addFunction( f );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function492); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:307:4: ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )?
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function528); if (failed) return ;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:4: ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( ((LA11_0>=PACKAGE && LA11_0<=ATTRIBUTES)||LA11_0==ENABLED||LA11_0==SALIENCE||LA11_0==DURATION||(LA11_0>=ACCUMULATE && LA11_0<=OR)||(LA11_0>=CONTAINS && LA11_0<=EXCLUDES)||LA11_0==NULL||(LA11_0>=AND && LA11_0<=THEN)) ) {
-                alt11=1;
+            if ( ((LA14_0>=ATTRIBUTES && LA14_0<=WHEN)||LA14_0==ENABLED||LA14_0==SALIENCE||LA14_0==DURATION||(LA14_0>=ACCUMULATE && LA14_0<=OR)||(LA14_0>=CONTAINS && LA14_0<=EXCLUDES)||LA14_0==NULL||(LA14_0>=AND && LA14_0<=THEN)) ) {
+                alt14=1;
             }
-            switch (alt11) {
+            switch (alt14) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:307:6: (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )*
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:307:6: (paramType= dotted_name[null] )?
-                    int alt8=2;
-                    alt8 = dfa8.predict(input);
-                    switch (alt8) {
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )?
+                    int alt11=2;
+                    alt11 = dfa11.predict(input);
+                    switch (alt11) {
                         case 1 :
-                            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:307:7: paramType= dotted_name[null]
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:7: paramType= dotted_name[null]
                             {
-                            pushFollow(FOLLOW_dotted_name_in_function502);
+                            pushFollow(FOLLOW_dotted_name_in_function538);
                             paramType=dotted_name(null);
                             _fsp--;
                             if (failed) return ;
@@ -959,39 +1032,39 @@
 
                     }
 
-                    pushFollow(FOLLOW_argument_in_function509);
+                    pushFollow(FOLLOW_argument_in_function545);
                     paramName=argument();
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                      
-                      					f.addParameter( paramType, paramName );
+
+                      					f.addParameter( paramType, paramName );
                       				
                     }
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:311:5: ( ',' (paramType= dotted_name[null] )? paramName= argument )*
-                    loop10:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:5: ( ',' (paramType= dotted_name[null] )? paramName= argument )*
+                    loop13:
                     do {
-                        int alt10=2;
-                        int LA10_0 = input.LA(1);
+                        int alt13=2;
+                        int LA13_0 = input.LA(1);
 
-                        if ( (LA10_0==66) ) {
-                            alt10=1;
+                        if ( (LA13_0==66) ) {
+                            alt13=1;
                         }
 
 
-                        switch (alt10) {
+                        switch (alt13) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:311:7: ',' (paramType= dotted_name[null] )? paramName= argument
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:7: ',' (paramType= dotted_name[null] )? paramName= argument
                     	    {
-                    	    match(input,66,FOLLOW_66_in_function523); if (failed) return ;
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:311:11: (paramType= dotted_name[null] )?
-                    	    int alt9=2;
-                    	    alt9 = dfa9.predict(input);
-                    	    switch (alt9) {
+                    	    match(input,66,FOLLOW_66_in_function559); if (failed) return ;
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:11: (paramType= dotted_name[null] )?
+                    	    int alt12=2;
+                    	    alt12 = dfa12.predict(input);
+                    	    switch (alt12) {
                     	        case 1 :
-                    	            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:311:12: paramType= dotted_name[null]
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:12: paramType= dotted_name[null]
                     	            {
-                    	            pushFollow(FOLLOW_dotted_name_in_function528);
+                    	            pushFollow(FOLLOW_dotted_name_in_function564);
                     	            paramType=dotted_name(null);
                     	            _fsp--;
                     	            if (failed) return ;
@@ -1001,13 +1074,13 @@
 
                     	    }
 
-                    	    pushFollow(FOLLOW_argument_in_function535);
+                    	    pushFollow(FOLLOW_argument_in_function571);
                     	    paramName=argument();
                     	    _fsp--;
                     	    if (failed) return ;
                     	    if ( backtracking==0 ) {
-                    	      
-                    	      						f.addParameter( paramType, paramName );
+
+                    	      						f.addParameter( paramType, paramName );
                     	      					
                     	    }
 
@@ -1015,7 +1088,7 @@
                     	    break;
 
                     	default :
-                    	    break loop10;
+                    	    break loop13;
                         }
                     } while (true);
 
@@ -1025,15 +1098,15 @@
 
             }
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function559); if (failed) return ;
-            pushFollow(FOLLOW_curly_chunk_in_function565);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function595); if (failed) return ;
+            pushFollow(FOLLOW_curly_chunk_in_function601);
             body=curly_chunk(f);
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              			//strip out '{','}'
-              			f.setText( body.substring( 1, body.length()-1 ) );
+
+              			//strip out '{','}'
+              			f.setText( body.substring( 1, body.length()-1 ) );
               		
             }
 
@@ -1052,7 +1125,7 @@
 
 
     // $ANTLR start query
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:327:1: query returns [QueryDescr query] : loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:333:1: query returns [QueryDescr query] : loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END ;
     public final QueryDescr query() throws RecognitionException {
         QueryDescr query = null;
 
@@ -1060,33 +1133,33 @@
         String queryName = null;
 
 
-        
-        		query = null;
-        		AndDescr lhs = null;
+
+        		query = null;
+        		AndDescr lhs = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:333:3: (loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:333:3: loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: (loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END
             {
             loc=(Token)input.LT(1);
-            match(input,QUERY,FOLLOW_QUERY_in_query597); if (failed) return query;
-            pushFollow(FOLLOW_name_in_query601);
+            match(input,QUERY,FOLLOW_QUERY_in_query633); if (failed) return query;
+            pushFollow(FOLLOW_name_in_query637);
             queryName=name();
             _fsp--;
             if (failed) return query;
             if ( backtracking==0 ) {
-               
-              			query = factory.createQuery( queryName ); 
-              			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			query.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			lhs = new AndDescr(); query.setLhs( lhs ); 
-              			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+               
+              			query = factory.createQuery( queryName ); 
+              			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			query.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			lhs = new AndDescr(); query.setLhs( lhs ); 
+              			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:341:3: ( normal_lhs_block[lhs] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:342:4: normal_lhs_block[lhs]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:347:3: ( normal_lhs_block[lhs] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:348:4: normal_lhs_block[lhs]
             {
-            pushFollow(FOLLOW_normal_lhs_block_in_query614);
+            pushFollow(FOLLOW_normal_lhs_block_in_query650);
             normal_lhs_block(lhs);
             _fsp--;
             if (failed) return query;
@@ -1094,10 +1167,10 @@
             }
 
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_query631); if (failed) return query;
+            match(input,END,FOLLOW_END_in_query667); if (failed) return query;
             if ( backtracking==0 ) {
-              
-              			query.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+              			query.setEndCharacter( ((CommonToken)loc).getStopIndex() );
               		
             }
 
@@ -1116,7 +1189,7 @@
 
 
     // $ANTLR start template
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:352:1: template returns [FactTemplateDescr template] : loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:358:1: template returns [FactTemplateDescr template] : loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon ;
     public final FactTemplateDescr template() throws RecognitionException {
         FactTemplateDescr template = null;
 
@@ -1126,53 +1199,53 @@
         FieldTemplateDescr slot = null;
 
 
-        
-        		template = null;		
+
+        		template = null;		
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: (loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: (loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template661); if (failed) return template;
-            pushFollow(FOLLOW_identifier_in_template665);
+            match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template697); if (failed) return template;
+            pushFollow(FOLLOW_identifier_in_template701);
             templateName=identifier();
             _fsp--;
             if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template667);
+            pushFollow(FOLLOW_opt_semicolon_in_template703);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
             if ( backtracking==0 ) {
-              
-              			template = new FactTemplateDescr(templateName.getText());
-              			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
-              			template.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+              			template = new FactTemplateDescr(templateName.getText());
+              			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
+              			template.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:363:3: (slot= template_slot )+
-            int cnt12=0;
-            loop12:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:369:3: (slot= template_slot )+
+            int cnt15=0;
+            loop15:
             do {
-                int alt12=2;
-                int LA12_0 = input.LA(1);
+                int alt15=2;
+                int LA15_0 = input.LA(1);
 
-                if ( (LA12_0==ID) ) {
-                    alt12=1;
+                if ( (LA15_0==ID) ) {
+                    alt15=1;
                 }
 
 
-                switch (alt12) {
+                switch (alt15) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:364:4: slot= template_slot
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:4: slot= template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template682);
+            	    pushFollow(FOLLOW_template_slot_in_template718);
             	    slot=template_slot();
             	    _fsp--;
             	    if (failed) return template;
             	    if ( backtracking==0 ) {
-            	      
-            	      				template.addFieldTemplate(slot);
+
+            	      				template.addFieldTemplate(slot);
             	      			
             	    }
 
@@ -1180,24 +1253,24 @@
             	    break;
 
             	default :
-            	    if ( cnt12 >= 1 ) break loop12;
+            	    if ( cnt15 >= 1 ) break loop15;
             	    if (backtracking>0) {failed=true; return template;}
                         EarlyExitException eee =
-                            new EarlyExitException(12, input);
+                            new EarlyExitException(15, input);
                         throw eee;
                 }
-                cnt12++;
+                cnt15++;
             } while (true);
 
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_template699); if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template701);
+            match(input,END,FOLLOW_END_in_template735); if (failed) return template;
+            pushFollow(FOLLOW_opt_semicolon_in_template737);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
             if ( backtracking==0 ) {
-              
-              			template.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+              			template.setEndCharacter( ((CommonToken)loc).getStopIndex() );
               		
             }
 
@@ -1216,7 +1289,7 @@
 
 
     // $ANTLR start template_slot
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:375:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name[field] n= identifier opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:381:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name[field] n= identifier opt_semicolon ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr field = null;
 
@@ -1225,40 +1298,40 @@
         Token n = null;
 
 
-        
-        		field = null;
+
+        		field = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:380:11: (fieldType= dotted_name[field] n= identifier opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:380:11: fieldType= dotted_name[field] n= identifier opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: (fieldType= dotted_name[field] n= identifier opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: fieldType= dotted_name[field] n= identifier opt_semicolon
             {
             if ( backtracking==0 ) {
-              
-              			field = factory.createFieldTemplate();
+
+              			field = factory.createFieldTemplate();
               	         
             }
-            pushFollow(FOLLOW_dotted_name_in_template_slot747);
+            pushFollow(FOLLOW_dotted_name_in_template_slot783);
             fieldType=dotted_name(field);
             _fsp--;
             if (failed) return field;
             if ( backtracking==0 ) {
-              
-              		        field.setClassType( fieldType );
+
+              		        field.setClassType( fieldType );
               		 
             }
-            pushFollow(FOLLOW_identifier_in_template_slot765);
+            pushFollow(FOLLOW_identifier_in_template_slot801);
             n=identifier();
             _fsp--;
             if (failed) return field;
-            pushFollow(FOLLOW_opt_semicolon_in_template_slot767);
+            pushFollow(FOLLOW_opt_semicolon_in_template_slot803);
             opt_semicolon();
             _fsp--;
             if (failed) return field;
             if ( backtracking==0 ) {
-              
-              		        field.setName( n.getText() );
-              			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
-              			field.setEndCharacter( ((CommonToken)n).getStopIndex() );
+
+              		        field.setName( n.getText() );
+              			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
+              			field.setEndCharacter( ((CommonToken)n).getStopIndex() );
               		 
             }
 
@@ -1277,7 +1350,7 @@
 
 
     // $ANTLR start rule
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:396:1: rule returns [RuleDescr rule] : loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:402:1: rule returns [RuleDescr rule] : loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
     public final RuleDescr rule() throws RecognitionException {
         RuleDescr rule = null;
 
@@ -1285,58 +1358,58 @@
         String ruleName = null;
 
 
-        
-        		rule = null;
-        		String consequence = "";
-        		AndDescr lhs = null;
+
+        		rule = null;
+        		String consequence = "";
+        		AndDescr lhs = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:403:3: (loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:403:3: loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: (loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
             {
             loc=(Token)input.LT(1);
-            match(input,RULE,FOLLOW_RULE_in_rule800); if (failed) return rule;
-            pushFollow(FOLLOW_name_in_rule804);
+            match(input,RULE,FOLLOW_RULE_in_rule836); if (failed) return rule;
+            pushFollow(FOLLOW_name_in_rule840);
             ruleName=name();
             _fsp--;
             if (failed) return rule;
             if ( backtracking==0 ) {
-               
-              			debug( "start rule: " + ruleName );
-              			rule = new RuleDescr( ruleName, null ); 
-              			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+               
+              			debug( "start rule: " + ruleName );
+              			rule = new RuleDescr( ruleName, null ); 
+              			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            pushFollow(FOLLOW_rule_attributes_in_rule813);
+            pushFollow(FOLLOW_rule_attributes_in_rule849);
             rule_attributes(rule);
             _fsp--;
             if (failed) return rule;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:411:3: (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )?
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:3: (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA14_0==WHEN) ) {
-                alt14=1;
+            if ( (LA17_0==WHEN) ) {
+                alt17=1;
             }
-            switch (alt14) {
+            switch (alt17) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:411:5: loc= WHEN ( ':' )? ( normal_lhs_block[lhs] )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:5: loc= WHEN ( ':' )? ( normal_lhs_block[lhs] )
                     {
                     loc=(Token)input.LT(1);
-                    match(input,WHEN,FOLLOW_WHEN_in_rule822); if (failed) return rule;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:411:14: ( ':' )?
-                    int alt13=2;
-                    int LA13_0 = input.LA(1);
+                    match(input,WHEN,FOLLOW_WHEN_in_rule858); if (failed) return rule;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:14: ( ':' )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
 
-                    if ( (LA13_0==67) ) {
-                        alt13=1;
+                    if ( (LA16_0==65) ) {
+                        alt16=1;
                     }
-                    switch (alt13) {
+                    switch (alt16) {
                         case 1 :
-                            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ':'
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ':'
                             {
-                            match(input,67,FOLLOW_67_in_rule824); if (failed) return rule;
+                            match(input,65,FOLLOW_65_in_rule860); if (failed) return rule;
 
                             }
                             break;
@@ -1344,16 +1417,16 @@
                     }
 
                     if ( backtracking==0 ) {
-                       
-                      				lhs = new AndDescr(); rule.setLhs( lhs ); 
-                      				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                       
+                      				lhs = new AndDescr(); rule.setLhs( lhs ); 
+                      				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
                       			
                     }
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:417:4: ( normal_lhs_block[lhs] )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:5: normal_lhs_block[lhs]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:423:4: ( normal_lhs_block[lhs] )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:425:5: normal_lhs_block[lhs]
                     {
-                    pushFollow(FOLLOW_normal_lhs_block_in_rule842);
+                    pushFollow(FOLLOW_normal_lhs_block_in_rule878);
                     normal_lhs_block(lhs);
                     _fsp--;
                     if (failed) return rule;
@@ -1366,7 +1439,7 @@
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule863);
+            pushFollow(FOLLOW_rhs_chunk_in_rule899);
             rhs_chunk(rule);
             _fsp--;
             if (failed) return rule;
@@ -1386,74 +1459,74 @@
 
 
     // $ANTLR start rule_attributes
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:428:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
     public final void rule_attributes(RuleDescr rule) throws RecognitionException {
         AttributeDescr a = null;
 
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:430:4: ( ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:430:4: ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:430:4: ( ATTRIBUTES ':' )?
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
 
-            if ( (LA15_0==ATTRIBUTES) ) {
-                alt15=1;
+            if ( (LA18_0==ATTRIBUTES) ) {
+                alt18=1;
             }
-            switch (alt15) {
+            switch (alt18) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:430:5: ATTRIBUTES ':'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:5: ATTRIBUTES ':'
                     {
-                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes884); if (failed) return ;
-                    match(input,67,FOLLOW_67_in_rule_attributes886); if (failed) return ;
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes920); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_rule_attributes922); if (failed) return ;
 
                     }
                     break;
 
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:431:4: ( ( ',' )? a= rule_attribute )*
-            loop17:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:4: ( ( ',' )? a= rule_attribute )*
+            loop20:
             do {
-                int alt17=2;
-                int LA17_0 = input.LA(1);
+                int alt20=2;
+                int LA20_0 = input.LA(1);
 
-                if ( (LA17_0==DATE_EFFECTIVE||(LA17_0>=DATE_EXPIRES && LA17_0<=ENABLED)||LA17_0==SALIENCE||(LA17_0>=NO_LOOP && LA17_0<=LOCK_ON_ACTIVE)||LA17_0==66) ) {
-                    alt17=1;
+                if ( (LA20_0==DATE_EFFECTIVE||(LA20_0>=DATE_EXPIRES && LA20_0<=ENABLED)||LA20_0==SALIENCE||(LA20_0>=NO_LOOP && LA20_0<=LOCK_ON_ACTIVE)||LA20_0==66) ) {
+                    alt20=1;
                 }
 
 
-                switch (alt17) {
+                switch (alt20) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:431:6: ( ',' )? a= rule_attribute
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )? a= rule_attribute
             	    {
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:431:6: ( ',' )?
-            	    int alt16=2;
-            	    int LA16_0 = input.LA(1);
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )?
+            	    int alt19=2;
+            	    int LA19_0 = input.LA(1);
 
-            	    if ( (LA16_0==66) ) {
-            	        alt16=1;
+            	    if ( (LA19_0==66) ) {
+            	        alt19=1;
             	    }
-            	    switch (alt16) {
+            	    switch (alt19) {
             	        case 1 :
-            	            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ','
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
             	            {
-            	            match(input,66,FOLLOW_66_in_rule_attributes895); if (failed) return ;
+            	            match(input,66,FOLLOW_66_in_rule_attributes931); if (failed) return ;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes900);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes936);
             	    a=rule_attribute();
             	    _fsp--;
             	    if (failed) return ;
             	    if ( backtracking==0 ) {
-            	      
-            	      					rule.addAttribute( a );
+
+            	      					rule.addAttribute( a );
             	      				
             	    }
 
@@ -1461,7 +1534,7 @@
             	    break;
 
             	default :
-            	    break loop17;
+            	    break loop20;
                 }
             } while (true);
 
@@ -1481,88 +1554,93 @@
 
 
     // $ANTLR start rule_attribute
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:440:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );
     public final AttributeDescr rule_attribute() throws RecognitionException {
         AttributeDescr d = null;
 
         AttributeDescr a = null;
 
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:445:4: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active )
-            int alt18=11;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:4: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect )
+            int alt21=12;
             switch ( input.LA(1) ) {
             case SALIENCE:
                 {
-                alt18=1;
+                alt21=1;
                 }
                 break;
             case NO_LOOP:
                 {
-                alt18=2;
+                alt21=2;
                 }
                 break;
             case AGENDA_GROUP:
                 {
-                alt18=3;
+                alt21=3;
                 }
                 break;
             case DURATION:
                 {
-                alt18=4;
+                alt21=4;
                 }
                 break;
             case ACTIVATION_GROUP:
                 {
-                alt18=5;
+                alt21=5;
                 }
                 break;
             case AUTO_FOCUS:
                 {
-                alt18=6;
+                alt21=6;
                 }
                 break;
             case DATE_EFFECTIVE:
                 {
-                alt18=7;
+                alt21=7;
                 }
                 break;
             case DATE_EXPIRES:
                 {
-                alt18=8;
+                alt21=8;
                 }
                 break;
             case ENABLED:
                 {
-                alt18=9;
+                alt21=9;
                 }
                 break;
             case RULEFLOW_GROUP:
                 {
-                alt18=10;
+                alt21=10;
                 }
                 break;
             case LOCK_ON_ACTIVE:
                 {
-                alt18=11;
+                alt21=11;
                 }
                 break;
+            case DIALECT:
+                {
+                alt21=12;
+                }
+                break;
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("440:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active );", 18, 0, input);
+                    new NoViableAltException("446:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );", 21, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt18) {
+            switch (alt21) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:445:4: a= salience
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:4: a= salience
                     {
-                    pushFollow(FOLLOW_salience_in_rule_attribute941);
+                    pushFollow(FOLLOW_salience_in_rule_attribute977);
                     a=salience();
                     _fsp--;
                     if (failed) return d;
@@ -1573,9 +1651,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:446:5: a= no_loop
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452:5: a= no_loop
                     {
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute951);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute987);
                     a=no_loop();
                     _fsp--;
                     if (failed) return d;
@@ -1586,9 +1664,9 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:447:5: a= agenda_group
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:453:5: a= agenda_group
                     {
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute962);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute998);
                     a=agenda_group();
                     _fsp--;
                     if (failed) return d;
@@ -1599,9 +1677,9 @@
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:448:5: a= duration
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:454:5: a= duration
                     {
-                    pushFollow(FOLLOW_duration_in_rule_attribute975);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1011);
                     a=duration();
                     _fsp--;
                     if (failed) return d;
@@ -1612,9 +1690,9 @@
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:449:5: a= activation_group
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:5: a= activation_group
                     {
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute989);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1025);
                     a=activation_group();
                     _fsp--;
                     if (failed) return d;
@@ -1625,9 +1703,9 @@
                     }
                     break;
                 case 6 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:450:5: a= auto_focus
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:456:5: a= auto_focus
                     {
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1000);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1036);
                     a=auto_focus();
                     _fsp--;
                     if (failed) return d;
@@ -1638,9 +1716,9 @@
                     }
                     break;
                 case 7 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:451:5: a= date_effective
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:457:5: a= date_effective
                     {
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1011);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1047);
                     a=date_effective();
                     _fsp--;
                     if (failed) return d;
@@ -1651,9 +1729,9 @@
                     }
                     break;
                 case 8 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:452:5: a= date_expires
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:5: a= date_expires
                     {
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1021);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1057);
                     a=date_expires();
                     _fsp--;
                     if (failed) return d;
@@ -1664,9 +1742,9 @@
                     }
                     break;
                 case 9 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:453:5: a= enabled
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:5: a= enabled
                     {
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1031);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1067);
                     a=enabled();
                     _fsp--;
                     if (failed) return d;
@@ -1677,9 +1755,9 @@
                     }
                     break;
                 case 10 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:454:5: a= ruleflow_group
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:460:5: a= ruleflow_group
                     {
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1041);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1077);
                     a=ruleflow_group();
                     _fsp--;
                     if (failed) return d;
@@ -1690,9 +1768,9 @@
                     }
                     break;
                 case 11 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:455:5: a= lock_on_active
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461:5: a= lock_on_active
                     {
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1051);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1087);
                     a=lock_on_active();
                     _fsp--;
                     if (failed) return d;
@@ -1702,7 +1780,20 @@
 
                     }
                     break;
+                case 12 :
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:5: a= dialect
+                    {
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1096);
+                    a=dialect();
+                    _fsp--;
+                    if (failed) return d;
+                    if ( backtracking==0 ) {
+                      d = a; 
+                    }
 
+                    }
+                    break;
+
             }
         }
         catch (RecognitionException re) {
@@ -1717,30 +1808,30 @@
 
 
     // $ANTLR start date_effective
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:459:1: date_effective returns [AttributeDescr d] : loc= DATE_EFFECTIVE val= STRING ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466:1: date_effective returns [AttributeDescr d] : loc= DATE_EFFECTIVE val= STRING ;
     public final AttributeDescr date_effective() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token val=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: (loc= DATE_EFFECTIVE val= STRING )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: loc= DATE_EFFECTIVE val= STRING
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: (loc= DATE_EFFECTIVE val= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: loc= DATE_EFFECTIVE val= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1082); if (failed) return d;
+            match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1128); if (failed) return d;
             val=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_effective1086); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_date_effective1132); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "date-effective", getString( val ) );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
+
+              			d = new AttributeDescr( "date-effective", getString( val ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
               		
             }
 
@@ -1759,30 +1850,30 @@
 
 
     // $ANTLR start date_expires
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:474:1: date_expires returns [AttributeDescr d] : loc= DATE_EXPIRES val= STRING ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:1: date_expires returns [AttributeDescr d] : loc= DATE_EXPIRES val= STRING ;
     public final AttributeDescr date_expires() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token val=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:479:3: (loc= DATE_EXPIRES val= STRING )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:479:3: loc= DATE_EXPIRES val= STRING
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: (loc= DATE_EXPIRES val= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: loc= DATE_EXPIRES val= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1119); if (failed) return d;
+            match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1165); if (failed) return d;
             val=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_expires1123); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_date_expires1169); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "date-expires", getString( val ) );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
+
+              			d = new AttributeDescr( "date-expires", getString( val ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
               		
             }
 
@@ -1801,30 +1892,30 @@
 
 
     // $ANTLR start enabled
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:490:1: enabled returns [AttributeDescr d] : loc= ENABLED t= BOOL ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:1: enabled returns [AttributeDescr d] : loc= ENABLED t= BOOL ;
     public final AttributeDescr enabled() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token t=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:495:4: (loc= ENABLED t= BOOL )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:495:4: loc= ENABLED t= BOOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: (loc= ENABLED t= BOOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: loc= ENABLED t= BOOL
             {
             loc=(Token)input.LT(1);
-            match(input,ENABLED,FOLLOW_ENABLED_in_enabled1158); if (failed) return d;
+            match(input,ENABLED,FOLLOW_ENABLED_in_enabled1204); if (failed) return d;
             t=(Token)input.LT(1);
-            match(input,BOOL,FOLLOW_BOOL_in_enabled1162); if (failed) return d;
+            match(input,BOOL,FOLLOW_BOOL_in_enabled1208); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              				d = new AttributeDescr( "enabled", t.getText() );
-              				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+
+              				d = new AttributeDescr( "enabled", t.getText() );
+              				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
               			
             }
 
@@ -1843,30 +1934,30 @@
 
 
     // $ANTLR start salience
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:508:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT ;
     public final AttributeDescr salience() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token i=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:513:3: (loc= SALIENCE i= INT )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:513:3: loc= SALIENCE i= INT
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: (loc= SALIENCE i= INT )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: loc= SALIENCE i= INT
             {
             loc=(Token)input.LT(1);
-            match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1207); if (failed) return d;
+            match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1253); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_salience1211); if (failed) return d;
+            match(input,INT,FOLLOW_INT_in_salience1257); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "salience", i.getText() );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+
+              			d = new AttributeDescr( "salience", i.getText() );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
               		
             }
 
@@ -1885,34 +1976,34 @@
 
 
     // $ANTLR start no_loop
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:522:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );
     public final AttributeDescr no_loop() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token t=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:527:3: ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) )
-            int alt19=2;
-            int LA19_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) )
+            int alt22=2;
+            int LA22_0 = input.LA(1);
 
-            if ( (LA19_0==NO_LOOP) ) {
-                int LA19_1 = input.LA(2);
+            if ( (LA22_0==NO_LOOP) ) {
+                int LA22_1 = input.LA(2);
 
-                if ( (LA19_1==BOOL) ) {
-                    alt19=2;
+                if ( (LA22_1==BOOL) ) {
+                    alt22=2;
                 }
-                else if ( (LA19_1==EOF||LA19_1==WHEN||LA19_1==DATE_EFFECTIVE||(LA19_1>=DATE_EXPIRES && LA19_1<=ENABLED)||LA19_1==SALIENCE||(LA19_1>=NO_LOOP && LA19_1<=LOCK_ON_ACTIVE)||LA19_1==THEN||LA19_1==66) ) {
-                    alt19=1;
+                else if ( (LA22_1==EOF||(LA22_1>=IMPORT && LA22_1<=QUERY)||(LA22_1>=TEMPLATE && LA22_1<=DATE_EFFECTIVE)||(LA22_1>=DATE_EXPIRES && LA22_1<=ENABLED)||LA22_1==SALIENCE||(LA22_1>=NO_LOOP && LA22_1<=LOCK_ON_ACTIVE)||LA22_1==THEN||LA22_1==66) ) {
+                    alt22=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("522:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );", 19, 1, input);
+                        new NoViableAltException("529:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );", 22, 1, input);
 
                     throw nvae;
                 }
@@ -1920,25 +2011,25 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("522:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );", 19, 0, input);
+                    new NoViableAltException("529:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );", 22, 0, input);
 
                 throw nvae;
             }
-            switch (alt19) {
+            switch (alt22) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:527:3: (loc= NO_LOOP )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:527:3: (loc= NO_LOOP )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:528:4: loc= NO_LOOP
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:535:4: loc= NO_LOOP
                     {
                     loc=(Token)input.LT(1);
-                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1249); if (failed) return d;
+                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1295); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "no-loop", "true" );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+                      				d = new AttributeDescr( "no-loop", "true" );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
                       			
                     }
 
@@ -1948,21 +2039,21 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:537:3: (loc= NO_LOOP t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:537:3: (loc= NO_LOOP t= BOOL )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:538:4: loc= NO_LOOP t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:545:4: loc= NO_LOOP t= BOOL
                     {
                     loc=(Token)input.LT(1);
-                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1277); if (failed) return d;
+                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1323); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1281); if (failed) return d;
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1327); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "no-loop", t.getText() );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+
+                      				d = new AttributeDescr( "no-loop", t.getText() );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
                       			
                     }
 
@@ -1986,34 +2077,34 @@
 
 
     // $ANTLR start auto_focus
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:550:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );
     public final AttributeDescr auto_focus() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token t=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:555:3: ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) )
-            int alt20=2;
-            int LA20_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA20_0==AUTO_FOCUS) ) {
-                int LA20_1 = input.LA(2);
+            if ( (LA23_0==AUTO_FOCUS) ) {
+                int LA23_1 = input.LA(2);
 
-                if ( (LA20_1==BOOL) ) {
-                    alt20=2;
+                if ( (LA23_1==BOOL) ) {
+                    alt23=2;
                 }
-                else if ( (LA20_1==EOF||LA20_1==WHEN||LA20_1==DATE_EFFECTIVE||(LA20_1>=DATE_EXPIRES && LA20_1<=ENABLED)||LA20_1==SALIENCE||(LA20_1>=NO_LOOP && LA20_1<=LOCK_ON_ACTIVE)||LA20_1==THEN||LA20_1==66) ) {
-                    alt20=1;
+                else if ( (LA23_1==EOF||(LA23_1>=IMPORT && LA23_1<=QUERY)||(LA23_1>=TEMPLATE && LA23_1<=DATE_EFFECTIVE)||(LA23_1>=DATE_EXPIRES && LA23_1<=ENABLED)||LA23_1==SALIENCE||(LA23_1>=NO_LOOP && LA23_1<=LOCK_ON_ACTIVE)||LA23_1==THEN||LA23_1==66) ) {
+                    alt23=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("550:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );", 20, 1, input);
+                        new NoViableAltException("557:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );", 23, 1, input);
 
                     throw nvae;
                 }
@@ -2021,25 +2112,25 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("550:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );", 20, 0, input);
+                    new NoViableAltException("557:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt20) {
+            switch (alt23) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:555:3: (loc= AUTO_FOCUS )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:555:3: (loc= AUTO_FOCUS )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:556:4: loc= AUTO_FOCUS
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: loc= AUTO_FOCUS
                     {
                     loc=(Token)input.LT(1);
-                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1330); if (failed) return d;
+                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1376); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "auto-focus", "true" );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+                      				d = new AttributeDescr( "auto-focus", "true" );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
                       			
                     }
 
@@ -2049,21 +2140,21 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:565:3: (loc= AUTO_FOCUS t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:565:3: (loc= AUTO_FOCUS t= BOOL )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:4: loc= AUTO_FOCUS t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:4: loc= AUTO_FOCUS t= BOOL
                     {
                     loc=(Token)input.LT(1);
-                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1358); if (failed) return d;
+                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1404); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1362); if (failed) return d;
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1408); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "auto-focus", t.getText() );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+
+                      				d = new AttributeDescr( "auto-focus", t.getText() );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
                       			
                     }
 
@@ -2087,30 +2178,30 @@
 
 
     // $ANTLR start activation_group
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:578:1: activation_group returns [AttributeDescr d] : loc= ACTIVATION_GROUP n= STRING ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:1: activation_group returns [AttributeDescr d] : loc= ACTIVATION_GROUP n= STRING ;
     public final AttributeDescr activation_group() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token n=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:583:3: (loc= ACTIVATION_GROUP n= STRING )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:583:3: loc= ACTIVATION_GROUP n= STRING
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: (loc= ACTIVATION_GROUP n= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: loc= ACTIVATION_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1407); if (failed) return d;
+            match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1453); if (failed) return d;
             n=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1411); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_activation_group1457); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "activation-group", getString( n ) );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+
+              			d = new AttributeDescr( "activation-group", getString( n ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
               		
             }
 
@@ -2129,30 +2220,30 @@
 
 
     // $ANTLR start ruleflow_group
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:592:1: ruleflow_group returns [AttributeDescr d] : loc= RULEFLOW_GROUP n= STRING ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:1: ruleflow_group returns [AttributeDescr d] : loc= RULEFLOW_GROUP n= STRING ;
     public final AttributeDescr ruleflow_group() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token n=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:597:3: (loc= RULEFLOW_GROUP n= STRING )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:597:3: loc= RULEFLOW_GROUP n= STRING
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: (loc= RULEFLOW_GROUP n= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: loc= RULEFLOW_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,RULEFLOW_GROUP,FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1443); if (failed) return d;
+            match(input,RULEFLOW_GROUP,FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1489); if (failed) return d;
             n=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1447); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1493); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "ruleflow-group", getString( n ) );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+
+              			d = new AttributeDescr( "ruleflow-group", getString( n ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
               		
             }
 
@@ -2171,30 +2262,30 @@
 
 
     // $ANTLR start agenda_group
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:606:1: agenda_group returns [AttributeDescr d] : loc= AGENDA_GROUP n= STRING ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:1: agenda_group returns [AttributeDescr d] : loc= AGENDA_GROUP n= STRING ;
     public final AttributeDescr agenda_group() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token n=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:3: (loc= AGENDA_GROUP n= STRING )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:3: loc= AGENDA_GROUP n= STRING
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: (loc= AGENDA_GROUP n= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: loc= AGENDA_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1479); if (failed) return d;
+            match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1525); if (failed) return d;
             n=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1483); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1529); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "agenda-group", getString( n ) );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+
+              			d = new AttributeDescr( "agenda-group", getString( n ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
               		
             }
 
@@ -2213,30 +2304,30 @@
 
 
     // $ANTLR start duration
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:621:1: duration returns [AttributeDescr d] : loc= DURATION i= INT ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:1: duration returns [AttributeDescr d] : loc= DURATION i= INT ;
     public final AttributeDescr duration() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token i=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:626:3: (loc= DURATION i= INT )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:626:3: loc= DURATION i= INT
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: (loc= DURATION i= INT )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: loc= DURATION i= INT
             {
             loc=(Token)input.LT(1);
-            match(input,DURATION,FOLLOW_DURATION_in_duration1518); if (failed) return d;
+            match(input,DURATION,FOLLOW_DURATION_in_duration1563); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1522); if (failed) return d;
+            match(input,INT,FOLLOW_INT_in_duration1567); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new AttributeDescr( "duration", i.getText() );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+
+              			d = new AttributeDescr( "duration", i.getText() );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
               		
             }
 
@@ -2254,35 +2345,77 @@
     // $ANTLR end duration
 
 
+    // $ANTLR start dialect
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:1: dialect returns [AttributeDescr d] : loc= DIALECT n= STRING ;
+    public final AttributeDescr dialect() throws RecognitionException {
+        AttributeDescr d = null;
+
+        Token loc=null;
+        Token n=null;
+
+
+        		d = null;
+        	
+        try {
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: (loc= DIALECT n= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: loc= DIALECT n= STRING
+            {
+            loc=(Token)input.LT(1);
+            match(input,DIALECT,FOLLOW_DIALECT_in_dialect1599); if (failed) return d;
+            n=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_dialect1603); if (failed) return d;
+            if ( backtracking==0 ) {
+
+              			d = new AttributeDescr( "dialect", getString( n ) );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+              		
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return d;
+    }
+    // $ANTLR end dialect
+
+
     // $ANTLR start lock_on_active
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:637:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );
     public final AttributeDescr lock_on_active() throws RecognitionException {
         AttributeDescr d = null;
 
         Token loc=null;
         Token t=null;
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:642:3: ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA21_0==LOCK_ON_ACTIVE) ) {
-                int LA21_1 = input.LA(2);
+            if ( (LA24_0==LOCK_ON_ACTIVE) ) {
+                int LA24_1 = input.LA(2);
 
-                if ( (LA21_1==BOOL) ) {
-                    alt21=2;
+                if ( (LA24_1==BOOL) ) {
+                    alt24=2;
                 }
-                else if ( (LA21_1==EOF||LA21_1==WHEN||LA21_1==DATE_EFFECTIVE||(LA21_1>=DATE_EXPIRES && LA21_1<=ENABLED)||LA21_1==SALIENCE||(LA21_1>=NO_LOOP && LA21_1<=LOCK_ON_ACTIVE)||LA21_1==THEN||LA21_1==66) ) {
-                    alt21=1;
+                else if ( (LA24_1==EOF||(LA24_1>=IMPORT && LA24_1<=QUERY)||(LA24_1>=TEMPLATE && LA24_1<=DATE_EFFECTIVE)||(LA24_1>=DATE_EXPIRES && LA24_1<=ENABLED)||LA24_1==SALIENCE||(LA24_1>=NO_LOOP && LA24_1<=LOCK_ON_ACTIVE)||LA24_1==THEN||LA24_1==66) ) {
+                    alt24=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("637:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );", 21, 1, input);
+                        new NoViableAltException("661:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );", 24, 1, input);
 
                     throw nvae;
                 }
@@ -2290,25 +2423,25 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("637:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );", 21, 0, input);
+                    new NoViableAltException("661:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt21) {
+            switch (alt24) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:642:3: (loc= LOCK_ON_ACTIVE )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:642:3: (loc= LOCK_ON_ACTIVE )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:643:4: loc= LOCK_ON_ACTIVE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:4: loc= LOCK_ON_ACTIVE
                     {
                     loc=(Token)input.LT(1);
-                    match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1564); if (failed) return d;
+                    match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1652); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "lock-on-active", "true" );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+                      				d = new AttributeDescr( "lock-on-active", "true" );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
                       			
                     }
 
@@ -2318,21 +2451,21 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:652:3: (loc= LOCK_ON_ACTIVE t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:652:3: (loc= LOCK_ON_ACTIVE t= BOOL )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:653:4: loc= LOCK_ON_ACTIVE t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:4: loc= LOCK_ON_ACTIVE t= BOOL
                     {
                     loc=(Token)input.LT(1);
-                    match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1592); if (failed) return d;
+                    match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1680); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1596); if (failed) return d;
+                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1684); if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      				d = new AttributeDescr( "lock-on-active", t.getText() );
-                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+
+                      				d = new AttributeDescr( "lock-on-active", t.getText() );
+                      				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                      				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+                      				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
                       			
                     }
 
@@ -2356,31 +2489,31 @@
 
 
     // $ANTLR start normal_lhs_block
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:665:1: normal_lhs_block[AndDescr descr] : (d= lhs[descr] )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: normal_lhs_block[AndDescr descr] : (d= lhs[descr] )* ;
     public final void normal_lhs_block(AndDescr descr) throws RecognitionException {
         BaseDescr d = null;
 
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:667:3: ( (d= lhs[descr] )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:667:3: (d= lhs[descr] )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: ( (d= lhs[descr] )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:667:3: (d= lhs[descr] )*
-            loop22:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
+            loop25:
             do {
-                int alt22=2;
-                int LA22_0 = input.LA(1);
+                int alt25=2;
+                int LA25_0 = input.LA(1);
 
-                if ( (LA22_0==ID||LA22_0==LEFT_PAREN||(LA22_0>=EXISTS && LA22_0<=FORALL)) ) {
-                    alt22=1;
+                if ( (LA25_0==ID||LA25_0==LEFT_PAREN||(LA25_0>=EXISTS && LA25_0<=FORALL)) ) {
+                    alt25=1;
                 }
 
 
-                switch (alt22) {
+                switch (alt25) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:667:5: d= lhs[descr]
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:5: d= lhs[descr]
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1634);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1722);
             	    d=lhs(descr);
             	    _fsp--;
             	    if (failed) return ;
@@ -2392,7 +2525,7 @@
             	    break;
 
             	default :
-            	    break loop22;
+            	    break loop25;
                 }
             } while (true);
 
@@ -2412,21 +2545,21 @@
 
 
     // $ANTLR start lhs
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:673:1: lhs[ConditionalElementDescr ce] returns [BaseDescr d] : l= lhs_or ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:697:1: lhs[ConditionalElementDescr ce] returns [BaseDescr d] : l= lhs_or ;
     public final BaseDescr lhs(ConditionalElementDescr ce) throws RecognitionException {
         BaseDescr d = null;
 
         BaseDescr l = null;
 
 
-        
-        		d=null;
+
+        		d=null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:677:4: (l= lhs_or )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:677:4: l= lhs_or
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: (l= lhs_or )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: l= lhs_or
             {
-            pushFollow(FOLLOW_lhs_or_in_lhs1671);
+            pushFollow(FOLLOW_lhs_or_in_lhs1759);
             l=lhs_or();
             _fsp--;
             if (failed) return d;
@@ -2449,34 +2582,34 @@
 
 
     // $ANTLR start lhs_pattern
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:681:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr d = null;
 
         BaseDescr f = null;
 
 
-        
-        		d=null;
+
+        		d=null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:685:4: (f= fact_binding | f= fact )
-            int alt23=2;
-            int LA23_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: (f= fact_binding | f= fact )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA23_0==ID) ) {
-                int LA23_1 = input.LA(2);
+            if ( (LA26_0==ID) ) {
+                int LA26_1 = input.LA(2);
 
-                if ( (LA23_1==67) ) {
-                    alt23=1;
+                if ( (LA26_1==65) ) {
+                    alt26=1;
                 }
-                else if ( (LA23_1==LEFT_PAREN||LA23_1==LEFT_SQUARE||LA23_1==64) ) {
-                    alt23=2;
+                else if ( (LA26_1==LEFT_PAREN||LA26_1==LEFT_SQUARE||LA26_1==67) ) {
+                    alt26=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("681:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );", 23, 1, input);
+                        new NoViableAltException("705:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );", 26, 1, input);
 
                     throw nvae;
                 }
@@ -2484,15 +2617,15 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("681:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );", 23, 0, input);
+                    new NoViableAltException("705:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt26) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:685:4: f= fact_binding
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: f= fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern1699);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern1787);
                     f=fact_binding();
                     _fsp--;
                     if (failed) return d;
@@ -2503,9 +2636,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:686:4: f= fact
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:710:4: f= fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern1708);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern1796);
                     f=fact();
                     _fsp--;
                     if (failed) return d;
@@ -2530,29 +2663,29 @@
 
 
     // $ANTLR start from_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:689:1: from_statement returns [FromDescr d] : ds= from_source[d] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:1: from_statement returns [FromDescr d] : ds= from_source[d] ;
     public final FromDescr from_statement() throws RecognitionException {
         FromDescr d = null;
 
         DeclarativeInvokerDescr ds = null;
 
 
-        
-        		d=factory.createFrom();
+
+        		d=factory.createFrom();
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:2: (ds= from_source[d] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:2: ds= from_source[d]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: (ds= from_source[d] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: ds= from_source[d]
             {
-            pushFollow(FOLLOW_from_source_in_from_statement1735);
+            pushFollow(FOLLOW_from_source_in_from_statement1823);
             ds=from_source(d);
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d.setDataSource(ds);
-              		
+
+              			d.setDataSource(ds);
               		
+              		
             }
 
             }
@@ -2570,7 +2703,7 @@
 
 
     // $ANTLR start from_source
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:704:1: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:1: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? ;
     public final DeclarativeInvokerDescr from_source(FromDescr from) throws RecognitionException {
         DeclarativeInvokerDescr ds = null;
 
@@ -2579,57 +2712,57 @@
         String args = null;
 
 
-        
-        		ds = null;
-        		AccessorDescr ad = null;
+
+        		ds = null;
+        		AccessorDescr ad = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:710:3: (ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:710:3: ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: (ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )?
             {
-            pushFollow(FOLLOW_identifier_in_from_source1777);
+            pushFollow(FOLLOW_identifier_in_from_source1865);
             ident=identifier();
             _fsp--;
             if (failed) return ds;
             if ( backtracking==0 ) {
-              
-              			ad = new AccessorDescr(ident.getText());	
-              			ad.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );
-              			ad.setStartCharacter( ((CommonToken)ident).getStartIndex() );
-              			ad.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-              			ds = ad;
+
+              			ad = new AccessorDescr(ident.getText());	
+              			ad.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );
+              			ad.setStartCharacter( ((CommonToken)ident).getStartIndex() );
+              			ad.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+              			ds = ad;
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:718:3: (args= paren_chunk[from] )?
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:3: (args= paren_chunk[from] )?
+            int alt27=2;
+            int LA27_0 = input.LA(1);
 
-            if ( (LA24_0==LEFT_PAREN) ) {
-                int LA24_1 = input.LA(2);
+            if ( (LA27_0==LEFT_PAREN) ) {
+                int LA27_1 = input.LA(2);
 
-                if ( (synpred38()) ) {
-                    alt24=1;
+                if ( (synpred42()) ) {
+                    alt27=1;
                 }
             }
-            switch (alt24) {
+            switch (alt27) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:718:4: args= paren_chunk[from]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: args= paren_chunk[from]
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source1788);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source1876);
                     args=paren_chunk(from);
                     _fsp--;
                     if (failed) return ds;
                     if ( backtracking==0 ) {
-                      
-                      			if( args != null ) {
-                      				ad.setVariableName( null );
-                      				FunctionCallDescr fc = new FunctionCallDescr(ident.getText());
-                      				fc.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );			
-                      				fc.setArguments(args);
-                      				fc.setStartCharacter( ((CommonToken)ident).getStartIndex() );
-                      				fc.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-                      				ad.addInvoker(fc);
-                      			}
+
+                      			if( args != null ) {
+                      				ad.setVariableName( null );
+                      				FunctionCallDescr fc = new FunctionCallDescr(ident.getText());
+                      				fc.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );			
+                      				fc.setArguments(args);
+                      				fc.setStartCharacter( ((CommonToken)ident).getStartIndex() );
+                      				fc.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+                      				ad.addInvoker(fc);
+                      			}
                       		
                     }
 
@@ -2638,18 +2771,18 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:731:3: ( expression_chain[from, ad] )?
-            int alt25=2;
-            int LA25_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:3: ( expression_chain[from, ad] )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
 
-            if ( (LA25_0==64) ) {
-                alt25=1;
+            if ( (LA28_0==67) ) {
+                alt28=1;
             }
-            switch (alt25) {
+            switch (alt28) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: expression_chain[from, ad]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, ad]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source1802);
+                    pushFollow(FOLLOW_expression_chain_in_from_source1890);
                     expression_chain(from,  ad);
                     _fsp--;
                     if (failed) return ds;
@@ -2675,7 +2808,7 @@
 
 
     // $ANTLR start expression_chain
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:734:1: expression_chain[FromDescr from, AccessorDescr as] : ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: expression_chain[FromDescr from, AccessorDescr as] : ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) ;
     public final void expression_chain(FromDescr from, AccessorDescr as) throws RecognitionException {
         Token field = null;
 
@@ -2684,72 +2817,72 @@
         String paarg = null;
 
 
-        
-          		FieldAccessDescr fa = null;
-        	    	MethodAccessDescr ma = null;	
+
+          		FieldAccessDescr fa = null;
+        	    	MethodAccessDescr ma = null;	
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:740:2: ( ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:740:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:740:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:740:4: '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )?
             {
-            match(input,64,FOLLOW_64_in_expression_chain1827); if (failed) return ;
-            pushFollow(FOLLOW_identifier_in_expression_chain1831);
+            match(input,67,FOLLOW_67_in_expression_chain1915); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_expression_chain1919);
             field=identifier();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              	        fa = new FieldAccessDescr(field.getText());	
-              		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
-              		fa.setStartCharacter( ((CommonToken)field).getStartIndex() );
-              		fa.setEndCharacter( ((CommonToken)field).getStopIndex() );
+
+              	        fa = new FieldAccessDescr(field.getText());	
+              		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
+              		fa.setStartCharacter( ((CommonToken)field).getStartIndex() );
+              		fa.setEndCharacter( ((CommonToken)field).getStopIndex() );
               	    
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:747:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )?
-            int alt26=3;
-            int LA26_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )?
+            int alt29=3;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA26_0==LEFT_SQUARE) && (synpred40())) {
-                alt26=1;
+            if ( (LA29_0==LEFT_SQUARE) && (synpred44())) {
+                alt29=1;
             }
-            else if ( (LA26_0==LEFT_PAREN) ) {
-                int LA26_2 = input.LA(2);
+            else if ( (LA29_0==LEFT_PAREN) ) {
+                int LA29_2 = input.LA(2);
 
-                if ( (synpred41()) ) {
-                    alt26=2;
+                if ( (synpred45()) ) {
+                    alt29=2;
                 }
             }
-            switch (alt26) {
+            switch (alt29) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:748:6: ( LEFT_SQUARE )=>sqarg= square_chunk[from]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )=>sqarg= square_chunk[from]
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain1862);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain1950);
                     sqarg=square_chunk(from);
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                      
-                      	          fa.setArgument( sqarg );	
+
+                      	          fa.setArgument( sqarg );	
                       	      
                     }
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:753:6: ( LEFT_PAREN )=>paarg= paren_chunk[from]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )=>paarg= paren_chunk[from]
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1896);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1984);
                     paarg=paren_chunk(from);
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                      
-                      	    	  ma = new MethodAccessDescr( field.getText(), paarg );	
-                      		  ma.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
-                      		  ma.setStartCharacter( ((CommonToken)field).getStartIndex() );
+
+                      	    	  ma = new MethodAccessDescr( field.getText(), paarg );	
+                      		  ma.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
+                      		  ma.setStartCharacter( ((CommonToken)field).getStartIndex() );
                       		
                     }
 
@@ -2759,26 +2892,26 @@
             }
 
             if ( backtracking==0 ) {
-              
-              	      if( ma != null ) {
-              	          as.addInvoker( ma );
-              	      } else {
-              	          as.addInvoker( fa );
-              	      }
+
+              	      if( ma != null ) {
+              	          as.addInvoker( ma );
+              	      } else {
+              	          as.addInvoker( fa );
+              	      }
               	  
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:767:4: ( expression_chain[from, as] )?
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: ( expression_chain[from, as] )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( (LA27_0==64) ) {
-                alt27=1;
+            if ( (LA30_0==67) ) {
+                alt30=1;
             }
-            switch (alt27) {
+            switch (alt30) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: expression_chain[from, as]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, as]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1917);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain2005);
                     expression_chain(from,  as);
                     _fsp--;
                     if (failed) return ;
@@ -2807,7 +2940,7 @@
 
 
     // $ANTLR start accumulate_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:771:1: accumulate_statement returns [AccumulateDescr d] : loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:1: accumulate_statement returns [AccumulateDescr d] : loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' ;
     public final AccumulateDescr accumulate_statement() throws RecognitionException {
         AccumulateDescr d = null;
 
@@ -2817,65 +2950,65 @@
         String text = null;
 
 
-        
-        		d = factory.createAccumulate();
+
+        		d = factory.createAccumulate();
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:776:10: (loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:776:10: loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: (loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')'
             {
             loc=(Token)input.LT(1);
-            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement1958); if (failed) return d;
+            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2046); if (failed) return d;
             if ( backtracking==0 ) {
-               
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+               
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement1968); if (failed) return d;
-            pushFollow(FOLLOW_lhs_pattern_in_accumulate_statement1972);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2056); if (failed) return d;
+            pushFollow(FOLLOW_lhs_pattern_in_accumulate_statement2060);
             pattern=lhs_pattern();
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement1974); if (failed) return d;
+            match(input,66,FOLLOW_66_in_accumulate_statement2062); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        d.setSourcePattern( (PatternDescr)pattern );
+
+              		        d.setSourcePattern( (PatternDescr)pattern );
               		
             }
-            match(input,INIT,FOLLOW_INIT_in_accumulate_statement1983); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1987);
+            match(input,INIT,FOLLOW_INIT_in_accumulate_statement2071); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2075);
             text=paren_chunk(null);
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement1990); if (failed) return d;
+            match(input,66,FOLLOW_66_in_accumulate_statement2078); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        d.setInitCode( text.substring(1, text.length()-1) );
+
+              		        d.setInitCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,ACTION,FOLLOW_ACTION_in_accumulate_statement1999); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2003);
+            match(input,ACTION,FOLLOW_ACTION_in_accumulate_statement2087); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2091);
             text=paren_chunk(null);
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement2006); if (failed) return d;
+            match(input,66,FOLLOW_66_in_accumulate_statement2094); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        d.setActionCode( text.substring(1, text.length()-1) );
+
+              		        d.setActionCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,RESULT,FOLLOW_RESULT_in_accumulate_statement2015); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2019);
+            match(input,RESULT,FOLLOW_RESULT_in_accumulate_statement2103); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2107);
             text=paren_chunk(null);
             _fsp--;
             if (failed) return d;
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2024); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2112); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        d.setResultCode( text.substring(1, text.length()-1) );
-              			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+              		        d.setResultCode( text.substring(1, text.length()-1) );
+              			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
               		
             }
 
@@ -2894,7 +3027,7 @@
 
 
     // $ANTLR start collect_statement
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:800:1: collect_statement returns [CollectDescr d] : loc= COLLECT '(' pattern= lhs_pattern loc= ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:1: collect_statement returns [CollectDescr d] : loc= COLLECT '(' pattern= lhs_pattern loc= ')' ;
     public final CollectDescr collect_statement() throws RecognitionException {
         CollectDescr d = null;
 
@@ -2902,32 +3035,32 @@
         BaseDescr pattern = null;
 
 
-        
-        		d = factory.createCollect();
+
+        		d = factory.createCollect();
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:10: (loc= COLLECT '(' pattern= lhs_pattern loc= ')' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:10: loc= COLLECT '(' pattern= lhs_pattern loc= ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: (loc= COLLECT '(' pattern= lhs_pattern loc= ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: loc= COLLECT '(' pattern= lhs_pattern loc= ')'
             {
             loc=(Token)input.LT(1);
-            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement2067); if (failed) return d;
+            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement2155); if (failed) return d;
             if ( backtracking==0 ) {
-               
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+               
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement2077); if (failed) return d;
-            pushFollow(FOLLOW_lhs_pattern_in_collect_statement2081);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement2165); if (failed) return d;
+            pushFollow(FOLLOW_lhs_pattern_in_collect_statement2169);
             pattern=lhs_pattern();
             _fsp--;
             if (failed) return d;
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement2085); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement2173); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        d.setSourcePattern( (PatternDescr)pattern );
-              			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+              		        d.setSourcePattern( (PatternDescr)pattern );
+              			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
               		
             }
 
@@ -2946,7 +3079,7 @@
 
 
     // $ANTLR start fact_binding
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
     public final BaseDescr fact_binding() throws RecognitionException {
         BaseDescr d = null;
 
@@ -2954,35 +3087,35 @@
         BaseDescr fe = null;
 
 
-        
-        		d=null;
-        		boolean multi=false;
+
+        		d=null;
+        		boolean multi=false;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:823:4: (id= ID ':' fe= fact_expression[id.getText()] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:823:4: id= ID ':' fe= fact_expression[id.getText()]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: (id= ID ':' fe= fact_expression[id.getText()] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: id= ID ':' fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding2119); if (failed) return d;
-            match(input,67,FOLLOW_67_in_fact_binding2121); if (failed) return d;
+            match(input,ID,FOLLOW_ID_in_fact_binding2207); if (failed) return d;
+            match(input,65,FOLLOW_65_in_fact_binding2209); if (failed) return d;
             if ( backtracking==0 ) {
-              
-               		        // handling incomplete parsing
-               		        d = new PatternDescr( );
-               		        ((PatternDescr) d).setIdentifier( id.getText() );
+
+               		        // handling incomplete parsing
+               		        d = new PatternDescr( );
+               		        ((PatternDescr) d).setIdentifier( id.getText() );
                		
             }
-            pushFollow(FOLLOW_fact_expression_in_fact_binding2134);
+            pushFollow(FOLLOW_fact_expression_in_fact_binding2222);
             fe=fact_expression(id.getText());
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
-              
-               		        // override previously instantiated pattern
-               			d=fe;
-               			if( d != null ) {
-                 			    d.setStartCharacter( ((CommonToken)id).getStartIndex() );
-                 			}
+
+               		        // override previously instantiated pattern
+               			d=fe;
+               			if( d != null ) {
+                 			    d.setStartCharacter( ((CommonToken)id).getStartIndex() );
+                 			}
                		
             }
 
@@ -3001,7 +3134,7 @@
 
 
     // $ANTLR start fact_expression
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:839:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );
     public final BaseDescr fact_expression(String id) throws RecognitionException {
         BaseDescr pd = null;
 
@@ -3010,38 +3143,38 @@
         BaseDescr f = null;
 
 
-        
-         		pd = null;
-         		boolean multi = false;
+
+         		pd = null;
+         		boolean multi = false;
          	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:844:5: ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA29_0==LEFT_PAREN) ) {
-                alt29=1;
+            if ( (LA32_0==LEFT_PAREN) ) {
+                alt32=1;
             }
-            else if ( (LA29_0==ID) ) {
-                alt29=2;
+            else if ( (LA32_0==ID) ) {
+                alt32=2;
             }
             else {
                 if (backtracking>0) {failed=true; return pd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("839:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );", 29, 0, input);
+                    new NoViableAltException("863:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt32) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:844:5: '(' fe= fact_expression[id] ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: '(' fe= fact_expression[id] ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression2166); if (failed) return pd;
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2170);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression2254); if (failed) return pd;
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2258);
                     fe=fact_expression(id);
                     _fsp--;
                     if (failed) return pd;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression2173); if (failed) return pd;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression2261); if (failed) return pd;
                     if ( backtracking==0 ) {
                        pd=fe; 
                     }
@@ -3049,40 +3182,40 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:845:6: f= fact ( ( OR | '||' ) f= fact )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:6: f= fact ( ( OR | '||' ) f= fact )*
                     {
-                    pushFollow(FOLLOW_fact_in_fact_expression2184);
+                    pushFollow(FOLLOW_fact_in_fact_expression2272);
                     f=fact();
                     _fsp--;
                     if (failed) return pd;
                     if ( backtracking==0 ) {
-                      
-                       			((PatternDescr)f).setIdentifier( id );
-                       			pd = f;
+
+                       			((PatternDescr)f).setIdentifier( id );
+                       			pd = f;
                        		
                     }
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:850:4: ( ( OR | '||' ) f= fact )*
-                    loop28:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( ( OR | '||' ) f= fact )*
+                    loop31:
                     do {
-                        int alt28=2;
-                        int LA28_0 = input.LA(1);
+                        int alt31=2;
+                        int LA31_0 = input.LA(1);
 
-                        if ( (LA28_0==OR||LA28_0==68) ) {
-                            int LA28_6 = input.LA(2);
+                        if ( (LA31_0==OR||LA31_0==69) ) {
+                            int LA31_6 = input.LA(2);
 
-                            if ( (synpred45()) ) {
-                                alt28=1;
+                            if ( (synpred49()) ) {
+                                alt31=1;
                             }
 
 
                         }
 
 
-                        switch (alt28) {
+                        switch (alt31) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:850:6: ( OR | '||' ) f= fact
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) f= fact
                     	    {
-                    	    if ( input.LA(1)==OR||input.LA(1)==68 ) {
+                    	    if ( input.LA(1)==OR||input.LA(1)==69 ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -3090,26 +3223,26 @@
                     	        if (backtracking>0) {failed=true; return pd;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2196);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2284);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
-                    	      	if ( ! multi ) {
-                    	       					BaseDescr first = pd;
-                    	       					pd = new OrDescr();
-                    	       					((OrDescr)pd).addDescr( first );
-                    	       					multi=true;
-                    	       				}
+                    	      	if ( ! multi ) {
+                    	       					BaseDescr first = pd;
+                    	       					pd = new OrDescr();
+                    	       					((OrDescr)pd).addDescr( first );
+                    	       					multi=true;
+                    	       				}
                     	       			
                     	    }
-                    	    pushFollow(FOLLOW_fact_in_fact_expression2214);
+                    	    pushFollow(FOLLOW_fact_in_fact_expression2302);
                     	    f=fact();
                     	    _fsp--;
                     	    if (failed) return pd;
                     	    if ( backtracking==0 ) {
-                    	      
-                    	       				((PatternDescr)f).setIdentifier( id );
-                    	       				((OrDescr)pd).addDescr( f );
+
+                    	       				((PatternDescr)f).setIdentifier( id );
+                    	       				((OrDescr)pd).addDescr( f );
                     	       			
                     	    }
 
@@ -3117,7 +3250,7 @@
                     	    break;
 
                     	default :
-                    	    break loop28;
+                    	    break loop31;
                         }
                     } while (true);
 
@@ -3139,7 +3272,7 @@
 
 
     // $ANTLR start fact
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:866:1: fact returns [BaseDescr d] : id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:1: fact returns [BaseDescr d] : id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN ;
     public final BaseDescr fact() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3148,50 +3281,50 @@
         String id = null;
 
 
-        
-        		d=null;
-        		PatternDescr pattern = null;
+
+        		d=null;
+        		PatternDescr pattern = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:872:11: (id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:872:11: id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: (id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
-              
-               			pattern = new PatternDescr( );
-               			d = pattern; 
+
+               			pattern = new PatternDescr( );
+               			d = pattern; 
                	        
             }
-            pushFollow(FOLLOW_dotted_name_in_fact2275);
+            pushFollow(FOLLOW_dotted_name_in_fact2363);
             id=dotted_name(d);
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
-               
-               		        pattern.setObjectType( id );
-               		        pattern.setEndCharacter( -1 );
+               
+               		        pattern.setObjectType( id );
+               		        pattern.setEndCharacter( -1 );
                		
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact2289); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact2377); if (failed) return d;
             if ( backtracking==0 ) {
-              
-               				pattern.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-               			        pattern.setLeftParentCharacter( ((CommonToken)loc).getStartIndex() );
+
+               				pattern.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+               			        pattern.setLeftParentCharacter( ((CommonToken)loc).getStartIndex() );
                			
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:885:4: ( constraints[pattern] )?
-            int alt30=2;
-            int LA30_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:4: ( constraints[pattern] )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( ((LA30_0>=PACKAGE && LA30_0<=ATTRIBUTES)||LA30_0==ENABLED||LA30_0==SALIENCE||LA30_0==DURATION||(LA30_0>=ACCUMULATE && LA30_0<=LEFT_PAREN)||(LA30_0>=CONTAINS && LA30_0<=EXCLUDES)||LA30_0==NULL||(LA30_0>=AND && LA30_0<=THEN)) ) {
-                alt30=1;
+            if ( ((LA33_0>=ATTRIBUTES && LA33_0<=WHEN)||LA33_0==ENABLED||LA33_0==SALIENCE||LA33_0==DURATION||(LA33_0>=ACCUMULATE && LA33_0<=LEFT_PAREN)||(LA33_0>=CONTAINS && LA33_0<=EXCLUDES)||LA33_0==NULL||(LA33_0>=AND && LA33_0<=THEN)) ) {
+                alt33=1;
             }
-            switch (alt30) {
+            switch (alt33) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:885:6: constraints[pattern]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:6: constraints[pattern]
                     {
-                    pushFollow(FOLLOW_constraints_in_fact2299);
+                    pushFollow(FOLLOW_constraints_in_fact2387);
                     constraints(pattern);
                     _fsp--;
                     if (failed) return d;
@@ -3202,14 +3335,14 @@
             }
 
             endLoc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact2312); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact2400); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        if( endLoc.getType() == RIGHT_PAREN ) {
-              				pattern.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
-              				pattern.setEndCharacter( ((CommonToken)endLoc).getStopIndex() );
-               			        pattern.setRightParentCharacter( ((CommonToken)endLoc).getStartIndex() );
-              			}
+
+              		        if( endLoc.getType() == RIGHT_PAREN ) {
+              				pattern.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
+              				pattern.setEndCharacter( ((CommonToken)endLoc).getStopIndex() );
+               			        pattern.setRightParentCharacter( ((CommonToken)endLoc).getStartIndex() );
+              			}
                		
             }
 
@@ -3228,34 +3361,34 @@
 
 
     // $ANTLR start constraints
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:897:1: constraints[PatternDescr pattern] : ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:1: constraints[PatternDescr pattern] : ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* ;
     public final void constraints(PatternDescr pattern) throws RecognitionException {
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:4: ( ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:4: ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )*
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:4: ( constraint[pattern] | predicate[pattern] )
-            int alt31=2;
-            int LA31_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( ((LA31_0>=PACKAGE && LA31_0<=ATTRIBUTES)||LA31_0==ENABLED||LA31_0==SALIENCE||LA31_0==DURATION||(LA31_0>=ACCUMULATE && LA31_0<=OR)||(LA31_0>=CONTAINS && LA31_0<=EXCLUDES)||LA31_0==NULL||(LA31_0>=AND && LA31_0<=THEN)) ) {
-                alt31=1;
+            if ( ((LA34_0>=ATTRIBUTES && LA34_0<=WHEN)||LA34_0==ENABLED||LA34_0==SALIENCE||LA34_0==DURATION||(LA34_0>=ACCUMULATE && LA34_0<=OR)||(LA34_0>=CONTAINS && LA34_0<=EXCLUDES)||LA34_0==NULL||(LA34_0>=AND && LA34_0<=THEN)) ) {
+                alt34=1;
             }
-            else if ( (LA31_0==LEFT_PAREN) ) {
-                alt31=2;
+            else if ( (LA34_0==LEFT_PAREN) ) {
+                alt34=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("898:4: ( constraint[pattern] | predicate[pattern] )", 31, 0, input);
+                    new NoViableAltException("922:4: ( constraint[pattern] | predicate[pattern] )", 34, 0, input);
 
                 throw nvae;
             }
-            switch (alt31) {
+            switch (alt34) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:5: constraint[pattern]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:5: constraint[pattern]
                     {
-                    pushFollow(FOLLOW_constraint_in_constraints2333);
+                    pushFollow(FOLLOW_constraint_in_constraints2421);
                     constraint(pattern);
                     _fsp--;
                     if (failed) return ;
@@ -3263,9 +3396,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:25: predicate[pattern]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:25: predicate[pattern]
                     {
-                    pushFollow(FOLLOW_predicate_in_constraints2336);
+                    pushFollow(FOLLOW_predicate_in_constraints2424);
                     predicate(pattern);
                     _fsp--;
                     if (failed) return ;
@@ -3275,44 +3408,44 @@
 
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:899:3: ( ',' ( constraint[pattern] | predicate[pattern] ) )*
-            loop33:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:3: ( ',' ( constraint[pattern] | predicate[pattern] ) )*
+            loop36:
             do {
-                int alt33=2;
-                int LA33_0 = input.LA(1);
+                int alt36=2;
+                int LA36_0 = input.LA(1);
 
-                if ( (LA33_0==66) ) {
-                    alt33=1;
+                if ( (LA36_0==66) ) {
+                    alt36=1;
                 }
 
 
-                switch (alt33) {
+                switch (alt36) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:899:5: ',' ( constraint[pattern] | predicate[pattern] )
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:5: ',' ( constraint[pattern] | predicate[pattern] )
             	    {
-            	    match(input,66,FOLLOW_66_in_constraints2344); if (failed) return ;
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:899:9: ( constraint[pattern] | predicate[pattern] )
-            	    int alt32=2;
-            	    int LA32_0 = input.LA(1);
+            	    match(input,66,FOLLOW_66_in_constraints2432); if (failed) return ;
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:9: ( constraint[pattern] | predicate[pattern] )
+            	    int alt35=2;
+            	    int LA35_0 = input.LA(1);
 
-            	    if ( ((LA32_0>=PACKAGE && LA32_0<=ATTRIBUTES)||LA32_0==ENABLED||LA32_0==SALIENCE||LA32_0==DURATION||(LA32_0>=ACCUMULATE && LA32_0<=OR)||(LA32_0>=CONTAINS && LA32_0<=EXCLUDES)||LA32_0==NULL||(LA32_0>=AND && LA32_0<=THEN)) ) {
-            	        alt32=1;
+            	    if ( ((LA35_0>=ATTRIBUTES && LA35_0<=WHEN)||LA35_0==ENABLED||LA35_0==SALIENCE||LA35_0==DURATION||(LA35_0>=ACCUMULATE && LA35_0<=OR)||(LA35_0>=CONTAINS && LA35_0<=EXCLUDES)||LA35_0==NULL||(LA35_0>=AND && LA35_0<=THEN)) ) {
+            	        alt35=1;
             	    }
-            	    else if ( (LA32_0==LEFT_PAREN) ) {
-            	        alt32=2;
+            	    else if ( (LA35_0==LEFT_PAREN) ) {
+            	        alt35=2;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return ;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("899:9: ( constraint[pattern] | predicate[pattern] )", 32, 0, input);
+            	            new NoViableAltException("923:9: ( constraint[pattern] | predicate[pattern] )", 35, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt32) {
+            	    switch (alt35) {
             	        case 1 :
-            	            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:899:10: constraint[pattern]
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:10: constraint[pattern]
             	            {
-            	            pushFollow(FOLLOW_constraint_in_constraints2347);
+            	            pushFollow(FOLLOW_constraint_in_constraints2435);
             	            constraint(pattern);
             	            _fsp--;
             	            if (failed) return ;
@@ -3320,9 +3453,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:899:30: predicate[pattern]
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:30: predicate[pattern]
             	            {
-            	            pushFollow(FOLLOW_predicate_in_constraints2350);
+            	            pushFollow(FOLLOW_predicate_in_constraints2438);
             	            predicate(pattern);
             	            _fsp--;
             	            if (failed) return ;
@@ -3337,7 +3470,7 @@
             	    break;
 
             	default :
-            	    break loop33;
+            	    break loop36;
                 }
             } while (true);
 
@@ -3357,7 +3490,7 @@
 
 
     // $ANTLR start constraint
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:902:1: constraint[PatternDescr pattern] : (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:1: constraint[PatternDescr pattern] : (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? ;
     public final void constraint(PatternDescr pattern) throws RecognitionException {
         Token fb=null;
         Token con=null;
@@ -3366,40 +3499,40 @@
         RestrictionDescr rd = null;
 
 
-        
-        		FieldBindingDescr fbd = null;
-        		FieldConstraintDescr fc = null;
+
+        		FieldBindingDescr fbd = null;
+        		FieldConstraintDescr fc = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:908:3: ( (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:908:3: (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: ( (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:908:3: (fb= ID ':' )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
 
-            if ( (LA34_0==ID) ) {
-                int LA34_1 = input.LA(2);
+            if ( (LA37_0==ID) ) {
+                int LA37_1 = input.LA(2);
 
-                if ( (LA34_1==67) ) {
-                    alt34=1;
+                if ( (LA37_1==65) ) {
+                    alt37=1;
                 }
             }
-            switch (alt34) {
+            switch (alt37) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:908:5: fb= ID ':'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:5: fb= ID ':'
                     {
                     fb=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint2379); if (failed) return ;
-                    match(input,67,FOLLOW_67_in_constraint2381); if (failed) return ;
+                    match(input,ID,FOLLOW_ID_in_constraint2467); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_constraint2469); if (failed) return ;
                     if ( backtracking==0 ) {
-                       
-                      			fbd = new FieldBindingDescr();
-                      			fbd.setIdentifier( fb.getText() );
-                      			fbd.setLocation( offset(fb.getLine()), fb.getCharPositionInLine() );
-                      			fbd.setStartCharacter( ((CommonToken)fb).getStartIndex() );
-                      			pattern.addDescr( fbd );
-                      
+                       
+                      			fbd = new FieldBindingDescr();
+                      			fbd.setIdentifier( fb.getText() );
+                      			fbd.setLocation( offset(fb.getLine()), fb.getCharPositionInLine() );
+                      			fbd.setStartCharacter( ((CommonToken)fb).getStartIndex() );
+                      			pattern.addDescr( fbd );
+
                       		    
                     }
 
@@ -3408,76 +3541,76 @@
 
             }
 
-            pushFollow(FOLLOW_identifier_in_constraint2402);
+            pushFollow(FOLLOW_identifier_in_constraint2490);
             f=identifier();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              		    if( f != null ) {
-              		    
-              			if ( fbd != null ) {
-              			    fbd.setFieldName( f.getText() );
-               			    fbd.setEndCharacter( ((CommonToken)f).getStopIndex() );
-              			} 
-              			fc = new FieldConstraintDescr(f.getText());
-              			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-              			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
-              			
-              			// it must be a field constraint, as it is not a binding
-              			if( fb == null ) {
-              			    pattern.addDescr( fc );
-              			}
-              		    }
+
+              		    if( f != null ) {
+              		    
+              			if ( fbd != null ) {
+              			    fbd.setFieldName( f.getText() );
+               			    fbd.setEndCharacter( ((CommonToken)f).getStopIndex() );
+              			} 
+              			fc = new FieldConstraintDescr(f.getText());
+              			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+              			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
+              			
+              			// it must be a field constraint, as it is not a binding
+              			if( fb == null ) {
+              			    pattern.addDescr( fc );
+              			}
+              		    }
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:936:3: ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
-            int alt36=3;
-            int LA36_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:3: ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
+            int alt39=3;
+            int LA39_0 = input.LA(1);
 
-            if ( ((LA36_0>=CONTAINS && LA36_0<=EXCLUDES)||(LA36_0>=72 && LA36_0<=77)) ) {
-                alt36=1;
+            if ( ((LA39_0>=CONTAINS && LA39_0<=EXCLUDES)||(LA39_0>=73 && LA39_0<=78)) ) {
+                alt39=1;
             }
-            else if ( (LA36_0==71) ) {
-                alt36=2;
+            else if ( (LA39_0==72) ) {
+                alt39=2;
             }
-            switch (alt36) {
+            switch (alt39) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:937:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:937:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:937:6: rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:6: rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )*
                     {
-                    pushFollow(FOLLOW_constraint_expression_in_constraint2420);
+                    pushFollow(FOLLOW_constraint_expression_in_constraint2508);
                     rd=constraint_expression();
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                      
-                      					fc.addRestriction(rd);
-                      					// we must add now as we didn't before
-                      					if( fb != null) {
-                      					    pattern.addDescr( fc );
-                      					}
+
+                      					fc.addRestriction(rd);
+                      					// we must add now as we didn't before
+                      					if( fb != null) {
+                      					    pattern.addDescr( fc );
+                      					}
                       				
                     }
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:5: (con= ( '&' | '|' ) rd= constraint_expression )*
-                    loop35:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:5: (con= ( '&' | '|' ) rd= constraint_expression )*
+                    loop38:
                     do {
-                        int alt35=2;
-                        int LA35_0 = input.LA(1);
+                        int alt38=2;
+                        int LA38_0 = input.LA(1);
 
-                        if ( ((LA35_0>=69 && LA35_0<=70)) ) {
-                            alt35=1;
+                        if ( ((LA38_0>=70 && LA38_0<=71)) ) {
+                            alt38=1;
                         }
 
 
-                        switch (alt35) {
+                        switch (alt38) {
                     	case 1 :
-                    	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:946:6: con= ( '&' | '|' ) rd= constraint_expression
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:6: con= ( '&' | '|' ) rd= constraint_expression
                     	    {
                     	    con=(Token)input.LT(1);
-                    	    if ( (input.LA(1)>=69 && input.LA(1)<=70) ) {
+                    	    if ( (input.LA(1)>=70 && input.LA(1)<=71) ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -3485,27 +3618,27 @@
                     	        if (backtracking>0) {failed=true; return ;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2441);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2529);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
-                    	      
-                    	      						if (con.getText().equals("&") ) {								
-                    	      							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
-                    	      						} else {
-                    	      							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
-                    	      						}							
+
+                    	      						if (con.getText().equals("&") ) {								
+                    	      							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
+                    	      						} else {
+                    	      							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
+                    	      						}							
                     	      					
                     	    }
-                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2461);
+                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2549);
                     	    rd=constraint_expression();
                     	    _fsp--;
                     	    if (failed) return ;
                     	    if ( backtracking==0 ) {
-                    	      
-                    	      					        if( rd != null ) {
-                    	      							fc.addRestriction(rd);
-                    	      					        }
+
+                    	      					        if( rd != null ) {
+                    	      							fc.addRestriction(rd);
+                    	      					        }
                     	      					
                     	    }
 
@@ -3513,7 +3646,7 @@
                     	    break;
 
                     	default :
-                    	    break loop35;
+                    	    break loop38;
                         }
                     } while (true);
 
@@ -3524,10 +3657,10 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:963:4: '->' predicate[pattern]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:4: '->' predicate[pattern]
                     {
-                    match(input,71,FOLLOW_71_in_constraint2489); if (failed) return ;
-                    pushFollow(FOLLOW_predicate_in_constraint2491);
+                    match(input,72,FOLLOW_72_in_constraint2577); if (failed) return ;
+                    pushFollow(FOLLOW_predicate_in_constraint2579);
                     predicate(pattern);
                     _fsp--;
                     if (failed) return ;
@@ -3553,7 +3686,7 @@
 
 
     // $ANTLR start constraint_expression
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:967:1: constraint_expression returns [RestrictionDescr rd] : op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:1: constraint_expression returns [RestrictionDescr rd] : op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) ;
     public final RestrictionDescr constraint_expression() throws RecognitionException {
         RestrictionDescr rd = null;
 
@@ -3565,11 +3698,11 @@
 
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:969:3: (op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:969:3: op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: (op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
             {
             op=(Token)input.LT(1);
-            if ( (input.LA(1)>=CONTAINS && input.LA(1)<=EXCLUDES)||(input.LA(1)>=72 && input.LA(1)<=77) ) {
+            if ( (input.LA(1)>=CONTAINS && input.LA(1)<=EXCLUDES)||(input.LA(1)>=73 && input.LA(1)<=78) ) {
                 input.consume();
                 errorRecovery=false;failed=false;
             }
@@ -3577,26 +3710,26 @@
                 if (backtracking>0) {failed=true; return rd;}
                 MismatchedSetException mse =
                     new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2526);    throw mse;
+                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2614);    throw mse;
             }
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:979:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
-            int alt37=4;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+            int alt40=4;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                int LA37_1 = input.LA(2);
+                int LA40_1 = input.LA(2);
 
-                if ( (LA37_1==EOF||LA37_1==RIGHT_PAREN||LA37_1==66||(LA37_1>=69 && LA37_1<=70)) ) {
-                    alt37=1;
+                if ( (LA40_1==67) ) {
+                    alt40=2;
                 }
-                else if ( (LA37_1==64) ) {
-                    alt37=2;
+                else if ( (LA40_1==EOF||LA40_1==RIGHT_PAREN||LA40_1==66||(LA40_1>=70 && LA40_1<=71)) ) {
+                    alt40=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return rd;}
                     NoViableAltException nvae =
-                        new NoViableAltException("979:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 37, 1, input);
+                        new NoViableAltException("1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 1, input);
 
                     throw nvae;
                 }
@@ -3608,76 +3741,76 @@
             case FLOAT:
             case NULL:
                 {
-                alt37=3;
+                alt40=3;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt37=4;
+                alt40=4;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return rd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("979:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 37, 0, input);
+                    new NoViableAltException("1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt37) {
+            switch (alt40) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:979:5: bvc= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:5: bvc= ID
                     {
                     bvc=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint_expression2595); if (failed) return rd;
+                    match(input,ID,FOLLOW_ID_in_constraint_expression2683); if (failed) return rd;
                     if ( backtracking==0 ) {
-                      
-                      				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
+
+                      				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
                       			
                     }
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:984:4: lc= enum_constraint
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1008:4: lc= enum_constraint
                     {
-                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2611);
+                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2699);
                     lc=enum_constraint();
                     _fsp--;
                     if (failed) return rd;
                     if ( backtracking==0 ) {
-                       
-                      				rd  = new LiteralRestrictionDescr(op.getText(), lc, true);
+                       
+                      				rd  = new LiteralRestrictionDescr(op.getText(), lc, true);
                       			
                     }
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:989:4: lc= literal_constraint
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:4: lc= literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2634);
+                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2722);
                     lc=literal_constraint();
                     _fsp--;
                     if (failed) return rd;
                     if ( backtracking==0 ) {
-                       
-                      				rd  = new LiteralRestrictionDescr(op.getText(), lc);
+                       
+                      				rd  = new LiteralRestrictionDescr(op.getText(), lc);
                       			
                     }
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:993:5: rvc= retval_constraint
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:5: rvc= retval_constraint
                     {
-                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2648);
+                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2736);
                     rvc=retval_constraint();
                     _fsp--;
                     if (failed) return rd;
                     if ( backtracking==0 ) {
-                       
-                      				rd = new ReturnValueRestrictionDescr(op.getText(), rvc);							
+                       
+                      				rd = new ReturnValueRestrictionDescr(op.getText(), rvc);							
                       			
                     }
 
@@ -3702,61 +3835,61 @@
 
 
     // $ANTLR start literal_constraint
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1000:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
     public final String literal_constraint() throws RecognitionException {
         String text = null;
 
         Token t=null;
 
-        
-        		text = null;
+
+        		text = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1004:4: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1004:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1004:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
-            int alt38=5;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            int alt41=5;
             switch ( input.LA(1) ) {
             case STRING:
                 {
-                alt38=1;
+                alt41=1;
                 }
                 break;
             case INT:
                 {
-                alt38=2;
+                alt41=2;
                 }
                 break;
             case FLOAT:
                 {
-                alt38=3;
+                alt41=3;
                 }
                 break;
             case BOOL:
                 {
-                alt38=4;
+                alt41=4;
                 }
                 break;
             case NULL:
                 {
-                alt38=5;
+                alt41=5;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return text;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1004:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 38, 0, input);
+                    new NoViableAltException("1028:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 41, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt38) {
+            switch (alt41) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1004:6: t= STRING
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:6: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2687); if (failed) return text;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2775); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = getString( t ); 
                     }
@@ -3764,10 +3897,10 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1005:5: t= INT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:5: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2698); if (failed) return text;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2786); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3775,10 +3908,10 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1006:5: t= FLOAT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:5: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2711); if (failed) return text;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2799); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3786,10 +3919,10 @@
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1007:5: t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:5: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2722); if (failed) return text;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2810); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3797,10 +3930,10 @@
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1008:5: t= NULL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:5: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint2734); if (failed) return text;
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint2822); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = null; 
                     }
@@ -3826,7 +3959,7 @@
 
 
     // $ANTLR start enum_constraint
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1012:1: enum_constraint returns [String text] : id= ID ( '.' ident= identifier )+ ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:1: enum_constraint returns [String text] : id= ID ( '.' ident= identifier )+ ;
     public final String enum_constraint() throws RecognitionException {
         String text = null;
 
@@ -3834,36 +3967,36 @@
         Token ident = null;
 
 
-        
-        		text = null;
+
+        		text = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1017:3: (id= ID ( '.' ident= identifier )+ )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1017:3: id= ID ( '.' ident= identifier )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: (id= ID ( '.' ident= identifier )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: id= ID ( '.' ident= identifier )+
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2769); if (failed) return text;
+            match(input,ID,FOLLOW_ID_in_enum_constraint2857); if (failed) return text;
             if ( backtracking==0 ) {
                text=id.getText(); 
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1017:32: ( '.' ident= identifier )+
-            int cnt39=0;
-            loop39:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:32: ( '.' ident= identifier )+
+            int cnt42=0;
+            loop42:
             do {
-                int alt39=2;
-                int LA39_0 = input.LA(1);
+                int alt42=2;
+                int LA42_0 = input.LA(1);
 
-                if ( (LA39_0==64) ) {
-                    alt39=1;
+                if ( (LA42_0==67) ) {
+                    alt42=1;
                 }
 
 
-                switch (alt39) {
+                switch (alt42) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1017:34: '.' ident= identifier
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:34: '.' ident= identifier
             	    {
-            	    match(input,64,FOLLOW_64_in_enum_constraint2775); if (failed) return text;
-            	    pushFollow(FOLLOW_identifier_in_enum_constraint2779);
+            	    match(input,67,FOLLOW_67_in_enum_constraint2863); if (failed) return text;
+            	    pushFollow(FOLLOW_identifier_in_enum_constraint2867);
             	    ident=identifier();
             	    _fsp--;
             	    if (failed) return text;
@@ -3875,13 +4008,13 @@
             	    break;
 
             	default :
-            	    if ( cnt39 >= 1 ) break loop39;
+            	    if ( cnt42 >= 1 ) break loop42;
             	    if (backtracking>0) {failed=true; return text;}
                         EarlyExitException eee =
-                            new EarlyExitException(39, input);
+                            new EarlyExitException(42, input);
                         throw eee;
                 }
-                cnt39++;
+                cnt42++;
             } while (true);
 
 
@@ -3900,34 +4033,34 @@
 
 
     // $ANTLR start predicate
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1021:1: predicate[PatternDescr pattern] : text= paren_chunk[d] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:1: predicate[PatternDescr pattern] : text= paren_chunk[d] ;
     public final void predicate(PatternDescr pattern) throws RecognitionException {
         String text = null;
 
 
-        
-        		PredicateDescr d = null;
+
+        		PredicateDescr d = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1026:3: (text= paren_chunk[d] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1026:3: text= paren_chunk[d]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: (text= paren_chunk[d] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: text= paren_chunk[d]
             {
             if ( backtracking==0 ) {
-              
-              			d = new PredicateDescr( );
+
+              			d = new PredicateDescr( );
               		
             }
-            pushFollow(FOLLOW_paren_chunk_in_predicate2821);
+            pushFollow(FOLLOW_paren_chunk_in_predicate2909);
             text=paren_chunk(d);
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
-              
-              		        if( text != null ) {
-              			        String body = text.substring(1, text.length()-1);
-              			        d.setContent( body );
-              				pattern.addDescr( d );
-              		        }
+
+              		        if( text != null ) {
+              			        String body = text.substring(1, text.length()-1);
+              			        d.setContent( body );
+              				pattern.addDescr( d );
+              		        }
               		
             }
 
@@ -3946,7 +4079,7 @@
 
 
     // $ANTLR start paren_chunk
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1039:1: paren_chunk[BaseDescr descr] returns [String text] : loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:1: paren_chunk[BaseDescr descr] returns [String text] : loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN ;
     public final String paren_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -3954,48 +4087,48 @@
         String chunk = null;
 
 
-        
-                   StringBuffer buf = null;
-                   Integer channel = null;
+
+                   StringBuffer buf = null;
+                   Integer channel = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1045:10: (loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1045:10: loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:10: (loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:10: loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
-              
-              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-              		    buf = new StringBuffer();
+
+              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+              		    buf = new StringBuffer();
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2870); if (failed) return text;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2958); if (failed) return text;
             if ( backtracking==0 ) {
-              
-              		    buf.append( loc.getText());
-               
+
+              		    buf.append( loc.getText());
+               
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1055:3: (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )*
-            loop40:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:3: (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )*
+            loop43:
             do {
-                int alt40=3;
-                int LA40_0 = input.LA(1);
+                int alt43=3;
+                int LA43_0 = input.LA(1);
 
-                if ( ((LA40_0>=PACKAGE && LA40_0<=OR)||(LA40_0>=CONTAINS && LA40_0<=78)) ) {
-                    alt40=1;
+                if ( ((LA43_0>=ATTRIBUTES && LA43_0<=OR)||(LA43_0>=CONTAINS && LA43_0<=79)) ) {
+                    alt43=1;
                 }
-                else if ( (LA40_0==LEFT_PAREN) ) {
-                    alt40=2;
+                else if ( (LA43_0==LEFT_PAREN) ) {
+                    alt43=2;
                 }
 
 
-                switch (alt40) {
+                switch (alt43) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1056:4: ~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:4: ~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=OR)||(input.LA(1)>=CONTAINS && input.LA(1)<=78) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=OR)||(input.LA(1)>=CONTAINS && input.LA(1)<=79) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4003,27 +4136,27 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2886);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2974);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( input.LT(-1).getText() );
+
+            	      			    buf.append( input.LT(-1).getText() );
             	      			  
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1061:4: chunk= paren_chunk[null]
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:4: chunk= paren_chunk[null]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2910);
+            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2998);
             	    chunk=paren_chunk(null);
             	    _fsp--;
             	    if (failed) return text;
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( chunk );
+
+            	      			    buf.append( chunk );
             	      			  
             	    }
 
@@ -4031,28 +4164,28 @@
             	    break;
 
             	default :
-            	    break loop40;
+            	    break loop43;
                 }
             } while (true);
 
             if ( backtracking==0 ) {
-              
-              		    if( channel != null ) {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-              		    } else {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-              		    }
+
+              		    if( channel != null ) {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+              		    } else {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+              		    }
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk2947); if (failed) return text;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk3035); if (failed) return text;
             if ( backtracking==0 ) {
-              
-                                  buf.append( loc.getText() );
-              		    text = buf.toString();
-              		    if( descr != null ) {
-              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-              		    }
+
+                                  buf.append( loc.getText() );
+              		    text = buf.toString();
+              		    if( descr != null ) {
+              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+              		    }
                               
             }
 
@@ -4071,7 +4204,7 @@
 
 
     // $ANTLR start curly_chunk
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1083:1: curly_chunk[BaseDescr descr] returns [String text] : loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:1: curly_chunk[BaseDescr descr] returns [String text] : loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY ;
     public final String curly_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -4079,44 +4212,44 @@
         String chunk = null;
 
 
-        
-                   StringBuffer buf = null;
-                   Integer channel = null;
+
+                   StringBuffer buf = null;
+                   Integer channel = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1089:3: (loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1089:3: loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:3: (loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:3: loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY
             {
             loc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk2998); if (failed) return text;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk3086); if (failed) return text;
             if ( backtracking==0 ) {
-              
-              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-              		    buf = new StringBuffer();
-              		    
-              		    buf.append( loc.getText() );
+
+              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+              		    buf = new StringBuffer();
+              		    
+              		    buf.append( loc.getText() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1097:3: (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )*
-            loop41:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:3: (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )*
+            loop44:
             do {
-                int alt41=3;
-                int LA41_0 = input.LA(1);
+                int alt44=3;
+                int LA44_0 = input.LA(1);
 
-                if ( ((LA41_0>=PACKAGE && LA41_0<=NULL)||(LA41_0>=LEFT_SQUARE && LA41_0<=78)) ) {
-                    alt41=1;
+                if ( ((LA44_0>=ATTRIBUTES && LA44_0<=NULL)||(LA44_0>=LEFT_SQUARE && LA44_0<=79)) ) {
+                    alt44=1;
                 }
-                else if ( (LA41_0==LEFT_CURLY) ) {
-                    alt41=2;
+                else if ( (LA44_0==LEFT_CURLY) ) {
+                    alt44=2;
                 }
 
 
-                switch (alt41) {
+                switch (alt44) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1098:4: ~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:4: ~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=78) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=79) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4124,27 +4257,27 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk3014);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk3102);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( input.LT(-1).getText() );
+
+            	      			    buf.append( input.LT(-1).getText() );
             	      			  
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1103:4: chunk= curly_chunk[descr]
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:4: chunk= curly_chunk[descr]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk3038);
+            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk3126);
             	    chunk=curly_chunk(descr);
             	    _fsp--;
             	    if (failed) return text;
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( chunk );
+
+            	      			    buf.append( chunk );
             	      			  
             	    }
 
@@ -4152,28 +4285,28 @@
             	    break;
 
             	default :
-            	    break loop41;
+            	    break loop44;
                 }
             } while (true);
 
             if ( backtracking==0 ) {
-              
-              		    if( channel != null ) {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-              		    } else {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-              		    }
+
+              		    if( channel != null ) {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+              		    } else {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+              		    }
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk3075); if (failed) return text;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk3163); if (failed) return text;
             if ( backtracking==0 ) {
-              
-                                  buf.append( loc.getText() );
-              		    text = buf.toString();
-              		    if( descr != null ) {
-              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-              		    }
+
+                                  buf.append( loc.getText() );
+              		    text = buf.toString();
+              		    if( descr != null ) {
+              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+              		    }
                               
             }
 
@@ -4192,7 +4325,7 @@
 
 
     // $ANTLR start square_chunk
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1125:1: square_chunk[BaseDescr descr] returns [String text] : loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1149:1: square_chunk[BaseDescr descr] returns [String text] : loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE ;
     public final String square_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -4200,48 +4333,48 @@
         String chunk = null;
 
 
-        
-                   StringBuffer buf = null;
-                   Integer channel = null;
+
+                   StringBuffer buf = null;
+                   Integer channel = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1131:10: (loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1131:10: loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:10: (loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:10: loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE
             {
             if ( backtracking==0 ) {
-              
-              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-              		    buf = new StringBuffer();
+
+              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+              		    buf = new StringBuffer();
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk3138); if (failed) return text;
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk3226); if (failed) return text;
             if ( backtracking==0 ) {
-              
-              		    buf.append( loc.getText());
-               
+
+              		    buf.append( loc.getText());
+               
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1141:3: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )*
-            loop42:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:3: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )*
+            loop45:
             do {
-                int alt42=3;
-                int LA42_0 = input.LA(1);
+                int alt45=3;
+                int LA45_0 = input.LA(1);
 
-                if ( ((LA42_0>=PACKAGE && LA42_0<=RIGHT_CURLY)||(LA42_0>=AND && LA42_0<=78)) ) {
-                    alt42=1;
+                if ( ((LA45_0>=ATTRIBUTES && LA45_0<=RIGHT_CURLY)||(LA45_0>=AND && LA45_0<=79)) ) {
+                    alt45=1;
                 }
-                else if ( (LA42_0==LEFT_SQUARE) ) {
-                    alt42=2;
+                else if ( (LA45_0==LEFT_SQUARE) ) {
+                    alt45=2;
                 }
 
 
-                switch (alt42) {
+                switch (alt45) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:4: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1166:4: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=AND && input.LA(1)<=78) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=AND && input.LA(1)<=79) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4249,27 +4382,27 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk3154);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk3242);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( input.LT(-1).getText() );
+
+            	      			    buf.append( input.LT(-1).getText() );
             	      			  
             	    }
 
             	    }
             	    break;
             	case 2 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1147:4: chunk= square_chunk[null]
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:4: chunk= square_chunk[null]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_square_chunk3178);
+            	    pushFollow(FOLLOW_square_chunk_in_square_chunk3266);
             	    chunk=square_chunk(null);
             	    _fsp--;
             	    if (failed) return text;
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( chunk );
+
+            	      			    buf.append( chunk );
             	      			  
             	    }
 
@@ -4277,28 +4410,28 @@
             	    break;
 
             	default :
-            	    break loop42;
+            	    break loop45;
                 }
             } while (true);
 
             if ( backtracking==0 ) {
-              
-              		    if( channel != null ) {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-              		    } else {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-              		    }
+
+              		    if( channel != null ) {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+              		    } else {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+              		    }
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3215); if (failed) return text;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3303); if (failed) return text;
             if ( backtracking==0 ) {
-              
-                                  buf.append( loc.getText() );
-              		    text = buf.toString();
-              		    if( descr != null ) {
-              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-              		    }
+
+                                  buf.append( loc.getText() );
+              		    text = buf.toString();
+              		    if( descr != null ) {
+              		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+              		    }
                               
             }
 
@@ -4317,21 +4450,21 @@
 
 
     // $ANTLR start retval_constraint
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1169:1: retval_constraint returns [String text] : c= paren_chunk[null] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:1: retval_constraint returns [String text] : c= paren_chunk[null] ;
     public final String retval_constraint() throws RecognitionException {
         String text = null;
 
         String c = null;
 
 
-        
-        		text = null;
+
+        		text = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1174:3: (c= paren_chunk[null] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1174:3: c= paren_chunk[null]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: (c= paren_chunk[null] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: c= paren_chunk[null]
             {
-            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3260);
+            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3348);
             c=paren_chunk(null);
             _fsp--;
             if (failed) return text;
@@ -4354,7 +4487,7 @@
 
 
     // $ANTLR start lhs_or
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1177:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( OR | '||' ) right= lhs_and )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( OR | '||' ) right= lhs_and )* ;
     public final BaseDescr lhs_or() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4363,37 +4496,37 @@
         BaseDescr right = null;
 
 
-        
-        		d = null;
-        		OrDescr or = null;
+
+        		d = null;
+        		OrDescr or = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1183:3: (left= lhs_and ( ( OR | '||' ) right= lhs_and )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1183:3: left= lhs_and ( ( OR | '||' ) right= lhs_and )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:3: (left= lhs_and ( ( OR | '||' ) right= lhs_and )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:3: left= lhs_and ( ( OR | '||' ) right= lhs_and )*
             {
-            pushFollow(FOLLOW_lhs_and_in_lhs_or3288);
+            pushFollow(FOLLOW_lhs_and_in_lhs_or3376);
             left=lhs_and();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               d = left; 
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1184:3: ( ( OR | '||' ) right= lhs_and )*
-            loop43:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:3: ( ( OR | '||' ) right= lhs_and )*
+            loop46:
             do {
-                int alt43=2;
-                int LA43_0 = input.LA(1);
+                int alt46=2;
+                int LA46_0 = input.LA(1);
 
-                if ( (LA43_0==OR||LA43_0==68) ) {
-                    alt43=1;
+                if ( (LA46_0==OR||LA46_0==69) ) {
+                    alt46=1;
                 }
 
 
-                switch (alt43) {
+                switch (alt46) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1184:5: ( OR | '||' ) right= lhs_and
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:5: ( OR | '||' ) right= lhs_and
             	    {
-            	    if ( input.LA(1)==OR||input.LA(1)==68 ) {
+            	    if ( input.LA(1)==OR||input.LA(1)==69 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4401,22 +4534,22 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3296);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3384);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3307);
+            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3395);
             	    right=lhs_and();
             	    _fsp--;
             	    if (failed) return d;
             	    if ( backtracking==0 ) {
-            	      
-            	      				if ( or == null ) {
-            	      					or = new OrDescr();
-            	      					or.addDescr( left );
-            	      					d = or;
-            	      				}
-            	      				
-            	      				or.addDescr( right );
+
+            	      				if ( or == null ) {
+            	      					or = new OrDescr();
+            	      					or.addDescr( left );
+            	      					d = or;
+            	      				}
+            	      				
+            	      				or.addDescr( right );
             	      			
             	    }
 
@@ -4424,7 +4557,7 @@
             	    break;
 
             	default :
-            	    break loop43;
+            	    break loop46;
                 }
             } while (true);
 
@@ -4444,7 +4577,7 @@
 
 
     // $ANTLR start lhs_and
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1198:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* ;
     public final BaseDescr lhs_and() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4453,37 +4586,37 @@
         BaseDescr right = null;
 
 
-        
-        		d = null;
-        		AndDescr and = null;
+
+        		d = null;
+        		AndDescr and = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:3: (left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:3: left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: (left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )*
             {
-            pushFollow(FOLLOW_lhs_unary_in_lhs_and3343);
+            pushFollow(FOLLOW_lhs_unary_in_lhs_and3431);
             left=lhs_unary();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                d = left; 
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1205:3: ( ( AND | '&&' ) right= lhs_unary )*
-            loop44:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:3: ( ( AND | '&&' ) right= lhs_unary )*
+            loop47:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
+                int alt47=2;
+                int LA47_0 = input.LA(1);
 
-                if ( (LA44_0==AND||LA44_0==78) ) {
-                    alt44=1;
+                if ( (LA47_0==AND||LA47_0==79) ) {
+                    alt47=1;
                 }
 
 
-                switch (alt44) {
+                switch (alt47) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1205:5: ( AND | '&&' ) right= lhs_unary
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:5: ( AND | '&&' ) right= lhs_unary
             	    {
-            	    if ( input.LA(1)==AND||input.LA(1)==78 ) {
+            	    if ( input.LA(1)==AND||input.LA(1)==79 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4491,22 +4624,22 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3351);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3439);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3362);
+            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3450);
             	    right=lhs_unary();
             	    _fsp--;
             	    if (failed) return d;
             	    if ( backtracking==0 ) {
-            	      
-            	      				if ( and == null ) {
-            	      					and = new AndDescr();
-            	      					and.addDescr( left );
-            	      					d = and;
-            	      				}
-            	      				
-            	      				and.addDescr( right );
+
+            	      				if ( and == null ) {
+            	      					and = new AndDescr();
+            	      					and.addDescr( left );
+            	      					d = and;
+            	      				}
+            	      				
+            	      				and.addDescr( right );
             	      			
             	    }
 
@@ -4514,7 +4647,7 @@
             	    break;
 
             	default :
-            	    break loop44;
+            	    break loop47;
                 }
             } while (true);
 
@@ -4534,7 +4667,7 @@
 
 
     // $ANTLR start lhs_unary
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1219:1: lhs_unary returns [BaseDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:1: lhs_unary returns [BaseDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon ;
     public final BaseDescr lhs_unary() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4547,59 +4680,59 @@
         FromDescr fm = null;
 
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:4: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )
-            int alt47=6;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )
+            int alt50=6;
             switch ( input.LA(1) ) {
             case EXISTS:
                 {
-                alt47=1;
+                alt50=1;
                 }
                 break;
             case NOT:
                 {
-                alt47=2;
+                alt50=2;
                 }
                 break;
             case EVAL:
                 {
-                alt47=3;
+                alt50=3;
                 }
                 break;
             case ID:
                 {
-                alt47=4;
+                alt50=4;
                 }
                 break;
             case FORALL:
                 {
-                alt47=5;
+                alt50=5;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt47=6;
+                alt50=6;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1223:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )", 47, 0, input);
+                    new NoViableAltException("1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )", 50, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt47) {
+            switch (alt50) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1223:6: u= lhs_exist
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:6: u= lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3399);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3487);
                     u=lhs_exist();
                     _fsp--;
                     if (failed) return d;
@@ -4607,9 +4740,9 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1224:5: u= lhs_not
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:5: u= lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3407);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3495);
                     u=lhs_not();
                     _fsp--;
                     if (failed) return d;
@@ -4617,9 +4750,9 @@
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1225:5: u= lhs_eval
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:5: u= lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3415);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3503);
                     u=lhs_eval();
                     _fsp--;
                     if (failed) return d;
@@ -4627,80 +4760,80 @@
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1226:5: u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:5: u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_unary3423);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_unary3511);
                     u=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1226:19: ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
-                    int alt46=2;
-                    int LA46_0 = input.LA(1);
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:19: ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
+                    int alt49=2;
+                    int LA49_0 = input.LA(1);
 
-                    if ( (LA46_0==FROM) ) {
-                        alt46=1;
+                    if ( (LA49_0==FROM) ) {
+                        alt49=1;
                     }
-                    switch (alt46) {
+                    switch (alt49) {
                         case 1 :
-                            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1227:13: FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:13: FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
                             {
-                            match(input,FROM,FOLLOW_FROM_in_lhs_unary3439); if (failed) return d;
-                            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1227:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
-                            int alt45=3;
-                            int LA45_0 = input.LA(1);
+                            match(input,FROM,FOLLOW_FROM_in_lhs_unary3527); if (failed) return d;
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
+                            int alt48=3;
+                            int LA48_0 = input.LA(1);
 
-                            if ( (LA45_0==ACCUMULATE) && ((synpred90()||synpred87()))) {
-                                int LA45_1 = input.LA(2);
+                            if ( (LA48_0==ACCUMULATE) && ((synpred94()||synpred91()))) {
+                                int LA48_1 = input.LA(2);
 
-                                if ( (synpred87()) ) {
-                                    alt45=1;
+                                if ( (synpred91()) ) {
+                                    alt48=1;
                                 }
-                                else if ( (synpred90()) ) {
-                                    alt45=3;
+                                else if ( (synpred94()) ) {
+                                    alt48=3;
                                 }
                                 else {
                                     if (backtracking>0) {failed=true; return d;}
                                     NoViableAltException nvae =
-                                        new NoViableAltException("1227:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 45, 1, input);
+                                        new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 1, input);
 
                                     throw nvae;
                                 }
                             }
-                            else if ( (LA45_0==COLLECT) && ((synpred90()||synpred88()))) {
-                                int LA45_2 = input.LA(2);
+                            else if ( (LA48_0==COLLECT) && ((synpred92()||synpred94()))) {
+                                int LA48_2 = input.LA(2);
 
-                                if ( (synpred88()) ) {
-                                    alt45=2;
+                                if ( (synpred92()) ) {
+                                    alt48=2;
                                 }
-                                else if ( (synpred90()) ) {
-                                    alt45=3;
+                                else if ( (synpred94()) ) {
+                                    alt48=3;
                                 }
                                 else {
                                     if (backtracking>0) {failed=true; return d;}
                                     NoViableAltException nvae =
-                                        new NoViableAltException("1227:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 45, 2, input);
+                                        new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 2, input);
 
                                     throw nvae;
                                 }
                             }
-                            else if ( ((LA45_0>=PACKAGE && LA45_0<=ATTRIBUTES)||LA45_0==ENABLED||LA45_0==SALIENCE||LA45_0==DURATION||(LA45_0>=INIT && LA45_0<=RESULT)||(LA45_0>=ID && LA45_0<=OR)||(LA45_0>=CONTAINS && LA45_0<=EXCLUDES)||LA45_0==NULL||(LA45_0>=AND && LA45_0<=THEN)) && (synpred90())) {
-                                alt45=3;
+                            else if ( ((LA48_0>=ATTRIBUTES && LA48_0<=WHEN)||LA48_0==ENABLED||LA48_0==SALIENCE||LA48_0==DURATION||(LA48_0>=INIT && LA48_0<=RESULT)||(LA48_0>=ID && LA48_0<=OR)||(LA48_0>=CONTAINS && LA48_0<=EXCLUDES)||LA48_0==NULL||(LA48_0>=AND && LA48_0<=THEN)) && (synpred94())) {
+                                alt48=3;
                             }
                             else {
                                 if (backtracking>0) {failed=true; return d;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("1227:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 45, 0, input);
+                                    new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 0, input);
 
                                 throw nvae;
                             }
-                            switch (alt45) {
+                            switch (alt48) {
                                 case 1 :
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:14: ( ACCUMULATE )=> (ac= accumulate_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:14: ( ACCUMULATE )=> (ac= accumulate_statement )
                                     {
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:32: (ac= accumulate_statement )
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:33: ac= accumulate_statement
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:32: (ac= accumulate_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:33: ac= accumulate_statement
                                     {
-                                    pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3467);
+                                    pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3555);
                                     ac=accumulate_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4714,12 +4847,12 @@
                                     }
                                     break;
                                 case 2 :
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1229:14: ( COLLECT )=> (cs= collect_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:14: ( COLLECT )=> (cs= collect_statement )
                                     {
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1229:29: (cs= collect_statement )
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1229:30: cs= collect_statement
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:29: (cs= collect_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:30: cs= collect_statement
                                     {
-                                    pushFollow(FOLLOW_collect_statement_in_lhs_unary3496);
+                                    pushFollow(FOLLOW_collect_statement_in_lhs_unary3584);
                                     cs=collect_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4733,12 +4866,12 @@
                                     }
                                     break;
                                 case 3 :
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1230:14: (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement )
                                     {
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1230:43: (fm= from_statement )
-                                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1230:44: fm= from_statement
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:43: (fm= from_statement )
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:44: fm= from_statement
                                     {
-                                    pushFollow(FOLLOW_from_statement_in_lhs_unary3531);
+                                    pushFollow(FOLLOW_from_statement_in_lhs_unary3619);
                                     fm=from_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4764,9 +4897,9 @@
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1233:5: u= lhs_forall
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:5: u= lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3570);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3658);
                     u=lhs_forall();
                     _fsp--;
                     if (failed) return d;
@@ -4774,14 +4907,14 @@
                     }
                     break;
                 case 6 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1234:5: '(' u= lhs_or ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:5: '(' u= lhs_or ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3578); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3582);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3666); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3670);
                     u=lhs_or();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3584); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3672); if (failed) return d;
 
                     }
                     break;
@@ -4791,7 +4924,7 @@
             if ( backtracking==0 ) {
                d = u; 
             }
-            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3594);
+            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3682);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -4811,7 +4944,7 @@
 
 
     // $ANTLR start lhs_exist
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1239:1: lhs_exist returns [BaseDescr d] : loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:1: lhs_exist returns [BaseDescr d] : loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
     public final BaseDescr lhs_exist() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4820,48 +4953,48 @@
         BaseDescr pattern = null;
 
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1243:4: (loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1243:4: loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:4: (loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:4: loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             {
             loc=(Token)input.LT(1);
-            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist3618); if (failed) return d;
+            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist3706); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new ExistsDescr( ); 
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+              			d = new ExistsDescr( ); 
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1249:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
-            int alt48=2;
-            int LA48_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA48_0==LEFT_PAREN) ) {
-                alt48=1;
+            if ( (LA51_0==LEFT_PAREN) ) {
+                alt51=1;
             }
-            else if ( (LA48_0==ID) ) {
-                alt48=2;
+            else if ( (LA51_0==ID) ) {
+                alt51=2;
             }
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1249:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 48, 0, input);
+                    new NoViableAltException("1273:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 51, 0, input);
 
                 throw nvae;
             }
-            switch (alt48) {
+            switch (alt51) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1249:12: ( '(' pattern= lhs_or end= ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:12: ( '(' pattern= lhs_or end= ')' )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1249:12: ( '(' pattern= lhs_or end= ')' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1249:14: '(' pattern= lhs_or end= ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:12: ( '(' pattern= lhs_or end= ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:14: '(' pattern= lhs_or end= ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3638); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3642);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3726); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3730);
                     pattern=lhs_or();
                     _fsp--;
                     if (failed) return d;
@@ -4869,7 +5002,7 @@
                        if ( pattern != null ) ((ExistsDescr)d).addDescr( pattern ); 
                     }
                     end=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3674); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3762); if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); 
                     }
@@ -4880,18 +5013,18 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1254:12: pattern= lhs_pattern
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1278:12: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3724);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3812);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      	                	if ( pattern != null ) {
-                      	                		((ExistsDescr)d).addDescr( pattern );
-                      	                		d.setEndCharacter( pattern.getEndCharacter() );
-                      	                	}
+
+                      	                	if ( pattern != null ) {
+                      	                		((ExistsDescr)d).addDescr( pattern );
+                      	                		d.setEndCharacter( pattern.getEndCharacter() );
+                      	                	}
                       	                
                     }
 
@@ -4916,7 +5049,7 @@
 
 
     // $ANTLR start lhs_not
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:1: lhs_not returns [NotDescr d] : loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:1: lhs_not returns [NotDescr d] : loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
     public final NotDescr lhs_not() throws RecognitionException {
         NotDescr d = null;
 
@@ -4925,48 +5058,48 @@
         BaseDescr pattern = null;
 
 
-        
-        		d = null;
+
+        		d = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1268:4: (loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1268:4: loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:4: (loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:4: loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             {
             loc=(Token)input.LT(1);
-            match(input,NOT,FOLLOW_NOT_in_lhs_not3778); if (failed) return d;
+            match(input,NOT,FOLLOW_NOT_in_lhs_not3866); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			d = new NotDescr( ); 
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+              			d = new NotDescr( ); 
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1274:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
-            int alt49=2;
-            int LA49_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA49_0==LEFT_PAREN) ) {
-                alt49=1;
+            if ( (LA52_0==LEFT_PAREN) ) {
+                alt52=1;
             }
-            else if ( (LA49_0==ID) ) {
-                alt49=2;
+            else if ( (LA52_0==ID) ) {
+                alt52=2;
             }
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1274:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 49, 0, input);
+                    new NoViableAltException("1298:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 52, 0, input);
 
                 throw nvae;
             }
-            switch (alt49) {
+            switch (alt52) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1274:5: ( '(' pattern= lhs_or end= ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:5: ( '(' pattern= lhs_or end= ')' )
                     {
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1274:5: ( '(' pattern= lhs_or end= ')' )
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1274:7: '(' pattern= lhs_or end= ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:5: ( '(' pattern= lhs_or end= ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:7: '(' pattern= lhs_or end= ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3791); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3795);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3879); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3883);
                     pattern=lhs_or();
                     _fsp--;
                     if (failed) return d;
@@ -4974,7 +5107,7 @@
                        if ( pattern != null ) d.addDescr( pattern ); 
                     }
                     end=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3828); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3916); if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); 
                     }
@@ -4985,18 +5118,18 @@
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1280:3: pattern= lhs_pattern
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:3: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3865);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3953);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
-                      
-                      	                	if ( pattern != null ) {
-                      	                		d.addDescr( pattern );
-                      	                		d.setEndCharacter( pattern.getEndCharacter() );
-                      	                	}
+
+                      	                	if ( pattern != null ) {
+                      	                		d.addDescr( pattern );
+                      	                		d.setEndCharacter( pattern.getEndCharacter() );
+                      	                	}
                       	                
                     }
 
@@ -5021,7 +5154,7 @@
 
 
     // $ANTLR start lhs_eval
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1290:1: lhs_eval returns [BaseDescr d] : loc= EVAL c= paren_chunk[d] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:1: lhs_eval returns [BaseDescr d] : loc= EVAL c= paren_chunk[d] ;
     public final BaseDescr lhs_eval() throws RecognitionException {
         BaseDescr d = null;
 
@@ -5029,27 +5162,27 @@
         String c = null;
 
 
-        
-        		d = new EvalDescr( );
+
+        		d = new EvalDescr( );
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1295:3: (loc= EVAL c= paren_chunk[d] )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1295:3: loc= EVAL c= paren_chunk[d]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:3: (loc= EVAL c= paren_chunk[d] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:3: loc= EVAL c= paren_chunk[d]
             {
             loc=(Token)input.LT(1);
-            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval3913); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3917);
+            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval4001); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval4005);
             c=paren_chunk(d);
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
-               
-              			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              		        if( c != null ) {
-              		            String body = c.substring(1, c.length()-1);
-              			    checkTrailingSemicolon( body, offset(loc.getLine()) );
-              			    ((EvalDescr) d).setContent( body );
-              			}
+               
+              			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              		        if( c != null ) {
+              		            String body = c.substring(1, c.length()-1);
+              			    checkTrailingSemicolon( body, offset(loc.getLine()) );
+              			    ((EvalDescr) d).setContent( body );
+              			}
               		
             }
 
@@ -5068,7 +5201,7 @@
 
 
     // $ANTLR start lhs_forall
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1306:1: lhs_forall returns [ForallDescr d] : loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1330:1: lhs_forall returns [ForallDescr d] : loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' ;
     public final ForallDescr lhs_forall() throws RecognitionException {
         ForallDescr d = null;
 
@@ -5079,70 +5212,70 @@
         BaseDescr pattern = null;
 
 
-        
-        		d = factory.createForall();
+
+        		d = factory.createForall();
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1310:4: (loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1310:4: loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:4: (loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:4: loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')'
             {
             loc=(Token)input.LT(1);
-            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall3946); if (failed) return d;
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3948); if (failed) return d;
-            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall3952);
+            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall4034); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall4036); if (failed) return d;
+            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4040);
             base=lhs_pattern();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
-              
-              			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-              		        // adding the base pattern
-              		        d.addDescr( base );
-              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+
+              			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+              		        // adding the base pattern
+              		        d.addDescr( base );
+              			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1317:3: ( ( ',' )? pattern= lhs_pattern )+
-            int cnt51=0;
-            loop51:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:3: ( ( ',' )? pattern= lhs_pattern )+
+            int cnt54=0;
+            loop54:
             do {
-                int alt51=2;
-                int LA51_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA51_0==ID||LA51_0==66) ) {
-                    alt51=1;
+                if ( (LA54_0==ID||LA54_0==66) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt51) {
+                switch (alt54) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1317:5: ( ',' )? pattern= lhs_pattern
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:5: ( ',' )? pattern= lhs_pattern
             	    {
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1317:5: ( ',' )?
-            	    int alt50=2;
-            	    int LA50_0 = input.LA(1);
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:5: ( ',' )?
+            	    int alt53=2;
+            	    int LA53_0 = input.LA(1);
 
-            	    if ( (LA50_0==66) ) {
-            	        alt50=1;
+            	    if ( (LA53_0==66) ) {
+            	        alt53=1;
             	    }
-            	    switch (alt50) {
+            	    switch (alt53) {
             	        case 1 :
-            	            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1317:6: ','
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:6: ','
             	            {
-            	            match(input,66,FOLLOW_66_in_lhs_forall3966); if (failed) return d;
+            	            match(input,66,FOLLOW_66_in_lhs_forall4054); if (failed) return d;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall3972);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4060);
             	    pattern=lhs_pattern();
             	    _fsp--;
             	    if (failed) return d;
             	    if ( backtracking==0 ) {
-            	      
-            	      		        // adding additional patterns
-            	      			d.addDescr( pattern );
+
+            	      		        // adding additional patterns
+            	      			d.addDescr( pattern );
             	      		
             	    }
 
@@ -5150,20 +5283,20 @@
             	    break;
 
             	default :
-            	    if ( cnt51 >= 1 ) break loop51;
+            	    if ( cnt54 >= 1 ) break loop54;
             	    if (backtracking>0) {failed=true; return d;}
                         EarlyExitException eee =
-                            new EarlyExitException(51, input);
+                            new EarlyExitException(54, input);
                         throw eee;
                 }
-                cnt51++;
+                cnt54++;
             } while (true);
 
             end=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3987); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall4075); if (failed) return d;
             if ( backtracking==0 ) {
-              
-              		        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() );
+
+              		        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() );
               		
             }
 
@@ -5182,7 +5315,7 @@
 
 
     // $ANTLR start dotted_name
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1329:1: dotted_name[BaseDescr descr] returns [String name] : id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1353:1: dotted_name[BaseDescr descr] returns [String name] : id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* ;
     public final String dotted_name(BaseDescr descr) throws RecognitionException {
         String name = null;
 
@@ -5191,50 +5324,50 @@
         Token ident = null;
 
 
-        
-        		name = null;
+
+        		name = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1334:3: (id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1334:3: id= ID ( '.' ident= identifier )* ( '[' loc= ']' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1358:3: (id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1358:3: id= ID ( '.' ident= identifier )* ( '[' loc= ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name4018); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_dotted_name4106); if (failed) return name;
             if ( backtracking==0 ) {
-               
-              		    name=id.getText(); 
-              		    if( descr != null ) {
-              			descr.setStartCharacter( ((CommonToken)id).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)id).getStopIndex() );
-              		    }
+               
+              		    name=id.getText(); 
+              		    if( descr != null ) {
+              			descr.setStartCharacter( ((CommonToken)id).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)id).getStopIndex() );
+              		    }
               		
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:3: ( '.' ident= identifier )*
-            loop52:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1366:3: ( '.' ident= identifier )*
+            loop55:
             do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA52_0==64) ) {
-                    alt52=1;
+                if ( (LA55_0==67) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt52) {
+                switch (alt55) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:5: '.' ident= identifier
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1366:5: '.' ident= identifier
             	    {
-            	    match(input,64,FOLLOW_64_in_dotted_name4030); if (failed) return name;
-            	    pushFollow(FOLLOW_identifier_in_dotted_name4034);
+            	    match(input,67,FOLLOW_67_in_dotted_name4118); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_dotted_name4122);
             	    ident=identifier();
             	    _fsp--;
             	    if (failed) return name;
             	    if ( backtracking==0 ) {
-            	       
-            	      		        name = name + "." + ident.getText(); 
-            	          		        if( descr != null ) {
-            	      			    descr.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-            	      		        }
+            	       
+            	      		        name = name + "." + ident.getText(); 
+            	          		        if( descr != null ) {
+            	      			    descr.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+            	      		        }
             	      		    
             	    }
 
@@ -5242,34 +5375,34 @@
             	    break;
 
             	default :
-            	    break loop52;
+            	    break loop55;
                 }
             } while (true);
 
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350:3: ( '[' loc= ']' )*
-            loop53:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1374:3: ( '[' loc= ']' )*
+            loop56:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA53_0==LEFT_SQUARE) ) {
-                    alt53=1;
+                if ( (LA56_0==LEFT_SQUARE) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt56) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350:5: '[' loc= ']'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1374:5: '[' loc= ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4056); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4144); if (failed) return name;
             	    loc=(Token)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4060); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4148); if (failed) return name;
             	    if ( backtracking==0 ) {
-            	       
-            	      		        name = name + "[]";
-            	          		        if( descr != null ) {
-            	      			    descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-            	      		        }
+            	       
+            	      		        name = name + "[]";
+            	          		        if( descr != null ) {
+            	      			    descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+            	      		        }
             	      		    
             	    }
 
@@ -5277,7 +5410,7 @@
             	    break;
 
             	default :
-            	    break loop53;
+            	    break loop56;
                 }
             } while (true);
 
@@ -5297,44 +5430,44 @@
 
 
     // $ANTLR start argument
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1360:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1384:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
     public final String argument() throws RecognitionException {
         String name = null;
 
         Token id = null;
 
 
-        
-        		name = null;
+
+        		name = null;
         	
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1365:3: (id= identifier ( '[' ']' )* )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1365:3: id= identifier ( '[' ']' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:3: (id= identifier ( '[' ']' )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:3: id= identifier ( '[' ']' )*
             {
-            pushFollow(FOLLOW_identifier_in_argument4099);
+            pushFollow(FOLLOW_identifier_in_argument4187);
             id=identifier();
             _fsp--;
             if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1365:40: ( '[' ']' )*
-            loop54:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:40: ( '[' ']' )*
+            loop57:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt57=2;
+                int LA57_0 = input.LA(1);
 
-                if ( (LA54_0==LEFT_SQUARE) ) {
-                    alt54=1;
+                if ( (LA57_0==LEFT_SQUARE) ) {
+                    alt57=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt57) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1365:42: '[' ']'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:42: '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument4105); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument4107); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument4193); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument4195); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -5343,7 +5476,7 @@
             	    break;
 
             	default :
-            	    break loop54;
+            	    break loop57;
                 }
             } while (true);
 
@@ -5363,44 +5496,44 @@
 
 
     // $ANTLR start rhs_chunk
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:1: rhs_chunk[RuleDescr rule] : start= THEN (~ END )* loc= END ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1392:1: rhs_chunk[RuleDescr rule] : start= THEN (~ END )* loc= END ;
     public final void rhs_chunk(RuleDescr rule) throws RecognitionException {
         Token start=null;
         Token loc=null;
 
-        
-                   StringBuffer buf = null;
-                   Integer channel = null;
+
+                   StringBuffer buf = null;
+                   Integer channel = null;
                 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1374:10: (start= THEN (~ END )* loc= END )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1374:10: start= THEN (~ END )* loc= END
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:10: (start= THEN (~ END )* loc= END )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:10: start= THEN (~ END )* loc= END
             {
             if ( backtracking==0 ) {
-              
-              	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-              		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-              		    buf = new StringBuffer();
+
+              	            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_chunk4151); if (failed) return ;
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1380:3: (~ END )*
-            loop55:
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk4239); if (failed) return ;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1404:3: (~ END )*
+            loop58:
             do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-                if ( ((LA55_0>=PACKAGE && LA55_0<=QUERY)||(LA55_0>=TEMPLATE && LA55_0<=78)) ) {
-                    alt55=1;
+                if ( ((LA58_0>=ATTRIBUTES && LA58_0<=QUERY)||(LA58_0>=TEMPLATE && LA58_0<=79)) ) {
+                    alt58=1;
                 }
 
 
-                switch (alt55) {
+                switch (alt58) {
             	case 1 :
-            	    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:6: ~ END
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:6: ~ END
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=78) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=79) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -5408,12 +5541,12 @@
             	        if (backtracking>0) {failed=true; return ;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4163);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4251);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
-            	      
-            	      			    buf.append( input.LT(-1).getText() );
+
+            	      			    buf.append( input.LT(-1).getText() );
             	      			  
             	    }
 
@@ -5421,36 +5554,36 @@
             	    break;
 
             	default :
-            	    break loop55;
+            	    break loop58;
                 }
             } while (true);
 
             if ( backtracking==0 ) {
-              
-              		    if( channel != null ) {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-              		    } else {
-              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-              		    }
+
+              		    if( channel != null ) {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+              		    } else {
+              			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+              		    }
               		
             }
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk4200); if (failed) return ;
+            match(input,END,FOLLOW_END_in_rhs_chunk4288); if (failed) return ;
             if ( backtracking==0 ) {
-              
-                                  // ignoring first line in the consequence
-                                  int index = 0;
-                                  while( (index < buf.length() ) && Character.isWhitespace( buf.charAt( index ) ) &&
-                                         (buf.charAt( index ) != 10 ) && (buf.charAt( index ) != 13 ))
-                                             index++;
-                                  if( (index < buf.length() ) && ( buf.charAt( index ) == '\r' ) )
-                                      index++;
-                                  if( (index < buf.length() ) && ( buf.charAt( index ) == '\n' ) )
-                                      index++;
-                                  
-              		    rule.setConsequence( buf.substring( index ) );
-                   		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
-               		    rule.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+
+                                  // ignoring first line in the consequence
+                                  int index = 0;
+                                  while( (index < buf.length() ) && Character.isWhitespace( buf.charAt( index ) ) &&
+                                         (buf.charAt( index ) != 10 ) && (buf.charAt( index ) != 13 ))
+                                             index++;
+                                  if( (index < buf.length() ) && ( buf.charAt( index ) == '\r' ) )
+                                      index++;
+                                  if( (index < buf.length() ) && ( buf.charAt( index ) == '\n' ) )
+                                      index++;
+                                  
+              		    rule.setConsequence( buf.substring( index ) );
+                   		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
+               		    rule.setEndCharacter( ((CommonToken)loc).getStopIndex() );
                               
             }
 
@@ -5469,7 +5602,7 @@
 
 
     // $ANTLR start name
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1411:1: name returns [String s] : (tok= ID | str= STRING ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1435:1: name returns [String s] : (tok= ID | str= STRING ) ;
     public final String name() throws RecognitionException {
         String s = null;
 
@@ -5477,48 +5610,48 @@
         Token str=null;
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1413:2: ( (tok= ID | str= STRING ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1413:2: (tok= ID | str= STRING )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: ( (tok= ID | str= STRING ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: (tok= ID | str= STRING )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1413:2: (tok= ID | str= STRING )
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: (tok= ID | str= STRING )
+            int alt59=2;
+            int LA59_0 = input.LA(1);
 
-            if ( (LA56_0==ID) ) {
-                alt56=1;
+            if ( (LA59_0==ID) ) {
+                alt59=1;
             }
-            else if ( (LA56_0==STRING) ) {
-                alt56=2;
+            else if ( (LA59_0==STRING) ) {
+                alt59=2;
             }
             else {
                 if (backtracking>0) {failed=true; return s;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1413:2: (tok= ID | str= STRING )", 56, 0, input);
+                    new NoViableAltException("1437:2: (tok= ID | str= STRING )", 59, 0, input);
 
                 throw nvae;
             }
-            switch (alt56) {
+            switch (alt59) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1414:6: tok= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:6: tok= ID
                     {
                     tok=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_name4244); if (failed) return s;
+                    match(input,ID,FOLLOW_ID_in_name4332); if (failed) return s;
                     if ( backtracking==0 ) {
-                      
-                      	        s = tok.getText();
+
+                      	        s = tok.getText();
                       	    
                     }
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1419:6: str= STRING
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443:6: str= STRING
                     {
                     str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_name4263); if (failed) return s;
+                    match(input,STRING,FOLLOW_STRING_in_name4351); if (failed) return s;
                     if ( backtracking==0 ) {
-                      
-                      	       s = getString( str );
+
+                      	       s = getString( str );
                       	    
                     }
 
@@ -5543,428 +5676,428 @@
 
 
     // $ANTLR start identifier
-    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1426:1: identifier returns [Token tok] : (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1450:1: identifier returns [Token tok] : (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) ;
     public final Token identifier() throws RecognitionException {
         Token tok = null;
 
         Token t=null;
 
         try {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1428:2: ( (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) )
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1428:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: ( (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
             {
-            // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1428:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
-            int alt57=31;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
+            int alt60=31;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt57=1;
+                alt60=1;
                 }
                 break;
             case PACKAGE:
                 {
-                alt57=2;
+                alt60=2;
                 }
                 break;
             case FUNCTION:
                 {
-                alt57=3;
+                alt60=3;
                 }
                 break;
             case GLOBAL:
                 {
-                alt57=4;
+                alt60=4;
                 }
                 break;
             case IMPORT:
                 {
-                alt57=5;
+                alt60=5;
                 }
                 break;
             case RULE:
                 {
-                alt57=6;
+                alt60=6;
                 }
                 break;
             case QUERY:
                 {
-                alt57=7;
+                alt60=7;
                 }
                 break;
             case TEMPLATE:
                 {
-                alt57=8;
+                alt60=8;
                 }
                 break;
             case ATTRIBUTES:
                 {
-                alt57=9;
+                alt60=9;
                 }
                 break;
             case ENABLED:
                 {
-                alt57=10;
+                alt60=10;
                 }
                 break;
             case SALIENCE:
                 {
-                alt57=11;
+                alt60=11;
                 }
                 break;
             case DURATION:
                 {
-                alt57=12;
+                alt60=12;
                 }
                 break;
             case FROM:
                 {
-                alt57=13;
+                alt60=13;
                 }
                 break;
             case ACCUMULATE:
                 {
-                alt57=14;
+                alt60=14;
                 }
                 break;
             case INIT:
                 {
-                alt57=15;
+                alt60=15;
                 }
                 break;
             case ACTION:
                 {
-                alt57=16;
+                alt60=16;
                 }
                 break;
             case RESULT:
                 {
-                alt57=17;
+                alt60=17;
                 }
                 break;
             case COLLECT:
                 {
-                alt57=18;
+                alt60=18;
                 }
                 break;
             case OR:
                 {
-                alt57=19;
+                alt60=19;
                 }
                 break;
             case AND:
                 {
-                alt57=20;
+                alt60=20;
                 }
                 break;
             case CONTAINS:
                 {
-                alt57=21;
+                alt60=21;
                 }
                 break;
             case EXCLUDES:
                 {
-                alt57=22;
+                alt60=22;
                 }
                 break;
             case MATCHES:
                 {
-                alt57=23;
+                alt60=23;
                 }
                 break;
             case NULL:
                 {
-                alt57=24;
+                alt60=24;
                 }
                 break;
             case EXISTS:
                 {
-                alt57=25;
+                alt60=25;
                 }
                 break;
             case NOT:
                 {
-                alt57=26;
+                alt60=26;
                 }
                 break;
             case EVAL:
                 {
-                alt57=27;
+                alt60=27;
                 }
                 break;
             case FORALL:
                 {
-                alt57=28;
+                alt60=28;
                 }
                 break;
             case WHEN:
                 {
-                alt57=29;
+                alt60=29;
                 }
                 break;
             case THEN:
                 {
-                alt57=30;
+                alt60=30;
                 }
                 break;
             case END:
                 {
-                alt57=31;
+                alt60=31;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return tok;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1428:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )", 57, 0, input);
+                    new NoViableAltException("1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )", 60, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt57) {
+            switch (alt60) {
                 case 1 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1428:10: t= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:10: t= ID
                     {
                     t=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_identifier4301); if (failed) return tok;
+                    match(input,ID,FOLLOW_ID_in_identifier4389); if (failed) return tok;
 
                     }
                     break;
                 case 2 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1429:4: t= PACKAGE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1453:4: t= PACKAGE
                     {
                     t=(Token)input.LT(1);
-                    match(input,PACKAGE,FOLLOW_PACKAGE_in_identifier4314); if (failed) return tok;
+                    match(input,PACKAGE,FOLLOW_PACKAGE_in_identifier4402); if (failed) return tok;
 
                     }
                     break;
                 case 3 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1430:4: t= FUNCTION
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:4: t= FUNCTION
                     {
                     t=(Token)input.LT(1);
-                    match(input,FUNCTION,FOLLOW_FUNCTION_in_identifier4321); if (failed) return tok;
+                    match(input,FUNCTION,FOLLOW_FUNCTION_in_identifier4409); if (failed) return tok;
 
                     }
                     break;
                 case 4 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1431:4: t= GLOBAL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:4: t= GLOBAL
                     {
                     t=(Token)input.LT(1);
-                    match(input,GLOBAL,FOLLOW_GLOBAL_in_identifier4328); if (failed) return tok;
+                    match(input,GLOBAL,FOLLOW_GLOBAL_in_identifier4416); if (failed) return tok;
 
                     }
                     break;
                 case 5 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1432:4: t= IMPORT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:4: t= IMPORT
                     {
                     t=(Token)input.LT(1);
-                    match(input,IMPORT,FOLLOW_IMPORT_in_identifier4335); if (failed) return tok;
+                    match(input,IMPORT,FOLLOW_IMPORT_in_identifier4423); if (failed) return tok;
 
                     }
                     break;
                 case 6 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1433:4: t= RULE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:4: t= RULE
                     {
                     t=(Token)input.LT(1);
-                    match(input,RULE,FOLLOW_RULE_in_identifier4344); if (failed) return tok;
+                    match(input,RULE,FOLLOW_RULE_in_identifier4432); if (failed) return tok;
 
                     }
                     break;
                 case 7 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1434:4: t= QUERY
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:4: t= QUERY
                     {
                     t=(Token)input.LT(1);
-                    match(input,QUERY,FOLLOW_QUERY_in_identifier4351); if (failed) return tok;
+                    match(input,QUERY,FOLLOW_QUERY_in_identifier4439); if (failed) return tok;
 
                     }
                     break;
                 case 8 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1435:17: t= TEMPLATE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:17: t= TEMPLATE
                     {
                     t=(Token)input.LT(1);
-                    match(input,TEMPLATE,FOLLOW_TEMPLATE_in_identifier4372); if (failed) return tok;
+                    match(input,TEMPLATE,FOLLOW_TEMPLATE_in_identifier4460); if (failed) return tok;
 
                     }
                     break;
                 case 9 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1436:17: t= ATTRIBUTES
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:17: t= ATTRIBUTES
                     {
                     t=(Token)input.LT(1);
-                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_identifier4400); if (failed) return tok;
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_identifier4488); if (failed) return tok;
 
                     }
                     break;
                 case 10 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1437:17: t= ENABLED
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:17: t= ENABLED
                     {
                     t=(Token)input.LT(1);
-                    match(input,ENABLED,FOLLOW_ENABLED_in_identifier4426); if (failed) return tok;
+                    match(input,ENABLED,FOLLOW_ENABLED_in_identifier4514); if (failed) return tok;
 
                     }
                     break;
                 case 11 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1438:17: t= SALIENCE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:17: t= SALIENCE
                     {
                     t=(Token)input.LT(1);
-                    match(input,SALIENCE,FOLLOW_SALIENCE_in_identifier4455); if (failed) return tok;
+                    match(input,SALIENCE,FOLLOW_SALIENCE_in_identifier4543); if (failed) return tok;
 
                     }
                     break;
                 case 12 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1439:17: t= DURATION
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1463:17: t= DURATION
                     {
                     t=(Token)input.LT(1);
-                    match(input,DURATION,FOLLOW_DURATION_in_identifier4477); if (failed) return tok;
+                    match(input,DURATION,FOLLOW_DURATION_in_identifier4565); if (failed) return tok;
 
                     }
                     break;
                 case 13 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1440:17: t= FROM
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1464:17: t= FROM
                     {
                     t=(Token)input.LT(1);
-                    match(input,FROM,FOLLOW_FROM_in_identifier4499); if (failed) return tok;
+                    match(input,FROM,FOLLOW_FROM_in_identifier4587); if (failed) return tok;
 
                     }
                     break;
                 case 14 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1441:17: t= ACCUMULATE
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:17: t= ACCUMULATE
                     {
                     t=(Token)input.LT(1);
-                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_identifier4528); if (failed) return tok;
+                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_identifier4616); if (failed) return tok;
 
                     }
                     break;
                 case 15 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1442:17: t= INIT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1466:17: t= INIT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INIT,FOLLOW_INIT_in_identifier4550); if (failed) return tok;
+                    match(input,INIT,FOLLOW_INIT_in_identifier4638); if (failed) return tok;
 
                     }
                     break;
                 case 16 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1443:17: t= ACTION
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1467:17: t= ACTION
                     {
                     t=(Token)input.LT(1);
-                    match(input,ACTION,FOLLOW_ACTION_in_identifier4579); if (failed) return tok;
+                    match(input,ACTION,FOLLOW_ACTION_in_identifier4667); if (failed) return tok;
 
                     }
                     break;
                 case 17 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1444:17: t= RESULT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1468:17: t= RESULT
                     {
                     t=(Token)input.LT(1);
-                    match(input,RESULT,FOLLOW_RESULT_in_identifier4608); if (failed) return tok;
+                    match(input,RESULT,FOLLOW_RESULT_in_identifier4696); if (failed) return tok;
 
                     }
                     break;
                 case 18 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1445:17: t= COLLECT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:17: t= COLLECT
                     {
                     t=(Token)input.LT(1);
-                    match(input,COLLECT,FOLLOW_COLLECT_in_identifier4637); if (failed) return tok;
+                    match(input,COLLECT,FOLLOW_COLLECT_in_identifier4725); if (failed) return tok;
 
                     }
                     break;
                 case 19 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1446:17: t= OR
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:17: t= OR
                     {
                     t=(Token)input.LT(1);
-                    match(input,OR,FOLLOW_OR_in_identifier4666); if (failed) return tok;
+                    match(input,OR,FOLLOW_OR_in_identifier4754); if (failed) return tok;
 
                     }
                     break;
                 case 20 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1447:17: t= AND
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1471:17: t= AND
                     {
                     t=(Token)input.LT(1);
-                    match(input,AND,FOLLOW_AND_in_identifier4695); if (failed) return tok;
+                    match(input,AND,FOLLOW_AND_in_identifier4783); if (failed) return tok;
 
                     }
                     break;
                 case 21 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1448:17: t= CONTAINS
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:17: t= CONTAINS
                     {
                     t=(Token)input.LT(1);
-                    match(input,CONTAINS,FOLLOW_CONTAINS_in_identifier4724); if (failed) return tok;
+                    match(input,CONTAINS,FOLLOW_CONTAINS_in_identifier4812); if (failed) return tok;
 
                     }
                     break;
                 case 22 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1449:17: t= EXCLUDES
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1473:17: t= EXCLUDES
                     {
                     t=(Token)input.LT(1);
-                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_identifier4746); if (failed) return tok;
+                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_identifier4834); if (failed) return tok;
 
                     }
                     break;
                 case 23 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1450:17: t= MATCHES
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1474:17: t= MATCHES
                     {
                     t=(Token)input.LT(1);
-                    match(input,MATCHES,FOLLOW_MATCHES_in_identifier4768); if (failed) return tok;
+                    match(input,MATCHES,FOLLOW_MATCHES_in_identifier4856); if (failed) return tok;
 
                     }
                     break;
                 case 24 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1451:17: t= NULL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475:17: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_identifier4797); if (failed) return tok;
+                    match(input,NULL,FOLLOW_NULL_in_identifier4885); if (failed) return tok;
 
                     }
                     break;
                 case 25 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1452:17: t= EXISTS
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1476:17: t= EXISTS
                     {
                     t=(Token)input.LT(1);
-                    match(input,EXISTS,FOLLOW_EXISTS_in_identifier4826); if (failed) return tok;
+                    match(input,EXISTS,FOLLOW_EXISTS_in_identifier4914); if (failed) return tok;
 
                     }
                     break;
                 case 26 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1453:17: t= NOT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1477:17: t= NOT
                     {
                     t=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_identifier4855); if (failed) return tok;
+                    match(input,NOT,FOLLOW_NOT_in_identifier4943); if (failed) return tok;
 
                     }
                     break;
                 case 27 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1454:17: t= EVAL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:17: t= EVAL
                     {
                     t=(Token)input.LT(1);
-                    match(input,EVAL,FOLLOW_EVAL_in_identifier4884); if (failed) return tok;
+                    match(input,EVAL,FOLLOW_EVAL_in_identifier4972); if (failed) return tok;
 
                     }
                     break;
                 case 28 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1455:17: t= FORALL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:17: t= FORALL
                     {
                     t=(Token)input.LT(1);
-                    match(input,FORALL,FOLLOW_FORALL_in_identifier4913); if (failed) return tok;
+                    match(input,FORALL,FOLLOW_FORALL_in_identifier5001); if (failed) return tok;
 
                     }
                     break;
                 case 29 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1456:17: t= WHEN
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1480:17: t= WHEN
                     {
                     t=(Token)input.LT(1);
-                    match(input,WHEN,FOLLOW_WHEN_in_identifier4951); if (failed) return tok;
+                    match(input,WHEN,FOLLOW_WHEN_in_identifier5039); if (failed) return tok;
 
                     }
                     break;
                 case 30 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1457:17: t= THEN
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1481:17: t= THEN
                     {
                     t=(Token)input.LT(1);
-                    match(input,THEN,FOLLOW_THEN_in_identifier4983); if (failed) return tok;
+                    match(input,THEN,FOLLOW_THEN_in_identifier5071); if (failed) return tok;
 
                     }
                     break;
                 case 31 :
-                    // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1458:17: t= END
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:17: t= END
                     {
                     t=(Token)input.LT(1);
-                    match(input,END,FOLLOW_END_in_identifier5012); if (failed) return tok;
+                    match(input,END,FOLLOW_END_in_identifier5100); if (failed) return tok;
 
                     }
                     break;
@@ -5972,8 +6105,8 @@
             }
 
             if ( backtracking==0 ) {
-              
-              	    tok = t;
+
+              	    tok = t;
               	
             }
 
@@ -5990,76 +6123,76 @@
     }
     // $ANTLR end identifier
 
-    // $ANTLR start synpred4
-    public final void synpred4_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:4: ( function_import_statement )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:189:4: function_import_statement
+    // $ANTLR start synpred7
+    public final void synpred7_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: ( function_import_statement )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
         {
-        pushFollow(FOLLOW_function_import_statement_in_synpred4114);
+        pushFollow(FOLLOW_function_import_statement_in_synpred7150);
         function_import_statement();
         _fsp--;
         if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred4
+    // $ANTLR end synpred7
 
-    // $ANTLR start synpred5
-    public final void synpred5_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:190:4: ( import_statement )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:190:4: import_statement
+    // $ANTLR start synpred8
+    public final void synpred8_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: ( import_statement )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
         {
-        pushFollow(FOLLOW_import_statement_in_synpred5120);
+        pushFollow(FOLLOW_import_statement_in_synpred8156);
         import_statement();
         _fsp--;
         if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred5
+    // $ANTLR end synpred8
 
-    // $ANTLR start synpred38
-    public final void synpred38_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:718:4: ( paren_chunk[from] )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:718:4: paren_chunk[from]
+    // $ANTLR start synpred42
+    public final void synpred42_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( paren_chunk[from] )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: paren_chunk[from]
         {
-        pushFollow(FOLLOW_paren_chunk_in_synpred381788);
+        pushFollow(FOLLOW_paren_chunk_in_synpred421876);
         paren_chunk(from);
         _fsp--;
         if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred38
+    // $ANTLR end synpred42
 
-    // $ANTLR start synpred40
-    public final void synpred40_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:748:6: ( LEFT_SQUARE )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:748:8: LEFT_SQUARE
+    // $ANTLR start synpred44
+    public final void synpred44_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:8: LEFT_SQUARE
         {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred401854); if (failed) return ;
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred441942); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred40
+    // $ANTLR end synpred44
 
-    // $ANTLR start synpred41
-    public final void synpred41_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:753:6: ( LEFT_PAREN )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:753:8: LEFT_PAREN
+    // $ANTLR start synpred45
+    public final void synpred45_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:8: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred411888); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred451976); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred41
+    // $ANTLR end synpred45
 
-    // $ANTLR start synpred45
-    public final void synpred45_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:850:6: ( ( OR | '||' ) fact )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:850:6: ( OR | '||' ) fact
+    // $ANTLR start synpred49
+    public final void synpred49_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( ( OR | '||' ) fact )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) fact
         {
-        if ( input.LA(1)==OR||input.LA(1)==68 ) {
+        if ( input.LA(1)==OR||input.LA(1)==69 ) {
             input.consume();
             errorRecovery=false;failed=false;
         }
@@ -6067,46 +6200,46 @@
             if (backtracking>0) {failed=true; return ;}
             MismatchedSetException mse =
                 new MismatchedSetException(null,input);
-            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred452196);    throw mse;
+            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred492284);    throw mse;
         }
 
-        pushFollow(FOLLOW_fact_in_synpred452214);
+        pushFollow(FOLLOW_fact_in_synpred492302);
         fact();
         _fsp--;
         if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred45
+    // $ANTLR end synpred49
 
-    // $ANTLR start synpred87
-    public final void synpred87_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:14: ( ACCUMULATE )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1228:16: ACCUMULATE
+    // $ANTLR start synpred91
+    public final void synpred91_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:14: ( ACCUMULATE )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:16: ACCUMULATE
         {
-        match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_synpred873458); if (failed) return ;
+        match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_synpred913546); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred87
+    // $ANTLR end synpred91
 
-    // $ANTLR start synpred88
-    public final void synpred88_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1229:14: ( COLLECT )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1229:16: COLLECT
+    // $ANTLR start synpred92
+    public final void synpred92_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:14: ( COLLECT )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:16: COLLECT
         {
-        match(input,COLLECT,FOLLOW_COLLECT_in_synpred883487); if (failed) return ;
+        match(input,COLLECT,FOLLOW_COLLECT_in_synpred923575); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred88
+    // $ANTLR end synpred92
 
-    // $ANTLR start synpred90
-    public final void synpred90_fragment() throws RecognitionException {   
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1230:14: (~ ( ACCUMULATE | COLLECT ) )
-        // C:\\dev\\jbossrules\\trunk3\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1230:16: ~ ( ACCUMULATE | COLLECT )
+    // $ANTLR start synpred94
+    public final void synpred94_fragment() throws RecognitionException {   
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: (~ ( ACCUMULATE | COLLECT ) )
+        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:16: ~ ( ACCUMULATE | COLLECT )
         {
-        if ( (input.LA(1)>=PACKAGE && input.LA(1)<=LOCK_ON_ACTIVE)||(input.LA(1)>=INIT && input.LA(1)<=RESULT)||(input.LA(1)>=ID && input.LA(1)<=78) ) {
+        if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=LOCK_ON_ACTIVE)||(input.LA(1)>=INIT && input.LA(1)<=RESULT)||(input.LA(1)>=ID && input.LA(1)<=79) ) {
             input.consume();
             errorRecovery=false;failed=false;
         }
@@ -6114,19 +6247,19 @@
             if (backtracking>0) {failed=true; return ;}
             MismatchedSetException mse =
                 new MismatchedSetException(null,input);
-            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred903517);    throw mse;
+            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred943605);    throw mse;
         }
 
 
         }
     }
-    // $ANTLR end synpred90
+    // $ANTLR end synpred94
 
-    public final boolean synpred45() {
+    public final boolean synpred44() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred45_fragment(); // can never throw exception
+            synpred44_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6136,11 +6269,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred38() {
+    public final boolean synpred92() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred38_fragment(); // can never throw exception
+            synpred92_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6150,11 +6283,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred90() {
+    public final boolean synpred49() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred90_fragment(); // can never throw exception
+            synpred49_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6164,11 +6297,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred87() {
+    public final boolean synpred7() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred87_fragment(); // can never throw exception
+            synpred7_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6178,11 +6311,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred5() {
+    public final boolean synpred94() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred5_fragment(); // can never throw exception
+            synpred94_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6192,11 +6325,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred88() {
+    public final boolean synpred45() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred88_fragment(); // can never throw exception
+            synpred45_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6206,11 +6339,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred40() {
+    public final boolean synpred91() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred40_fragment(); // can never throw exception
+            synpred91_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6220,11 +6353,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred41() {
+    public final boolean synpred8() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred41_fragment(); // can never throw exception
+            synpred8_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6234,11 +6367,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred4() {
+    public final boolean synpred42() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred4_fragment(); // can never throw exception
+            synpred42_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6250,399 +6383,406 @@
     }
 
 
-    protected DFA8 dfa8 = new DFA8(this);
-    protected DFA9 dfa9 = new DFA9(this);
-    static final String DFA8_eotS =
+    protected DFA11 dfa11 = new DFA11(this);
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA11_eotS =
         "\6\uffff";
-    static final String DFA8_eofS =
+    static final String DFA11_eofS =
         "\6\uffff";
-    static final String DFA8_minS =
-        "\2\4\1\uffff\1\55\1\uffff\1\4";
-    static final String DFA8_maxS =
-        "\1\64\1\102\1\uffff\1\55\1\uffff\1\102";
-    static final String DFA8_acceptS =
+    static final String DFA11_minS =
+        "\2\4\1\uffff\1\56\1\uffff\1\4";
+    static final String DFA11_maxS =
+        "\1\65\1\103\1\uffff\1\56\1\uffff\1\102";
+    static final String DFA11_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\1\uffff";
-    static final String DFA8_specialS =
+    static final String DFA11_specialS =
         "\6\uffff}>";
-    static final String[] DFA8_transitionS = {
-            "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\1\uffff\5\2\1\1\1"+
+    static final String[] DFA11_transitionS = {
+            "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\2\uffff\5\2\1\1\1"+
             "\2\2\uffff\3\2\1\uffff\1\2\4\uffff\7\2",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\1\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\13\uffff\1\4\1"+
-            "\uffff\1\2",
+            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
+            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2\1"+
+            "\4",
             "",
             "\1\5",
             "",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\1\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\15\uffff\1\2"
+            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
+            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2"
     };
 
-    static final short[] DFA8_eot = DFA.unpackEncodedString(DFA8_eotS);
-    static final short[] DFA8_eof = DFA.unpackEncodedString(DFA8_eofS);
-    static final char[] DFA8_min = DFA.unpackEncodedStringToUnsignedChars(DFA8_minS);
-    static final char[] DFA8_max = DFA.unpackEncodedStringToUnsignedChars(DFA8_maxS);
-    static final short[] DFA8_accept = DFA.unpackEncodedString(DFA8_acceptS);
-    static final short[] DFA8_special = DFA.unpackEncodedString(DFA8_specialS);
-    static final short[][] DFA8_transition;
+    static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
+    static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS);
+    static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS);
+    static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS);
+    static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS);
+    static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS);
+    static final short[][] DFA11_transition;
 
     static {
-        int numStates = DFA8_transitionS.length;
-        DFA8_transition = new short[numStates][];
+        int numStates = DFA11_transitionS.length;
+        DFA11_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA8_transition[i] = DFA.unpackEncodedString(DFA8_transitionS[i]);
+            DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]);
         }
     }
 
-    class DFA8 extends DFA {
+    class DFA11 extends DFA {
 
-        public DFA8(BaseRecognizer recognizer) {
+        public DFA11(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 8;
-            this.eot = DFA8_eot;
-            this.eof = DFA8_eof;
-            this.min = DFA8_min;
-            this.max = DFA8_max;
-            this.accept = DFA8_accept;
-            this.special = DFA8_special;
-            this.transition = DFA8_transition;
+            this.decisionNumber = 11;
+            this.eot = DFA11_eot;
+            this.eof = DFA11_eof;
+            this.min = DFA11_min;
+            this.max = DFA11_max;
+            this.accept = DFA11_accept;
+            this.special = DFA11_special;
+            this.transition = DFA11_transition;
         }
         public String getDescription() {
-            return "307:6: (paramType= dotted_name[null] )?";
+            return "313:6: (paramType= dotted_name[null] )?";
         }
     }
-    static final String DFA9_eotS =
+    static final String DFA12_eotS =
         "\6\uffff";
-    static final String DFA9_eofS =
+    static final String DFA12_eofS =
         "\6\uffff";
-    static final String DFA9_minS =
-        "\2\4\1\uffff\1\55\1\uffff\1\4";
-    static final String DFA9_maxS =
-        "\1\64\1\102\1\uffff\1\55\1\uffff\1\102";
-    static final String DFA9_acceptS =
-        "\2\uffff\1\2\1\uffff\1\1\1\uffff";
-    static final String DFA9_specialS =
+    static final String DFA12_minS =
+        "\2\4\2\uffff\1\56\1\4";
+    static final String DFA12_maxS =
+        "\1\65\1\103\2\uffff\1\56\1\102";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\1\1\2\uffff";
+    static final String DFA12_specialS =
         "\6\uffff}>";
-    static final String[] DFA9_transitionS = {
-            "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\1\uffff\5\2\1\1\1"+
+    static final String[] DFA12_transitionS = {
+            "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\2\uffff\5\2\1\1\1"+
             "\2\2\uffff\3\2\1\uffff\1\2\4\uffff\7\2",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\1\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\13\uffff\1\4\1"+
-            "\uffff\1\2",
+            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
+            "\1\2\3\3\1\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2\1"+
+            "\3",
             "",
+            "",
             "\1\5",
-            "",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\1\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\15\uffff\1\2"
+            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
+            "\1\2\3\3\1\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2"
     };
 
-    static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
-    static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
-    static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
-    static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
-    static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
-    static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
-    static final short[][] DFA9_transition;
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
 
     static {
-        int numStates = DFA9_transitionS.length;
-        DFA9_transition = new short[numStates][];
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA9_transition[i] = DFA.unpackEncodedString(DFA9_transitionS[i]);
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
         }
     }
 
-    class DFA9 extends DFA {
+    class DFA12 extends DFA {
 
-        public DFA9(BaseRecognizer recognizer) {
+        public DFA12(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 9;
-            this.eot = DFA9_eot;
-            this.eof = DFA9_eof;
-            this.min = DFA9_min;
-            this.max = DFA9_max;
-            this.accept = DFA9_accept;
-            this.special = DFA9_special;
-            this.transition = DFA9_transition;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "311:11: (paramType= dotted_name[null] )?";
+            return "317:11: (paramType= dotted_name[null] )?";
         }
     }
  
 
-    public static final BitSet FOLLOW_63_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000000000000DE0L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000000000000DE2L});
-    public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement114 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement126 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement132 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_PACKAGE_in_package_statement196 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement200 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_package_statement203 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_import_statement235 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_import_name_in_import_statement258 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_import_statement261 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_function_import_statement287 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement289 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement312 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement315 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_import_name343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_64_in_import_name355 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_import_name359 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_65_in_import_name383 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GLOBAL_in_global419 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_dotted_name_in_global430 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_global442 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_global444 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_function471 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function476 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_function483 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_function492 = new BitSet(new long[]{0x001FC2F7F40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function502 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_argument_in_function509 = new BitSet(new long[]{0x0000001000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_function523 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function528 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_argument_in_function535 = new BitSet(new long[]{0x0000001000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_function559 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_QUERY_in_query597 = new BitSet(new long[]{0x0000000200008000L});
-    public static final BitSet FOLLOW_name_in_query601 = new BitSet(new long[]{0x000F000A00000200L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query614 = new BitSet(new long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_END_in_query631 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TEMPLATE_in_template661 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_template665 = new BitSet(new long[]{0x8000000200000000L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template667 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_template_slot_in_template682 = new BitSet(new long[]{0x0000000200000200L});
-    public static final BitSet FOLLOW_END_in_template699 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template701 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_template_slot747 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_template_slot765 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template_slot767 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_rule800 = new BitSet(new long[]{0x0000000200008000L});
-    public static final BitSet FOLLOW_name_in_rule804 = new BitSet(new long[]{0x001000000FEB7000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule813 = new BitSet(new long[]{0x0010000000001000L});
-    public static final BitSet FOLLOW_WHEN_in_rule822 = new BitSet(new long[]{0x001F000A00000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_rule824 = new BitSet(new long[]{0x001F000A00000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule842 = new BitSet(new long[]{0x0010000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule863 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_rule_attributes886 = new BitSet(new long[]{0x000000000FEB4002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_rule_attributes895 = new BitSet(new long[]{0x000000000FEB4000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes900 = new BitSet(new long[]{0x000000000FEB4002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute941 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute951 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute962 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute975 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1000 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1021 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1031 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1051 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DATE_EFFECTIVE_in_date_effective1082 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1086 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DATE_EXPIRES_in_date_expires1119 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ENABLED_in_enabled1158 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SALIENCE_in_salience1207 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_INT_in_salience1211 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1249 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1277 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1281 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1330 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1358 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACTIVATION_GROUP_in_activation_group1407 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1411 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1443 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AGENDA_GROUP_in_agenda_group1479 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1483 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DURATION_in_duration1518 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_INT_in_duration1522 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1564 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1592 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active1596 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1634 = new BitSet(new long[]{0x000F000A00000002L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs1671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern1699 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern1708 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_from_statement1735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_from_source1777 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source1788 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source1802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_64_in_expression_chain1827 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_expression_chain1831 = new BitSet(new long[]{0x0000100800000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain1862 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1896 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1917 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement1958 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement1968 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_accumulate_statement1972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement1974 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_statement1983 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1987 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement1990 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_ACTION_in_accumulate_statement1999 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement2006 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_RESULT_in_accumulate_statement2015 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2019 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2024 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement2067 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement2077 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_collect_statement2081 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement2085 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding2119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_fact_binding2121 = new BitSet(new long[]{0x0000000A00000000L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_binding2134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression2166 = new BitSet(new long[]{0x0000000A00000000L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2170 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression2173 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2184 = new BitSet(new long[]{0x0000000400000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_set_in_fact_expression2196 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2214 = new BitSet(new long[]{0x0000000400000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_fact2275 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2289 = new BitSet(new long[]{0x001FC2FFF40A3FF0L});
-    public static final BitSet FOLLOW_constraints_in_fact2299 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact2312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints2333 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_predicate_in_constraints2336 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_constraints2344 = new BitSet(new long[]{0x001FC2EFF40A3FF0L});
-    public static final BitSet FOLLOW_constraint_in_constraints2347 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_predicate_in_constraints2350 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_constraint2379 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_constraint2381 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_constraint2402 = new BitSet(new long[]{0x000000E000000002L,0x0000000000003F80L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2420 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000060L});
-    public static final BitSet FOLLOW_set_in_constraint2441 = new BitSet(new long[]{0x000000E000000000L,0x0000000000003F00L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2461 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000060L});
-    public static final BitSet FOLLOW_71_in_constraint2489 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_predicate_in_constraint2491 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint_expression2526 = new BitSet(new long[]{0x0000030A00148000L});
-    public static final BitSet FOLLOW_ID_in_constraint_expression2595 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2611 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2634 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2648 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2687 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2698 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2711 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2722 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint2734 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2769 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_64_in_enum_constraint2775 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_enum_constraint2779 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2821 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2870 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk2886 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2910 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk2947 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk2998 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk3014 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3038 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk3075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk3138 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk3154 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_square_chunk_in_square_chunk3178 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3215 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3260 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3288 = new BitSet(new long[]{0x0000000400000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_set_in_lhs_or3296 = new BitSet(new long[]{0x000F000A00000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3307 = new BitSet(new long[]{0x0000000400000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3343 = new BitSet(new long[]{0x0000400000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_set_in_lhs_and3351 = new BitSet(new long[]{0x000F000A00000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3362 = new BitSet(new long[]{0x0000400000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3399 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3407 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3415 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_unary3423 = new BitSet(new long[]{0x8000800000000002L});
-    public static final BitSet FOLLOW_FROM_in_lhs_unary3439 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3467 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3496 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary3531 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3570 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3578 = new BitSet(new long[]{0x000F000A00000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3582 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3584 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3594 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_lhs_exist3618 = new BitSet(new long[]{0x0000000A00000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3638 = new BitSet(new long[]{0x000F000A00000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3642 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3674 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3724 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_lhs_not3778 = new BitSet(new long[]{0x0000000A00000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3791 = new BitSet(new long[]{0x000F000A00000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3795 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3828 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3865 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_lhs_eval3913 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3917 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_lhs_forall3946 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3948 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall3952 = new BitSet(new long[]{0x0000000200000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_lhs_forall3966 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall3972 = new BitSet(new long[]{0x0000001200000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3987 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name4018 = new BitSet(new long[]{0x0000100000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_64_in_dotted_name4030 = new BitSet(new long[]{0x001FC2E7F40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_dotted_name4034 = new BitSet(new long[]{0x0000100000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4056 = new BitSet(new long[]{0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4060 = new BitSet(new long[]{0x0000100000000002L});
-    public static final BitSet FOLLOW_identifier_in_argument4099 = new BitSet(new long[]{0x0000100000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument4105 = new BitSet(new long[]{0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument4107 = new BitSet(new long[]{0x0000100000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk4151 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk4163 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000007FFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk4200 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_name4244 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_name4263 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_identifier4301 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_PACKAGE_in_identifier4314 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_identifier4321 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GLOBAL_in_identifier4328 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_identifier4335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_identifier4344 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_QUERY_in_identifier4351 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TEMPLATE_in_identifier4372 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_identifier4400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ENABLED_in_identifier4426 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SALIENCE_in_identifier4455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DURATION_in_identifier4477 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FROM_in_identifier4499 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_identifier4528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_identifier4550 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACTION_in_identifier4579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RESULT_in_identifier4608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_identifier4637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OR_in_identifier4666 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AND_in_identifier4695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTAINS_in_identifier4724 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXCLUDES_in_identifier4746 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MATCHES_in_identifier4768 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_identifier4797 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_identifier4826 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_identifier4855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_identifier4884 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_identifier4913 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_identifier4951 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_identifier4983 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_END_in_identifier5012 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_synpred4114 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_synpred5120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_synpred381788 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred401854 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred411888 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_synpred452196 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_fact_in_synpred452214 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_synpred873458 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_synpred883487 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_synpred903517 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000000000001BC0L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000000000001BC2L});
+    public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x000000001FEB4012L,0x0000000000000004L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_prolog105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_prolog107 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_prolog116 = new BitSet(new long[]{0x000000001FEB4000L});
+    public static final BitSet FOLLOW_rule_attribute_in_prolog121 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement150 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement156 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement162 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement182 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement191 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_package_statement232 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement236 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_package_statement239 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_import_statement271 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_import_statement294 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_import_statement297 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_function_import_statement323 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement325 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement348 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement351 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_import_name379 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
+    public static final BitSet FOLLOW_67_in_import_name391 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_import_name395 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
+    public static final BitSet FOLLOW_68_in_import_name419 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_global455 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_dotted_name_in_global466 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_global478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_global480 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_function507 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function512 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_function519 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function528 = new BitSet(new long[]{0x003F85EFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function538 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function545 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_function559 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function564 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function571 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function595 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function601 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_QUERY_in_query633 = new BitSet(new long[]{0x0000000400008000L});
+    public static final BitSet FOLLOW_name_in_query637 = new BitSet(new long[]{0x001E001400000400L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query650 = new BitSet(new long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_END_in_query667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_template697 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template701 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template703 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_template_slot_in_template718 = new BitSet(new long[]{0x0000000400000400L});
+    public static final BitSet FOLLOW_END_in_template735 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template737 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_template_slot783 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template_slot801 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template_slot803 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_rule836 = new BitSet(new long[]{0x0000000400008000L});
+    public static final BitSet FOLLOW_name_in_rule840 = new BitSet(new long[]{0x002000001FEB6010L,0x0000000000000004L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule849 = new BitSet(new long[]{0x0020000000002000L});
+    public static final BitSet FOLLOW_WHEN_in_rule858 = new BitSet(new long[]{0x003E001400000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_rule860 = new BitSet(new long[]{0x003E001400000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule878 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule899 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes920 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_rule_attributes922 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_rule_attributes931 = new BitSet(new long[]{0x000000001FEB4000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes936 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute977 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute987 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute998 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1011 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1025 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1036 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1057 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1067 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1077 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1087 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1096 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EFFECTIVE_in_date_effective1128 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1132 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EXPIRES_in_date_expires1165 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1169 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_enabled1204 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_salience1253 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_INT_in_salience1257 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1323 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1327 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1376 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1404 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1408 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTIVATION_GROUP_in_activation_group1453 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1489 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1493 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AGENDA_GROUP_in_agenda_group1525 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_duration1563 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_INT_in_duration1567 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DIALECT_in_dialect1599 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1603 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1652 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1680 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1684 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1722 = new BitSet(new long[]{0x001E001400000002L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs1759 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern1787 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern1796 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_from_statement1823 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_from_source1865 = new BitSet(new long[]{0x0000001000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source1876 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source1890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_67_in_expression_chain1915 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_expression_chain1919 = new BitSet(new long[]{0x0000201000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain1950 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1984 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain2005 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2046 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2056 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_accumulate_statement2060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_accumulate_statement2062 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_statement2071 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_accumulate_statement2078 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_ACTION_in_accumulate_statement2087 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_accumulate_statement2094 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_RESULT_in_accumulate_statement2103 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2107 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement2155 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement2165 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_collect_statement2169 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement2173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding2207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_fact_binding2209 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_binding2222 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression2254 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2258 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression2261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2272 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_set_in_fact_expression2284 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2302 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_dotted_name_in_fact2363 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2377 = new BitSet(new long[]{0x003F85FFE40A3FF0L});
+    public static final BitSet FOLLOW_constraints_in_fact2387 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact2400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints2421 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_predicate_in_constraints2424 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_constraints2432 = new BitSet(new long[]{0x003F85DFE40A3FF0L});
+    public static final BitSet FOLLOW_constraint_in_constraints2435 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_predicate_in_constraints2438 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_constraint2467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_constraint2469 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_constraint2490 = new BitSet(new long[]{0x000001C000000002L,0x0000000000007F00L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2508 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
+    public static final BitSet FOLLOW_set_in_constraint2529 = new BitSet(new long[]{0x000001C000000000L,0x0000000000007E00L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2549 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
+    public static final BitSet FOLLOW_72_in_constraint2577 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_predicate_in_constraint2579 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_constraint_expression2614 = new BitSet(new long[]{0x0000061400148000L});
+    public static final BitSet FOLLOW_ID_in_constraint_expression2683 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2699 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2736 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2775 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2786 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2799 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint2822 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_enum_constraint2863 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_enum_constraint2867 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2958 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk2974 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2998 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk3035 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk3086 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk3102 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3126 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk3163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk3226 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk3242 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_square_chunk_in_square_chunk3266 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3348 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3376 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_set_in_lhs_or3384 = new BitSet(new long[]{0x001E001400000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3395 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3431 = new BitSet(new long[]{0x0000800000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_set_in_lhs_and3439 = new BitSet(new long[]{0x001E001400000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3450 = new BitSet(new long[]{0x0000800000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3487 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3495 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3503 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_unary3511 = new BitSet(new long[]{0x0001000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_FROM_in_lhs_unary3527 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3555 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3584 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary3619 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3658 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3666 = new BitSet(new long[]{0x001E001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3670 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3672 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_lhs_exist3706 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3726 = new BitSet(new long[]{0x001E001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3730 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_lhs_not3866 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3879 = new BitSet(new long[]{0x001E001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3883 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3916 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_lhs_eval4001 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval4005 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_lhs_forall4034 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall4036 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4040 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_lhs_forall4054 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4060 = new BitSet(new long[]{0x0000002400000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall4075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name4106 = new BitSet(new long[]{0x0000200000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_dotted_name4118 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_dotted_name4122 = new BitSet(new long[]{0x0000200000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4144 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4148 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_identifier_in_argument4187 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument4193 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument4195 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk4239 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk4251 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk4288 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_name4332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_name4351 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_identifier4389 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_identifier4402 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_identifier4409 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_identifier4416 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_identifier4423 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_identifier4432 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_QUERY_in_identifier4439 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_identifier4460 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_identifier4488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_identifier4514 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_identifier4543 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_identifier4565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FROM_in_identifier4587 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_identifier4616 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_identifier4638 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTION_in_identifier4667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RESULT_in_identifier4696 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_identifier4725 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OR_in_identifier4754 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AND_in_identifier4783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONTAINS_in_identifier4812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXCLUDES_in_identifier4834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MATCHES_in_identifier4856 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_identifier4885 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_identifier4914 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_identifier4943 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_identifier4972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_identifier5001 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_identifier5039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_identifier5071 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_END_in_identifier5100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_synpred7150 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_synpred8156 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_synpred421876 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred441942 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred451976 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_synpred492284 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_fact_in_synpred492302 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_synpred913546 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_synpred923575 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_synpred943605 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL__.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL__.g	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL__.g	2007-04-27 01:27:59 UTC (rev 11396)
@@ -0,0 +1,277 @@
+lexer grammar DRL;
+ at header {
+	package org.drools.lang;
+}
+
+T64 : ';' ;
+T65 : ':' ;
+T66 : ',' ;
+T67 : '.' ;
+T68 : '.*' ;
+T69 : '||' ;
+T70 : '&' ;
+T71 : '|' ;
+T72 : '->' ;
+T73 : '==' ;
+T74 : '>' ;
+T75 : '>=' ;
+T76 : '<' ;
+T77 : '<=' ;
+T78 : '!=' ;
+T79 : '&&' ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1489
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                |	EOL
+                )
+                { $channel=HIDDEN; }
+        ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1497
+fragment
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;  
+        
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1505
+INT	
+	:	('-')?('0'..'9')+
+		;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1509
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1513
+STRING
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1518
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1521
+fragment
+EscapeSequence
+    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1528
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1535
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1540
+BOOL
+	:	('true'|'false') 
+	;	
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1544
+PACKAGE	:	'package';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1546
+IMPORT	:	'import';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1548
+FUNCTION :	'function';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1550
+GLOBAL	:	'global';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1552
+RULE    :	'rule';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1554
+QUERY	:	'query';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1556
+TEMPLATE :	'template';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1558
+ATTRIBUTES :	'attributes';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1560
+DATE_EFFECTIVE 
+	:	'date-effective';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1563
+DATE_EXPIRES 
+	:	'date-expires';	
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1566
+ENABLED :	'enabled';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1568
+SALIENCE 
+	:	'salience';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1571
+NO_LOOP :	'no-loop';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1573
+AUTO_FOCUS 
+	:	'auto-focus';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1576
+ACTIVATION_GROUP 
+	:	'activation-group';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1579
+AGENDA_GROUP 
+	:	'agenda-group';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1582
+DIALECT 
+	:	'dialect';	
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1585
+RULEFLOW_GROUP 
+	:	'ruleflow-group';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1588
+DURATION 
+	:	'duration';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1591
+LOCK_ON_ACTIVE
+	:	'lock-on-active';	
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1594
+FROM	:	'from';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1596
+ACCUMULATE 
+	:	'accumulate';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1599
+INIT	:	'init';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1601
+ACTION	:	'action';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1603
+RESULT	:	'result';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1605
+COLLECT :	'collect';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1607
+OR	:	'or';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1609
+AND	:	'and';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1611
+CONTAINS 
+	:	'contains';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1614
+EXCLUDES 
+	:	'excludes';
+	
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1617
+MATCHES :	'matches';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1619
+NULL	:	'null';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1621
+EXISTS	:	'exists';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1623
+NOT	:	'not';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1625
+EVAL	:	'eval';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1627
+FORALL	:	'forall';							
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1629
+WHEN    :	'when'; 
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1631
+THEN	:    	'then';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1633
+END     :	'end';
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1635
+ID	
+	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')* 
+	;
+		
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1640
+SH_STYLE_SINGLE_LINE_COMMENT	
+	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
+                { $channel=HIDDEN; }
+	;
+        
+        
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1646
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { $channel=HIDDEN; }
+	;
+
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1652
+LEFT_PAREN
+        :	'('
+        ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1656
+RIGHT_PAREN
+        :	')'
+        ;
+        
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1660
+LEFT_SQUARE
+        :	'['
+        ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1664
+RIGHT_SQUARE
+        :	']'
+        ;        
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1668
+LEFT_CURLY
+        :	'{'
+        ;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1672
+RIGHT_CURLY
+        :	'}'
+        ;
+        
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1676
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { $channel=HIDDEN; }
+	;
+
+// $ANTLR src "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g" 1681
+MISC 	:
+		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?' | '|' | ',' | '=' | '/' | '\'' | '\\'
+	;


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRL__.g
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/PackageDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/PackageDescr.java	2007-04-27 01:07:05 UTC (rev 11395)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/PackageDescr.java	2007-04-27 01:27:59 UTC (rev 11396)
@@ -18,6 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 
 public class PackageDescr extends BaseDescr {
@@ -125,6 +126,20 @@
         if ( this.rules == Collections.EMPTY_LIST ) {
             this.rules = new ArrayList( 1 );
         }
+        for ( Iterator iter = attributes.iterator(); iter.hasNext(); ) {
+            AttributeDescr at = (AttributeDescr) iter.next();
+            boolean overridden = false;
+            //check for attr in rule
+            for ( Iterator iterator = rule.getAttributes().iterator(); iterator.hasNext(); ) {
+                AttributeDescr ruleAt = (AttributeDescr) iterator.next();
+                if (ruleAt.getName().equals( at.getName() )) {
+                    overridden = true;
+                }
+            }
+            if (!overridden) {
+                rule.addAttribute( at );
+            }            
+        }
         this.rules.add( rule );
     }
 

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	2007-04-27 01:07:05 UTC (rev 11395)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-04-27 01:27:59 UTC (rev 11396)
@@ -1,1656 +1,1683 @@
-grammar DRL; 
-options {backtrack=true;}
-
- at parser::header {
-	package org.drools.lang;
-	import java.util.List;
-	import java.util.ArrayList;
-	import java.util.Iterator;
-	import java.util.HashMap;	
-	import java.util.StringTokenizer;
-	import org.drools.lang.descr.*;
-	import org.drools.compiler.SwitchingCommonTokenStream;
-}
-
- at parser::members {
-	private PackageDescr packageDescr;
-	private List errors = new ArrayList();
-	private String source = "unknown";
-	private int lineOffset = 0;
-	private DescrFactory factory = new DescrFactory();
-	private boolean parserDebug = false;
-	
-	// THE FOLLOWING LINE IS A DUMMY ATTRIBUTE TO WORK AROUND AN ANTLR BUG
-	private BaseDescr from = null;
-	
-	public void setParserDebug(boolean parserDebug) {
-		this.parserDebug = parserDebug;
-	}
-	
-	public void debug(String message) {
-		if ( parserDebug ) 
-			System.err.println( "drl parser: " + message );
-	}
-	
-	public void setSource(String source) {
-		this.source = source;
-	}
-	public DescrFactory getFactory() {
-		return factory;
-	}	
-
-	public String getSource() {
-		return this.source;
-	}
-	
-	public PackageDescr getPackageDescr() {
-		return packageDescr;
-	}
-	
-	private int offset(int line) {
-		return line + lineOffset;
-	}
-	
-	/**
-	 * This will set the offset to record when reparsing. Normally is zero of course 
-	 */
-	public void setLineOffset(int i) {
-	 	this.lineOffset = i;
-	}
-	
-	private String getString(Token token) {
-		String orig = token.getText();
-		return orig.substring( 1, orig.length() -1 );
-	}
-	
-	public void reportError(RecognitionException ex) {
-	        // if we've already reported an error and have not matched a token
-                // yet successfully, don't report any errors.
-                if ( errorRecovery ) {
-                        return;
-                }
-                errorRecovery = true;
-
-		ex.line = offset(ex.line); //add the offset if there is one
-		errors.add( ex ); 
-	}
-     	
-     	/** return the raw RecognitionException errors */
-     	public List getErrors() {
-     		return errors;
-     	}
-     	
-     	/** Return a list of pretty strings summarising the errors */
-     	public List getErrorMessages() {
-     		List messages = new ArrayList();
- 		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
-     	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
-     	     	}
-     	     	return messages;
-     	}
-     	
-     	/** return true if any parser errors were accumulated */
-     	public boolean hasErrors() {
-  		return ! errors.isEmpty();
-     	}
-     	
-     	/** This will take a RecognitionException, and create a sensible error message out of it */
-     	public String createErrorMessage(RecognitionException e)
-        {
-		StringBuffer message = new StringBuffer();		
-                message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
-                if ( e instanceof MismatchedTokenException ) {
-                        MismatchedTokenException mte = (MismatchedTokenException)e;
-                        message.append("mismatched token: "+
-                                                           e.token+
-                                                           "; expecting type "+
-                                                           tokenNames[mte.expecting]);
-                }
-                else if ( e instanceof MismatchedTreeNodeException ) {
-                        MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
-                        message.append("mismatched tree node: "+
-                                                           mtne.foundNode+
-                                                           "; expecting type "+
-                                                           tokenNames[mtne.expecting]);
-                }
-                else if ( e instanceof NoViableAltException ) {
-                        NoViableAltException nvae = (NoViableAltException)e;
-			message.append( "Unexpected token '" + e.token.getText() + "'" );
-                        /*
-                        message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
-                                                           " state "+nvae.stateNumber+
-                                                           " (decision="+nvae.decisionNumber+
-                                                           ") no viable alt; token="+
-                                                           e.token);
-                                                           */
-                }
-                else if ( e instanceof EarlyExitException ) {
-                        EarlyExitException eee = (EarlyExitException)e;
-                        message.append("required (...)+ loop (decision="+
-                                                           eee.decisionNumber+
-                                                           ") did not match anything; token="+
-                                                           e.token);
-                }
-                else if ( e instanceof MismatchedSetException ) {
-                        MismatchedSetException mse = (MismatchedSetException)e;
-                        message.append("mismatched token '"+
-                                                           e.token+
-                                                           "' expecting set "+mse.expecting);
-                }
-                else if ( e instanceof MismatchedNotSetException ) {
-                        MismatchedNotSetException mse = (MismatchedNotSetException)e;
-                        message.append("mismatched token '"+
-                                                           e.token+
-                                                           "' expecting set "+mse.expecting);
-                }
-                else if ( e instanceof FailedPredicateException ) {
-                        FailedPredicateException fpe = (FailedPredicateException)e;
-                        message.append("rule "+fpe.ruleName+" failed predicate: {"+
-                                                           fpe.predicateText+"}?");
-                } else if (e instanceof GeneralParseException) {
-			message.append(" " + e.getMessage());
-		}
-               	return message.toString();
-        }   
-        
-        void checkTrailingSemicolon(String text, int line) {
-        	if (text.trim().endsWith( ";" ) ) {
-        		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
-        	}
-        }
-      
-}
-
- at lexer::header {
-	package org.drools.lang;
-}
-
-opt_semicolon
-	: ';'?
-	;
-
-compilation_unit
-	:	prolog 
-		( statement )+
-	;
-	
-prolog
-	@init {
-		String packageName = "";
-	}
-	:	( n=package_statement { packageName = n; } )?
-		{ 
-			this.packageDescr = factory.createPackage( packageName ); 
-		}
-	;
-	
-statement
-	:
-	(	function_import_statement 
-	|	import_statement 
-	|	global 
-	|	function 
-	|       t=template {this.packageDescr.addFactTemplate( t ); }
-	|	r=rule { if( r != null ) this.packageDescr.addRule( r ); }			
-	|	q=query	{ if( q != null ) this.packageDescr.addRule( q ); }
-	) 
-	;
-
-package_statement returns [String packageName]
-	@init{
-		packageName = null;
-	}
-	:	
-		PACKAGE n=dotted_name[null] opt_semicolon
-		{
-			packageName = n;
-		}
-	;
-	
-
-import_statement
-        @init {
-        	ImportDescr importDecl = null;
-        }
-	:	imp=IMPORT 
-	        {
-	            importDecl = factory.createImport( );
-	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
-		    if (packageDescr != null) {
-			packageDescr.addImport( importDecl );
-		    }
-	        }
-	        import_name[importDecl] opt_semicolon
-	;
-
-function_import_statement
-        @init {
-        	FunctionImportDescr importDecl = null;
-        }
-	:	imp=IMPORT FUNCTION 
-	        {
-	            importDecl = factory.createFunctionImport();
-	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
-		    if (packageDescr != null) {
-			packageDescr.addFunctionImport( importDecl );
-		    }
-	        }
-	        import_name[importDecl] opt_semicolon
-	;
-
-
-import_name[ImportDescr importDecl] returns [String name]
-	@init {
-		name = null;
-	}
-	:	
-		id=identifier 
-		{ 
-		    name=id.getText(); 
-		    importDecl.setTarget( name );
-		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
-		} 
-		( '.' id=identifier 
-		    { 
-		        name = name + "." + id.getText(); 
-			importDecl.setTarget( name );
-		        importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
-		    } 
-		)* 
-		( star='.*' 
-		    { 
-		        name = name + star.getText(); 
-			importDecl.setTarget( name );
-		        importDecl.setEndCharacter( ((CommonToken)star).getStopIndex() );
-		    }
-		)?
-	;
-
-
-global
-	@init {
-	    GlobalDescr global = null;
-	}
-	:
-		loc=GLOBAL 
-		{
-		    global = factory.createGlobal();
-	            global.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		    packageDescr.addGlobal( global );
-		}
-		type=dotted_name[null] 
-		{
-		    global.setType( type );
-		}
-		id=identifier opt_semicolon
-		{
-		    global.setIdentifier( id.getText() );
-		    global.setEndCharacter( ((CommonToken)id).getStopIndex() );
-		}
-	;
-	
-
-function
-	@init {
-		FunctionDescr f = null;
-	}
-	:
-		loc=FUNCTION (retType=dotted_name[null])? n=identifier
-		{
-			//System.err.println( "function :: " + n.getText() );
-			f = factory.createFunction( n.getText(), retType );
-			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
-	        	f.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			packageDescr.addFunction( f );
-		} 
-		'('
-			(	(paramType=dotted_name[null])? paramName=argument
-				{
-					f.addParameter( paramType, paramName );
-				}
-				(	',' (paramType=dotted_name[null])? paramName=argument
-					{
-						f.addParameter( paramType, paramName );
-					}
-				)*
-			)?
-		')'
-		body=curly_chunk[f]
-		{
-			//strip out '{','}'
-			f.setText( body.substring( 1, body.length()-1 ) );
-		}
-	;
-
-
-
-query returns [QueryDescr query]
-	@init {
-		query = null;
-		AndDescr lhs = null;
-	}
-	:
-		loc=QUERY queryName=name
-		{ 
-			query = factory.createQuery( queryName ); 
-			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			query.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			lhs = new AndDescr(); query.setLhs( lhs ); 
-			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-		(
-			normal_lhs_block[lhs]
-		)
-					
-		loc=END
-		{
-			query.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		}
-	;
-
-
-template returns [FactTemplateDescr template]
-	@init {
-		template = null;		
-	}
-	:
-		loc=TEMPLATE templateName=identifier opt_semicolon
-		{
-			template = new FactTemplateDescr(templateName.getText());
-			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
-			template.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}
-		(
-			slot=template_slot 
-			{
-				template.addFieldTemplate(slot);
-			}
-		)+
-		loc=END opt_semicolon 
-		{
-			template.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		}		
-	;
-	
-template_slot returns [FieldTemplateDescr field]
-	@init {
-		field = null;
-	}
-	:
-	         {
-			field = factory.createFieldTemplate();
-	         }
-		 fieldType=dotted_name[field] 
-		 {
-		        field.setClassType( fieldType );
-		 }
-		 
-		 n=identifier opt_semicolon
-		 {
-		        field.setName( n.getText() );
-			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
-			field.setEndCharacter( ((CommonToken)n).getStopIndex() );
-		 } 
-	;	
-	
-rule returns [RuleDescr rule]
-	@init {
-		rule = null;
-		String consequence = "";
-		AndDescr lhs = null;
-	}
-	:
-		loc=RULE ruleName=name 
-		{ 
-			debug( "start rule: " + ruleName );
-			rule = new RuleDescr( ruleName, null ); 
-			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}
-		rule_attributes[rule]
-		(	loc=WHEN ':'?
-			{ 
-				lhs = new AndDescr(); rule.setLhs( lhs ); 
-				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			}
-			(
-//				{ expander != null }? expander_lhs_block[lhs] |
-				normal_lhs_block[lhs]
-			)
-					
-		)?
-		rhs_chunk[rule]
-	;
-	
-
-
-rule_attributes[RuleDescr rule]
-	: 
-			(ATTRIBUTES ':')?
-			(	','? a=rule_attribute
-				{
-					rule.addAttribute( a );
-				}
-			)*
-	;
-
-
-	
-rule_attribute returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-			a=salience { d = a; }
-		|	a=no_loop  { d = a; }
-		|	a=agenda_group  { d = a; }		
-		|	a=duration  { d = a; }			
-		|	a=activation_group { d = a; }	
-		|	a=auto_focus { d = a; }	
-		|	a=date_effective {d = a; }
-		|	a=date_expires {d = a; }
-		|	a=enabled {d=a;}
-		|	a=ruleflow_group { d = a; }
-		|	a=lock_on_active{ d = a; }
-		
-	;
-	
-date_effective returns [AttributeDescr d]
-	@init {
-		d = null;
-	}	
-	:
-		loc=DATE_EFFECTIVE val=STRING  
-		{
-			d = new AttributeDescr( "date-effective", getString( val ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
-		}
-
-	;
-
-date_expires returns [AttributeDescr d]
-	@init {
-		d = null;
-	}	
-	:
-		loc=DATE_EXPIRES val=STRING  
-		{
-			d = new AttributeDescr( "date-expires", getString( val ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
-		}
-
-	;
-
-	
-enabled returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-			loc=ENABLED t=BOOL   
-			{
-				d = new AttributeDescr( "enabled", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
-			}
-		
-		
-	;	
-	
-	
-
-salience returns [AttributeDescr d ]
-	@init {
-		d = null;
-	}
-	:	
-		loc=SALIENCE i=INT   
-		{
-			d = new AttributeDescr( "salience", i.getText() );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
-		}
-	;
-	
-no_loop returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		(
-			loc=NO_LOOP   
-			{
-				d = new AttributeDescr( "no-loop", "true" );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-			}
-		) 
-		|
-		(
-			loc=NO_LOOP t=BOOL   
-			{
-				d = new AttributeDescr( "no-loop", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
-			}
-		
-		)
-		
-	;
-	
-auto_focus returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		(
-			loc=AUTO_FOCUS   
-			{
-				d = new AttributeDescr( "auto-focus", "true" );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-			}
-		) 
-		|
-		(
-			loc=AUTO_FOCUS t=BOOL   
-			{
-				d = new AttributeDescr( "auto-focus", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
-			}
-		
-		)
-		
-	;	
-	
-activation_group returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc=ACTIVATION_GROUP n=STRING   
-		{
-			d = new AttributeDescr( "activation-group", getString( n ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
-		}
-	;
-
-ruleflow_group returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc=RULEFLOW_GROUP n=STRING   
-		{
-			d = new AttributeDescr( "ruleflow-group", getString( n ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
-		}
-	;
-
-agenda_group returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc=AGENDA_GROUP n=STRING   
-		{
-			d = new AttributeDescr( "agenda-group", getString( n ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
-		}
-	;		
-
-
-duration returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc=DURATION i=INT 
-		{
-			d = new AttributeDescr( "duration", i.getText() );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
-		}
-	;		
-	
-	
-	
-lock_on_active returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		(
-			loc=LOCK_ON_ACTIVE   
-			{
-				d = new AttributeDescr( "lock-on-active", "true" );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-			}
-		) 
-		|
-		(
-			loc=LOCK_ON_ACTIVE t=BOOL   
-			{
-				d = new AttributeDescr( "lock-on-active", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
-			}
-		
-		)
-		
-	;		
-
-normal_lhs_block[AndDescr descr]
-	:
-		(	d=lhs[descr]
-			{ if(d != null) descr.addDescr( d ); }
-		)*
-	;
-
-	
-lhs[ConditionalElementDescr ce] returns [BaseDescr d]
-	@init {
-		d=null;
-	}
-	:	l=lhs_or { d = l; } 
-	;
-
-	
-lhs_pattern returns [BaseDescr d]
-	@init {
-		d=null;
-	}
-	:	f=fact_binding	{ d = f; }
-	|	f=fact		{ d = f; }
-	;
-
-from_statement returns [FromDescr d]
-	@init {
-		d=factory.createFrom();
-	}
-	:
-	ds=from_source[d]
-		{
-			d.setDataSource(ds);
-		
-		}
-		
-		
-		
-	;
-	
-from_source[FromDescr from] returns [DeclarativeInvokerDescr ds]
-	@init {
-		ds = null;
-		AccessorDescr ad = null;
-	}
-	:	
-		ident=identifier
-		{
-			ad = new AccessorDescr(ident.getText());	
-			ad.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );
-			ad.setStartCharacter( ((CommonToken)ident).getStartIndex() );
-			ad.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-			ds = ad;
-		}
-		(args=paren_chunk[from]
-		{
-			if( args != null ) {
-				ad.setVariableName( null );
-				FunctionCallDescr fc = new FunctionCallDescr(ident.getText());
-				fc.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );			
-				fc.setArguments(args);
-				fc.setStartCharacter( ((CommonToken)ident).getStartIndex() );
-				fc.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-				ad.addInvoker(fc);
-			}
-		}
-		)?
-		expression_chain[from, ad]?
-	;	
-	
-expression_chain[FromDescr from, AccessorDescr as]
-	@init {
-  		FieldAccessDescr fa = null;
-	    	MethodAccessDescr ma = null;	
-	}
-	:
-	( '.' field=identifier  
-	    {
-	        fa = new FieldAccessDescr(field.getText());	
-		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
-		fa.setStartCharacter( ((CommonToken)field).getStartIndex() );
-		fa.setEndCharacter( ((CommonToken)field).getStopIndex() );
-	    }
-	  (
-	    ( LEFT_SQUARE ) => sqarg=square_chunk[from]
-	      {
-	          fa.setArgument( sqarg );	
-	      }
-	    |
-	    ( LEFT_PAREN ) => paarg=paren_chunk[from]
-		{
-	    	  ma = new MethodAccessDescr( field.getText(), paarg );	
-		  ma.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
-		  ma.setStartCharacter( ((CommonToken)field).getStartIndex() );
-		}
-	  )?
-	  {
-	      if( ma != null ) {
-	          as.addInvoker( ma );
-	      } else {
-	          as.addInvoker( fa );
-	      }
-	  }
-	  expression_chain[from, as]?
-	)  
-	;	
-	
-accumulate_statement returns [AccumulateDescr d]
-	@init {
-		d = factory.createAccumulate();
-	}
-	:
-	        loc=ACCUMULATE 
-		{ 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}	
-		'(' pattern=lhs_pattern ',' 
-		{
-		        d.setSourcePattern( (PatternDescr)pattern );
-		}
-		INIT text=paren_chunk[null] ',' 
-		{
-		        d.setInitCode( text.substring(1, text.length()-1) );
-		}
-		ACTION text=paren_chunk[null] ',' 
-		{
-		        d.setActionCode( text.substring(1, text.length()-1) );
-		}
-		RESULT text=paren_chunk[null] loc=')'
-		{
-		        d.setResultCode( text.substring(1, text.length()-1) );
-			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		} 
-	; 		
- 		
-collect_statement returns [CollectDescr d]
-	@init {
-		d = factory.createCollect();
-	}
-	:
-	        loc=COLLECT 
-		{ 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}	
-		'(' pattern=lhs_pattern loc=')'
-		{
-		        d.setSourcePattern( (PatternDescr)pattern );
-			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		}
-	; 		
-
-fact_binding returns [BaseDescr d]
-	@init {
-		d=null;
-		boolean multi=false;
-	}
- 	:
- 		id=ID ':' 
- 		{
- 		        // handling incomplete parsing
- 		        d = new PatternDescr( );
- 		        ((PatternDescr) d).setIdentifier( id.getText() );
- 		}
- 		fe=fact_expression[id.getText()]
- 		{
- 		        // override previously instantiated pattern
- 			d=fe;
- 			if( d != null ) {
-   			    d.setStartCharacter( ((CommonToken)id).getStartIndex() );
-   			}
- 		}
-	;
- 
- fact_expression[String id] returns [BaseDescr pd]
- 	@init {
- 		pd = null;
- 		boolean multi = false;
- 	}
- 	:	'(' fe=fact_expression[id] ')' { pd=fe; }
- 	| 	f=fact
- 		{
- 			((PatternDescr)f).setIdentifier( id );
- 			pd = f;
- 		}
- 		( (OR|'||')
- 			{	if ( ! multi ) {
- 					BaseDescr first = pd;
- 					pd = new OrDescr();
- 					((OrDescr)pd).addDescr( first );
- 					multi=true;
- 				}
- 			}
- 			f=fact
- 			{
- 				((PatternDescr)f).setIdentifier( id );
- 				((OrDescr)pd).addDescr( f );
- 			}
- 		)*	
-	;
-
-fact returns [BaseDescr d] 
-	@init {
-		d=null;
-		PatternDescr pattern = null;
-	}
- 	:	
- 	        {
- 			pattern = new PatternDescr( );
- 			d = pattern; 
- 	        }
- 	        id=dotted_name[d] 
- 		{ 
- 		        pattern.setObjectType( id );
- 		        pattern.setEndCharacter( -1 );
- 		}
- 		loc=LEFT_PAREN {
- 				pattern.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- 			        pattern.setLeftParentCharacter( ((CommonToken)loc).getStartIndex() );
- 			} 
- 		( constraints[pattern]  )? 
- 		endLoc=RIGHT_PAREN
-		{
-		        if( endLoc.getType() == RIGHT_PAREN ) {
-				pattern.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
-				pattern.setEndCharacter( ((CommonToken)endLoc).getStopIndex() );
- 			        pattern.setRightParentCharacter( ((CommonToken)endLoc).getStartIndex() );
-			}
- 		}
- 	;
-	
-	
-constraints[PatternDescr pattern]
-	:	(constraint[pattern]|predicate[pattern])
-		( ',' (constraint[pattern]|predicate[pattern]))*
-	;
-	
-constraint[PatternDescr pattern]
-	@init {
-		FieldBindingDescr fbd = null;
-		FieldConstraintDescr fc = null;
-	}
-	:
-		( fb=ID ':' 
-		    { 
-			fbd = new FieldBindingDescr();
-			fbd.setIdentifier( fb.getText() );
-			fbd.setLocation( offset(fb.getLine()), fb.getCharPositionInLine() );
-			fbd.setStartCharacter( ((CommonToken)fb).getStartIndex() );
-			pattern.addDescr( fbd );
-
-		    }
-		)? 
-		f=identifier	
-		{
-		    if( f != null ) {
-		    
-			if ( fbd != null ) {
-			    fbd.setFieldName( f.getText() );
- 			    fbd.setEndCharacter( ((CommonToken)f).getStopIndex() );
-			} 
-			fc = new FieldConstraintDescr(f.getText());
-			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
-			
-			// it must be a field constraint, as it is not a binding
-			if( fb == null ) {
-			    pattern.addDescr( fc );
-			}
-		    }
-		}
-		(
-			(	rd=constraint_expression
-				{
-					fc.addRestriction(rd);
-					// we must add now as we didn't before
-					if( fb != null) {
-					    pattern.addDescr( fc );
-					}
-				}
-				(
-					con=('&'|'|')
-					{
-						if (con.getText().equals("&") ) {								
-							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
-						} else {
-							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
-						}							
-					}
-					rd=constraint_expression
-					{
-					        if( rd != null ) {
-							fc.addRestriction(rd);
-					        }
-					}
-				)*
-			)
-		|
-			'->' predicate[pattern] 
-		)?
-	;
-	
-constraint_expression returns [RestrictionDescr rd]
-        :	
-		op=(	'=='
-		|	'>'
-		|	'>='
-		|	'<'
-		|	'<='
-		|	'!='
-		|	CONTAINS
-		|	MATCHES
-		|       EXCLUDES
-		)	
-		(	bvc=ID
-			{
-				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
-			}
-		|
-			lc=enum_constraint 
-			{ 
-				rd  = new LiteralRestrictionDescr(op.getText(), lc, true);
-			}						
-		|
-			lc=literal_constraint 
-			{ 
-				rd  = new LiteralRestrictionDescr(op.getText(), lc);
-			}
-		|	rvc=retval_constraint 
-			{ 
-				rd = new ReturnValueRestrictionDescr(op.getText(), rvc);							
-			} 
-		)
-	;	
-		
-literal_constraint returns [String text]
-	@init {
-		text = null;
-	}
-	:	(	t=STRING { text = getString( t ); } 
-		|	t=INT    { text = t.getText(); }
-		|	t=FLOAT	 { text = t.getText(); }
-		|	t=BOOL 	 { text = t.getText(); }
-		|	t=NULL   { text = null; }
-		)
-	;
-	
-enum_constraint returns [String text]
-	@init {
-		text = null;
-	}
-	:	
-		id=ID { text=id.getText(); } ( '.' ident=identifier { text += "." + ident.getText(); } )+ 
-	;	
-	
-
-predicate[PatternDescr pattern]
-        @init {
-		PredicateDescr d = null;
-        }
-	:
-		{
-			d = new PredicateDescr( );
-		}
-		text=paren_chunk[d]
-		{
-		        if( text != null ) {
-			        String body = text.substring(1, text.length()-1);
-			        d.setContent( body );
-				pattern.addDescr( d );
-		        }
-		}
-	;
-
-paren_chunk[BaseDescr descr] returns [String text]
-        @init {
-           StringBuffer buf = null;
-           Integer channel = null;
-        }
-	:
-	        {
-	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-		    buf = new StringBuffer();
-	        }
-		loc=LEFT_PAREN 
-		{
-		    buf.append( loc.getText());
- 
-		} 
-		( 
-			~(LEFT_PAREN|RIGHT_PAREN)
-			  {
-			    buf.append( input.LT(-1).getText() );
-			  }
-			|
-			chunk=paren_chunk[null]
-			  {
-			    buf.append( chunk );
-			  }
-		)*
-		{
-		    if( channel != null ) {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-		    } else {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-		    }
-		}
-                loc=RIGHT_PAREN
-                {
-                    buf.append( loc.getText() );
-		    text = buf.toString();
-		    if( descr != null ) {
-		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		    }
-                }
-	;
-
-curly_chunk[BaseDescr descr] returns [String text]
-        @init {
-           StringBuffer buf = null;
-           Integer channel = null;
-        }
-	:
-		loc=LEFT_CURLY 
-		{
-	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-		    buf = new StringBuffer();
-		    
-		    buf.append( loc.getText() );
-		} 
-		( 
-			~(LEFT_CURLY|RIGHT_CURLY)
-			  {
-			    buf.append( input.LT(-1).getText() );
-			  }
-			|
-			chunk=curly_chunk[descr]
-			  {
-			    buf.append( chunk );
-			  }
-		)*
-		{
-		    if( channel != null ) {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-		    } else {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-		    }
-		}
-                loc=RIGHT_CURLY
-                {
-                    buf.append( loc.getText() );
-		    text = buf.toString();
-		    if( descr != null ) {
-		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		    }
-                }
-	;
-
-square_chunk[BaseDescr descr]  returns [String text]
-        @init {
-           StringBuffer buf = null;
-           Integer channel = null;
-        }
-	:
-	        {
-	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
-		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
-		    buf = new StringBuffer();
-	        }
-		loc=LEFT_SQUARE 
-		{
-		    buf.append( loc.getText());
- 
-		} 
-		( 
-			~(LEFT_SQUARE|RIGHT_SQUARE)
-			  {
-			    buf.append( input.LT(-1).getText() );
-			  }
-			|
-			chunk=square_chunk[null]
-			  {
-			    buf.append( chunk );
-			  }
-		)*
-		{
-		    if( channel != null ) {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
-		    } else {
-			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
-		    }
-		}
-                loc=RIGHT_SQUARE
-                {
-                    buf.append( loc.getText() );
-		    text = buf.toString();
-		    if( descr != null ) {
-		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		    }
-                }
-	;
-	
-retval_constraint returns [String text]
-	@init {
-		text = null;
-	}
-	:	
-		c=paren_chunk[null] { text = c.substring(1, c.length()-1); }
-	;
-
-lhs_or returns [BaseDescr d]
-	@init{
-		d = null;
-		OrDescr or = null;
-	}
-	:	
-		left=lhs_and {d = left; }
-		( (OR|'||')
-			right=lhs_and 
-			{
-				if ( or == null ) {
-					or = new OrDescr();
-					or.addDescr( left );
-					d = or;
-				}
-				
-				or.addDescr( right );
-			}
-		)*
-	;
-	
-lhs_and returns [BaseDescr d]
-	@init{
-		d = null;
-		AndDescr and = null;
-	}
-	:
-		left=lhs_unary { d = left; }
-		( (AND|'&&')
-			right=lhs_unary
-			{
-				if ( and == null ) {
-					and = new AndDescr();
-					and.addDescr( left );
-					d = and;
-				}
-				
-				and.addDescr( right );
-			}
-		)* 
-	;
-	
-lhs_unary returns [BaseDescr d]
-	@init {
-		d = null;
-	}
-	:	(	u=lhs_exist
-		|	u=lhs_not
-		|	u=lhs_eval
-		|	u=lhs_pattern (
-		          FROM (
-		           ( ACCUMULATE ) => (ac=accumulate_statement {ac.setResultPattern((PatternDescr) u); u=ac;})
-		          |( COLLECT ) => (cs=collect_statement {cs.setResultPattern((PatternDescr) u); u=cs;}) 
-		          |( ~(ACCUMULATE|COLLECT) ) => (fm=from_statement {fm.setPattern((PatternDescr) u); u=fm;}) 
-		          )
-		        )?
-		|	u=lhs_forall  
-		|	'(' u=lhs_or ')'
-		) { d = u; }
-		opt_semicolon
-	;
-	
-lhs_exist returns [BaseDescr d]
-	@init {
-		d = null;
-	}
-	:	loc=EXISTS 
-		{
-			d = new ExistsDescr( ); 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}
-	        ( ( '(' pattern=lhs_or 
-	           	{ if ( pattern != null ) ((ExistsDescr)d).addDescr( pattern ); }
-	           end=')' 
-	                { if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); }
-	        )    
-	        | pattern=lhs_pattern
-	                {
-	                	if ( pattern != null ) {
-	                		((ExistsDescr)d).addDescr( pattern );
-	                		d.setEndCharacter( pattern.getEndCharacter() );
-	                	}
-	                }
-	        )
-	;
-	
-lhs_not	returns [NotDescr d]
-	@init {
-		d = null;
-	}
-	:	loc=NOT 
-		{
-			d = new NotDescr( ); 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		}
-		( ( '(' pattern=lhs_or  
-	           	{ if ( pattern != null ) d.addDescr( pattern ); }
-	           end=')' 
-	                { if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); }
-		  )
-		| 
-		pattern=lhs_pattern
-	                {
-	                	if ( pattern != null ) {
-	                		d.addDescr( pattern );
-	                		d.setEndCharacter( pattern.getEndCharacter() );
-	                	}
-	                }
-		)
-	;
-
-lhs_eval returns [BaseDescr d]
-	@init {
-		d = new EvalDescr( );
-	}
-	:
-		loc=EVAL c=paren_chunk[d]
-		{ 
-			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		        if( c != null ) {
-		            String body = c.substring(1, c.length()-1);
-			    checkTrailingSemicolon( body, offset(loc.getLine()) );
-			    ((EvalDescr) d).setContent( body );
-			}
-		}
-	;
-	
-lhs_forall returns [ForallDescr d]
-	@init {
-		d = factory.createForall();
-	}
-	:	loc=FORALL '(' base=lhs_pattern   
-		{
-			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-		        // adding the base pattern
-		        d.addDescr( base );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-		( (',')? pattern=lhs_pattern
-		{
-		        // adding additional patterns
-			d.addDescr( pattern );
-		}
-		)+
-		end=')'
-		{
-		        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() );
-		}
-	;
-
-dotted_name[BaseDescr descr] returns [String name]
-	@init {
-		name = null;
-	}
-	:	
-		id=ID 
-		{ 
-		    name=id.getText(); 
-		    if( descr != null ) {
-			descr.setStartCharacter( ((CommonToken)id).getStartIndex() );
-			descr.setEndCharacter( ((CommonToken)id).getStopIndex() );
-		    }
-		} 
-		( '.' ident=identifier 
-		    { 
-		        name = name + "." + ident.getText(); 
-    		        if( descr != null ) {
-			    descr.setEndCharacter( ((CommonToken)ident).getStopIndex() );
-		        }
-		    } 
-		)* 
-		( '[' loc=']'
-		    { 
-		        name = name + "[]";
-    		        if( descr != null ) {
-			    descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-		        }
-		    }
-		)*
-	;
-	
-argument returns [String name]
-	@init {
-		name = null;
-	}
-	:
-		id=identifier { 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);
-		    }
-		}
-                loc=END
-                {
-                    // ignoring first line in the consequence
-                    int index = 0;
-                    while( (index < buf.length() ) && Character.isWhitespace( buf.charAt( index ) ) &&
-                           (buf.charAt( index ) != 10 ) && (buf.charAt( index ) != 13 ))
-                               index++;
-                    if( (index < buf.length() ) && ( buf.charAt( index ) == '\r' ) )
-                        index++;
-                    if( (index < buf.length() ) && ( buf.charAt( index ) == '\n' ) )
-                        index++;
-                    
-		    rule.setConsequence( buf.substring( index ) );
-     		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
- 		    rule.setEndCharacter( ((CommonToken)loc).getStopIndex() );
-                }
-	;
-
-name returns [String s]
-	:
-	( 
-	    tok=ID
-	    {
-	        s = tok.getText();
-	    }
-	|
-	    str=STRING
-	    {
-	       s = getString( str );
-	    }
-	)
-	;
-	
-identifier returns [Token tok]
-	:	
-	(       t=ID      
-	|	t=PACKAGE
-	|	t=FUNCTION
-	|	t=GLOBAL
-	|	t=IMPORT  
-	|	t=RULE
-	|	t=QUERY 
-        |       t=TEMPLATE        
-        |       t=ATTRIBUTES      
-        |       t=ENABLED         
-        |       t=SALIENCE 	
-        |       t=DURATION 	
-        |       t=FROM	        
-        |       t=ACCUMULATE 	
-        |       t=INIT	        
-        |       t=ACTION	        
-        |       t=RESULT	        
-        |       t=COLLECT         
-        |       t=OR	        
-        |       t=AND	        
-        |       t=CONTAINS 	
-        |       t=EXCLUDES 	
-        |       t=MATCHES         
-        |       t=NULL	        
-        |       t=EXISTS	        
-        |       t=NOT	        
-        |       t=EVAL	        
-        |       t=FORALL	            					
-        |       t=WHEN            
-        |       t=THEN	        
-        |       t=END             
-	) 
-	{
-	    tok = t;
-	}
-	;
-	
-WS      :       (	' '
-                |	'\t'
-                |	'\f'
-                |	EOL
-                )
-                { $channel=HIDDEN; }
-        ;
-
-fragment
-EOL 	:	     
-   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
-                |       '\r'    // Macintosh
-                |       '\n'    // Unix (the right way)
-                )
-        ;  
-        
-INT	
-	:	('-')?('0'..'9')+
-		;
-
-FLOAT
-	:	('-')?('0'..'9')+ '.' ('0'..'9')+
-	;
-
-STRING
-    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
-     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
-    ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-EscapeSequence
-    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.')
-    |   UnicodeEscape
-    |   OctalEscape
-    ;
-
-fragment
-OctalEscape
-    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7')
-    ;
-
-fragment
-UnicodeEscape
-    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
-    ;
-
-BOOL
-	:	('true'|'false') 
-	;	
-
-PACKAGE	:	'package';
-
-IMPORT	:	'import';
-
-FUNCTION :	'function';
-
-GLOBAL	:	'global';
-	
-RULE    :	'rule';
-
-QUERY	:	'query';
-
-TEMPLATE :	'template';
-
-ATTRIBUTES :	'attributes';
-	
-DATE_EFFECTIVE 
-	:	'date-effective';
-
-DATE_EXPIRES 
-	:	'date-expires';	
-	
-ENABLED :	'enabled';
-
-SALIENCE 
-	:	'salience';
-	
-NO_LOOP :	'no-loop';
-
-AUTO_FOCUS 
-	:	'auto-focus';
-	
-ACTIVATION_GROUP 
-	:	'activation-group';
-	
-AGENDA_GROUP 
-	:	'agenda-group';
-	
-RULEFLOW_GROUP 
-	:	'ruleflow-group';
-	
-DURATION 
-	:	'duration';
-	
-LOCK_ON_ACTIVE
-	:	'lock-on-active';	
-	
-FROM	:	'from';
-
-ACCUMULATE 
-	:	'accumulate';
-	
-INIT	:	'init';
-
-ACTION	:	'action';
-
-RESULT	:	'result';
-
-COLLECT :	'collect';
-
-OR	:	'or';
-
-AND	:	'and';
-
-CONTAINS 
-	:	'contains';
-	
-EXCLUDES 
-	:	'excludes';
-	
-MATCHES :	'matches';
-
-NULL	:	'null';
-
-EXISTS	:	'exists';
-
-NOT	:	'not';
-
-EVAL	:	'eval';
-
-FORALL	:	'forall';							
-
-WHEN    :	'when'; 
-
-THEN	:    	'then';
-
-END     :	'end';
-
-ID	
-	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')* 
-	;
-		
-
-SH_STYLE_SINGLE_LINE_COMMENT	
-	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
-                { $channel=HIDDEN; }
-	;
-        
-        
-C_STYLE_SINGLE_LINE_COMMENT	
-	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
-                { $channel=HIDDEN; }
-	;
-
-
-LEFT_PAREN
-        :	'('
-        ;
-
-RIGHT_PAREN
-        :	')'
-        ;
-        
-LEFT_SQUARE
-        :	'['
-        ;
-
-RIGHT_SQUARE
-        :	']'
-        ;        
-
-LEFT_CURLY
-        :	'{'
-        ;
-
-RIGHT_CURLY
-        :	'}'
-        ;
-        
-MULTI_LINE_COMMENT
-	:	'/*' (options{greedy=false;} : .)* '*/'
-                { $channel=HIDDEN; }
-	;
-
-MISC 	:
-		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?' | '|' | ',' | '=' | '/' | '\'' | '\\'
-	;
+grammar DRL; 
+options {backtrack=true;}
+
+ at parser::header {
+	package org.drools.lang;
+	import java.util.List;
+	import java.util.ArrayList;
+	import java.util.Iterator;
+	import java.util.HashMap;	
+	import java.util.StringTokenizer;
+	import org.drools.lang.descr.*;
+	import org.drools.compiler.SwitchingCommonTokenStream;
+}
+
+ at parser::members {
+	private PackageDescr packageDescr;
+	private List errors = new ArrayList();
+	private String source = "unknown";
+	private int lineOffset = 0;
+	private DescrFactory factory = new DescrFactory();
+	private boolean parserDebug = false;
+	
+	// THE FOLLOWING LINE IS A DUMMY ATTRIBUTE TO WORK AROUND AN ANTLR BUG
+	private BaseDescr from = null;
+	
+	public void setParserDebug(boolean parserDebug) {
+		this.parserDebug = parserDebug;
+	}
+	
+	public void debug(String message) {
+		if ( parserDebug ) 
+			System.err.println( "drl parser: " + message );
+	}
+	
+	public void setSource(String source) {
+		this.source = source;
+	}
+	public DescrFactory getFactory() {
+		return factory;
+	}	
+
+	public String getSource() {
+		return this.source;
+	}
+	
+	public PackageDescr getPackageDescr() {
+		return packageDescr;
+	}
+	
+	private int offset(int line) {
+		return line + lineOffset;
+	}
+	
+	/**
+	 * This will set the offset to record when reparsing. Normally is zero of course 
+	 */
+	public void setLineOffset(int i) {
+	 	this.lineOffset = i;
+	}
+	
+	private String getString(Token token) {
+		String orig = token.getText();
+		return orig.substring( 1, orig.length() -1 );
+	}
+	
+	public void reportError(RecognitionException ex) {
+	        // if we've already reported an error and have not matched a token
+                // yet successfully, don't report any errors.
+                if ( errorRecovery ) {
+                        return;
+                }
+                errorRecovery = true;
+
+		ex.line = offset(ex.line); //add the offset if there is one
+		errors.add( ex ); 
+	}
+     	
+     	/** return the raw RecognitionException errors */
+     	public List getErrors() {
+     		return errors;
+     	}
+     	
+     	/** Return a list of pretty strings summarising the errors */
+     	public List getErrorMessages() {
+     		List messages = new ArrayList();
+ 		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+     	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+     	     	}
+     	     	return messages;
+     	}
+     	
+     	/** return true if any parser errors were accumulated */
+     	public boolean hasErrors() {
+  		return ! errors.isEmpty();
+     	}
+     	
+     	/** This will take a RecognitionException, and create a sensible error message out of it */
+     	public String createErrorMessage(RecognitionException e)
+        {
+		StringBuffer message = new StringBuffer();		
+                message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+                if ( e instanceof MismatchedTokenException ) {
+                        MismatchedTokenException mte = (MismatchedTokenException)e;
+                        message.append("mismatched token: "+
+                                                           e.token+
+                                                           "; expecting type "+
+                                                           tokenNames[mte.expecting]);
+                }
+                else if ( e instanceof MismatchedTreeNodeException ) {
+                        MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+                        message.append("mismatched tree node: "+
+                                                           mtne.toString() +
+                                                           "; expecting type "+
+                                                           tokenNames[mtne.expecting]);
+                }
+                else if ( e instanceof NoViableAltException ) {
+                        NoViableAltException nvae = (NoViableAltException)e;
+			message.append( "Unexpected token '" + e.token.getText() + "'" );
+                        /*
+                        message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+                                                           " state "+nvae.stateNumber+
+                                                           " (decision="+nvae.decisionNumber+
+                                                           ") no viable alt; token="+
+                                                           e.token);
+                                                           */
+                }
+                else if ( e instanceof EarlyExitException ) {
+                        EarlyExitException eee = (EarlyExitException)e;
+                        message.append("required (...)+ loop (decision="+
+                                                           eee.decisionNumber+
+                                                           ") did not match anything; token="+
+                                                           e.token);
+                }
+                else if ( e instanceof MismatchedSetException ) {
+                        MismatchedSetException mse = (MismatchedSetException)e;
+                        message.append("mismatched token '"+
+                                                           e.token+
+                                                           "' expecting set "+mse.expecting);
+                }
+                else if ( e instanceof MismatchedNotSetException ) {
+                        MismatchedNotSetException mse = (MismatchedNotSetException)e;
+                        message.append("mismatched token '"+
+                                                           e.token+
+                                                           "' expecting set "+mse.expecting);
+                }
+                else if ( e instanceof FailedPredicateException ) {
+                        FailedPredicateException fpe = (FailedPredicateException)e;
+                        message.append("rule "+fpe.ruleName+" failed predicate: {"+
+                                                           fpe.predicateText+"}?");
+                } else if (e instanceof GeneralParseException) {
+			message.append(" " + e.getMessage());
+		}
+               	return message.toString();
+        }   
+        
+        void checkTrailingSemicolon(String text, int line) {
+        	if (text.trim().endsWith( ";" ) ) {
+        		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
+        	}
+        }
+      
+}
+
+ at lexer::header {
+	package org.drools.lang;
+}
+
+opt_semicolon
+	: ';'?
+	;
+
+compilation_unit
+	:	prolog 
+		( statement )+
+	;
+	
+prolog
+	@init {
+		String packageName = "";
+	}
+	:	( n=package_statement { packageName = n; } )?
+		{ 
+			this.packageDescr = factory.createPackage( packageName ); 
+		}
+			(ATTRIBUTES ':')?
+			(	','? a=rule_attribute
+				{
+					this.packageDescr.addAttribute( a );
+				}
+			)*		
+	;
+	
+statement
+	:
+	(	function_import_statement 
+	|	import_statement 
+	|	global 
+	|	function 
+	|       t=template {this.packageDescr.addFactTemplate( t ); }
+	|	r=rule { if( r != null ) this.packageDescr.addRule( r ); }			
+	|	q=query	{ if( q != null ) this.packageDescr.addRule( q ); }
+	) 
+	;
+
+package_statement returns [String packageName]
+	@init{
+		packageName = null;
+	}
+	:	
+		PACKAGE n=dotted_name[null] opt_semicolon
+		{
+			packageName = n;
+		}
+	;
+	
+
+import_statement
+        @init {
+        	ImportDescr importDecl = null;
+        }
+	:	imp=IMPORT 
+	        {
+	            importDecl = factory.createImport( );
+	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
+		    if (packageDescr != null) {
+			packageDescr.addImport( importDecl );
+		    }
+	        }
+	        import_name[importDecl] opt_semicolon
+	;
+
+function_import_statement
+        @init {
+        	FunctionImportDescr importDecl = null;
+        }
+	:	imp=IMPORT FUNCTION 
+	        {
+	            importDecl = factory.createFunctionImport();
+	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
+		    if (packageDescr != null) {
+			packageDescr.addFunctionImport( importDecl );
+		    }
+	        }
+	        import_name[importDecl] opt_semicolon
+	;
+
+
+import_name[ImportDescr importDecl] returns [String name]
+	@init {
+		name = null;
+	}
+	:	
+		id=identifier 
+		{ 
+		    name=id.getText(); 
+		    importDecl.setTarget( name );
+		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
+		} 
+		( '.' id=identifier 
+		    { 
+		        name = name + "." + id.getText(); 
+			importDecl.setTarget( name );
+		        importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
+		    } 
+		)* 
+		( star='.*' 
+		    { 
+		        name = name + star.getText(); 
+			importDecl.setTarget( name );
+		        importDecl.setEndCharacter( ((CommonToken)star).getStopIndex() );
+		    }
+		)?
+	;
+
+
+global
+	@init {
+	    GlobalDescr global = null;
+	}
+	:
+		loc=GLOBAL 
+		{
+		    global = factory.createGlobal();
+	            global.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		    packageDescr.addGlobal( global );
+		}
+		type=dotted_name[null] 
+		{
+		    global.setType( type );
+		}
+		id=identifier opt_semicolon
+		{
+		    global.setIdentifier( id.getText() );
+		    global.setEndCharacter( ((CommonToken)id).getStopIndex() );
+		}
+	;
+	
+
+function
+	@init {
+		FunctionDescr f = null;
+	}
+	:
+		loc=FUNCTION (retType=dotted_name[null])? n=identifier
+		{
+			//System.err.println( "function :: " + n.getText() );
+			f = factory.createFunction( n.getText(), retType );
+			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
+	        	f.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			packageDescr.addFunction( f );
+		} 
+		'('
+			(	(paramType=dotted_name[null])? paramName=argument
+				{
+					f.addParameter( paramType, paramName );
+				}
+				(	',' (paramType=dotted_name[null])? paramName=argument
+					{
+						f.addParameter( paramType, paramName );
+					}
+				)*
+			)?
+		')'
+		body=curly_chunk[f]
+		{
+			//strip out '{','}'
+			f.setText( body.substring( 1, body.length()-1 ) );
+		}
+	;
+
+
+
+query returns [QueryDescr query]
+	@init {
+		query = null;
+		AndDescr lhs = null;
+	}
+	:
+		loc=QUERY queryName=name
+		{ 
+			query = factory.createQuery( queryName ); 
+			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			query.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			lhs = new AndDescr(); query.setLhs( lhs ); 
+			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+		(
+			normal_lhs_block[lhs]
+		)
+					
+		loc=END
+		{
+			query.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		}
+	;
+
+
+template returns [FactTemplateDescr template]
+	@init {
+		template = null;		
+	}
+	:
+		loc=TEMPLATE templateName=identifier opt_semicolon
+		{
+			template = new FactTemplateDescr(templateName.getText());
+			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
+			template.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}
+		(
+			slot=template_slot 
+			{
+				template.addFieldTemplate(slot);
+			}
+		)+
+		loc=END opt_semicolon 
+		{
+			template.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		}		
+	;
+	
+template_slot returns [FieldTemplateDescr field]
+	@init {
+		field = null;
+	}
+	:
+	         {
+			field = factory.createFieldTemplate();
+	         }
+		 fieldType=dotted_name[field] 
+		 {
+		        field.setClassType( fieldType );
+		 }
+		 
+		 n=identifier opt_semicolon
+		 {
+		        field.setName( n.getText() );
+			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
+			field.setEndCharacter( ((CommonToken)n).getStopIndex() );
+		 } 
+	;	
+	
+rule returns [RuleDescr rule]
+	@init {
+		rule = null;
+		String consequence = "";
+		AndDescr lhs = null;
+	}
+	:
+		loc=RULE ruleName=name 
+		{ 
+			debug( "start rule: " + ruleName );
+			rule = new RuleDescr( ruleName, null ); 
+			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}
+		rule_attributes[rule]
+		(	loc=WHEN ':'?
+			{ 
+				lhs = new AndDescr(); rule.setLhs( lhs ); 
+				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			}
+			(
+//				{ expander != null }? expander_lhs_block[lhs] |
+				normal_lhs_block[lhs]
+			)
+					
+		)?
+		rhs_chunk[rule]
+	;
+	
+
+
+rule_attributes[RuleDescr rule]
+	: 
+			(ATTRIBUTES ':')?
+			(	','? a=rule_attribute
+				{
+					rule.addAttribute( a );
+				}
+			)*
+	;
+
+
+	
+rule_attribute returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+			a=salience { d = a; }
+		|	a=no_loop  { d = a; }
+		|	a=agenda_group  { d = a; }		
+		|	a=duration  { d = a; }			
+		|	a=activation_group { d = a; }	
+		|	a=auto_focus { d = a; }	
+		|	a=date_effective {d = a; }
+		|	a=date_expires {d = a; }
+		|	a=enabled {d=a;}
+		|	a=ruleflow_group { d = a; }
+		|	a=lock_on_active{ d = a; }
+		|	a=dialect {d = a; }
+		
+	;
+	
+date_effective returns [AttributeDescr d]
+	@init {
+		d = null;
+	}	
+	:
+		loc=DATE_EFFECTIVE val=STRING  
+		{
+			d = new AttributeDescr( "date-effective", getString( val ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
+		}
+
+	;
+
+date_expires returns [AttributeDescr d]
+	@init {
+		d = null;
+	}	
+	:
+		loc=DATE_EXPIRES val=STRING  
+		{
+			d = new AttributeDescr( "date-expires", getString( val ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)val).getStopIndex() );
+		}
+
+	;
+
+	
+enabled returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+			loc=ENABLED t=BOOL   
+			{
+				d = new AttributeDescr( "enabled", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+			}
+		
+		
+	;	
+	
+	
+
+salience returns [AttributeDescr d ]
+	@init {
+		d = null;
+	}
+	:	
+		loc=SALIENCE i=INT   
+		{
+			d = new AttributeDescr( "salience", i.getText() );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+		}
+	;
+	
+no_loop returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		(
+			loc=NO_LOOP   
+			{
+				d = new AttributeDescr( "no-loop", "true" );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+			}
+		) 
+		|
+		(
+			loc=NO_LOOP t=BOOL   
+			{
+				d = new AttributeDescr( "no-loop", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+			}
+		
+		)
+		
+	;
+	
+auto_focus returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		(
+			loc=AUTO_FOCUS   
+			{
+				d = new AttributeDescr( "auto-focus", "true" );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+			}
+		) 
+		|
+		(
+			loc=AUTO_FOCUS t=BOOL   
+			{
+				d = new AttributeDescr( "auto-focus", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+			}
+		
+		)
+		
+	;	
+	
+activation_group returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc=ACTIVATION_GROUP n=STRING   
+		{
+			d = new AttributeDescr( "activation-group", getString( n ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+		}
+	;
+
+ruleflow_group returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc=RULEFLOW_GROUP n=STRING   
+		{
+			d = new AttributeDescr( "ruleflow-group", getString( n ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+		}
+	;
+
+agenda_group returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc=AGENDA_GROUP n=STRING   
+		{
+			d = new AttributeDescr( "agenda-group", getString( n ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+		}
+	;
+	
+
+duration returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc=DURATION i=INT 
+		{
+			d = new AttributeDescr( "duration", i.getText() );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+		}
+	;	
+	
+dialect returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc=DIALECT n=STRING   
+		{
+			d = new AttributeDescr( "dialect", getString( n ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+			d.setEndCharacter( ((CommonToken)n).getStopIndex() );
+		}
+	;			
+
+
+	
+	
+	
+	
+lock_on_active returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		(
+			loc=LOCK_ON_ACTIVE   
+			{
+				d = new AttributeDescr( "lock-on-active", "true" );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+			}
+		) 
+		|
+		(
+			loc=LOCK_ON_ACTIVE t=BOOL   
+			{
+				d = new AttributeDescr( "lock-on-active", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+				d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+				d.setEndCharacter( ((CommonToken)t).getStopIndex() );
+			}
+		
+		)
+		
+	;		
+
+normal_lhs_block[AndDescr descr]
+	:
+		(	d=lhs[descr]
+			{ if(d != null) descr.addDescr( d ); }
+		)*
+	;
+
+	
+lhs[ConditionalElementDescr ce] returns [BaseDescr d]
+	@init {
+		d=null;
+	}
+	:	l=lhs_or { d = l; } 
+	;
+
+	
+lhs_pattern returns [BaseDescr d]
+	@init {
+		d=null;
+	}
+	:	f=fact_binding	{ d = f; }
+	|	f=fact		{ d = f; }
+	;
+
+from_statement returns [FromDescr d]
+	@init {
+		d=factory.createFrom();
+	}
+	:
+	ds=from_source[d]
+		{
+			d.setDataSource(ds);
+		
+		}
+		
+		
+		
+	;
+	
+from_source[FromDescr from] returns [DeclarativeInvokerDescr ds]
+	@init {
+		ds = null;
+		AccessorDescr ad = null;
+	}
+	:	
+		ident=identifier
+		{
+			ad = new AccessorDescr(ident.getText());	
+			ad.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );
+			ad.setStartCharacter( ((CommonToken)ident).getStartIndex() );
+			ad.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+			ds = ad;
+		}
+		(args=paren_chunk[from]
+		{
+			if( args != null ) {
+				ad.setVariableName( null );
+				FunctionCallDescr fc = new FunctionCallDescr(ident.getText());
+				fc.setLocation( offset(ident.getLine()), ident.getCharPositionInLine() );			
+				fc.setArguments(args);
+				fc.setStartCharacter( ((CommonToken)ident).getStartIndex() );
+				fc.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+				ad.addInvoker(fc);
+			}
+		}
+		)?
+		expression_chain[from, ad]?
+	;	
+	
+expression_chain[FromDescr from, AccessorDescr as]
+	@init {
+  		FieldAccessDescr fa = null;
+	    	MethodAccessDescr ma = null;	
+	}
+	:
+	( '.' field=identifier  
+	    {
+	        fa = new FieldAccessDescr(field.getText());	
+		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
+		fa.setStartCharacter( ((CommonToken)field).getStartIndex() );
+		fa.setEndCharacter( ((CommonToken)field).getStopIndex() );
+	    }
+	  (
+	    ( LEFT_SQUARE ) => sqarg=square_chunk[from]
+	      {
+	          fa.setArgument( sqarg );	
+	      }
+	    |
+	    ( LEFT_PAREN ) => paarg=paren_chunk[from]
+		{
+	    	  ma = new MethodAccessDescr( field.getText(), paarg );	
+		  ma.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
+		  ma.setStartCharacter( ((CommonToken)field).getStartIndex() );
+		}
+	  )?
+	  {
+	      if( ma != null ) {
+	          as.addInvoker( ma );
+	      } else {
+	          as.addInvoker( fa );
+	      }
+	  }
+	  expression_chain[from, as]?
+	)  
+	;	
+	
+accumulate_statement returns [AccumulateDescr d]
+	@init {
+		d = factory.createAccumulate();
+	}
+	:
+	        loc=ACCUMULATE 
+		{ 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}	
+		'(' pattern=lhs_pattern ',' 
+		{
+		        d.setSourcePattern( (PatternDescr)pattern );
+		}
+		INIT text=paren_chunk[null] ',' 
+		{
+		        d.setInitCode( text.substring(1, text.length()-1) );
+		}
+		ACTION text=paren_chunk[null] ',' 
+		{
+		        d.setActionCode( text.substring(1, text.length()-1) );
+		}
+		RESULT text=paren_chunk[null] loc=')'
+		{
+		        d.setResultCode( text.substring(1, text.length()-1) );
+			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		} 
+	; 		
+ 		
+collect_statement returns [CollectDescr d]
+	@init {
+		d = factory.createCollect();
+	}
+	:
+	        loc=COLLECT 
+		{ 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}	
+		'(' pattern=lhs_pattern loc=')'
+		{
+		        d.setSourcePattern( (PatternDescr)pattern );
+			d.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		}
+	; 		
+
+fact_binding returns [BaseDescr d]
+	@init {
+		d=null;
+		boolean multi=false;
+	}
+ 	:
+ 		id=ID ':' 
+ 		{
+ 		        // handling incomplete parsing
+ 		        d = new PatternDescr( );
+ 		        ((PatternDescr) d).setIdentifier( id.getText() );
+ 		}
+ 		fe=fact_expression[id.getText()]
+ 		{
+ 		        // override previously instantiated pattern
+ 			d=fe;
+ 			if( d != null ) {
+   			    d.setStartCharacter( ((CommonToken)id).getStartIndex() );
+   			}
+ 		}
+	;
+ 
+ fact_expression[String id] returns [BaseDescr pd]
+ 	@init {
+ 		pd = null;
+ 		boolean multi = false;
+ 	}
+ 	:	'(' fe=fact_expression[id] ')' { pd=fe; }
+ 	| 	f=fact
+ 		{
+ 			((PatternDescr)f).setIdentifier( id );
+ 			pd = f;
+ 		}
+ 		( (OR|'||')
+ 			{	if ( ! multi ) {
+ 					BaseDescr first = pd;
+ 					pd = new OrDescr();
+ 					((OrDescr)pd).addDescr( first );
+ 					multi=true;
+ 				}
+ 			}
+ 			f=fact
+ 			{
+ 				((PatternDescr)f).setIdentifier( id );
+ 				((OrDescr)pd).addDescr( f );
+ 			}
+ 		)*	
+	;
+
+fact returns [BaseDescr d] 
+	@init {
+		d=null;
+		PatternDescr pattern = null;
+	}
+ 	:	
+ 	        {
+ 			pattern = new PatternDescr( );
+ 			d = pattern; 
+ 	        }
+ 	        id=dotted_name[d] 
+ 		{ 
+ 		        pattern.setObjectType( id );
+ 		        pattern.setEndCharacter( -1 );
+ 		}
+ 		loc=LEFT_PAREN {
+ 				pattern.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ 			        pattern.setLeftParentCharacter( ((CommonToken)loc).getStartIndex() );
+ 			} 
+ 		( constraints[pattern]  )? 
+ 		endLoc=RIGHT_PAREN
+		{
+		        if( endLoc.getType() == RIGHT_PAREN ) {
+				pattern.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
+				pattern.setEndCharacter( ((CommonToken)endLoc).getStopIndex() );
+ 			        pattern.setRightParentCharacter( ((CommonToken)endLoc).getStartIndex() );
+			}
+ 		}
+ 	;
+	
+	
+constraints[PatternDescr pattern]
+	:	(constraint[pattern]|predicate[pattern])
+		( ',' (constraint[pattern]|predicate[pattern]))*
+	;
+	
+constraint[PatternDescr pattern]
+	@init {
+		FieldBindingDescr fbd = null;
+		FieldConstraintDescr fc = null;
+	}
+	:
+		( fb=ID ':' 
+		    { 
+			fbd = new FieldBindingDescr();
+			fbd.setIdentifier( fb.getText() );
+			fbd.setLocation( offset(fb.getLine()), fb.getCharPositionInLine() );
+			fbd.setStartCharacter( ((CommonToken)fb).getStartIndex() );
+			pattern.addDescr( fbd );
+
+		    }
+		)? 
+		f=identifier	
+		{
+		    if( f != null ) {
+		    
+			if ( fbd != null ) {
+			    fbd.setFieldName( f.getText() );
+ 			    fbd.setEndCharacter( ((CommonToken)f).getStopIndex() );
+			} 
+			fc = new FieldConstraintDescr(f.getText());
+			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+			fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
+			
+			// it must be a field constraint, as it is not a binding
+			if( fb == null ) {
+			    pattern.addDescr( fc );
+			}
+		    }
+		}
+		(
+			(	rd=constraint_expression
+				{
+					fc.addRestriction(rd);
+					// we must add now as we didn't before
+					if( fb != null) {
+					    pattern.addDescr( fc );
+					}
+				}
+				(
+					con=('&'|'|')
+					{
+						if (con.getText().equals("&") ) {								
+							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
+						} else {
+							fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
+						}							
+					}
+					rd=constraint_expression
+					{
+					        if( rd != null ) {
+							fc.addRestriction(rd);
+					        }
+					}
+				)*
+			)
+		|
+			'->' predicate[pattern] 
+		)?
+	;
+	
+constraint_expression returns [RestrictionDescr rd]
+        :	
+		op=(	'=='
+		|	'>'
+		|	'>='
+		|	'<'
+		|	'<='
+		|	'!='
+		|	CONTAINS
+		|	MATCHES
+		|       EXCLUDES
+		)	
+		(	bvc=ID
+			{
+				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
+			}
+		|
+			lc=enum_constraint 
+			{ 
+				rd  = new LiteralRestrictionDescr(op.getText(), lc, true);
+			}						
+		|
+			lc=literal_constraint 
+			{ 
+				rd  = new LiteralRestrictionDescr(op.getText(), lc);
+			}
+		|	rvc=retval_constraint 
+			{ 
+				rd = new ReturnValueRestrictionDescr(op.getText(), rvc);							
+			} 
+		)
+	;	
+		
+literal_constraint returns [String text]
+	@init {
+		text = null;
+	}
+	:	(	t=STRING { text = getString( t ); } 
+		|	t=INT    { text = t.getText(); }
+		|	t=FLOAT	 { text = t.getText(); }
+		|	t=BOOL 	 { text = t.getText(); }
+		|	t=NULL   { text = null; }
+		)
+	;
+	
+enum_constraint returns [String text]
+	@init {
+		text = null;
+	}
+	:	
+		id=ID { text=id.getText(); } ( '.' ident=identifier { text += "." + ident.getText(); } )+ 
+	;	
+	
+
+predicate[PatternDescr pattern]
+        @init {
+		PredicateDescr d = null;
+        }
+	:
+		{
+			d = new PredicateDescr( );
+		}
+		text=paren_chunk[d]
+		{
+		        if( text != null ) {
+			        String body = text.substring(1, text.length()-1);
+			        d.setContent( body );
+				pattern.addDescr( d );
+		        }
+		}
+	;
+
+paren_chunk[BaseDescr descr] returns [String text]
+        @init {
+           StringBuffer buf = null;
+           Integer channel = null;
+        }
+	:
+	        {
+	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+		    buf = new StringBuffer();
+	        }
+		loc=LEFT_PAREN 
+		{
+		    buf.append( loc.getText());
+ 
+		} 
+		( 
+			~(LEFT_PAREN|RIGHT_PAREN)
+			  {
+			    buf.append( input.LT(-1).getText() );
+			  }
+			|
+			chunk=paren_chunk[null]
+			  {
+			    buf.append( chunk );
+			  }
+		)*
+		{
+		    if( channel != null ) {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+		    } else {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+		    }
+		}
+                loc=RIGHT_PAREN
+                {
+                    buf.append( loc.getText() );
+		    text = buf.toString();
+		    if( descr != null ) {
+		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		    }
+                }
+	;
+
+curly_chunk[BaseDescr descr] returns [String text]
+        @init {
+           StringBuffer buf = null;
+           Integer channel = null;
+        }
+	:
+		loc=LEFT_CURLY 
+		{
+	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+		    buf = new StringBuffer();
+		    
+		    buf.append( loc.getText() );
+		} 
+		( 
+			~(LEFT_CURLY|RIGHT_CURLY)
+			  {
+			    buf.append( input.LT(-1).getText() );
+			  }
+			|
+			chunk=curly_chunk[descr]
+			  {
+			    buf.append( chunk );
+			  }
+		)*
+		{
+		    if( channel != null ) {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+		    } else {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+		    }
+		}
+                loc=RIGHT_CURLY
+                {
+                    buf.append( loc.getText() );
+		    text = buf.toString();
+		    if( descr != null ) {
+		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		    }
+                }
+	;
+
+square_chunk[BaseDescr descr]  returns [String text]
+        @init {
+           StringBuffer buf = null;
+           Integer channel = null;
+        }
+	:
+	        {
+	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
+		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
+		    buf = new StringBuffer();
+	        }
+		loc=LEFT_SQUARE 
+		{
+		    buf.append( loc.getText());
+ 
+		} 
+		( 
+			~(LEFT_SQUARE|RIGHT_SQUARE)
+			  {
+			    buf.append( input.LT(-1).getText() );
+			  }
+			|
+			chunk=square_chunk[null]
+			  {
+			    buf.append( chunk );
+			  }
+		)*
+		{
+		    if( channel != null ) {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, channel.intValue());
+		    } else {
+			    ((SwitchingCommonTokenStream)input).setTokenTypeChannel(WS, Token.HIDDEN_CHANNEL);
+		    }
+		}
+                loc=RIGHT_SQUARE
+                {
+                    buf.append( loc.getText() );
+		    text = buf.toString();
+		    if( descr != null ) {
+		        descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		    }
+                }
+	;
+	
+retval_constraint returns [String text]
+	@init {
+		text = null;
+	}
+	:	
+		c=paren_chunk[null] { text = c.substring(1, c.length()-1); }
+	;
+
+lhs_or returns [BaseDescr d]
+	@init{
+		d = null;
+		OrDescr or = null;
+	}
+	:	
+		left=lhs_and {d = left; }
+		( (OR|'||')
+			right=lhs_and 
+			{
+				if ( or == null ) {
+					or = new OrDescr();
+					or.addDescr( left );
+					d = or;
+				}
+				
+				or.addDescr( right );
+			}
+		)*
+	;
+	
+lhs_and returns [BaseDescr d]
+	@init{
+		d = null;
+		AndDescr and = null;
+	}
+	:
+		left=lhs_unary { d = left; }
+		( (AND|'&&')
+			right=lhs_unary
+			{
+				if ( and == null ) {
+					and = new AndDescr();
+					and.addDescr( left );
+					d = and;
+				}
+				
+				and.addDescr( right );
+			}
+		)* 
+	;
+	
+lhs_unary returns [BaseDescr d]
+	@init {
+		d = null;
+	}
+	:	(	u=lhs_exist
+		|	u=lhs_not
+		|	u=lhs_eval
+		|	u=lhs_pattern (
+		          FROM (
+		           ( ACCUMULATE ) => (ac=accumulate_statement {ac.setResultPattern((PatternDescr) u); u=ac;})
+		          |( COLLECT ) => (cs=collect_statement {cs.setResultPattern((PatternDescr) u); u=cs;}) 
+		          |( ~(ACCUMULATE|COLLECT) ) => (fm=from_statement {fm.setPattern((PatternDescr) u); u=fm;}) 
+		          )
+		        )?
+		|	u=lhs_forall  
+		|	'(' u=lhs_or ')'
+		) { d = u; }
+		opt_semicolon
+	;
+	
+lhs_exist returns [BaseDescr d]
+	@init {
+		d = null;
+	}
+	:	loc=EXISTS 
+		{
+			d = new ExistsDescr( ); 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}
+	        ( ( '(' pattern=lhs_or 
+	           	{ if ( pattern != null ) ((ExistsDescr)d).addDescr( pattern ); }
+	           end=')' 
+	                { if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); }
+	        )    
+	        | pattern=lhs_pattern
+	                {
+	                	if ( pattern != null ) {
+	                		((ExistsDescr)d).addDescr( pattern );
+	                		d.setEndCharacter( pattern.getEndCharacter() );
+	                	}
+	                }
+	        )
+	;
+	
+lhs_not	returns [NotDescr d]
+	@init {
+		d = null;
+	}
+	:	loc=NOT 
+		{
+			d = new NotDescr( ); 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		}
+		( ( '(' pattern=lhs_or  
+	           	{ if ( pattern != null ) d.addDescr( pattern ); }
+	           end=')' 
+	                { if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); }
+		  )
+		| 
+		pattern=lhs_pattern
+	                {
+	                	if ( pattern != null ) {
+	                		d.addDescr( pattern );
+	                		d.setEndCharacter( pattern.getEndCharacter() );
+	                	}
+	                }
+		)
+	;
+
+lhs_eval returns [BaseDescr d]
+	@init {
+		d = new EvalDescr( );
+	}
+	:
+		loc=EVAL c=paren_chunk[d]
+		{ 
+			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		        if( c != null ) {
+		            String body = c.substring(1, c.length()-1);
+			    checkTrailingSemicolon( body, offset(loc.getLine()) );
+			    ((EvalDescr) d).setContent( body );
+			}
+		}
+	;
+	
+lhs_forall returns [ForallDescr d]
+	@init {
+		d = factory.createForall();
+	}
+	:	loc=FORALL '(' base=lhs_pattern   
+		{
+			if ( loc != null ) d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+		        // adding the base pattern
+		        d.addDescr( base );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+		( (',')? pattern=lhs_pattern
+		{
+		        // adding additional patterns
+			d.addDescr( pattern );
+		}
+		)+
+		end=')'
+		{
+		        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() );
+		}
+	;
+
+dotted_name[BaseDescr descr] returns [String name]
+	@init {
+		name = null;
+	}
+	:	
+		id=ID 
+		{ 
+		    name=id.getText(); 
+		    if( descr != null ) {
+			descr.setStartCharacter( ((CommonToken)id).getStartIndex() );
+			descr.setEndCharacter( ((CommonToken)id).getStopIndex() );
+		    }
+		} 
+		( '.' ident=identifier 
+		    { 
+		        name = name + "." + ident.getText(); 
+    		        if( descr != null ) {
+			    descr.setEndCharacter( ((CommonToken)ident).getStopIndex() );
+		        }
+		    } 
+		)* 
+		( '[' loc=']'
+		    { 
+		        name = name + "[]";
+    		        if( descr != null ) {
+			    descr.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+		        }
+		    }
+		)*
+	;
+	
+argument returns [String name]
+	@init {
+		name = null;
+	}
+	:
+		id=identifier { 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);
+		    }
+		}
+                loc=END
+                {
+                    // ignoring first line in the consequence
+                    int index = 0;
+                    while( (index < buf.length() ) && Character.isWhitespace( buf.charAt( index ) ) &&
+                           (buf.charAt( index ) != 10 ) && (buf.charAt( index ) != 13 ))
+                               index++;
+                    if( (index < buf.length() ) && ( buf.charAt( index ) == '\r' ) )
+                        index++;
+                    if( (index < buf.length() ) && ( buf.charAt( index ) == '\n' ) )
+                        index++;
+                    
+		    rule.setConsequence( buf.substring( index ) );
+     		    rule.setConsequenceLocation(offset(start.getLine()), start.getCharPositionInLine());
+ 		    rule.setEndCharacter( ((CommonToken)loc).getStopIndex() );
+                }
+	;
+
+name returns [String s]
+	:
+	( 
+	    tok=ID
+	    {
+	        s = tok.getText();
+	    }
+	|
+	    str=STRING
+	    {
+	       s = getString( str );
+	    }
+	)
+	;
+	
+identifier returns [Token tok]
+	:	
+	(       t=ID      
+	|	t=PACKAGE
+	|	t=FUNCTION
+	|	t=GLOBAL
+	|	t=IMPORT  
+	|	t=RULE
+	|	t=QUERY 
+        |       t=TEMPLATE        
+        |       t=ATTRIBUTES      
+        |       t=ENABLED         
+        |       t=SALIENCE 	
+        |       t=DURATION 	
+        |       t=FROM	        
+        |       t=ACCUMULATE 	
+        |       t=INIT	        
+        |       t=ACTION	        
+        |       t=RESULT	        
+        |       t=COLLECT         
+        |       t=OR	        
+        |       t=AND	        
+        |       t=CONTAINS 	
+        |       t=EXCLUDES 	
+        |       t=MATCHES         
+        |       t=NULL	        
+        |       t=EXISTS	        
+        |       t=NOT	        
+        |       t=EVAL	        
+        |       t=FORALL	            					
+        |       t=WHEN            
+        |       t=THEN	        
+        |       t=END             
+	) 
+	{
+	    tok = t;
+	}
+	;
+	
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                |	EOL
+                )
+                { $channel=HIDDEN; }
+        ;
+
+fragment
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;  
+        
+INT	
+	:	('-')?('0'..'9')+
+		;
+
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+
+STRING
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+BOOL
+	:	('true'|'false') 
+	;	
+
+PACKAGE	:	'package';
+
+IMPORT	:	'import';
+
+FUNCTION :	'function';
+
+GLOBAL	:	'global';
+	
+RULE    :	'rule';
+
+QUERY	:	'query';
+
+TEMPLATE :	'template';
+
+ATTRIBUTES :	'attributes';
+	
+DATE_EFFECTIVE 
+	:	'date-effective';
+
+DATE_EXPIRES 
+	:	'date-expires';	
+	
+ENABLED :	'enabled';
+
+SALIENCE 
+	:	'salience';
+	
+NO_LOOP :	'no-loop';
+
+AUTO_FOCUS 
+	:	'auto-focus';
+	
+ACTIVATION_GROUP 
+	:	'activation-group';
+	
+AGENDA_GROUP 
+	:	'agenda-group';
+	
+DIALECT 
+	:	'dialect';	
+	
+RULEFLOW_GROUP 
+	:	'ruleflow-group';
+	
+DURATION 
+	:	'duration';
+	
+LOCK_ON_ACTIVE
+	:	'lock-on-active';	
+	
+FROM	:	'from';
+
+ACCUMULATE 
+	:	'accumulate';
+	
+INIT	:	'init';
+
+ACTION	:	'action';
+
+RESULT	:	'result';
+
+COLLECT :	'collect';
+
+OR	:	'or';
+
+AND	:	'and';
+
+CONTAINS 
+	:	'contains';
+	
+EXCLUDES 
+	:	'excludes';
+	
+MATCHES :	'matches';
+
+NULL	:	'null';
+
+EXISTS	:	'exists';
+
+NOT	:	'not';
+
+EVAL	:	'eval';
+
+FORALL	:	'forall';							
+
+WHEN    :	'when'; 
+
+THEN	:    	'then';
+
+END     :	'end';
+
+ID	
+	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')* 
+	;
+		
+
+SH_STYLE_SINGLE_LINE_COMMENT	
+	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
+                { $channel=HIDDEN; }
+	;
+        
+        
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { $channel=HIDDEN; }
+	;
+
+
+LEFT_PAREN
+        :	'('
+        ;
+
+RIGHT_PAREN
+        :	')'
+        ;
+        
+LEFT_SQUARE
+        :	'['
+        ;
+
+RIGHT_SQUARE
+        :	']'
+        ;        
+
+LEFT_CURLY
+        :	'{'
+        ;
+
+RIGHT_CURLY
+        :	'}'
+        ;
+        
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { $channel=HIDDEN; }
+	;
+
+MISC 	:
+		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?' | '|' | ',' | '=' | '/' | '\'' | '\\'
+	;

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	2007-04-27 01:07:05 UTC (rev 11395)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-04-27 01:27:59 UTC (rev 11396)
@@ -2151,7 +2151,45 @@
         parseResource( "extra_lhs_newline.drl" ).compilation_unit();
         assertFalse( this.parser.hasErrors() );
     }
+    
+    public void testPackageAttributes() throws Exception {
+        parseResource( "package_attributes.drl" ).compilation_unit();
+        if (this.parser.hasErrors()) {
+            System.err.println(this.parser.getErrorMessages());
+        }
+        assertFalse( this.parser.hasErrors() );
+        
+        PackageDescr pkg = this.parser.getPackageDescr();
+        AttributeDescr at = (AttributeDescr) pkg.getAttributes().get( 0 );
+        assertEquals("agenda-group", at.getName());
+        assertEquals( "x", at.getValue() );
+        at = (AttributeDescr) pkg.getAttributes().get( 1 );
+        assertEquals("dialect", at.getName());
+        assertEquals( "java", at.getValue() );        
+        
+        assertEquals(2, pkg.getRules().size());
+        
+        RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 );
+        assertEquals("bar", rule.getName());
+        at = (AttributeDescr) rule.getAttributes().get( 0 );
+        assertEquals("agenda-group", at.getName());
+        assertEquals( "x", at.getValue() );
+        at = (AttributeDescr) rule.getAttributes().get( 1 );
+        assertEquals("dialect", at.getName());
+        assertEquals( "java", at.getValue() );        
 
+        rule = (RuleDescr) pkg.getRules().get( 1 );
+        assertEquals("baz", rule.getName());
+        at = (AttributeDescr) rule.getAttributes().get( 0 );
+        assertEquals("dialect", at.getName());
+        assertEquals( "mvel", at.getValue() );
+        at = (AttributeDescr) rule.getAttributes().get( 1 );
+        assertEquals("agenda-group", at.getName());
+        assertEquals( "x", at.getValue() );        
+        
+        
+    }
+
     public void testStatementOrdering1() throws Exception {
         parseResource( "statement_ordering_1.drl" );
         this.parser.compilation_unit();

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/descr/PackageDescrTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/descr/PackageDescrTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/descr/PackageDescrTest.java	2007-04-27 01:27:59 UTC (rev 11396)
@@ -0,0 +1,36 @@
+package org.drools.lang.descr;
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class PackageDescrTest extends TestCase {
+
+    public void testAttributeOverriding() {
+        PackageDescr desc = new PackageDescr("foo");
+        
+        AttributeDescr at1 = new AttributeDescr("foo", "bar");
+        AttributeDescr at2 = new AttributeDescr("foo2", "default");
+        
+        desc.addAttribute( at1 );
+        desc.addAttribute( at2 );
+        
+        RuleDescr rule = new RuleDescr("abc");
+        rule.addAttribute( new AttributeDescr("foo", "overridden") );
+        
+        desc.addRule( rule );
+        
+        List pkgAts = desc.getAttributes();
+        assertEquals("bar", ((AttributeDescr)pkgAts.get( 0 )).getValue());
+        assertEquals("default", ((AttributeDescr)pkgAts.get( 1 )).getValue());
+        
+        
+        List ruleAts = rule.getAttributes();
+        assertEquals("overridden", ((AttributeDescr)ruleAts.get( 0 )).getValue());
+        assertEquals("default", ((AttributeDescr)ruleAts.get( 1 )).getValue());
+        
+        
+        
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/descr/PackageDescrTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/package_attributes.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/package_attributes.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/package_attributes.drl	2007-04-27 01:27:59 UTC (rev 11396)
@@ -0,0 +1,16 @@
+package com.foo;
+
+
+agenda-group "x"
+dialect "java"
+
+rule bar
+  when
+  then
+end
+
+rule baz
+  dialect "mvel"
+  when
+  then
+end
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/package_attributes.drl
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list