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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 30 11:59:33 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-08-30 11:59:19 -0400 (Wed, 30 Aug 2006)
New Revision: 6027

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/argument_list.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ArgumentValueDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
Log:
JBRULES-339 'from'
-Added inline maps

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2006-08-30 15:59:19 UTC (rev 6027)
@@ -1,13 +1,15 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-24 14:53:10
+// $ANTLR 3.0ea8 D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g 2006-08-30 13:06:30
+
+	package org.drools.lang;
+	import java.util.List;
+	import java.util.ArrayList;
+	import java.util.Iterator;
+	import java.util.Map;	
+	import java.util.HashMap;	
+	import java.util.StringTokenizer;
+	import org.drools.lang.descr.*;
 
-	package org.drools.lang;
-	import java.util.List;
-	import java.util.ArrayList;
-	import java.util.Iterator;
-	import java.util.StringTokenizer;
-	import org.drools.lang.descr.*;
 
-
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -15,7 +17,7 @@
 
 public class RuleParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "EOL", "ID", "INT", "BOOL", "STRING", "FLOAT", "MISC", "WS", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "\';\'", "\'package\'", "\'import\'", "\'.\'", "\'.*\'", "\'expander\'", "\'global\'", "\'function\'", "\'(\'", "\',\'", "\')\'", "\'{\'", "\'}\'", "\'query\'", "\'end\'", "\'template\'", "\'rule\'", "\'when\'", "\':\'", "\'then\'", "\'attributes\'", "\'salience\'", "\'no-loop\'", "\'auto-focus\'", "\'activation-group\'", "\'agenda-group\'", "\'duration\'", "\'from\'", "\'null\'", "\'or\'", "\'||\'", "\'&\'", "\'|\'", "\'->\'", "\'and\'", "\'&&\'", "\'exists\'", "\'not\'", "\'eval\'", "\'[\'", "\']\'", "\'use\'", "\'==\'", "\'=\'", "\'>\'", "\'>=\'", "\'<\'", "\'<=\'", "\'!=\'", "\'contains\'", "\'matches\'", "\'excludes\'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "EOL", "ID", "INT", "BOOL", "STRING", "FLOAT", "MISC", "WS", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "\';\'", "\'package\'", "\'import\'", "\'.\'", "\'.*\'", "\'expander\'", "\'global\'", "\'function\'", "\'(\'", "\',\'", "\')\'", "\'{\'", "\'}\'", "\'query\'", "\'end\'", "\'template\'", "\'rule\'", "\'when\'", "\':\'", "\'then\'", "\'attributes\'", "\'salience\'", "\'no-loop\'", "\'auto-focus\'", "\'activation-group\'", "\'agenda-group\'", "\'duration\'", "\'from\'", "\'null\'", "\'=>\'", "\'or\'", "\'||\'", "\'&\'", "\'|\'", "\'->\'", "\'and\'", "\'&&\'", "\'exists\'", "\'not\'", "\'eval\'", "\'[\'", "\']\'", "\'use\'", "\'==\'", "\'=\'", "\'>\'", "\'>=\'", "\'<\'", "\'<=\'", "\'!=\'", "\'contains\'", "\'matches\'", "\'excludes\'"
     };
     public static final int BOOL=7;
     public static final int INT=6;
@@ -36,279 +38,279 @@
 
     public String[] getTokenNames() { return tokenNames; }
 
+    
+    	private ExpanderResolver expanderResolver;
+    	private Expander expander;
+    	private boolean expanderDebug = false;
+    	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;
+    	
+    	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;
+    	}	
+    
+    	/**
+    	 * This may be set to enable debuggin of DSLs/expanders.
+    	 * If set to true, expander stuff will be sent to the Std out.
+    	 */	
+    	public void setExpanderDebug(boolean status) {
+    		expanderDebug = status;
+    	}
+    	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;
+    	}
+    	
+    	public void setExpanderResolver(ExpanderResolver expanderResolver) {
+    		this.expanderResolver = expanderResolver;
+    	}
+    	
+    	public ExpanderResolver getExpanderResolver() {
+    		return expanderResolver;
+    	}
+    	
+    	/** Expand the LHS */
+    	private String runWhenExpander(String text, int line) throws RecognitionException {
+    		String expanded = text.trim();
+    		if (expanded.startsWith(">")) {
+    			expanded = expanded.substring(1);  //escape !!
+    		} else {
+    			try {
+    				expanded = expander.expand( "when", text );			
+    			} catch (Exception e) {
+    				this.errors.add(new ExpanderException("Unable to expand: " + text + ". Due to " + e.getMessage(), line));
+    				return "";
+    			}
+    		}
+    		if (expanderDebug) {
+    			System.out.println("Expanding LHS: " + text + " ----> " + expanded + " --> from line: " + line);
+    		}
+    		return expanded;			
+    	}
+    	
+        	/** This will apply a list of constraints to an LHS block */
+        	private String applyConstraints(List constraints, String block) {
+        		//apply the constraints as a comma seperated list inside the previous block
+        		//the block will end in something like "foo()" and the constraint patterns will be put in the ()
+        		if (constraints == null) {
+        			return block;
+        		}
+        		StringBuffer list = new StringBuffer();    		
+        		for (Iterator iter = constraints.iterator(); iter.hasNext();) {
+    				String con = (String) iter.next();
+    				list.append("\n\t\t");
+    				list.append(con);
+    				if (iter.hasNext()) {
+    					list.append(",");					
+    				}			
+    			}
+        		if (block.endsWith("()")) {
+        			return block.substring(0, block.length() - 2) + "(" + list.toString() + ")";
+        		} else {
+        			return block + "(" + list.toString() + ")";
+        		}
+        	}  
+        	
+            	/** Reparse the results of the expansion */
+        	private void reparseLhs(String text, AndDescr descrs) throws RecognitionException {
+        		CharStream charStream = new ANTLRStringStream( text  + " \n  then"); //need to then so it knows when to end... werd...
+        		RuleParserLexer lexer = new RuleParserLexer( charStream );
+        		TokenStream tokenStream = new CommonTokenStream( lexer );
+        		RuleParser parser = new RuleParser( tokenStream );
+        		parser.setLineOffset( descrs.getLine() );
+        		parser.normal_lhs_block(descrs);
+                
+                    if (parser.hasErrors()) {
+        			this.errors.addAll(parser.getErrors());
+        		}
+    		if (expanderDebug) {
+    			System.out.println("Reparsing LHS: " + text + " --> successful:" + !parser.hasErrors());
+    		}    		
+        		
+        	}
+    	
+    	/** Expand a line on the RHS */
+    	private String runThenExpander(String text, int startLine) {
+    		//System.err.println( "expand THEN [" + text + "]" );
+    		StringTokenizer lines = new StringTokenizer( text, "\n\r" );
+    
+    		StringBuffer expanded = new StringBuffer();
+    		
+    		String eol = System.getProperty( "line.separator" );
+    				
+    		while ( lines.hasMoreTokens() ) {
+    			startLine++;
+    			String line = lines.nextToken();
+    			line = line.trim();
+    			if ( line.length() > 0 ) {
+    				if ( line.startsWith( ">" ) ) {
+    					expanded.append( line.substring( 1 ) );
+    					expanded.append( eol );
+    				} else {
+    					try {
+    						expanded.append( expander.expand( "then", line ) );
+    						expanded.append( eol );
+    					} catch (Exception e) {
+    						this.errors.add(new ExpanderException("Unable to expand: " + line + ". Due to " + e.getMessage(), startLine));			
+    					}
+    				}
+    			}
+    		}
+    		
+    		if (expanderDebug) {
+    			System.out.println("Expanding RHS: " + text + " ----> " + expanded.toString() + " --> from line starting: " + startLine);
+    		}		
+    		
+    		return expanded.toString();
+    	}
+    	
+    
+    	
+    	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) ) );
+            	}
+            }
+          
 
-    	private ExpanderResolver expanderResolver;
-    	private Expander expander;
-    	private boolean expanderDebug = false;
-    	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;
-    	
-    	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;
-    	}	
 
-    	/**
-    	 * This may be set to enable debuggin of DSLs/expanders.
-    	 * If set to true, expander stuff will be sent to the Std out.
-    	 */	
-    	public void setExpanderDebug(boolean status) {
-    		expanderDebug = status;
-    	}
-    	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;
-    	}
-    	
-    	public void setExpanderResolver(ExpanderResolver expanderResolver) {
-    		this.expanderResolver = expanderResolver;
-    	}
-    	
-    	public ExpanderResolver getExpanderResolver() {
-    		return expanderResolver;
-    	}
-    	
-    	/** Expand the LHS */
-    	private String runWhenExpander(String text, int line) throws RecognitionException {
-    		String expanded = text.trim();
-    		if (expanded.startsWith(">")) {
-    			expanded = expanded.substring(1);  //escape !!
-    		} else {
-    			try {
-    				expanded = expander.expand( "when", text );			
-    			} catch (Exception e) {
-    				this.errors.add(new ExpanderException("Unable to expand: " + text + ". Due to " + e.getMessage(), line));
-    				return "";
-    			}
-    		}
-    		if (expanderDebug) {
-    			System.out.println("Expanding LHS: " + text + " ----> " + expanded + " --> from line: " + line);
-    		}
-    		return expanded;			
-    	}
-    	
-        	/** This will apply a list of constraints to an LHS block */
-        	private String applyConstraints(List constraints, String block) {
-        		//apply the constraints as a comma seperated list inside the previous block
-        		//the block will end in something like "foo()" and the constraint patterns will be put in the ()
-        		if (constraints == null) {
-        			return block;
-        		}
-        		StringBuffer list = new StringBuffer();    		
-        		for (Iterator iter = constraints.iterator(); iter.hasNext();) {
-    				String con = (String) iter.next();
-    				list.append("\n\t\t");
-    				list.append(con);
-    				if (iter.hasNext()) {
-    					list.append(",");					
-    				}			
-    			}
-        		if (block.endsWith("()")) {
-        			return block.substring(0, block.length() - 2) + "(" + list.toString() + ")";
-        		} else {
-        			return block + "(" + list.toString() + ")";
-        		}
-        	}  
-        	
-            	/** Reparse the results of the expansion */
-        	private void reparseLhs(String text, AndDescr descrs) throws RecognitionException {
-        		CharStream charStream = new ANTLRStringStream( text  + " \n  then"); //need to then so it knows when to end... werd...
-        		RuleParserLexer lexer = new RuleParserLexer( charStream );
-        		TokenStream tokenStream = new CommonTokenStream( lexer );
-        		RuleParser parser = new RuleParser( tokenStream );
-        		parser.setLineOffset( descrs.getLine() );
-        		parser.normal_lhs_block(descrs);
-                
-                    if (parser.hasErrors()) {
-        			this.errors.addAll(parser.getErrors());
-        		}
-    		if (expanderDebug) {
-    			System.out.println("Reparsing LHS: " + text + " --> successful:" + !parser.hasErrors());
-    		}    		
-        		
-        	}
-    	
-    	/** Expand a line on the RHS */
-    	private String runThenExpander(String text, int startLine) {
-    		//System.err.println( "expand THEN [" + text + "]" );
-    		StringTokenizer lines = new StringTokenizer( text, "\n\r" );
 
-    		StringBuffer expanded = new StringBuffer();
-    		
-    		String eol = System.getProperty( "line.separator" );
-    				
-    		while ( lines.hasMoreTokens() ) {
-    			startLine++;
-    			String line = lines.nextToken();
-    			line = line.trim();
-    			if ( line.length() > 0 ) {
-    				if ( line.startsWith( ">" ) ) {
-    					expanded.append( line.substring( 1 ) );
-    					expanded.append( eol );
-    				} else {
-    					try {
-    						expanded.append( expander.expand( "then", line ) );
-    						expanded.append( eol );
-    					} catch (Exception e) {
-    						this.errors.add(new ExpanderException("Unable to expand: " + line + ". Due to " + e.getMessage(), startLine));			
-    					}
-    				}
-    			}
-    		}
-    		
-    		if (expanderDebug) {
-    			System.out.println("Expanding RHS: " + text + " ----> " + expanded.toString() + " --> from line starting: " + startLine);
-    		}		
-    		
-    		return expanded.toString();
-    	}
-    	
-
-    	
-    	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) ) );
-            	}
-            }
-          
-
-
-
     // $ANTLR start opt_eol
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:281:1: opt_eol : ( (';'|EOL))* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:282:1: opt_eol : ( (';'|EOL))* ;
     public void opt_eol() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:17: ( ( (';'|EOL))* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:17: ( (';'|EOL))*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:283:17: ( ( (';'|EOL))* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:283:17: ( (';'|EOL))*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:17: ( (';'|EOL))*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:283:17: ( (';'|EOL))*
             loop1:
             do {
                 int alt1=2;
@@ -323,7 +325,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:18: (';'|EOL)
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:283:18: (';'|EOL)
             	    {
             	    if ( input.LA(1)==EOL||input.LA(1)==15 ) {
             	        input.consume();
@@ -360,7 +362,7 @@
 
 
     // $ANTLR start compilation_unit
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:285:1: compilation_unit : opt_eol prolog (r= rule | q= query | t= template | extra_statement )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:286:1: compilation_unit : opt_eol prolog (r= rule | q= query | t= template | extra_statement )* ;
     public void compilation_unit() throws RecognitionException {   
         RuleDescr r = null;
 
@@ -370,8 +372,8 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:286:17: ( opt_eol prolog (r= rule | q= query | t= template | extra_statement )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:286:17: opt_eol prolog (r= rule | q= query | t= template | extra_statement )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:287:17: ( opt_eol prolog (r= rule | q= query | t= template | extra_statement )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:287:17: opt_eol prolog (r= rule | q= query | t= template | extra_statement )*
             {
             following.push(FOLLOW_opt_eol_in_compilation_unit57);
             opt_eol();
@@ -381,14 +383,14 @@
             prolog();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:288:17: (r= rule | q= query | t= template | extra_statement )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:289:17: (r= rule | q= query | t= template | extra_statement )*
             loop2:
             do {
                 int alt2=5;
                 alt2 = dfa2.predict(input); 
                 switch (alt2) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:288:25: r= rule
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:289:25: r= rule
             	    {
             	    following.push(FOLLOW_rule_in_compilation_unit70);
             	    r=rule();
@@ -399,7 +401,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:289:25: q= query
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:290:25: q= query
             	    {
             	    following.push(FOLLOW_query_in_compilation_unit83);
             	    q=query();
@@ -410,7 +412,7 @@
             	    }
             	    break;
             	case 3 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:25: t= template
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:291:25: t= template
             	    {
             	    following.push(FOLLOW_template_in_compilation_unit93);
             	    t=template();
@@ -421,7 +423,7 @@
             	    }
             	    break;
             	case 4 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:291:25: extra_statement
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:292:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_compilation_unit101);
             	    extra_statement();
@@ -452,23 +454,23 @@
 
 
     // $ANTLR start prolog
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:295:1: prolog : opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:296:1: prolog : opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol ;
     public void prolog() throws RecognitionException {   
         String name = null;
 
 
-
-        		String packageName = "";
+        
+        		String packageName = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:299:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:299:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:300:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:300:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
             {
             following.push(FOLLOW_opt_eol_in_prolog125);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:300:17: (name= package_statement )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:301:17: (name= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
             if ( LA3_0==16 ) {
@@ -479,13 +481,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("300:17: (name= package_statement )?", 3, 0, input);
+                    new NoViableAltException("301:17: (name= package_statement )?", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:300:19: name= package_statement
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:301:19: name= package_statement
                     {
                     following.push(FOLLOW_package_statement_in_prolog133);
                     name=package_statement();
@@ -498,17 +500,17 @@
 
             }
 
-             
-            			this.packageDescr = new PackageDescr( name ); 
+             
+            			this.packageDescr = new PackageDescr( name ); 
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:304:17: ( extra_statement | expander )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:305:17: ( extra_statement | expander )*
             loop4:
             do {
                 int alt4=3;
                 alt4 = dfa4.predict(input); 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:304:25: extra_statement
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:305:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_prolog148);
             	    extra_statement();
@@ -518,7 +520,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:305:25: expander
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:306:25: expander
             	    {
             	    following.push(FOLLOW_expander_in_prolog154);
             	    expander();
@@ -553,18 +555,18 @@
 
 
     // $ANTLR start package_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:311:1: package_statement returns [String packageName] : 'package' opt_eol name= dotted_name ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:312:1: package_statement returns [String packageName] : 'package' opt_eol name= dotted_name ( ';' )? opt_eol ;
     public String package_statement() throws RecognitionException {   
         String packageName;
         String name = null;
 
 
-
-        		packageName = null;
+        
+        		packageName = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:317:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:317:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
             {
             match(input,16,FOLLOW_16_in_package_statement190); 
             following.push(FOLLOW_opt_eol_in_package_statement192);
@@ -575,7 +577,7 @@
             name=dotted_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:52: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:317:52: ( ';' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( LA5_0==15 ) {
@@ -586,13 +588,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("316:52: ( \';\' )?", 5, 0, input);
+                    new NoViableAltException("317:52: ( \';\' )?", 5, 0, input);
 
                 throw nvae;
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:52: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:317:52: ';'
                     {
                     match(input,15,FOLLOW_15_in_package_statement198); 
 
@@ -605,8 +607,8 @@
             opt_eol();
             following.pop();
 
-
-            			packageName = name;
+            
+            			packageName = name;
             		
 
             }
@@ -624,14 +626,14 @@
 
 
     // $ANTLR start import_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:322:1: import_statement : 'import' opt_eol name= import_name ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:323:1: import_statement : 'import' opt_eol name= import_name ( ';' )? opt_eol ;
     public void import_statement() throws RecognitionException {   
         String name = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:324:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:324:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
             {
             match(input,17,FOLLOW_17_in_import_statement217); 
             following.push(FOLLOW_opt_eol_in_import_statement219);
@@ -642,7 +644,7 @@
             name=import_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:51: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:324:51: ( ';' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
             if ( LA6_0==15 ) {
@@ -653,13 +655,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("323:51: ( \';\' )?", 6, 0, input);
+                    new NoViableAltException("324:51: ( \';\' )?", 6, 0, input);
 
                 throw nvae;
             }
             switch (alt6) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:51: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:324:51: ';'
                     {
                     match(input,15,FOLLOW_15_in_import_statement225); 
 
@@ -672,9 +674,9 @@
             opt_eol();
             following.pop();
 
-
-            			if (packageDescr != null) 
-            				packageDescr.addImport( name );
+            
+            			if (packageDescr != null) 
+            				packageDescr.addImport( name );
             		
 
             }
@@ -692,23 +694,23 @@
 
 
     // $ANTLR start import_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:330:1: import_name returns [String name] : id= ID ( '.' id= ID )* (star= '.*' )? ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:331:1: import_name returns [String name] : id= ID ( '.' id= ID )* (star= '.*' )? ;
     public String import_name() throws RecognitionException {   
         String name;
         Token id=null;
         Token star=null;
 
-
-        		name = null;
+        
+        		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:17: id= ID ( '.' id= ID )* (star= '.*' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:17: id= ID ( '.' id= ID )* (star= '.*' )?
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_import_name259); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:46: ( '.' id= ID )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:46: ( '.' id= ID )*
             loop7:
             do {
                 int alt7=2;
@@ -720,7 +722,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:48: '.' id= ID
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:48: '.' id= ID
             	    {
             	    match(input,18,FOLLOW_18_in_import_name265); 
             	    id=(Token)input.LT(1);
@@ -735,7 +737,7 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:99: (star= '.*' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:99: (star= '.*' )?
             int alt8=2;
             int LA8_0 = input.LA(1);
             if ( LA8_0==19 ) {
@@ -746,13 +748,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("335:99: (star= \'.*\' )?", 8, 0, input);
+                    new NoViableAltException("336:99: (star= \'.*\' )?", 8, 0, input);
 
                 throw nvae;
             }
             switch (alt8) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:335:100: star= '.*'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:336:100: star= '.*'
                     {
                     star=(Token)input.LT(1);
                     match(input,19,FOLLOW_19_in_import_name279); 
@@ -779,20 +781,20 @@
 
 
     // $ANTLR start expander
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:337:1: expander : 'expander' (name= dotted_name )? ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:338:1: expander : 'expander' (name= dotted_name )? ( ';' )? opt_eol ;
     public void expander() throws RecognitionException {   
         String name = null;
 
 
-
-        		String config=null;
+        
+        		String config=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
             {
             match(input,20,FOLLOW_20_in_expander299); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:28: (name= dotted_name )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:28: (name= dotted_name )?
             int alt9=2;
             int LA9_0 = input.LA(1);
             if ( LA9_0==ID ) {
@@ -803,13 +805,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("341:28: (name= dotted_name )?", 9, 0, input);
+                    new NoViableAltException("342:28: (name= dotted_name )?", 9, 0, input);
 
                 throw nvae;
             }
             switch (alt9) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:29: name= dotted_name
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:29: name= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_expander304);
                     name=dotted_name();
@@ -821,7 +823,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:48: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:48: ( ';' )?
             int alt10=2;
             int LA10_0 = input.LA(1);
             if ( LA10_0==15 ) {
@@ -832,13 +834,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("341:48: ( \';\' )?", 10, 0, input);
+                    new NoViableAltException("342:48: ( \';\' )?", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:341:48: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:342:48: ';'
                     {
                     match(input,15,FOLLOW_15_in_expander308); 
 
@@ -851,12 +853,12 @@
             opt_eol();
             following.pop();
 
-
-            			if (expanderResolver == null) 
-            				throw new IllegalArgumentException("Unable to use expander. Make sure a expander or dsl config is being passed to the parser. [ExpanderResolver was not set].");
-            			if ( expander != null )
-            				throw new IllegalArgumentException( "Only one 'expander' statement per file is allowed" );
-            			expander = expanderResolver.get( name, config );
+            
+            			if (expanderResolver == null) 
+            				throw new IllegalArgumentException("Unable to use expander. Make sure a expander or dsl config is being passed to the parser. [ExpanderResolver was not set].");
+            			if ( expander != null )
+            				throw new IllegalArgumentException( "Only one 'expander' statement per file is allowed" );
+            			expander = expanderResolver.get( name, config );
             		
 
             }
@@ -874,17 +876,17 @@
 
 
     // $ANTLR start global
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:1: global : 'global' type= dotted_name id= ID ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:352:1: global : 'global' type= dotted_name id= ID ( ';' )? opt_eol ;
     public void global() throws RecognitionException {   
         Token id=null;
         String type = null;
 
 
-
+        
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:355:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:355:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:356:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:356:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
             {
             match(input,21,FOLLOW_21_in_global335); 
             following.push(FOLLOW_dotted_name_in_global339);
@@ -893,7 +895,7 @@
 
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_global343); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:355:49: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:356:49: ( ';' )?
             int alt11=2;
             int LA11_0 = input.LA(1);
             if ( LA11_0==15 ) {
@@ -904,13 +906,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("355:49: ( \';\' )?", 11, 0, input);
+                    new NoViableAltException("356:49: ( \';\' )?", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:355:49: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:356:49: ';'
                     {
                     match(input,15,FOLLOW_15_in_global345); 
 
@@ -923,8 +925,8 @@
             opt_eol();
             following.pop();
 
-
-            			packageDescr.addGlobal( id.getText(), type );
+            
+            			packageDescr.addGlobal( id.getText(), type );
             		
 
             }
@@ -942,7 +944,7 @@
 
 
     // $ANTLR start function
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:361:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:362:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
     public void function() throws RecognitionException {   
         Token name=null;
         String retType = null;
@@ -954,24 +956,24 @@
         String body = null;
 
 
-
-        		FunctionDescr f = null;
+        
+        		FunctionDescr f = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:366:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:366:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:367:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:367:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
             {
             match(input,22,FOLLOW_22_in_function372); 
             following.push(FOLLOW_opt_eol_in_function374);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:366:36: (retType= dotted_name )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:367:36: (retType= dotted_name )?
             int alt12=2;
             alt12 = dfa12.predict(input); 
             switch (alt12) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:366:37: retType= dotted_name
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:367:37: retType= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_function379);
                     retType=dotted_name();
@@ -993,16 +995,16 @@
             opt_eol();
             following.pop();
 
-
-            			//System.err.println( "function :: " + name.getText() );
-            			f = new FunctionDescr( name.getText(), retType );
+            
+            			//System.err.println( "function :: " + name.getText() );
+            			f = new FunctionDescr( name.getText(), retType );
             		
             match(input,23,FOLLOW_23_in_function398); 
             following.push(FOLLOW_opt_eol_in_function400);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:373:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
             if ( (LA16_0>=EOL && LA16_0<=ID)||LA16_0==15 ) {
@@ -1013,20 +1015,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("372:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( \',\' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?", 16, 0, input);
+                    new NoViableAltException("373:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( \',\' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?", 16, 0, input);
 
                 throw nvae;
             }
             switch (alt16) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:33: (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:373:33: (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:33: (paramType= dotted_name )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:373:33: (paramType= dotted_name )?
                     int alt13=2;
                     alt13 = dfa13.predict(input); 
                     switch (alt13) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:34: paramType= dotted_name
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:373:34: paramType= dotted_name
                             {
                             following.push(FOLLOW_dotted_name_in_function410);
                             paramType=dotted_name();
@@ -1050,10 +1052,10 @@
                     opt_eol();
                     following.pop();
 
-
-                    					f.addParameter( paramType, paramName );
+                    
+                    					f.addParameter( paramType, paramName );
                     				
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:377:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
                     loop15:
                     do {
                         int alt15=2;
@@ -1065,19 +1067,19 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:377:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol
                     	    {
                     	    match(input,24,FOLLOW_24_in_function434); 
                     	    following.push(FOLLOW_opt_eol_in_function436);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:53: (paramType= dotted_name )?
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:377:53: (paramType= dotted_name )?
                     	    int alt14=2;
                     	    alt14 = dfa14.predict(input); 
                     	    switch (alt14) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:54: paramType= dotted_name
+                    	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:377:54: paramType= dotted_name
                     	            {
                     	            following.push(FOLLOW_dotted_name_in_function441);
                     	            paramType=dotted_name();
@@ -1101,8 +1103,8 @@
                     	    opt_eol();
                     	    following.pop();
 
-
-                    	    						f.addParameter( paramType, paramName );
+                    	    
+                    	    						f.addParameter( paramType, paramName );
                     	    					
 
                     	    }
@@ -1129,12 +1131,12 @@
             body=curly_chunk();
             following.pop();
 
-
-            				f.setText( body );
+            
+            				f.setText( body );
             			
             match(input,27,FOLLOW_27_in_function500); 
-
-            			packageDescr.addFunction( f );
+            
+            			packageDescr.addFunction( f );
             		
             following.push(FOLLOW_opt_eol_in_function508);
             opt_eol();
@@ -1156,19 +1158,19 @@
 
 
     // $ANTLR start query
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:397:1: query returns [QueryDescr query] : opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:398:1: query returns [QueryDescr query] : opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol ;
     public QueryDescr query() throws RecognitionException {   
         QueryDescr query;
         Token loc=null;
         String queryName = null;
 
 
-
-        		query = null;
+        
+        		query = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:402:17: ( opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:402:17: opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:403:17: ( opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:403:17: opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol
             {
             following.push(FOLLOW_opt_eol_in_query532);
             opt_eol();
@@ -1184,13 +1186,13 @@
             opt_eol();
             following.pop();
 
-             
-            			query = new QueryDescr( queryName, null ); 
-            			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-            			AndDescr lhs = new AndDescr(); query.setLhs( lhs ); 
-            			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+             
+            			query = new QueryDescr( queryName, null ); 
+            			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            			AndDescr lhs = new AndDescr(); query.setLhs( lhs ); 
+            			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
             int alt17=2;
             switch ( input.LA(1) ) {
             case 23:
@@ -1203,7 +1205,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 1, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 1, input);
 
                     throw nvae;
                 }
@@ -1218,7 +1220,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 2, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 2, input);
 
                     throw nvae;
                 }
@@ -1233,12 +1235,12 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 3, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 3, input);
 
                     throw nvae;
                 }
                 break;
-            case 51:
+            case 52:
                 int LA17_4 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1248,12 +1250,12 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 4, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 4, input);
 
                     throw nvae;
                 }
                 break;
-            case 52:
+            case 53:
                 int LA17_5 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1263,12 +1265,12 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 5, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 5, input);
 
                     throw nvae;
                 }
                 break;
-            case 53:
+            case 54:
                 int LA17_6 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1278,7 +1280,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 6, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 6, input);
 
                     throw nvae;
                 }
@@ -1293,7 +1295,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 7, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 7, input);
 
                     throw nvae;
                 }
@@ -1308,7 +1310,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 8, input);
+                        new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 8, input);
 
                     throw nvae;
                 }
@@ -1355,7 +1357,7 @@
             case 48:
             case 49:
             case 50:
-            case 54:
+            case 51:
             case 55:
             case 56:
             case 57:
@@ -1368,18 +1370,19 @@
             case 64:
             case 65:
             case 66:
+            case 67:
                 alt17=1;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("410:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 0, input);
+                    new NoViableAltException("411:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 17, 0, input);
 
                 throw nvae;
             }
 
             switch (alt17) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:411:25: {...}? expander_lhs_block[lhs]
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:412:25: {...}? expander_lhs_block[lhs]
                     {
                     if ( !( expander != null ) ) {
                         throw new FailedPredicateException(input, "query", " expander != null ");
@@ -1392,7 +1395,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:412:27: normal_lhs_block[lhs]
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:413:27: normal_lhs_block[lhs]
                     {
                     following.push(FOLLOW_normal_lhs_block_in_query568);
                     normal_lhs_block(lhs);
@@ -1425,7 +1428,7 @@
 
 
     // $ANTLR start template
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:418:1: template returns [FactTemplateDescr template] : opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:419:1: template returns [FactTemplateDescr template] : opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL ;
     public FactTemplateDescr template() throws RecognitionException {   
         FactTemplateDescr template;
         Token loc=null;
@@ -1433,12 +1436,12 @@
         FieldTemplateDescr slot = null;
 
 
-
-        		template = null;		
+        
+        		template = null;		
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:423:17: ( opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:423:17: opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:424:17: ( opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:424:17: opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL
             {
             following.push(FOLLOW_opt_eol_in_template609);
             opt_eol();
@@ -1449,11 +1452,11 @@
             templateName=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_template619); 
             match(input,EOL,FOLLOW_EOL_in_template621); 
-
-            			template = new FactTemplateDescr(templateName.getText());
-            			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
+            
+            			template = new FactTemplateDescr(templateName.getText());
+            			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:429:17: (slot= template_slot )+
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:430:17: (slot= template_slot )+
             int cnt18=0;
             loop18:
             do {
@@ -1466,14 +1469,14 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:430:25: slot= template_slot
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:431:25: slot= template_slot
             	    {
             	    following.push(FOLLOW_template_slot_in_template636);
             	    slot=template_slot();
             	    following.pop();
 
-
-            	    				template.addFieldTemplate(slot);
+            	    
+            	    				template.addFieldTemplate(slot);
             	    			
 
             	    }
@@ -1506,19 +1509,19 @@
 
 
     // $ANTLR start template_slot
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:438:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name name= ID (EOL|';');
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:439:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name name= ID (EOL|';');
     public FieldTemplateDescr template_slot() throws RecognitionException {   
         FieldTemplateDescr field;
         Token name=null;
         String fieldType = null;
 
 
-
-        		field = null;
+        
+        		field = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:444:18: (fieldType= dotted_name name= ID (EOL|';'))
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:444:18: fieldType= dotted_name name= ID (EOL|';')
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:445:18: (fieldType= dotted_name name= ID (EOL|';'))
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:445:18: fieldType= dotted_name name= ID (EOL|';')
             {
             following.push(FOLLOW_dotted_name_in_template_slot685);
             fieldType=dotted_name();
@@ -1536,11 +1539,11 @@
                 recoverFromMismatchedSet(input,mse,FOLLOW_set_in_template_slot693);    throw mse;
             }
 
-
-            			
-            			
-            			field = new FieldTemplateDescr(name.getText(), fieldType);
-            			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
+            
+            			
+            			
+            			field = new FieldTemplateDescr(name.getText(), fieldType);
+            			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
             		
 
             }
@@ -1558,7 +1561,7 @@
 
 
     // $ANTLR start rule
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:453:1: rule returns [RuleDescr rule] : opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:454:1: rule returns [RuleDescr rule] : opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol ;
     public RuleDescr rule() throws RecognitionException {   
         RuleDescr rule;
         Token loc=null;
@@ -1566,13 +1569,13 @@
         String ruleName = null;
 
 
-
-        		rule = null;
-        		String consequence = "";
+        
+        		rule = null;
+        		String consequence = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:459:17: ( opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:459:17: opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:460:17: ( opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:460:17: opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol
             {
             following.push(FOLLOW_opt_eol_in_rule728);
             opt_eol();
@@ -1588,12 +1591,12 @@
             opt_eol();
             following.pop();
 
-             
-            			debug( "start rule: " + ruleName );
-            			rule = new RuleDescr( ruleName, null ); 
-            			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+             
+            			debug( "start rule: " + ruleName );
+            			rule = new RuleDescr( ruleName, null ); 
+            			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:466:17: ( rule_attributes[rule] )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:467:17: ( rule_attributes[rule] )?
             int alt19=2;
             switch ( input.LA(1) ) {
             case 33:
@@ -1622,14 +1625,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("466:17: ( rule_attributes[rule] )?", 19, 0, input);
+                    new NoViableAltException("467:17: ( rule_attributes[rule] )?", 19, 0, input);
 
                 throw nvae;
             }
 
             switch (alt19) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:466:25: rule_attributes[rule]
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:467:25: rule_attributes[rule]
                     {
                     following.push(FOLLOW_rule_attributes_in_rule751);
                     rule_attributes(rule);
@@ -1645,7 +1648,7 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )?
             int alt26=2;
             int LA26_0 = input.LA(1);
             if ( LA26_0==EOL||LA26_0==15||LA26_0==32||LA26_0==34 ) {
@@ -1656,15 +1659,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("469:17: ( (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )? )?", 26, 0, input);
+                    new NoViableAltException("470:17: ( (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )? )?", 26, 0, input);
 
                 throw nvae;
             }
             switch (alt26) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
                     int alt22=2;
                     int LA22_0 = input.LA(1);
                     if ( LA22_0==32 ) {
@@ -1675,17 +1678,17 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("469:18: (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?", 22, 0, input);
+                            new NoViableAltException("470:18: (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?", 22, 0, input);
 
                         throw nvae;
                     }
                     switch (alt22) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             {
                             loc=(Token)input.LT(1);
                             match(input,32,FOLLOW_32_in_rule770); 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:36: ( ':' )?
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:36: ( ':' )?
                             int alt20=2;
                             int LA20_0 = input.LA(1);
                             if ( LA20_0==33 ) {
@@ -1698,23 +1701,23 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("469:36: ( \':\' )?", 20, 1, input);
+                                        new NoViableAltException("470:36: ( \':\' )?", 20, 1, input);
 
                                     throw nvae;
                                 }
                             }
-                            else if ( (LA20_0>=EOL && LA20_0<=32)||(LA20_0>=34 && LA20_0<=66) ) {
+                            else if ( (LA20_0>=EOL && LA20_0<=32)||(LA20_0>=34 && LA20_0<=67) ) {
                                 alt20=2;
                             }
                             else {
                                 NoViableAltException nvae =
-                                    new NoViableAltException("469:36: ( \':\' )?", 20, 0, input);
+                                    new NoViableAltException("470:36: ( \':\' )?", 20, 0, input);
 
                                 throw nvae;
                             }
                             switch (alt20) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:36: ':'
+                                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:470:36: ':'
                                     {
                                     match(input,33,FOLLOW_33_in_rule772); 
 
@@ -1727,11 +1730,11 @@
                             opt_eol();
                             following.pop();
 
-                             
-                            				AndDescr lhs = new AndDescr(); rule.setLhs( lhs ); 
-                            				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                             
+                            				AndDescr lhs = new AndDescr(); rule.setLhs( lhs ); 
+                            				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                             			
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             int alt21=2;
                             switch ( input.LA(1) ) {
                             case 23:
@@ -1744,7 +1747,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 1, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 1, input);
 
                                     throw nvae;
                                 }
@@ -1759,7 +1762,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 2, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 2, input);
 
                                     throw nvae;
                                 }
@@ -1774,7 +1777,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 3, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 3, input);
 
                                     throw nvae;
                                 }
@@ -1789,7 +1792,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 4, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 4, input);
 
                                     throw nvae;
                                 }
@@ -1804,12 +1807,12 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 5, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 5, input);
 
                                     throw nvae;
                                 }
                                 break;
-                            case 51:
+                            case 52:
                                 int LA21_6 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt21=1;
@@ -1819,12 +1822,12 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 6, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 6, input);
 
                                     throw nvae;
                                 }
                                 break;
-                            case 52:
+                            case 53:
                                 int LA21_7 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt21=1;
@@ -1834,12 +1837,12 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 7, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 7, input);
 
                                     throw nvae;
                                 }
                                 break;
-                            case 53:
+                            case 54:
                                 int LA21_8 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt21=1;
@@ -1849,7 +1852,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 8, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 8, input);
 
                                     throw nvae;
                                 }
@@ -1864,7 +1867,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 9, input);
+                                        new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 9, input);
 
                                     throw nvae;
                                 }
@@ -1910,7 +1913,7 @@
                             case 48:
                             case 49:
                             case 50:
-                            case 54:
+                            case 51:
                             case 55:
                             case 56:
                             case 57:
@@ -1923,18 +1926,19 @@
                             case 64:
                             case 65:
                             case 66:
+                            case 67:
                                 alt21=1;
                                 break;
                             default:
                                 NoViableAltException nvae =
-                                    new NoViableAltException("474:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 0, input);
+                                    new NoViableAltException("475:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 21, 0, input);
 
                                 throw nvae;
                             }
 
                             switch (alt21) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:475:33: {...}? expander_lhs_block[lhs]
+                                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:476:33: {...}? expander_lhs_block[lhs]
                                     {
                                     if ( !( expander != null ) ) {
                                         throw new FailedPredicateException(input, "rule", " expander != null ");
@@ -1947,7 +1951,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:476:35: normal_lhs_block[lhs]
+                                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:477:35: normal_lhs_block[lhs]
                                     {
                                     following.push(FOLLOW_normal_lhs_block_in_rule802);
                                     normal_lhs_block(lhs);
@@ -1965,7 +1969,7 @@
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:480:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:481:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
                     int alt25=2;
                     int LA25_0 = input.LA(1);
                     if ( LA25_0==EOL||LA25_0==15||LA25_0==34 ) {
@@ -1976,13 +1980,13 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("480:17: ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )?", 25, 0, input);
+                            new NoViableAltException("481:17: ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )?", 25, 0, input);
 
                         throw nvae;
                     }
                     switch (alt25) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:480:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )*
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:481:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )*
                             {
                             following.push(FOLLOW_opt_eol_in_rule825);
                             opt_eol();
@@ -1990,24 +1994,24 @@
 
                             loc=(Token)input.LT(1);
                             match(input,34,FOLLOW_34_in_rule829); 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:480:38: ( ':' )?
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:481:38: ( ':' )?
                             int alt23=2;
                             int LA23_0 = input.LA(1);
                             if ( LA23_0==33 ) {
                                 alt23=1;
                             }
-                            else if ( (LA23_0>=EOL && LA23_0<=32)||(LA23_0>=34 && LA23_0<=66) ) {
+                            else if ( (LA23_0>=EOL && LA23_0<=32)||(LA23_0>=34 && LA23_0<=67) ) {
                                 alt23=2;
                             }
                             else {
                                 NoViableAltException nvae =
-                                    new NoViableAltException("480:38: ( \':\' )?", 23, 0, input);
+                                    new NoViableAltException("481:38: ( \':\' )?", 23, 0, input);
 
                                 throw nvae;
                             }
                             switch (alt23) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:480:38: ':'
+                                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:481:38: ':'
                                     {
                                     match(input,33,FOLLOW_33_in_rule831); 
 
@@ -2020,7 +2024,7 @@
                             opt_eol();
                             following.pop();
 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:481:25: ( options {greedy=false; } : any= . )*
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:482:25: ( options {greedy=false; } : any= . )*
                             loop24:
                             do {
                                 int alt24=2;
@@ -2028,19 +2032,19 @@
                                 if ( LA24_0==29 ) {
                                     alt24=2;
                                 }
-                                else if ( (LA24_0>=EOL && LA24_0<=28)||(LA24_0>=30 && LA24_0<=66) ) {
+                                else if ( (LA24_0>=EOL && LA24_0<=28)||(LA24_0>=30 && LA24_0<=67) ) {
                                     alt24=1;
                                 }
 
 
                                 switch (alt24) {
                             	case 1 :
-                            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:481:52: any= .
+                            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:482:52: any= .
                             	    {
                             	    any=(Token)input.LT(1);
                             	    matchAny(input); 
-
-                            	    					consequence = consequence + " " + any.getText();
+                            	    
+                            	    					consequence = consequence + " " + any.getText();
                             	    				
 
                             	    }
@@ -2051,14 +2055,14 @@
                                 }
                             } while (true);
 
-
-                            				if ( expander != null ) {
-                            					String expanded = runThenExpander( consequence, offset(loc.getLine()) );
-                            					rule.setConsequence( expanded );
-                            				} else { 
-                            					rule.setConsequence( consequence ); 
-                            				}
-                            				rule.setConsequenceLocation(offset(loc.getLine()), loc.getCharPositionInLine());
+                            
+                            				if ( expander != null ) {
+                            					String expanded = runThenExpander( consequence, offset(loc.getLine()) );
+                            					rule.setConsequence( expanded );
+                            				} else { 
+                            					rule.setConsequence( consequence ); 
+                            				}
+                            				rule.setConsequenceLocation(offset(loc.getLine()), loc.getCharPositionInLine());
                             			
 
                             }
@@ -2077,8 +2081,8 @@
             opt_eol();
             following.pop();
 
-
-            			debug( "end rule: " + ruleName );
+            
+            			debug( "end rule: " + ruleName );
             		
 
             }
@@ -2096,13 +2100,13 @@
 
 
     // $ANTLR start extra_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:502:1: extra_statement : ( import_statement | global | function ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:503:1: extra_statement : ( import_statement | global | function ) ;
     public void extra_statement() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:504:9: ( ( import_statement | global | function ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:504:9: ( import_statement | global | function )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:505:9: ( ( import_statement | global | function ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:505:9: ( import_statement | global | function )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:504:9: ( import_statement | global | function )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:505:9: ( import_statement | global | function )
             int alt27=3;
             switch ( input.LA(1) ) {
             case 17:
@@ -2116,14 +2120,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("504:9: ( import_statement | global | function )", 27, 0, input);
+                    new NoViableAltException("505:9: ( import_statement | global | function )", 27, 0, input);
 
                 throw nvae;
             }
 
             switch (alt27) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:504:17: import_statement
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:505:17: import_statement
                     {
                     following.push(FOLLOW_import_statement_in_extra_statement903);
                     import_statement();
@@ -2133,7 +2137,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:505:17: global
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:506:17: global
                     {
                     following.push(FOLLOW_global_in_extra_statement908);
                     global();
@@ -2143,7 +2147,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:506:17: function
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:507:17: function
                     {
                     following.push(FOLLOW_function_in_extra_statement913);
                     function();
@@ -2171,16 +2175,16 @@
 
 
     // $ANTLR start rule_attributes
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:510:1: rule_attributes[RuleDescr rule] : ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:511:1: rule_attributes[RuleDescr rule] : ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* ;
     public void rule_attributes(RuleDescr rule) throws RecognitionException {   
         AttributeDescr a = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:25: ( 'attributes' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:25: ( 'attributes' )?
             int alt28=2;
             int LA28_0 = input.LA(1);
             if ( LA28_0==35 ) {
@@ -2191,13 +2195,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("512:25: ( \'attributes\' )?", 28, 0, input);
+                    new NoViableAltException("513:25: ( \'attributes\' )?", 28, 0, input);
 
                 throw nvae;
             }
             switch (alt28) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:25: 'attributes'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:25: 'attributes'
                     {
                     match(input,35,FOLLOW_35_in_rule_attributes932); 
 
@@ -2206,7 +2210,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:39: ( ':' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:39: ( ':' )?
             int alt29=2;
             int LA29_0 = input.LA(1);
             if ( LA29_0==33 ) {
@@ -2217,13 +2221,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("512:39: ( \':\' )?", 29, 0, input);
+                    new NoViableAltException("513:39: ( \':\' )?", 29, 0, input);
 
                 throw nvae;
             }
             switch (alt29) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:39: ':'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:513:39: ':'
                     {
                     match(input,33,FOLLOW_33_in_rule_attributes935); 
 
@@ -2236,7 +2240,7 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:513:25: ( ( ',' )? a= rule_attribute opt_eol )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:514:25: ( ( ',' )? a= rule_attribute opt_eol )*
             loop31:
             do {
                 int alt31=2;
@@ -2248,9 +2252,9 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:513:33: ( ',' )? a= rule_attribute opt_eol
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:514:33: ( ',' )? a= rule_attribute opt_eol
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:513:33: ( ',' )?
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:514:33: ( ',' )?
             	    int alt30=2;
             	    int LA30_0 = input.LA(1);
             	    if ( LA30_0==24 ) {
@@ -2261,13 +2265,13 @@
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("513:33: ( \',\' )?", 30, 0, input);
+            	            new NoViableAltException("514:33: ( \',\' )?", 30, 0, input);
 
             	        throw nvae;
             	    }
             	    switch (alt30) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:513:33: ','
+            	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:514:33: ','
             	            {
             	            match(input,24,FOLLOW_24_in_rule_attributes945); 
 
@@ -2284,8 +2288,8 @@
             	    opt_eol();
             	    following.pop();
 
-
-            	    					rule.addAttribute( a );
+            	    
+            	    					rule.addAttribute( a );
             	    				
 
             	    }
@@ -2312,17 +2316,17 @@
 
 
     // $ANTLR start rule_attribute
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:520:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:521:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );
     public AttributeDescr rule_attribute() throws RecognitionException {   
         AttributeDescr d;
         AttributeDescr a = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:525:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:526:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
             int alt32=6;
             switch ( input.LA(1) ) {
             case 36:
@@ -2345,14 +2349,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("520:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );", 32, 0, input);
+                    new NoViableAltException("521:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );", 32, 0, input);
 
                 throw nvae;
             }
 
             switch (alt32) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:525:25: a= salience
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:526:25: a= salience
                     {
                     following.push(FOLLOW_salience_in_rule_attribute991);
                     a=salience();
@@ -2363,7 +2367,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:526:25: a= no_loop
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:527:25: a= no_loop
                     {
                     following.push(FOLLOW_no_loop_in_rule_attribute1001);
                     a=no_loop();
@@ -2374,7 +2378,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:527:25: a= agenda_group
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:528:25: a= agenda_group
                     {
                     following.push(FOLLOW_agenda_group_in_rule_attribute1012);
                     a=agenda_group();
@@ -2385,7 +2389,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:528:25: a= duration
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:529:25: a= duration
                     {
                     following.push(FOLLOW_duration_in_rule_attribute1025);
                     a=duration();
@@ -2396,7 +2400,7 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:529:25: a= activation_group
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:530:25: a= activation_group
                     {
                     following.push(FOLLOW_activation_group_in_rule_attribute1039);
                     a=activation_group();
@@ -2407,7 +2411,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:530:25: a= auto_focus
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:531:25: a= auto_focus
                     {
                     following.push(FOLLOW_auto_focus_in_rule_attribute1050);
                     a=auto_focus();
@@ -2432,18 +2436,18 @@
 
 
     // $ANTLR start salience
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:534:1: salience returns [AttributeDescr d ] : loc= 'salience' opt_eol i= INT ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:535:1: salience returns [AttributeDescr d ] : loc= 'salience' opt_eol i= INT ( ';' )? opt_eol ;
     public AttributeDescr salience() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token i=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:539:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:539:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:540:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:540:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
             match(input,36,FOLLOW_36_in_salience1083); 
@@ -2453,7 +2457,7 @@
 
             i=(Token)input.LT(1);
             match(input,INT,FOLLOW_INT_in_salience1089); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:539:46: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:540:46: ( ';' )?
             int alt33=2;
             int LA33_0 = input.LA(1);
             if ( LA33_0==15 ) {
@@ -2464,13 +2468,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("539:46: ( \';\' )?", 33, 0, input);
+                    new NoViableAltException("540:46: ( \';\' )?", 33, 0, input);
 
                 throw nvae;
             }
             switch (alt33) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:539:46: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:540:46: ';'
                     {
                     match(input,15,FOLLOW_15_in_salience1091); 
 
@@ -2483,9 +2487,9 @@
             opt_eol();
             following.pop();
 
-
-            			d = new AttributeDescr( "salience", i.getText() );
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            
+            			d = new AttributeDescr( "salience", i.getText() );
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -2503,17 +2507,17 @@
 
 
     // $ANTLR start no_loop
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:546:1: no_loop returns [AttributeDescr d] : ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:547:1: no_loop returns [AttributeDescr d] : ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) );
     public AttributeDescr no_loop() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token t=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:551:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:552:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
             int alt36=2;
             int LA36_0 = input.LA(1);
             if ( LA36_0==37 ) {
@@ -2526,23 +2530,23 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("546:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 36, 1, input);
+                        new NoViableAltException("547:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 36, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("546:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 36, 0, input);
+                    new NoViableAltException("547:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 36, 0, input);
 
                 throw nvae;
             }
             switch (alt36) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:551:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:552:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:551:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:552:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:552:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:553:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
                     match(input,37,FOLLOW_37_in_no_loop1129); 
@@ -2550,7 +2554,7 @@
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:552:47: ( ';' )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:553:47: ( ';' )?
                     int alt34=2;
                     int LA34_0 = input.LA(1);
                     if ( LA34_0==15 ) {
@@ -2561,13 +2565,13 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("552:47: ( \';\' )?", 34, 0, input);
+                            new NoViableAltException("553:47: ( \';\' )?", 34, 0, input);
 
                         throw nvae;
                     }
                     switch (alt34) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:552:47: ';'
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:553:47: ';'
                             {
                             match(input,15,FOLLOW_15_in_no_loop1133); 
 
@@ -2580,9 +2584,9 @@
                     opt_eol();
                     following.pop();
 
-
-                    				d = new AttributeDescr( "no-loop", "true" );
-                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                    
+                    				d = new AttributeDescr( "no-loop", "true" );
+                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                     			
 
                     }
@@ -2591,10 +2595,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:559:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:560:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:559:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:560:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:560:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:561:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
                     match(input,37,FOLLOW_37_in_no_loop1161); 
@@ -2604,7 +2608,7 @@
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:560:54: ( ';' )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:561:54: ( ';' )?
                     int alt35=2;
                     int LA35_0 = input.LA(1);
                     if ( LA35_0==15 ) {
@@ -2615,13 +2619,13 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("560:54: ( \';\' )?", 35, 0, input);
+                            new NoViableAltException("561:54: ( \';\' )?", 35, 0, input);
 
                         throw nvae;
                     }
                     switch (alt35) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:560:54: ';'
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:561:54: ';'
                             {
                             match(input,15,FOLLOW_15_in_no_loop1169); 
 
@@ -2634,9 +2638,9 @@
                     opt_eol();
                     following.pop();
 
-
-                    				d = new AttributeDescr( "no-loop", t.getText() );
-                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                    
+                    				d = new AttributeDescr( "no-loop", t.getText() );
+                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                     			
 
                     }
@@ -2659,17 +2663,17 @@
 
 
     // $ANTLR start auto_focus
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:570:1: auto_focus returns [AttributeDescr d] : ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:571:1: auto_focus returns [AttributeDescr d] : ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) );
     public AttributeDescr auto_focus() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token t=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:575:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:576:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
             int alt39=2;
             int LA39_0 = input.LA(1);
             if ( LA39_0==38 ) {
@@ -2682,23 +2686,23 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("570:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 39, 1, input);
+                        new NoViableAltException("571:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 39, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("570:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 39, 0, input);
+                    new NoViableAltException("571:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 39, 0, input);
 
                 throw nvae;
             }
             switch (alt39) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:575:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:576:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:575:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:576:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:576:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:577:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
                     match(input,38,FOLLOW_38_in_auto_focus1218); 
@@ -2706,7 +2710,7 @@
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:576:50: ( ';' )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:577:50: ( ';' )?
                     int alt37=2;
                     int LA37_0 = input.LA(1);
                     if ( LA37_0==15 ) {
@@ -2717,13 +2721,13 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("576:50: ( \';\' )?", 37, 0, input);
+                            new NoViableAltException("577:50: ( \';\' )?", 37, 0, input);
 
                         throw nvae;
                     }
                     switch (alt37) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:576:50: ';'
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:577:50: ';'
                             {
                             match(input,15,FOLLOW_15_in_auto_focus1222); 
 
@@ -2736,9 +2740,9 @@
                     opt_eol();
                     following.pop();
 
-
-                    				d = new AttributeDescr( "auto-focus", "true" );
-                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                    
+                    				d = new AttributeDescr( "auto-focus", "true" );
+                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                     			
 
                     }
@@ -2747,10 +2751,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:583:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:584:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:583:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:584:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:584:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:585:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
                     match(input,38,FOLLOW_38_in_auto_focus1250); 
@@ -2760,7 +2764,7 @@
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:584:57: ( ';' )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:585:57: ( ';' )?
                     int alt38=2;
                     int LA38_0 = input.LA(1);
                     if ( LA38_0==15 ) {
@@ -2771,13 +2775,13 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("584:57: ( \';\' )?", 38, 0, input);
+                            new NoViableAltException("585:57: ( \';\' )?", 38, 0, input);
 
                         throw nvae;
                     }
                     switch (alt38) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:584:57: ';'
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:585:57: ';'
                             {
                             match(input,15,FOLLOW_15_in_auto_focus1258); 
 
@@ -2790,9 +2794,9 @@
                     opt_eol();
                     following.pop();
 
-
-                    				d = new AttributeDescr( "auto-focus", t.getText() );
-                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+                    
+                    				d = new AttributeDescr( "auto-focus", t.getText() );
+                    				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                     			
 
                     }
@@ -2815,18 +2819,18 @@
 
 
     // $ANTLR start activation_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:594:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:595:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol ;
     public AttributeDescr activation_group() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token name=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:599:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:599:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:600:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:600:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
             match(input,39,FOLLOW_39_in_activation_group1303); 
@@ -2836,7 +2840,7 @@
 
             name=(Token)input.LT(1);
             match(input,STRING,FOLLOW_STRING_in_activation_group1309); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:599:60: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:600:60: ( ';' )?
             int alt40=2;
             int LA40_0 = input.LA(1);
             if ( LA40_0==15 ) {
@@ -2847,13 +2851,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("599:60: ( \';\' )?", 40, 0, input);
+                    new NoViableAltException("600:60: ( \';\' )?", 40, 0, input);
 
                 throw nvae;
             }
             switch (alt40) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:599:60: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:600:60: ';'
                     {
                     match(input,15,FOLLOW_15_in_activation_group1311); 
 
@@ -2866,9 +2870,9 @@
             opt_eol();
             following.pop();
 
-
-            			d = new AttributeDescr( "activation-group", getString( name ) );
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            
+            			d = new AttributeDescr( "activation-group", getString( name ) );
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -2886,18 +2890,18 @@
 
 
     // $ANTLR start agenda_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:606:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:607:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol ;
     public AttributeDescr agenda_group() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token name=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:612:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:612:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
             match(input,40,FOLLOW_40_in_agenda_group1343); 
@@ -2907,7 +2911,7 @@
 
             name=(Token)input.LT(1);
             match(input,STRING,FOLLOW_STRING_in_agenda_group1349); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:56: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:612:56: ( ';' )?
             int alt41=2;
             int LA41_0 = input.LA(1);
             if ( LA41_0==15 ) {
@@ -2918,13 +2922,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("611:56: ( \';\' )?", 41, 0, input);
+                    new NoViableAltException("612:56: ( \';\' )?", 41, 0, input);
 
                 throw nvae;
             }
             switch (alt41) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:56: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:612:56: ';'
                     {
                     match(input,15,FOLLOW_15_in_agenda_group1351); 
 
@@ -2937,9 +2941,9 @@
             opt_eol();
             following.pop();
 
-
-            			d = new AttributeDescr( "agenda-group", getString( name ) );
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            
+            			d = new AttributeDescr( "agenda-group", getString( name ) );
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -2957,18 +2961,18 @@
 
 
     // $ANTLR start duration
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:619:1: duration returns [AttributeDescr d] : loc= 'duration' opt_eol i= INT ( ';' )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:620:1: duration returns [AttributeDescr d] : loc= 'duration' opt_eol i= INT ( ';' )? opt_eol ;
     public AttributeDescr duration() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
         Token i=null;
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:624:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:624:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:625:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:625:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
             match(input,41,FOLLOW_41_in_duration1386); 
@@ -2978,7 +2982,7 @@
 
             i=(Token)input.LT(1);
             match(input,INT,FOLLOW_INT_in_duration1392); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:624:46: ( ';' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:625:46: ( ';' )?
             int alt42=2;
             int LA42_0 = input.LA(1);
             if ( LA42_0==15 ) {
@@ -2989,13 +2993,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("624:46: ( \';\' )?", 42, 0, input);
+                    new NoViableAltException("625:46: ( \';\' )?", 42, 0, input);
 
                 throw nvae;
             }
             switch (alt42) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:624:46: ';'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:625:46: ';'
                     {
                     match(input,15,FOLLOW_15_in_duration1394); 
 
@@ -3008,9 +3012,9 @@
             opt_eol();
             following.pop();
 
-
-            			d = new AttributeDescr( "duration", i.getText() );
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            
+            			d = new AttributeDescr( "duration", i.getText() );
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -3028,28 +3032,28 @@
 
 
     // $ANTLR start normal_lhs_block
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:632:1: normal_lhs_block[AndDescr descrs] : (d= lhs opt_eol )* opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:633:1: normal_lhs_block[AndDescr descrs] : (d= lhs opt_eol )* opt_eol ;
     public void normal_lhs_block(AndDescr descrs) throws RecognitionException {   
         PatternDescr d = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:634:17: ( (d= lhs opt_eol )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:634:17: (d= lhs opt_eol )* opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:635:17: ( (d= lhs opt_eol )* opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:635:17: (d= lhs opt_eol )* opt_eol
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:634:17: (d= lhs opt_eol )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:635:17: (d= lhs opt_eol )*
             loop43:
             do {
                 int alt43=2;
                 int LA43_0 = input.LA(1);
-                if ( LA43_0==ID||LA43_0==23||(LA43_0>=51 && LA43_0<=53) ) {
+                if ( LA43_0==ID||LA43_0==23||(LA43_0>=52 && LA43_0<=54) ) {
                     alt43=1;
                 }
 
 
                 switch (alt43) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:634:25: d= lhs opt_eol
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:635:25: d= lhs opt_eol
             	    {
             	    following.push(FOLLOW_lhs_in_normal_lhs_block1423);
             	    d=lhs();
@@ -3089,22 +3093,22 @@
 
 
     // $ANTLR start expander_lhs_block
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:642:1: expander_lhs_block[AndDescr descrs] : ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:643:1: expander_lhs_block[AndDescr descrs] : ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* ;
     public void expander_lhs_block(AndDescr descrs) throws RecognitionException {   
         Token loc=null;
         String text = null;
 
 
-
-        		String lhsBlock = null;
-        		String eol = System.getProperty( "line.separator" );
-        		List constraints = null;
+        
+        		String lhsBlock = null;
+        		String eol = System.getProperty( "line.separator" );
+        		List constraints = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:649:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:649:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:650:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:650:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:649:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:650:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
             loop45:
             do {
                 int alt45=2;
@@ -3177,6 +3181,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     alt45=1;
                     break;
                 case 15:
@@ -3187,7 +3192,7 @@
 
                 switch (alt45) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:650:25: text= paren_chunk loc= EOL ( EOL )*
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:651:25: text= paren_chunk loc= EOL ( EOL )*
             	    {
             	    following.push(FOLLOW_paren_chunk_in_expander_lhs_block1478);
             	    text=paren_chunk();
@@ -3195,31 +3200,31 @@
 
             	    loc=(Token)input.LT(1);
             	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1482); 
-
-            	    				//only expand non null
-            	    				if (text != null) {
-            	    					if (text.trim().startsWith("-")) {
-            	    						if (constraints == null) {
-            	    							constraints = new ArrayList();
-            	    						}
-            	    						constraints.add(runWhenExpander( text, offset(loc.getLine())));
-            	    					} else {
-            	    						if (constraints != null) {
-            	    							lhsBlock = applyConstraints(constraints, lhsBlock);
-            	    							constraints = null;
-            	    						}
-            	    					
-            	    					
-            	    						if (lhsBlock == null) {					
-            	    							lhsBlock = runWhenExpander( text, offset(loc.getLine()));
-            	    						} else {
-            	    							lhsBlock = lhsBlock + eol + runWhenExpander( text, offset(loc.getLine()));
-            	    						}
-            	    					}
-            	    					text = null;
-            	    				}
+            	    
+            	    				//only expand non null
+            	    				if (text != null) {
+            	    					if (text.trim().startsWith("-")) {
+            	    						if (constraints == null) {
+            	    							constraints = new ArrayList();
+            	    						}
+            	    						constraints.add(runWhenExpander( text, offset(loc.getLine())));
+            	    					} else {
+            	    						if (constraints != null) {
+            	    							lhsBlock = applyConstraints(constraints, lhsBlock);
+            	    							constraints = null;
+            	    						}
+            	    					
+            	    					
+            	    						if (lhsBlock == null) {					
+            	    							lhsBlock = runWhenExpander( text, offset(loc.getLine()));
+            	    						} else {
+            	    							lhsBlock = lhsBlock + eol + runWhenExpander( text, offset(loc.getLine()));
+            	    						}
+            	    					}
+            	    					text = null;
+            	    				}
             	    			
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:676:17: ( EOL )*
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:677:17: ( EOL )*
             	    loop44:
             	    do {
             	        int alt44=2;
@@ -3231,7 +3236,7 @@
 
             	        switch (alt44) {
             	    	case 1 :
-            	    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:676:18: EOL
+            	    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:677:18: EOL
             	    	    {
             	    	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1497); 
 
@@ -3252,12 +3257,12 @@
                 }
             } while (true);
 
-            	
-            			//flush out any constraints left handing before the RHS
-            			lhsBlock = applyConstraints(constraints, lhsBlock);
-            			if (lhsBlock != null) {
-            				reparseLhs(lhsBlock, descrs);
-            			}
+            	
+            			//flush out any constraints left handing before the RHS
+            			lhsBlock = applyConstraints(constraints, lhsBlock);
+            			if (lhsBlock != null) {
+            				reparseLhs(lhsBlock, descrs);
+            			}
             		
 
             }
@@ -3275,18 +3280,18 @@
 
 
     // $ANTLR start lhs
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:690:1: lhs returns [PatternDescr d] : l= lhs_or ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:691:1: lhs returns [PatternDescr d] : l= lhs_or ;
     public PatternDescr lhs() throws RecognitionException {   
         PatternDescr d;
         PatternDescr l = null;
 
 
-
-        		d=null;
+        
+        		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:694:17: (l= lhs_or )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:694:17: l= lhs_or
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:695:17: (l= lhs_or )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:695:17: l= lhs_or
             {
             following.push(FOLLOW_lhs_or_in_lhs1539);
             l=lhs_or();
@@ -3309,22 +3314,22 @@
 
 
     // $ANTLR start lhs_column
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:698:1: lhs_column returns [PatternDescr d] : (f= fact_binding | f= fact );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:699:1: lhs_column returns [PatternDescr d] : (f= fact_binding | f= fact );
     public PatternDescr lhs_column() throws RecognitionException {   
         PatternDescr d;
         PatternDescr f = null;
 
 
-
-        		d=null;
+        
+        		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:702:17: (f= fact_binding | f= fact )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:703:17: (f= fact_binding | f= fact )
             int alt46=2;
             alt46 = dfa46.predict(input); 
             switch (alt46) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:702:17: f= fact_binding
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:703:17: f= fact_binding
                     {
                     following.push(FOLLOW_fact_binding_in_lhs_column1567);
                     f=fact_binding();
@@ -3335,7 +3340,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:703:17: f= fact
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:704:17: f= fact
                     {
                     following.push(FOLLOW_fact_in_lhs_column1576);
                     f=fact();
@@ -3360,18 +3365,18 @@
 
 
     // $ANTLR start from_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:706:1: from_statement returns [FromDescr d] : 'from' opt_eol ds= from_source ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:707:1: from_statement returns [FromDescr d] : 'from' opt_eol ds= from_source ;
     public FromDescr from_statement() throws RecognitionException {   
         FromDescr d;
         DeclarativeInvokerDescr ds = null;
 
 
-
-        		d=factory.createFrom();
+        
+        		d=factory.createFrom();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:711:17: ( 'from' opt_eol ds= from_source )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:711:17: 'from' opt_eol ds= from_source
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:712:17: ( 'from' opt_eol ds= from_source )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:712:17: 'from' opt_eol ds= from_source
             {
             match(input,42,FOLLOW_42_in_from_statement1604); 
             following.push(FOLLOW_opt_eol_in_from_statement1606);
@@ -3382,10 +3387,10 @@
             ds=from_source();
             following.pop();
 
-
-             			d.setDataSource(ds);
+            
+             			d.setDataSource(ds);
+             		
              		
-             		
 
             }
 
@@ -3402,7 +3407,7 @@
 
 
     // $ANTLR start from_source
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:721:1: from_source returns [DeclarativeInvokerDescr ds] : ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:722:1: from_source returns [DeclarativeInvokerDescr ds] : ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) );
     public DeclarativeInvokerDescr from_source() throws RecognitionException {   
         DeclarativeInvokerDescr ds;
         Token var=null;
@@ -3412,29 +3417,29 @@
         ArrayList args = null;
 
 
-
-        		ds = null;
+        
+        		ds = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:726:17: ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:727:17: ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) )
             int alt47=3;
             alt47 = dfa47.predict(input); 
             switch (alt47) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:726:17: (var= ID '.' field= ID )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:727:17: (var= ID '.' field= ID )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:726:17: (var= ID '.' field= ID )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:726:18: var= ID '.' field= ID
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:727:17: (var= ID '.' field= ID )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:727:18: var= ID '.' field= ID
                     {
                     var=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_from_source1654); 
                     match(input,18,FOLLOW_18_in_from_source1656); 
                     field=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_from_source1660); 
-
-                    			  FieldAccessDescr fa = new FieldAccessDescr(var.getText(), field.getText());	
-                    			  fa.setLine(var.getLine());
-                    			  ds = fa;
+                    
+                    			  FieldAccessDescr fa = new FieldAccessDescr(var.getText(), field.getText());	
+                    			  fa.setLine(var.getLine());
+                    			  ds = fa;
                     			 
 
                     }
@@ -3443,10 +3448,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:737:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:18: var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:737:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:737:18: var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
                     {
                     var=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_from_source1687); 
@@ -3471,11 +3476,11 @@
                     following.pop();
 
                     match(input,25,FOLLOW_25_in_from_source1708); 
-
-                    			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
-                    			mc.setArguments(args);
-                    			mc.setLine(var.getLine());
-                    			ds = mc;
+                    
+                    			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
+                    			mc.setArguments(args);
+                    			mc.setLine(var.getLine());
+                    			ds = mc;
                     			
 
                     }
@@ -3484,10 +3489,10 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:745:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:746:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:745:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:745:18: functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:746:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:746:18: functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
                     {
                     functionName=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_from_source1730); 
@@ -3509,11 +3514,11 @@
                     following.pop();
 
                     match(input,25,FOLLOW_25_in_from_source1744); 
-
-                    			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
-                    			fc.setLine(functionName.getLine());
-                    			fc.setArguments(args);
-                    			ds = fc;
+                    
+                    			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
+                    			fc.setLine(functionName.getLine());
+                    			fc.setArguments(args);
+                    			ds = fc;
                     			
 
                     }
@@ -3536,23 +3541,23 @@
 
 
     // $ANTLR start argument_list
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:758:1: argument_list returns [ArrayList args] : (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:759:1: argument_list returns [ArrayList args] : (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? ;
     public ArrayList argument_list() throws RecognitionException {   
         ArrayList args;
         ArgumentValueDescr param = null;
 
 
-
-        		args = new ArrayList();
+        
+        		args = new ArrayList();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:763:17: ( (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:763:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:764:17: ( (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:764:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:763:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:764:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
             int alt49=2;
             int LA49_0 = input.LA(1);
-            if ( (LA49_0>=ID && LA49_0<=FLOAT)||LA49_0==43 ) {
+            if ( (LA49_0>=ID && LA49_0<=FLOAT)||LA49_0==26||LA49_0==43 ) {
                 alt49=1;
             }
             else if ( LA49_0==EOL||LA49_0==15||LA49_0==25 ) {
@@ -3560,31 +3565,31 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("763:17: (param= argument_value ( opt_eol \',\' opt_eol param= argument_value )* )?", 49, 0, input);
+                    new NoViableAltException("764:17: (param= argument_value ( opt_eol \',\' opt_eol param= argument_value )* )?", 49, 0, input);
 
                 throw nvae;
             }
             switch (alt49) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:763:18: param= argument_value ( opt_eol ',' opt_eol param= argument_value )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:764:18: param= argument_value ( opt_eol ',' opt_eol param= argument_value )*
                     {
                     following.push(FOLLOW_argument_value_in_argument_list1787);
                     param=argument_value();
                     following.pop();
 
-
-                    			if (param != null) {
-                    				args.add(param);
-                    			}
+                    
+                    			if (param != null) {
+                    				args.add(param);
+                    			}
                     		
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:769:17: ( opt_eol ',' opt_eol param= argument_value )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:770:17: ( opt_eol ',' opt_eol param= argument_value )*
                     loop48:
                     do {
                         int alt48=2;
                         alt48 = dfa48.predict(input); 
                         switch (alt48) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:770:25: opt_eol ',' opt_eol param= argument_value
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:771:25: opt_eol ',' opt_eol param= argument_value
                     	    {
                     	    following.push(FOLLOW_opt_eol_in_argument_list1803);
                     	    opt_eol();
@@ -3599,10 +3604,10 @@
                     	    param=argument_value();
                     	    following.pop();
 
-
-                    	    				if (param != null) {
-                    	    					args.add(param);
-                    	    				}
+                    	    
+                    	    				if (param != null) {
+                    	    					args.add(param);
+                    	    				}
                     	    			
 
                     	    }
@@ -3635,21 +3640,23 @@
 
 
     // $ANTLR start argument_value
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:779:1: argument_value returns [ArgumentValueDescr value] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:780:1: argument_value returns [ArgumentValueDescr value] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map ) ;
     public ArgumentValueDescr argument_value() throws RecognitionException {   
         ArgumentValueDescr value;
         Token t=null;
+        ArgumentValueDescr.MapDescr m = null;
 
 
-        		value = null;
-        		String text = null;
+        
+        		value = null;
+        		String text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:784:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:784:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:785:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:785:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:784:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' )
-            int alt50=6;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:785:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map )
+            int alt50=8;
             switch ( input.LA(1) ) {
             case STRING:
                 alt50=1;
@@ -3669,69 +3676,92 @@
             case 43:
                 alt50=6;
                 break;
+            case 26:
+                alt50=8;
+                break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("784:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= \'null\' )", 50, 0, input);
+                    new NoViableAltException("785:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= \'null\' | t= \'null\' | m= inline_map )", 50, 0, input);
 
                 throw nvae;
             }
 
             switch (alt50) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:784:25: t= STRING
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:785:25: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_argument_value1849); 
+                    match(input,STRING,FOLLOW_STRING_in_argument_value1851); 
                      text = getString( t );  value=new ArgumentValueDescr(ArgumentValueDescr.STRING, text);
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:785:25: t= INT
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:786:25: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_argument_value1860); 
+                    match(input,INT,FOLLOW_INT_in_argument_value1862); 
                      text = t.getText();  value=new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, text);
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:786:25: t= FLOAT
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:787:25: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_argument_value1873); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_argument_value1875); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.DECIMAL, text); 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:787:25: t= BOOL
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:788:25: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_argument_value1884); 
+                    match(input,BOOL,FOLLOW_BOOL_in_argument_value1886); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.BOOLEAN, text); 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:788:25: t= ID
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:789:25: t= ID
                     {
                     t=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_argument_value1896); 
+                    match(input,ID,FOLLOW_ID_in_argument_value1898); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, text);
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:789:25: t= 'null'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:790:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_argument_value1907); 
+                    match(input,43,FOLLOW_43_in_argument_value1909); 
                      text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);
 
                     }
                     break;
+                case 7 :
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:791:25: t= 'null'
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,43,FOLLOW_43_in_argument_value1920); 
+                     text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);
 
+                    }
+                    break;
+                case 8 :
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:792:25: m= inline_map
+                    {
+                    following.push(FOLLOW_inline_map_in_argument_value1939);
+                    m=inline_map();
+                    following.pop();
+
+                      value=new ArgumentValueDescr(ArgumentValueDescr.MAP, m.getKeyValuePairs() ); 
+
+                    }
+                    break;
+
             }
 
 
@@ -3749,39 +3779,182 @@
     // $ANTLR end argument_value
 
 
+    // $ANTLR start inline_map
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:796:1: inline_map returns [ArgumentValueDescr.MapDescr mapDescr] : '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' ;
+    public ArgumentValueDescr.MapDescr inline_map() throws RecognitionException {   
+        ArgumentValueDescr.MapDescr mapDescr;
+        ArgumentValueDescr key = null;
+
+        ArgumentValueDescr value = null;
+
+
+        
+                mapDescr = new ArgumentValueDescr.MapDescr();
+            
+        try {
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:800:8: ( '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:800:8: '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}'
+            {
+            match(input,26,FOLLOW_26_in_inline_map1979); 
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:801:12: (key= argument_value '=>' value= argument_value )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:801:14: key= argument_value '=>' value= argument_value
+            {
+            following.push(FOLLOW_argument_value_in_inline_map1997);
+            key=argument_value();
+            following.pop();
+
+            match(input,44,FOLLOW_44_in_inline_map1999); 
+            following.push(FOLLOW_argument_value_in_inline_map2003);
+            value=argument_value();
+            following.pop();
+
+            
+                             if ( key != null ) {
+                                 mapDescr.add( new ArgumentValueDescr.KeyValuePairDescr( key, value ) );
+                             }
+                         
+
+            }
+
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:12: ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )*
+            loop53:
+            do {
+                int alt53=2;
+                int LA53_0 = input.LA(1);
+                if ( LA53_0==EOL||LA53_0==24 ) {
+                    alt53=1;
+                }
+
+
+                switch (alt53) {
+            	case 1 :
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:14: ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value
+            	    {
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:14: ( EOL )?
+            	    int alt51=2;
+            	    int LA51_0 = input.LA(1);
+            	    if ( LA51_0==EOL ) {
+            	        alt51=1;
+            	    }
+            	    else if ( LA51_0==24 ) {
+            	        alt51=2;
+            	    }
+            	    else {
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("808:14: ( EOL )?", 51, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt51) {
+            	        case 1 :
+            	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:15: EOL
+            	            {
+            	            match(input,EOL,FOLLOW_EOL_in_inline_map2046); 
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    match(input,24,FOLLOW_24_in_inline_map2050); 
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:25: ( EOL )?
+            	    int alt52=2;
+            	    int LA52_0 = input.LA(1);
+            	    if ( LA52_0==EOL ) {
+            	        alt52=1;
+            	    }
+            	    else if ( (LA52_0>=ID && LA52_0<=FLOAT)||LA52_0==26||LA52_0==43 ) {
+            	        alt52=2;
+            	    }
+            	    else {
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("808:25: ( EOL )?", 52, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt52) {
+            	        case 1 :
+            	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:808:26: EOL
+            	            {
+            	            match(input,EOL,FOLLOW_EOL_in_inline_map2053); 
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    following.push(FOLLOW_argument_value_in_inline_map2059);
+            	    key=argument_value();
+            	    following.pop();
+
+            	    match(input,44,FOLLOW_44_in_inline_map2061); 
+            	    following.push(FOLLOW_argument_value_in_inline_map2065);
+            	    value=argument_value();
+            	    following.pop();
+
+            	    
+            	                     if ( key != null ) {
+            	                         mapDescr.add( new ArgumentValueDescr.KeyValuePairDescr( key, value ) );
+            	                     }
+            	                 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop53;
+                }
+            } while (true);
+
+            match(input,27,FOLLOW_27_in_inline_map2101); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return mapDescr;
+    }
+    // $ANTLR end inline_map
+
+
     // $ANTLR start fact_binding
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:793:1: fact_binding returns [PatternDescr d] : id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:817:1: fact_binding returns [PatternDescr d] : id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] ;
     public PatternDescr fact_binding() throws RecognitionException {   
         PatternDescr d;
         Token id=null;
         PatternDescr fe = null;
 
 
-
-        		d=null;
-        		boolean multi=false;
+        
+        		d=null;
+        		boolean multi=false;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:799:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:799:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:823:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:823:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding1946); 
-            following.push(FOLLOW_opt_eol_in_fact_binding1956);
+            match(input,ID,FOLLOW_ID_in_fact_binding2133); 
+            following.push(FOLLOW_opt_eol_in_fact_binding2143);
             opt_eol();
             following.pop();
 
-            match(input,33,FOLLOW_33_in_fact_binding1958); 
-            following.push(FOLLOW_opt_eol_in_fact_binding1960);
+            match(input,33,FOLLOW_33_in_fact_binding2145); 
+            following.push(FOLLOW_opt_eol_in_fact_binding2147);
             opt_eol();
             following.pop();
 
-            following.push(FOLLOW_fact_expression_in_fact_binding1964);
+            following.push(FOLLOW_fact_expression_in_fact_binding2151);
             fe=fact_expression(id.getText());
             following.pop();
 
-
-             			d=fe;
+            
+             			d=fe;
              		
 
             }
@@ -3799,7 +3972,7 @@
 
 
     // $ANTLR start fact_expression
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:807:2: fact_expression[String id] returns [PatternDescr pd] : ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:831:2: fact_expression[String id] returns [PatternDescr pd] : ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* );
     public PatternDescr fact_expression(String id) throws RecognitionException {   
         PatternDescr pd;
         PatternDescr fe = null;
@@ -3807,112 +3980,112 @@
         PatternDescr f = null;
 
 
-
-         		pd = null;
-         		boolean multi = false;
+        
+         		pd = null;
+         		boolean multi = false;
          	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
-            int alt52=2;
-            int LA52_0 = input.LA(1);
-            if ( LA52_0==23 ) {
-                alt52=1;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:836:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+            if ( LA55_0==23 ) {
+                alt55=1;
             }
-            else if ( LA52_0==ID ) {
-                alt52=2;
+            else if ( LA55_0==ID ) {
+                alt55=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("807:2: fact_expression[String id] returns [PatternDescr pd] : ( \'(\' opt_eol fe= fact_expression[id] opt_eol \')\' | f= fact opt_eol ( (\'or\'|\'||\') opt_eol f= fact )* );", 52, 0, input);
+                    new NoViableAltException("831:2: fact_expression[String id] returns [PatternDescr pd] : ( \'(\' opt_eol fe= fact_expression[id] opt_eol \')\' | f= fact opt_eol ( (\'or\'|\'||\') opt_eol f= fact )* );", 55, 0, input);
 
                 throw nvae;
             }
-            switch (alt52) {
+            switch (alt55) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:836:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_fact_expression1996); 
-                    following.push(FOLLOW_opt_eol_in_fact_expression1998);
+                    match(input,23,FOLLOW_23_in_fact_expression2183); 
+                    following.push(FOLLOW_opt_eol_in_fact_expression2185);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_fact_expression_in_fact_expression2002);
+                    following.push(FOLLOW_fact_expression_in_fact_expression2189);
                     fe=fact_expression(id);
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_fact_expression2004);
+                    following.push(FOLLOW_opt_eol_in_fact_expression2191);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_fact_expression2006); 
+                    match(input,25,FOLLOW_25_in_fact_expression2193); 
                      pd=fe; 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:813:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:837:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
                     {
-                    following.push(FOLLOW_fact_in_fact_expression2017);
+                    following.push(FOLLOW_fact_in_fact_expression2204);
                     f=fact();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_fact_expression2019);
+                    following.push(FOLLOW_opt_eol_in_fact_expression2206);
                     opt_eol();
                     following.pop();
 
-
-                     			((ColumnDescr)f).setIdentifier( id );
-                     			pd = f;
+                    
+                     			((ColumnDescr)f).setIdentifier( id );
+                     			pd = f;
                      		
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:818:17: ( ('or'|'||') opt_eol f= fact )*
-                    loop51:
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:842:17: ( ('or'|'||') opt_eol f= fact )*
+                    loop54:
                     do {
-                        int alt51=2;
-                        int LA51_0 = input.LA(1);
-                        if ( (LA51_0>=44 && LA51_0<=45) ) {
-                            alt51=1;
+                        int alt54=2;
+                        int LA54_0 = input.LA(1);
+                        if ( (LA54_0>=45 && LA54_0<=46) ) {
+                            alt54=1;
                         }
 
 
-                        switch (alt51) {
+                        switch (alt54) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:818:25: ('or'|'||') opt_eol f= fact
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:842:25: ('or'|'||') opt_eol f= fact
                     	    {
-                    	    if ( (input.LA(1)>=44 && input.LA(1)<=45) ) {
+                    	    if ( (input.LA(1)>=45 && input.LA(1)<=46) ) {
                     	        input.consume();
                     	        errorRecovery=false;
                     	    }
                     	    else {
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2032);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2219);    throw mse;
                     	    }
 
-                    	    following.push(FOLLOW_opt_eol_in_fact_expression2037);
+                    	    following.push(FOLLOW_opt_eol_in_fact_expression2224);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    	if ( ! multi ) {
-                    	     					PatternDescr first = pd;
-                    	     					pd = new OrDescr();
-                    	     					((OrDescr)pd).addDescr( first );
-                    	     					multi=true;
-                    	     				}
+                    	    	if ( ! multi ) {
+                    	     					PatternDescr first = pd;
+                    	     					pd = new OrDescr();
+                    	     					((OrDescr)pd).addDescr( first );
+                    	     					multi=true;
+                    	     				}
                     	     			
-                    	    following.push(FOLLOW_fact_in_fact_expression2051);
+                    	    following.push(FOLLOW_fact_in_fact_expression2238);
                     	    f=fact();
                     	    following.pop();
 
-
-                    	     				((ColumnDescr)f).setIdentifier( id );
-                    	     				((OrDescr)pd).addDescr( f );
+                    	    
+                    	     				((ColumnDescr)f).setIdentifier( id );
+                    	     				((OrDescr)pd).addDescr( f );
                     	     			
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop51;
+                    	    break loop54;
                         }
                     } while (true);
 
@@ -3934,7 +4107,7 @@
 
 
     // $ANTLR start fact
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:834:1: fact returns [PatternDescr d] : id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:858:1: fact returns [PatternDescr d] : id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol ;
     public PatternDescr fact() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
@@ -3944,48 +4117,48 @@
         List c = null;
 
 
-
-        		d=null;
+        
+        		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:838:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:838:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:862:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:862:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
             {
-            following.push(FOLLOW_dotted_name_in_fact2090);
+            following.push(FOLLOW_dotted_name_in_fact2277);
             id=dotted_name();
             following.pop();
 
-             
-             			d = new ColumnDescr( id ); 
+             
+             			d = new ColumnDescr( id ); 
              		
-            following.push(FOLLOW_opt_eol_in_fact2098);
+            following.push(FOLLOW_opt_eol_in_fact2285);
             opt_eol();
             following.pop();
 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_fact2106); 
-
-             				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            match(input,23,FOLLOW_23_in_fact2293); 
+            
+             				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
              			
-            following.push(FOLLOW_opt_eol_in_fact2109);
+            following.push(FOLLOW_opt_eol_in_fact2296);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:844:34: (c= constraints )?
-            int alt53=2;
-            alt53 = dfa53.predict(input); 
-            switch (alt53) {
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:868:34: (c= constraints )?
+            int alt56=2;
+            alt56 = dfa56.predict(input); 
+            switch (alt56) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:844:41: c= constraints
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:868:41: c= constraints
                     {
-                    following.push(FOLLOW_constraints_in_fact2115);
+                    following.push(FOLLOW_constraints_in_fact2302);
                     c=constraints();
                     following.pop();
 
-
-                    		 			for ( Iterator cIter = c.iterator() ; cIter.hasNext() ; ) {
-                     						((ColumnDescr)d).addDescr( (PatternDescr) cIter.next() );
-                     					}
+                    
+                    		 			for ( Iterator cIter = c.iterator() ; cIter.hasNext() ; ) {
+                     						((ColumnDescr)d).addDescr( (PatternDescr) cIter.next() );
+                     					}
                      				
 
                     }
@@ -3993,18 +4166,18 @@
 
             }
 
-            following.push(FOLLOW_opt_eol_in_fact2134);
+            following.push(FOLLOW_opt_eol_in_fact2321);
             opt_eol();
             following.pop();
 
             endLoc=(Token)input.LT(1);
-            match(input,25,FOLLOW_25_in_fact2138); 
-            following.push(FOLLOW_opt_eol_in_fact2140);
+            match(input,25,FOLLOW_25_in_fact2325); 
+            following.push(FOLLOW_opt_eol_in_fact2327);
             opt_eol();
             following.pop();
 
-
-             					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
+            
+             					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
              				
 
             }
@@ -4022,76 +4195,76 @@
 
 
     // $ANTLR start constraints
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:858:1: constraints returns [List constraints] : opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:882:1: constraints returns [List constraints] : opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol ;
     public List constraints() throws RecognitionException {   
         List constraints;
-
-        		constraints = new ArrayList();
+        
+        		constraints = new ArrayList();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:862:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:862:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:886:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:886:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
             {
-            following.push(FOLLOW_opt_eol_in_constraints2172);
+            following.push(FOLLOW_opt_eol_in_constraints2359);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:863:17: ( constraint[constraints] | predicate[constraints] )
-            int alt54=2;
-            int LA54_0 = input.LA(1);
-            if ( LA54_0==EOL||LA54_0==15 ) {
-                alt54=1;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:887:17: ( constraint[constraints] | predicate[constraints] )
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+            if ( LA57_0==EOL||LA57_0==15 ) {
+                alt57=1;
             }
-            else if ( LA54_0==ID ) {
-                int LA54_2 = input.LA(2);
-                if ( LA54_2==33 ) {
-                    int LA54_3 = input.LA(3);
-                    if ( LA54_3==ID ) {
-                        int LA54_17 = input.LA(4);
-                        if ( LA54_17==48 ) {
-                            alt54=2;
+            else if ( LA57_0==ID ) {
+                int LA57_2 = input.LA(2);
+                if ( LA57_2==33 ) {
+                    int LA57_3 = input.LA(3);
+                    if ( LA57_3==ID ) {
+                        int LA57_17 = input.LA(4);
+                        if ( LA57_17==49 ) {
+                            alt57=2;
                         }
-                        else if ( LA54_17==EOL||LA54_17==15||(LA54_17>=24 && LA54_17<=25)||(LA54_17>=57 && LA54_17<=66) ) {
-                            alt54=1;
+                        else if ( LA57_17==EOL||LA57_17==15||(LA57_17>=24 && LA57_17<=25)||(LA57_17>=58 && LA57_17<=67) ) {
+                            alt57=1;
                         }
                         else {
                             NoViableAltException nvae =
-                                new NoViableAltException("863:17: ( constraint[constraints] | predicate[constraints] )", 54, 17, input);
+                                new NoViableAltException("887:17: ( constraint[constraints] | predicate[constraints] )", 57, 17, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( LA54_3==EOL||LA54_3==15 ) {
-                        alt54=1;
+                    else if ( LA57_3==EOL||LA57_3==15 ) {
+                        alt57=1;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("863:17: ( constraint[constraints] | predicate[constraints] )", 54, 3, input);
+                            new NoViableAltException("887:17: ( constraint[constraints] | predicate[constraints] )", 57, 3, input);
 
                         throw nvae;
                     }
                 }
-                else if ( LA54_2==EOL||LA54_2==15||(LA54_2>=24 && LA54_2<=25)||(LA54_2>=57 && LA54_2<=66) ) {
-                    alt54=1;
+                else if ( LA57_2==EOL||LA57_2==15||(LA57_2>=24 && LA57_2<=25)||(LA57_2>=58 && LA57_2<=67) ) {
+                    alt57=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("863:17: ( constraint[constraints] | predicate[constraints] )", 54, 2, input);
+                        new NoViableAltException("887:17: ( constraint[constraints] | predicate[constraints] )", 57, 2, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("863:17: ( constraint[constraints] | predicate[constraints] )", 54, 0, input);
+                    new NoViableAltException("887:17: ( constraint[constraints] | predicate[constraints] )", 57, 0, input);
 
                 throw nvae;
             }
-            switch (alt54) {
+            switch (alt57) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:863:18: constraint[constraints]
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:887:18: constraint[constraints]
                     {
-                    following.push(FOLLOW_constraint_in_constraints2177);
+                    following.push(FOLLOW_constraint_in_constraints2364);
                     constraint(constraints);
                     following.pop();
 
@@ -4099,9 +4272,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:863:42: predicate[constraints]
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:887:42: predicate[constraints]
                     {
-                    following.push(FOLLOW_predicate_in_constraints2180);
+                    following.push(FOLLOW_predicate_in_constraints2367);
                     predicate(constraints);
                     following.pop();
 
@@ -4111,80 +4284,80 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:864:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
-            loop56:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:888:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
+            loop59:
             do {
-                int alt56=2;
-                alt56 = dfa56.predict(input); 
-                switch (alt56) {
+                int alt59=2;
+                alt59 = dfa59.predict(input); 
+                switch (alt59) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:864:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:888:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
             	    {
-            	    following.push(FOLLOW_opt_eol_in_constraints2188);
+            	    following.push(FOLLOW_opt_eol_in_constraints2375);
             	    opt_eol();
             	    following.pop();
 
-            	    match(input,24,FOLLOW_24_in_constraints2190); 
-            	    following.push(FOLLOW_opt_eol_in_constraints2192);
+            	    match(input,24,FOLLOW_24_in_constraints2377); 
+            	    following.push(FOLLOW_opt_eol_in_constraints2379);
             	    opt_eol();
             	    following.pop();
 
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:864:39: ( constraint[constraints] | predicate[constraints] )
-            	    int alt55=2;
-            	    int LA55_0 = input.LA(1);
-            	    if ( LA55_0==EOL||LA55_0==15 ) {
-            	        alt55=1;
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:888:39: ( constraint[constraints] | predicate[constraints] )
+            	    int alt58=2;
+            	    int LA58_0 = input.LA(1);
+            	    if ( LA58_0==EOL||LA58_0==15 ) {
+            	        alt58=1;
             	    }
-            	    else if ( LA55_0==ID ) {
-            	        int LA55_2 = input.LA(2);
-            	        if ( LA55_2==33 ) {
-            	            int LA55_3 = input.LA(3);
-            	            if ( LA55_3==ID ) {
-            	                int LA55_17 = input.LA(4);
-            	                if ( LA55_17==48 ) {
-            	                    alt55=2;
+            	    else if ( LA58_0==ID ) {
+            	        int LA58_2 = input.LA(2);
+            	        if ( LA58_2==33 ) {
+            	            int LA58_3 = input.LA(3);
+            	            if ( LA58_3==ID ) {
+            	                int LA58_17 = input.LA(4);
+            	                if ( LA58_17==49 ) {
+            	                    alt58=2;
             	                }
-            	                else if ( LA55_17==EOL||LA55_17==15||(LA55_17>=24 && LA55_17<=25)||(LA55_17>=57 && LA55_17<=66) ) {
-            	                    alt55=1;
+            	                else if ( LA58_17==EOL||LA58_17==15||(LA58_17>=24 && LA58_17<=25)||(LA58_17>=58 && LA58_17<=67) ) {
+            	                    alt58=1;
             	                }
             	                else {
             	                    NoViableAltException nvae =
-            	                        new NoViableAltException("864:39: ( constraint[constraints] | predicate[constraints] )", 55, 17, input);
+            	                        new NoViableAltException("888:39: ( constraint[constraints] | predicate[constraints] )", 58, 17, input);
 
             	                    throw nvae;
             	                }
             	            }
-            	            else if ( LA55_3==EOL||LA55_3==15 ) {
-            	                alt55=1;
+            	            else if ( LA58_3==EOL||LA58_3==15 ) {
+            	                alt58=1;
             	            }
             	            else {
             	                NoViableAltException nvae =
-            	                    new NoViableAltException("864:39: ( constraint[constraints] | predicate[constraints] )", 55, 3, input);
+            	                    new NoViableAltException("888:39: ( constraint[constraints] | predicate[constraints] )", 58, 3, input);
 
             	                throw nvae;
             	            }
             	        }
-            	        else if ( LA55_2==EOL||LA55_2==15||(LA55_2>=24 && LA55_2<=25)||(LA55_2>=57 && LA55_2<=66) ) {
-            	            alt55=1;
+            	        else if ( LA58_2==EOL||LA58_2==15||(LA58_2>=24 && LA58_2<=25)||(LA58_2>=58 && LA58_2<=67) ) {
+            	            alt58=1;
             	        }
             	        else {
             	            NoViableAltException nvae =
-            	                new NoViableAltException("864:39: ( constraint[constraints] | predicate[constraints] )", 55, 2, input);
+            	                new NoViableAltException("888:39: ( constraint[constraints] | predicate[constraints] )", 58, 2, input);
 
             	            throw nvae;
             	        }
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("864:39: ( constraint[constraints] | predicate[constraints] )", 55, 0, input);
+            	            new NoViableAltException("888:39: ( constraint[constraints] | predicate[constraints] )", 58, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt55) {
+            	    switch (alt58) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:864:40: constraint[constraints]
+            	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:888:40: constraint[constraints]
             	            {
-            	            following.push(FOLLOW_constraint_in_constraints2195);
+            	            following.push(FOLLOW_constraint_in_constraints2382);
             	            constraint(constraints);
             	            following.pop();
 
@@ -4192,9 +4365,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:864:64: predicate[constraints]
+            	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:888:64: predicate[constraints]
             	            {
-            	            following.push(FOLLOW_predicate_in_constraints2198);
+            	            following.push(FOLLOW_predicate_in_constraints2385);
             	            predicate(constraints);
             	            following.pop();
 
@@ -4209,11 +4382,11 @@
             	    break;
 
             	default :
-            	    break loop56;
+            	    break loop59;
                 }
             } while (true);
 
-            following.push(FOLLOW_opt_eol_in_constraints2206);
+            following.push(FOLLOW_opt_eol_in_constraints2393);
             opt_eol();
             following.pop();
 
@@ -4233,7 +4406,7 @@
 
 
     // $ANTLR start constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:868:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:892:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol ;
     public void constraint(List constraints) throws RecognitionException {   
         Token fb=null;
         Token f=null;
@@ -4246,32 +4419,32 @@
         String rvc = null;
 
 
-
-        		PatternDescr d = null;
+        
+        		PatternDescr d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:872:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:872:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:896:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:896:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol
             {
-            following.push(FOLLOW_opt_eol_in_constraint2225);
+            following.push(FOLLOW_opt_eol_in_constraint2412);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:873:17: (fb= ID opt_eol ':' opt_eol )?
-            int alt57=2;
-            alt57 = dfa57.predict(input); 
-            switch (alt57) {
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:897:17: (fb= ID opt_eol ':' opt_eol )?
+            int alt60=2;
+            alt60 = dfa60.predict(input); 
+            switch (alt60) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:873:19: fb= ID opt_eol ':' opt_eol
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:897:19: fb= ID opt_eol ':' opt_eol
                     {
                     fb=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint2233); 
-                    following.push(FOLLOW_opt_eol_in_constraint2235);
+                    match(input,ID,FOLLOW_ID_in_constraint2420); 
+                    following.push(FOLLOW_opt_eol_in_constraint2422);
                     opt_eol();
                     following.pop();
 
-                    match(input,33,FOLLOW_33_in_constraint2237); 
-                    following.push(FOLLOW_opt_eol_in_constraint2239);
+                    match(input,33,FOLLOW_33_in_constraint2424); 
+                    following.push(FOLLOW_opt_eol_in_constraint2426);
                     opt_eol();
                     following.pop();
 
@@ -4282,68 +4455,68 @@
             }
 
             f=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_constraint2249); 
-
-
-            			if ( fb != null ) {
-            				//System.err.println( "fb: " + fb.getText() );
-            				//System.err.println( " f: " + f.getText() );
-            				d = new FieldBindingDescr( f.getText(), fb.getText() );
-            				//System.err.println( "fbd: " + d );
-            				
-            				d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-            				constraints.add( d );
-            			} 
-            			FieldConstraintDescr fc = new FieldConstraintDescr(f.getText());
-            			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-            									
-            			
+            match(input,ID,FOLLOW_ID_in_constraint2436); 
+            
+            
+            			if ( fb != null ) {
+            				//System.err.println( "fb: " + fb.getText() );
+            				//System.err.println( " f: " + f.getText() );
+            				d = new FieldBindingDescr( f.getText(), fb.getText() );
+            				//System.err.println( "fbd: " + d );
+            				
+            				d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+            				constraints.add( d );
+            			} 
+            			FieldConstraintDescr fc = new FieldConstraintDescr(f.getText());
+            			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+            									
+            			
             		
-            following.push(FOLLOW_opt_eol_in_constraint2263);
+            following.push(FOLLOW_opt_eol_in_constraint2450);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:891:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
-            if ( (LA61_0>=57 && LA61_0<=66) ) {
-                alt61=1;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:915:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+            if ( (LA64_0>=58 && LA64_0<=67) ) {
+                alt64=1;
             }
-            else if ( LA61_0==EOL||LA61_0==15||(LA61_0>=24 && LA61_0<=25) ) {
-                alt61=2;
+            else if ( LA64_0==EOL||LA64_0==15||(LA64_0>=24 && LA64_0<=25) ) {
+                alt64=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("891:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= (\'&\'|\'|\')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?", 61, 0, input);
+                    new NoViableAltException("915:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= (\'&\'|\'|\')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?", 64, 0, input);
 
                 throw nvae;
             }
-            switch (alt61) {
+            switch (alt64) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:891:41: op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:915:41: op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
                     {
-                    following.push(FOLLOW_operator_in_constraint2269);
+                    following.push(FOLLOW_operator_in_constraint2456);
                     op=operator();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_constraint2271);
+                    following.push(FOLLOW_opt_eol_in_constraint2458);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:893:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
-                    int alt58=4;
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:917:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    int alt61=4;
                     switch ( input.LA(1) ) {
                     case ID:
-                        int LA58_1 = input.LA(2);
-                        if ( LA58_1==18 ) {
-                            alt58=2;
+                        int LA61_1 = input.LA(2);
+                        if ( LA61_1==18 ) {
+                            alt61=2;
                         }
-                        else if ( LA58_1==EOL||LA58_1==15||(LA58_1>=24 && LA58_1<=25)||(LA58_1>=46 && LA58_1<=47) ) {
-                            alt58=1;
+                        else if ( LA61_1==EOL||LA61_1==15||(LA61_1>=24 && LA61_1<=25)||(LA61_1>=47 && LA61_1<=48) ) {
+                            alt61=1;
                         }
                         else {
                             NoViableAltException nvae =
-                                new NoViableAltException("893:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 58, 1, input);
+                                new NoViableAltException("917:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 61, 1, input);
 
                             throw nvae;
                         }
@@ -4353,85 +4526,85 @@
                     case STRING:
                     case FLOAT:
                     case 43:
-                        alt58=3;
+                        alt61=3;
                         break;
                     case 23:
-                        alt58=4;
+                        alt61=4;
                         break;
                     default:
                         NoViableAltException nvae =
-                            new NoViableAltException("893:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 58, 0, input);
+                            new NoViableAltException("917:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 61, 0, input);
 
                         throw nvae;
                     }
 
-                    switch (alt58) {
+                    switch (alt61) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:893:49: bvc= ID
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:917:49: bvc= ID
                             {
                             bvc=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_constraint2289); 
-
-                            							
-                            														
-                            							
-                            							VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
-                            							fc.addRestriction(vd);
-                            							constraints.add(fc);
-                            							
+                            match(input,ID,FOLLOW_ID_in_constraint2476); 
+                            
+                            							
+                            														
+                            							
+                            							VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
+                            							fc.addRestriction(vd);
+                            							constraints.add(fc);
+                            							
                             						
 
                             }
                             break;
                         case 2 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:904:49: lc= enum_constraint
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:928:49: lc= enum_constraint
                             {
-                            following.push(FOLLOW_enum_constraint_in_constraint2314);
+                            following.push(FOLLOW_enum_constraint_in_constraint2501);
                             lc=enum_constraint();
                             following.pop();
 
-                             
-
-                            							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
-                            							fc.addRestriction(lrd);
-                            							constraints.add(fc);
-                            							
+                             
+                            
+                            							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
+                            							fc.addRestriction(lrd);
+                            							constraints.add(fc);
+                            							
                             						
 
                             }
                             break;
                         case 3 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:913:49: lc= literal_constraint
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:937:49: lc= literal_constraint
                             {
-                            following.push(FOLLOW_literal_constraint_in_constraint2346);
+                            following.push(FOLLOW_literal_constraint_in_constraint2533);
                             lc=literal_constraint();
                             following.pop();
 
-                             
-                            							
-                            							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
-                            							fc.addRestriction(lrd);
-                            							constraints.add(fc);
-                            							
+                             
+                            							
+                            							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
+                            							fc.addRestriction(lrd);
+                            							constraints.add(fc);
+                            							
                             						
 
                             }
                             break;
                         case 4 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:921:49: rvc= retval_constraint
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:945:49: rvc= retval_constraint
                             {
-                            following.push(FOLLOW_retval_constraint_in_constraint2366);
+                            following.push(FOLLOW_retval_constraint_in_constraint2553);
                             rvc=retval_constraint();
                             following.pop();
 
-                             
-                            							
-                            							
-
-                            							ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
-                            							fc.addRestriction(rvd);
-                            							constraints.add(fc);
-                            							
+                             
+                            							
+                            							
+                            
+                            							ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
+                            							fc.addRestriction(rvd);
+                            							constraints.add(fc);
+                            							
                             						
 
                             }
@@ -4439,56 +4612,56 @@
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:932:41: (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
-                    loop60:
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:956:41: (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
+                    loop63:
                     do {
-                        int alt60=2;
-                        int LA60_0 = input.LA(1);
-                        if ( (LA60_0>=46 && LA60_0<=47) ) {
-                            alt60=1;
+                        int alt63=2;
+                        int LA63_0 = input.LA(1);
+                        if ( (LA63_0>=47 && LA63_0<=48) ) {
+                            alt63=1;
                         }
 
 
-                        switch (alt60) {
+                        switch (alt63) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:933:49: con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:957:49: con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
                     	    {
                     	    con=(Token)input.LT(1);
-                    	    if ( (input.LA(1)>=46 && input.LA(1)<=47) ) {
+                    	    if ( (input.LA(1)>=47 && input.LA(1)<=48) ) {
                     	        input.consume();
                     	        errorRecovery=false;
                     	    }
                     	    else {
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2401);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2588);    throw mse;
                     	    }
 
-
-                    	    							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));	
+                    	    							}							
                     	    						
-                    	    following.push(FOLLOW_operator_in_constraint2423);
+                    	    following.push(FOLLOW_operator_in_constraint2610);
                     	    op=operator();
                     	    following.pop();
 
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:943:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
-                    	    int alt59=4;
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:967:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    	    int alt62=4;
                     	    switch ( input.LA(1) ) {
                     	    case ID:
-                    	        int LA59_1 = input.LA(2);
-                    	        if ( LA59_1==18 ) {
-                    	            alt59=2;
+                    	        int LA62_1 = input.LA(2);
+                    	        if ( LA62_1==18 ) {
+                    	            alt62=2;
                     	        }
-                    	        else if ( LA59_1==EOL||LA59_1==15||(LA59_1>=24 && LA59_1<=25)||(LA59_1>=46 && LA59_1<=47) ) {
-                    	            alt59=1;
+                    	        else if ( LA62_1==EOL||LA62_1==15||(LA62_1>=24 && LA62_1<=25)||(LA62_1>=47 && LA62_1<=48) ) {
+                    	            alt62=1;
                     	        }
                     	        else {
                     	            NoViableAltException nvae =
-                    	                new NoViableAltException("943:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 59, 1, input);
+                    	                new NoViableAltException("967:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 62, 1, input);
 
                     	            throw nvae;
                     	        }
@@ -4498,72 +4671,72 @@
                     	    case STRING:
                     	    case FLOAT:
                     	    case 43:
-                    	        alt59=3;
+                    	        alt62=3;
                     	        break;
                     	    case 23:
-                    	        alt59=4;
+                    	        alt62=4;
                     	        break;
                     	    default:
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("943:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 59, 0, input);
+                    	            new NoViableAltException("967:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 62, 0, input);
 
                     	        throw nvae;
                     	    }
 
-                    	    switch (alt59) {
+                    	    switch (alt62) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:943:57: bvc= ID
+                    	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:967:57: bvc= ID
                     	            {
                     	            bvc=(Token)input.LT(1);
-                    	            match(input,ID,FOLLOW_ID_in_constraint2435); 
-
-                    	            								VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
-                    	            								fc.addRestriction(vd);
+                    	            match(input,ID,FOLLOW_ID_in_constraint2622); 
+                    	            
+                    	            								VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
+                    	            								fc.addRestriction(vd);
                     	            							
 
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:949:57: lc= enum_constraint
+                    	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:973:57: lc= enum_constraint
                     	            {
-                    	            following.push(FOLLOW_enum_constraint_in_constraint2463);
+                    	            following.push(FOLLOW_enum_constraint_in_constraint2650);
                     	            lc=enum_constraint();
                     	            following.pop();
 
-                    	             
-                    	            								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
-                    	            								fc.addRestriction(lrd);
-                    	            								
+                    	             
+                    	            								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
+                    	            								fc.addRestriction(lrd);
+                    	            								
                     	            							
 
                     	            }
                     	            break;
                     	        case 3 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:956:57: lc= literal_constraint
+                    	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:980:57: lc= literal_constraint
                     	            {
-                    	            following.push(FOLLOW_literal_constraint_in_constraint2498);
+                    	            following.push(FOLLOW_literal_constraint_in_constraint2685);
                     	            lc=literal_constraint();
                     	            following.pop();
 
-                    	             
-                    	            								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
-                    	            								fc.addRestriction(lrd);
-                    	            								
+                    	             
+                    	            								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
+                    	            								fc.addRestriction(lrd);
+                    	            								
                     	            							
 
                     	            }
                     	            break;
                     	        case 4 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:962:57: rvc= retval_constraint
+                    	            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:986:57: rvc= retval_constraint
                     	            {
-                    	            following.push(FOLLOW_retval_constraint_in_constraint2520);
+                    	            following.push(FOLLOW_retval_constraint_in_constraint2707);
                     	            rvc=retval_constraint();
                     	            following.pop();
 
-                    	             
-                    	            								ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
-                    	            								fc.addRestriction(rvd);
-                    	            								
+                    	             
+                    	            								ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
+                    	            								fc.addRestriction(rvd);
+                    	            								
                     	            							
 
                     	            }
@@ -4576,7 +4749,7 @@
                     	    break;
 
                     	default :
-                    	    break loop60;
+                    	    break loop63;
                         }
                     } while (true);
 
@@ -4586,7 +4759,7 @@
 
             }
 
-            following.push(FOLLOW_opt_eol_in_constraint2576);
+            following.push(FOLLOW_opt_eol_in_constraint2763);
             opt_eol();
             following.pop();
 
@@ -4606,85 +4779,85 @@
 
 
     // $ANTLR start literal_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:975:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:999:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) ;
     public String literal_constraint() throws RecognitionException {   
         String text;
         Token t=null;
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:979:17: ( (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:979:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1003:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1003:17: (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:979:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
-            int alt62=5;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1003:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            int alt65=5;
             switch ( input.LA(1) ) {
             case STRING:
-                alt62=1;
+                alt65=1;
                 break;
             case INT:
-                alt62=2;
+                alt65=2;
                 break;
             case FLOAT:
-                alt62=3;
+                alt65=3;
                 break;
             case BOOL:
-                alt62=4;
+                alt65=4;
                 break;
             case 43:
-                alt62=5;
+                alt65=5;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("979:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= \'null\' )", 62, 0, input);
+                    new NoViableAltException("1003:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= \'null\' )", 65, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt62) {
+            switch (alt65) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:979:25: t= STRING
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1003:25: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2603); 
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2790); 
                      text = getString( t ); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:980:25: t= INT
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1004:25: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2614); 
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2801); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:981:25: t= FLOAT
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1005:25: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2627); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2814); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:982:25: t= BOOL
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1006:25: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2638); 
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2825); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:983:25: t= 'null'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1007:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_literal_constraint2650); 
+                    match(input,43,FOLLOW_43_in_literal_constraint2837); 
                      text = null; 
 
                     }
@@ -4708,27 +4881,27 @@
 
 
     // $ANTLR start enum_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:987:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1011:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
     public String enum_constraint() throws RecognitionException {   
         String text;
         Token cls=null;
         Token en=null;
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:991:17: ( (cls= ID '.' en= ID ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:991:17: (cls= ID '.' en= ID )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1015:17: ( (cls= ID '.' en= ID ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1015:17: (cls= ID '.' en= ID )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:991:17: (cls= ID '.' en= ID )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:991:18: cls= ID '.' en= ID
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1015:17: (cls= ID '.' en= ID )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1015:18: cls= ID '.' en= ID
             {
             cls=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2681); 
-            match(input,18,FOLLOW_18_in_enum_constraint2683); 
+            match(input,ID,FOLLOW_ID_in_enum_constraint2868); 
+            match(input,18,FOLLOW_18_in_enum_constraint2870); 
             en=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2687); 
+            match(input,ID,FOLLOW_ID_in_enum_constraint2874); 
 
             }
 
@@ -4749,25 +4922,25 @@
 
 
     // $ANTLR start retval_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:994:1: retval_constraint returns [String text] : '(' c= paren_chunk ')' ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1018:1: retval_constraint returns [String text] : '(' c= paren_chunk ')' ;
     public String retval_constraint() throws RecognitionException {   
         String text;
         String c = null;
 
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:999:17: ( '(' c= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:999:17: '(' c= paren_chunk ')'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1023:17: ( '(' c= paren_chunk ')' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1023:17: '(' c= paren_chunk ')'
             {
-            match(input,23,FOLLOW_23_in_retval_constraint2716); 
-            following.push(FOLLOW_paren_chunk_in_retval_constraint2721);
+            match(input,23,FOLLOW_23_in_retval_constraint2903); 
+            following.push(FOLLOW_paren_chunk_in_retval_constraint2908);
             c=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_retval_constraint2724); 
+            match(input,25,FOLLOW_25_in_retval_constraint2911); 
              text = c; 
 
             }
@@ -4785,7 +4958,7 @@
 
 
     // $ANTLR start predicate
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1002:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1026:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
     public void predicate(List constraints) throws RecognitionException {   
         Token decl=null;
         Token field=null;
@@ -4793,24 +4966,24 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1004:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1004:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1028:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1028:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
             {
             decl=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate2742); 
-            match(input,33,FOLLOW_33_in_predicate2744); 
+            match(input,ID,FOLLOW_ID_in_predicate2929); 
+            match(input,33,FOLLOW_33_in_predicate2931); 
             field=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate2748); 
-            match(input,48,FOLLOW_48_in_predicate2750); 
-            match(input,23,FOLLOW_23_in_predicate2752); 
-            following.push(FOLLOW_paren_chunk_in_predicate2756);
+            match(input,ID,FOLLOW_ID_in_predicate2935); 
+            match(input,49,FOLLOW_49_in_predicate2937); 
+            match(input,23,FOLLOW_23_in_predicate2939); 
+            following.push(FOLLOW_paren_chunk_in_predicate2943);
             text=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_predicate2758); 
-
-            			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
-            			constraints.add( d );
+            match(input,25,FOLLOW_25_in_predicate2945); 
+            
+            			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
+            			constraints.add( d );
             		
 
             }
@@ -4828,33 +5001,33 @@
 
 
     // $ANTLR start paren_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1011:1: paren_chunk returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1035:1: paren_chunk returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* ;
     public String paren_chunk() throws RecognitionException {   
         String text;
         Token any=null;
         String c = null;
 
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1017:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1017:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1041:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1041:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1017:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
-            loop63:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1041:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            loop66:
             do {
-                int alt63=3;
+                int alt66=3;
                 switch ( input.LA(1) ) {
                 case EOL:
-                    alt63=3;
+                    alt66=3;
                     break;
                 case 25:
-                    alt63=3;
+                    alt66=3;
                     break;
                 case 23:
-                    alt63=1;
+                    alt66=1;
                     break;
                 case ID:
                 case INT:
@@ -4916,52 +5089,53 @@
                 case 64:
                 case 65:
                 case 66:
-                    alt63=2;
+                case 67:
+                    alt66=2;
                     break;
 
                 }
 
-                switch (alt63) {
+                switch (alt66) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1018:25: '(' c= paren_chunk ')'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1042:25: '(' c= paren_chunk ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk2804); 
-            	    following.push(FOLLOW_paren_chunk_in_paren_chunk2808);
+            	    match(input,23,FOLLOW_23_in_paren_chunk2991); 
+            	    following.push(FOLLOW_paren_chunk_in_paren_chunk2995);
             	    c=paren_chunk();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk2810); 
-
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "( " + c + " )";
-            	    				} else {
-            	    					text = text + " ( " + c + " )";
-            	    				}
+            	    match(input,25,FOLLOW_25_in_paren_chunk2997); 
+            	    
+            	    				if ( c == null ) {
+            	    					c = "";
+            	    				}
+            	    				if ( text == null ) {
+            	    					text = "( " + c + " )";
+            	    				} else {
+            	    					text = text + " ( " + c + " )";
+            	    				}
             	    			
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1029:19: any= .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1053:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
-
-            	    				if ( text == null ) {
-            	    					text = any.getText();
-            	    				} else {
-            	    					text = text + " " + any.getText(); 
-            	    				} 
+            	    
+            	    				if ( text == null ) {
+            	    					text = any.getText();
+            	    				} else {
+            	    					text = text + " " + any.getText(); 
+            	    				} 
             	    			
 
             	    }
             	    break;
 
             	default :
-            	    break loop63;
+            	    break loop66;
                 }
             } while (true);
 
@@ -4981,30 +5155,30 @@
 
 
     // $ANTLR start paren_chunk2
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1041:1: paren_chunk2 returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1065:1: paren_chunk2 returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* ;
     public String paren_chunk2() throws RecognitionException {   
         String text;
         Token any=null;
         String c = null;
 
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1047:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1047:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1071:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1071:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1047:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
-            loop64:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1071:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            loop67:
             do {
-                int alt64=3;
+                int alt67=3;
                 switch ( input.LA(1) ) {
                 case 25:
-                    alt64=3;
+                    alt67=3;
                     break;
                 case 23:
-                    alt64=1;
+                    alt67=1;
                     break;
                 case EOL:
                 case ID:
@@ -5067,52 +5241,53 @@
                 case 64:
                 case 65:
                 case 66:
-                    alt64=2;
+                case 67:
+                    alt67=2;
                     break;
 
                 }
 
-                switch (alt64) {
+                switch (alt67) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1048:25: '(' c= paren_chunk2 ')'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1072:25: '(' c= paren_chunk2 ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk22881); 
-            	    following.push(FOLLOW_paren_chunk2_in_paren_chunk22885);
+            	    match(input,23,FOLLOW_23_in_paren_chunk23068); 
+            	    following.push(FOLLOW_paren_chunk2_in_paren_chunk23072);
             	    c=paren_chunk2();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk22887); 
-
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "( " + c + " )";
-            	    				} else {
-            	    					text = text + " ( " + c + " )";
-            	    				}
+            	    match(input,25,FOLLOW_25_in_paren_chunk23074); 
+            	    
+            	    				if ( c == null ) {
+            	    					c = "";
+            	    				}
+            	    				if ( text == null ) {
+            	    					text = "( " + c + " )";
+            	    				} else {
+            	    					text = text + " ( " + c + " )";
+            	    				}
             	    			
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1059:19: any= .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1083:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
-
-            	    				if ( text == null ) {
-            	    					text = any.getText();
-            	    				} else {
-            	    					text = text + " " + any.getText(); 
-            	    				} 
+            	    
+            	    				if ( text == null ) {
+            	    					text = any.getText();
+            	    				} else {
+            	    					text = text + " " + any.getText(); 
+            	    				} 
             	    			
 
             	    }
             	    break;
 
             	default :
-            	    break loop64;
+            	    break loop67;
                 }
             } while (true);
 
@@ -5132,30 +5307,30 @@
 
 
     // $ANTLR start curly_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1070:1: curly_chunk returns [String text] : ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1094:1: curly_chunk returns [String text] : ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* ;
     public String curly_chunk() throws RecognitionException {   
         String text;
         Token any=null;
         String c = null;
 
 
-
-        		text = null;
+        
+        		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1076:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1076:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1100:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1100:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1076:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
-            loop65:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1100:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            loop68:
             do {
-                int alt65=3;
+                int alt68=3;
                 switch ( input.LA(1) ) {
                 case 27:
-                    alt65=3;
+                    alt68=3;
                     break;
                 case 26:
-                    alt65=1;
+                    alt68=1;
                     break;
                 case EOL:
                 case ID:
@@ -5218,54 +5393,55 @@
                 case 64:
                 case 65:
                 case 66:
-                    alt65=2;
+                case 67:
+                    alt68=2;
                     break;
 
                 }
 
-                switch (alt65) {
+                switch (alt68) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1077:25: '{' c= curly_chunk '}'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1101:25: '{' c= curly_chunk '}'
             	    {
-            	    match(input,26,FOLLOW_26_in_curly_chunk2956); 
-            	    following.push(FOLLOW_curly_chunk_in_curly_chunk2960);
+            	    match(input,26,FOLLOW_26_in_curly_chunk3143); 
+            	    following.push(FOLLOW_curly_chunk_in_curly_chunk3147);
             	    c=curly_chunk();
             	    following.pop();
 
-            	    match(input,27,FOLLOW_27_in_curly_chunk2962); 
-
-            	    				//System.err.println( "chunk [" + c + "]" );
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "{ " + c + " }";
-            	    				} else {
-            	    					text = text + " { " + c + " }";
-            	    				}
+            	    match(input,27,FOLLOW_27_in_curly_chunk3149); 
+            	    
+            	    				//System.err.println( "chunk [" + c + "]" );
+            	    				if ( c == null ) {
+            	    					c = "";
+            	    				}
+            	    				if ( text == null ) {
+            	    					text = "{ " + c + " }";
+            	    				} else {
+            	    					text = text + " { " + c + " }";
+            	    				}
             	    			
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1089:19: any= .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1113:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
-
-            	    				//System.err.println( "any [" + any.getText() + "]" );
-            	    				if ( text == null ) {
-            	    					text = any.getText();
-            	    				} else {
-            	    					text = text + " " + any.getText(); 
-            	    				} 
+            	    
+            	    				//System.err.println( "any [" + any.getText() + "]" );
+            	    				if ( text == null ) {
+            	    					text = any.getText();
+            	    				} else {
+            	    					text = text + " " + any.getText(); 
+            	    				} 
             	    			
 
             	    }
             	    break;
 
             	default :
-            	    break loop65;
+            	    break loop68;
                 }
             } while (true);
 
@@ -5285,7 +5461,7 @@
 
 
     // $ANTLR start lhs_or
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1101:1: lhs_or returns [PatternDescr d] : left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1125:1: lhs_or returns [PatternDescr d] : left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* ;
     public PatternDescr lhs_or() throws RecognitionException {   
         PatternDescr d;
         PatternDescr left = null;
@@ -5293,66 +5469,66 @@
         PatternDescr right = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1106:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1106:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1130:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1130:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
             {
              OrDescr or = null; 
-            following.push(FOLLOW_lhs_and_in_lhs_or3020);
+            following.push(FOLLOW_lhs_and_in_lhs_or3207);
             left=lhs_and();
             following.pop();
 
             d = left; 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1108:17: ( ('or'|'||') opt_eol right= lhs_and )*
-            loop66:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1132:17: ( ('or'|'||') opt_eol right= lhs_and )*
+            loop69:
             do {
-                int alt66=2;
-                int LA66_0 = input.LA(1);
-                if ( (LA66_0>=44 && LA66_0<=45) ) {
-                    alt66=1;
+                int alt69=2;
+                int LA69_0 = input.LA(1);
+                if ( (LA69_0>=45 && LA69_0<=46) ) {
+                    alt69=1;
                 }
 
 
-                switch (alt66) {
+                switch (alt69) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1108:19: ('or'|'||') opt_eol right= lhs_and
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1132:19: ('or'|'||') opt_eol right= lhs_and
             	    {
-            	    if ( (input.LA(1)>=44 && input.LA(1)<=45) ) {
+            	    if ( (input.LA(1)>=45 && input.LA(1)<=46) ) {
             	        input.consume();
             	        errorRecovery=false;
             	    }
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3029);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3216);    throw mse;
             	    }
 
-            	    following.push(FOLLOW_opt_eol_in_lhs_or3034);
+            	    following.push(FOLLOW_opt_eol_in_lhs_or3221);
             	    opt_eol();
             	    following.pop();
 
-            	    following.push(FOLLOW_lhs_and_in_lhs_or3041);
+            	    following.push(FOLLOW_lhs_and_in_lhs_or3228);
             	    right=lhs_and();
             	    following.pop();
 
-
-            	    				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 );
             	    			
 
             	    }
             	    break;
 
             	default :
-            	    break loop66;
+            	    break loop69;
                 }
             } while (true);
 
@@ -5372,7 +5548,7 @@
 
 
     // $ANTLR start lhs_and
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1122:1: lhs_and returns [PatternDescr d] : left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1146:1: lhs_and returns [PatternDescr d] : left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* ;
     public PatternDescr lhs_and() throws RecognitionException {   
         PatternDescr d;
         PatternDescr left = null;
@@ -5380,66 +5556,66 @@
         PatternDescr right = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1127:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1127:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1151:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1151:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
             {
              AndDescr and = null; 
-            following.push(FOLLOW_lhs_unary_in_lhs_and3081);
+            following.push(FOLLOW_lhs_unary_in_lhs_and3268);
             left=lhs_unary();
             following.pop();
 
              d = left; 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1129:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
-            loop67:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1153:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
+            loop70:
             do {
-                int alt67=2;
-                int LA67_0 = input.LA(1);
-                if ( (LA67_0>=49 && LA67_0<=50) ) {
-                    alt67=1;
+                int alt70=2;
+                int LA70_0 = input.LA(1);
+                if ( (LA70_0>=50 && LA70_0<=51) ) {
+                    alt70=1;
                 }
 
 
-                switch (alt67) {
+                switch (alt70) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1129:19: ('and'|'&&') opt_eol right= lhs_unary
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1153:19: ('and'|'&&') opt_eol right= lhs_unary
             	    {
-            	    if ( (input.LA(1)>=49 && input.LA(1)<=50) ) {
+            	    if ( (input.LA(1)>=50 && input.LA(1)<=51) ) {
             	        input.consume();
             	        errorRecovery=false;
             	    }
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3090);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3277);    throw mse;
             	    }
 
-            	    following.push(FOLLOW_opt_eol_in_lhs_and3095);
+            	    following.push(FOLLOW_opt_eol_in_lhs_and3282);
             	    opt_eol();
             	    following.pop();
 
-            	    following.push(FOLLOW_lhs_unary_in_lhs_and3102);
+            	    following.push(FOLLOW_lhs_unary_in_lhs_and3289);
             	    right=lhs_unary();
             	    following.pop();
 
-
-            	    				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 );
             	    			
 
             	    }
             	    break;
 
             	default :
-            	    break loop67;
+            	    break loop70;
                 }
             } while (true);
 
@@ -5459,7 +5635,7 @@
 
 
     // $ANTLR start lhs_unary
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1143:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1167:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) ;
     public PatternDescr lhs_unary() throws RecognitionException {   
         PatternDescr d;
         PatternDescr u = null;
@@ -5467,43 +5643,43 @@
         FromDescr fm = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1147:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1147:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1171:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1171:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1147:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
-            int alt69=5;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1171:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
+            int alt72=5;
             switch ( input.LA(1) ) {
-            case 51:
-                alt69=1;
-                break;
             case 52:
-                alt69=2;
+                alt72=1;
                 break;
             case 53:
-                alt69=3;
+                alt72=2;
                 break;
+            case 54:
+                alt72=3;
+                break;
             case ID:
-                alt69=4;
+                alt72=4;
                 break;
             case 23:
-                alt69=5;
+                alt72=5;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1147:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | \'(\' opt_eol u= lhs opt_eol \')\' )", 69, 0, input);
+                    new NoViableAltException("1171:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | \'(\' opt_eol u= lhs opt_eol \')\' )", 72, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt69) {
+            switch (alt72) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1147:25: u= lhs_exist
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1171:25: u= lhs_exist
                     {
-                    following.push(FOLLOW_lhs_exist_in_lhs_unary3140);
+                    following.push(FOLLOW_lhs_exist_in_lhs_unary3327);
                     u=lhs_exist();
                     following.pop();
 
@@ -5512,9 +5688,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1148:25: u= lhs_not
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1172:25: u= lhs_not
                     {
-                    following.push(FOLLOW_lhs_not_in_lhs_unary3150);
+                    following.push(FOLLOW_lhs_not_in_lhs_unary3337);
                     u=lhs_not();
                     following.pop();
 
@@ -5523,9 +5699,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1149:25: u= lhs_eval
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1173:25: u= lhs_eval
                     {
-                    following.push(FOLLOW_lhs_eval_in_lhs_unary3160);
+                    following.push(FOLLOW_lhs_eval_in_lhs_unary3347);
                     u=lhs_eval();
                     following.pop();
 
@@ -5534,33 +5710,33 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1150:25: u= lhs_column (fm= from_statement )?
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1174:25: u= lhs_column (fm= from_statement )?
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_unary3174);
+                    following.push(FOLLOW_lhs_column_in_lhs_unary3361);
                     u=lhs_column();
                     following.pop();
 
                     d=u;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1150:45: (fm= from_statement )?
-                    int alt68=2;
-                    int LA68_0 = input.LA(1);
-                    if ( LA68_0==42 ) {
-                        alt68=1;
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1174:45: (fm= from_statement )?
+                    int alt71=2;
+                    int LA71_0 = input.LA(1);
+                    if ( LA71_0==42 ) {
+                        alt71=1;
                     }
-                    else if ( (LA68_0>=EOL && LA68_0<=ID)||LA68_0==15||LA68_0==23||LA68_0==25||LA68_0==29||LA68_0==34||(LA68_0>=44 && LA68_0<=45)||(LA68_0>=49 && LA68_0<=53) ) {
-                        alt68=2;
+                    else if ( (LA71_0>=EOL && LA71_0<=ID)||LA71_0==15||LA71_0==23||LA71_0==25||LA71_0==29||LA71_0==34||(LA71_0>=45 && LA71_0<=46)||(LA71_0>=50 && LA71_0<=54) ) {
+                        alt71=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("1150:45: (fm= from_statement )?", 68, 0, input);
+                            new NoViableAltException("1174:45: (fm= from_statement )?", 71, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt68) {
+                    switch (alt71) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1150:46: fm= from_statement
+                            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1174:46: fm= from_statement
                             {
-                            following.push(FOLLOW_from_statement_in_lhs_unary3181);
+                            following.push(FOLLOW_from_statement_in_lhs_unary3368);
                             fm=from_statement();
                             following.pop();
 
@@ -5575,22 +5751,22 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1151:25: '(' opt_eol u= lhs opt_eol ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1175:25: '(' opt_eol u= lhs opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_unary3191); 
-                    following.push(FOLLOW_opt_eol_in_lhs_unary3193);
+                    match(input,23,FOLLOW_23_in_lhs_unary3378); 
+                    following.push(FOLLOW_opt_eol_in_lhs_unary3380);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_lhs_in_lhs_unary3197);
+                    following.push(FOLLOW_lhs_in_lhs_unary3384);
                     u=lhs();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_lhs_unary3199);
+                    following.push(FOLLOW_opt_eol_in_lhs_unary3386);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_unary3201); 
+                    match(input,25,FOLLOW_25_in_lhs_unary3388); 
                     d = u;
 
                     }
@@ -5614,54 +5790,54 @@
 
 
     // $ANTLR start lhs_exist
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1155:1: lhs_exist returns [PatternDescr d] : loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1179:1: lhs_exist returns [PatternDescr d] : loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) ;
     public PatternDescr lhs_exist() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
         PatternDescr column = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1159:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1159:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1183:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1183:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,51,FOLLOW_51_in_lhs_exist3232); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1159:30: ( '(' column= lhs_column ')' | column= lhs_column )
-            int alt70=2;
-            int LA70_0 = input.LA(1);
-            if ( LA70_0==23 ) {
-                alt70=1;
+            match(input,52,FOLLOW_52_in_lhs_exist3419); 
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1183:30: ( '(' column= lhs_column ')' | column= lhs_column )
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+            if ( LA73_0==23 ) {
+                alt73=1;
             }
-            else if ( LA70_0==ID ) {
-                alt70=2;
+            else if ( LA73_0==ID ) {
+                alt73=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1159:30: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 70, 0, input);
+                    new NoViableAltException("1183:30: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 73, 0, input);
 
                 throw nvae;
             }
-            switch (alt70) {
+            switch (alt73) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1159:31: '(' column= lhs_column ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1183:31: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_exist3235); 
-                    following.push(FOLLOW_lhs_column_in_lhs_exist3239);
+                    match(input,23,FOLLOW_23_in_lhs_exist3422); 
+                    following.push(FOLLOW_lhs_column_in_lhs_exist3426);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_exist3241); 
+                    match(input,25,FOLLOW_25_in_lhs_exist3428); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1159:59: column= lhs_column
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1183:59: column= lhs_column
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_exist3247);
+                    following.push(FOLLOW_lhs_column_in_lhs_exist3434);
                     column=lhs_column();
                     following.pop();
 
@@ -5671,9 +5847,9 @@
 
             }
 
-             
-            			d = new ExistsDescr( (ColumnDescr) column ); 
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+             
+            			d = new ExistsDescr( (ColumnDescr) column ); 
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -5691,54 +5867,54 @@
 
 
     // $ANTLR start lhs_not
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1166:1: lhs_not returns [NotDescr d] : loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1190:1: lhs_not returns [NotDescr d] : loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) ;
     public NotDescr lhs_not() throws RecognitionException {   
         NotDescr d;
         Token loc=null;
         PatternDescr column = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1194:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1194:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,52,FOLLOW_52_in_lhs_not3277); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:27: ( '(' column= lhs_column ')' | column= lhs_column )
-            int alt71=2;
-            int LA71_0 = input.LA(1);
-            if ( LA71_0==23 ) {
-                alt71=1;
+            match(input,53,FOLLOW_53_in_lhs_not3464); 
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1194:27: ( '(' column= lhs_column ')' | column= lhs_column )
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+            if ( LA74_0==23 ) {
+                alt74=1;
             }
-            else if ( LA71_0==ID ) {
-                alt71=2;
+            else if ( LA74_0==ID ) {
+                alt74=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1170:27: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 71, 0, input);
+                    new NoViableAltException("1194:27: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 74, 0, input);
 
                 throw nvae;
             }
-            switch (alt71) {
+            switch (alt74) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:28: '(' column= lhs_column ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1194:28: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_not3280); 
-                    following.push(FOLLOW_lhs_column_in_lhs_not3284);
+                    match(input,23,FOLLOW_23_in_lhs_not3467); 
+                    following.push(FOLLOW_lhs_column_in_lhs_not3471);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_not3287); 
+                    match(input,25,FOLLOW_25_in_lhs_not3474); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:57: column= lhs_column
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1194:57: column= lhs_column
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_not3293);
+                    following.push(FOLLOW_lhs_column_in_lhs_not3480);
                     column=lhs_column();
                     following.pop();
 
@@ -5748,9 +5924,9 @@
 
             }
 
-
-            			d = new NotDescr( (ColumnDescr) column ); 
-            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            
+            			d = new NotDescr( (ColumnDescr) column ); 
+            			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
 
             }
@@ -5768,32 +5944,32 @@
 
 
     // $ANTLR start lhs_eval
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1177:1: lhs_eval returns [PatternDescr d] : 'eval' loc= '(' c= paren_chunk2 ')' ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1201:1: lhs_eval returns [PatternDescr d] : 'eval' loc= '(' c= paren_chunk2 ')' ;
     public PatternDescr lhs_eval() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
         String c = null;
 
 
-
-        		d = null;
-        		String text = "";
+        
+        		d = null;
+        		String text = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1182:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1182:17: 'eval' loc= '(' c= paren_chunk2 ')'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1206:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1206:17: 'eval' loc= '(' c= paren_chunk2 ')'
             {
-            match(input,53,FOLLOW_53_in_lhs_eval3319); 
+            match(input,54,FOLLOW_54_in_lhs_eval3506); 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_lhs_eval3323); 
-            following.push(FOLLOW_paren_chunk2_in_lhs_eval3331);
+            match(input,23,FOLLOW_23_in_lhs_eval3510); 
+            following.push(FOLLOW_paren_chunk2_in_lhs_eval3518);
             c=paren_chunk2();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_lhs_eval3335); 
-             
-            			checkTrailingSemicolon( c, offset(loc.getLine()) );
-            			d = new EvalDescr( c ); 
+            match(input,25,FOLLOW_25_in_lhs_eval3522); 
+             
+            			checkTrailingSemicolon( c, offset(loc.getLine()) );
+            			d = new EvalDescr( c ); 
             		
 
             }
@@ -5811,71 +5987,71 @@
 
 
     // $ANTLR start dotted_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1191:1: dotted_name returns [String name] : id= ID ( '.' id= ID )* ( '[' ']' )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1215:1: dotted_name returns [String name] : id= ID ( '.' id= ID )* ( '[' ']' )* ;
     public String dotted_name() throws RecognitionException {   
         String name;
         Token id=null;
 
-
-        		name = null;
+        
+        		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:17: id= ID ( '.' id= ID )* ( '[' ']' )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:17: id= ID ( '.' id= ID )* ( '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name3367); 
+            match(input,ID,FOLLOW_ID_in_dotted_name3554); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:46: ( '.' id= ID )*
-            loop72:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:46: ( '.' id= ID )*
+            loop75:
             do {
-                int alt72=2;
-                int LA72_0 = input.LA(1);
-                if ( LA72_0==18 ) {
-                    alt72=1;
+                int alt75=2;
+                int LA75_0 = input.LA(1);
+                if ( LA75_0==18 ) {
+                    alt75=1;
                 }
 
 
-                switch (alt72) {
+                switch (alt75) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:48: '.' id= ID
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:48: '.' id= ID
             	    {
-            	    match(input,18,FOLLOW_18_in_dotted_name3373); 
+            	    match(input,18,FOLLOW_18_in_dotted_name3560); 
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_dotted_name3377); 
+            	    match(input,ID,FOLLOW_ID_in_dotted_name3564); 
             	     name = name + "." + id.getText(); 
 
             	    }
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop75;
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:99: ( '[' ']' )*
-            loop73:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:99: ( '[' ']' )*
+            loop76:
             do {
-                int alt73=2;
-                int LA73_0 = input.LA(1);
-                if ( LA73_0==54 ) {
-                    alt73=1;
+                int alt76=2;
+                int LA76_0 = input.LA(1);
+                if ( LA76_0==55 ) {
+                    alt76=1;
                 }
 
 
-                switch (alt73) {
+                switch (alt76) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:101: '[' ']'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1220:101: '[' ']'
             	    {
-            	    match(input,54,FOLLOW_54_in_dotted_name3386); 
-            	    match(input,55,FOLLOW_55_in_dotted_name3388); 
+            	    match(input,55,FOLLOW_55_in_dotted_name3573); 
+            	    match(input,56,FOLLOW_56_in_dotted_name3575); 
             	     name = name + "[]";
 
             	    }
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop76;
                 }
             } while (true);
 
@@ -5895,44 +6071,44 @@
 
 
     // $ANTLR start argument_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1199:1: argument_name returns [String name] : id= ID ( '[' ']' )* ;
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1223:1: argument_name returns [String name] : id= ID ( '[' ']' )* ;
     public String argument_name() throws RecognitionException {   
         String name;
         Token id=null;
 
-
-        		name = null;
+        
+        		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1204:17: (id= ID ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1204:17: id= ID ( '[' ']' )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1228:17: (id= ID ( '[' ']' )* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1228:17: id= ID ( '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument_name3418); 
+            match(input,ID,FOLLOW_ID_in_argument_name3605); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1204:46: ( '[' ']' )*
-            loop74:
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1228:46: ( '[' ']' )*
+            loop77:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
-                if ( LA74_0==54 ) {
-                    alt74=1;
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+                if ( LA77_0==55 ) {
+                    alt77=1;
                 }
 
 
-                switch (alt74) {
+                switch (alt77) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1204:48: '[' ']'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1228:48: '[' ']'
             	    {
-            	    match(input,54,FOLLOW_54_in_argument_name3424); 
-            	    match(input,55,FOLLOW_55_in_argument_name3426); 
+            	    match(input,55,FOLLOW_55_in_argument_name3611); 
+            	    match(input,56,FOLLOW_56_in_argument_name3613); 
             	     name = name + "[]";
 
             	    }
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop77;
                 }
             } while (true);
 
@@ -5952,146 +6128,146 @@
 
 
     // $ANTLR start word
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1208:1: word returns [String word] : (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1232:1: word returns [String word] : (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING );
     public String word() throws RecognitionException {   
         String word;
         Token id=null;
         Token str=null;
 
-
-        		word = null;
+        
+        		word = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1212:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
-            int alt75=11;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1236:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
+            int alt78=11;
             switch ( input.LA(1) ) {
             case ID:
-                alt75=1;
+                alt78=1;
                 break;
             case 17:
-                alt75=2;
+                alt78=2;
                 break;
-            case 56:
-                alt75=3;
+            case 57:
+                alt78=3;
                 break;
             case 31:
-                alt75=4;
+                alt78=4;
                 break;
             case 28:
-                alt75=5;
+                alt78=5;
                 break;
             case 36:
-                alt75=6;
+                alt78=6;
                 break;
             case 37:
-                alt75=7;
+                alt78=7;
                 break;
             case 32:
-                alt75=8;
+                alt78=8;
                 break;
             case 34:
-                alt75=9;
+                alt78=9;
                 break;
             case 29:
-                alt75=10;
+                alt78=10;
                 break;
             case STRING:
-                alt75=11;
+                alt78=11;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1208:1: word returns [String word] : (id= ID | \'import\' | \'use\' | \'rule\' | \'query\' | \'salience\' | \'no-loop\' | \'when\' | \'then\' | \'end\' | str= STRING );", 75, 0, input);
+                    new NoViableAltException("1232:1: word returns [String word] : (id= ID | \'import\' | \'use\' | \'rule\' | \'query\' | \'salience\' | \'no-loop\' | \'when\' | \'then\' | \'end\' | str= STRING );", 78, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt75) {
+            switch (alt78) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1212:17: id= ID
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1236:17: id= ID
                     {
                     id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_word3454); 
+                    match(input,ID,FOLLOW_ID_in_word3641); 
                      word=id.getText(); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1213:17: 'import'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1237:17: 'import'
                     {
-                    match(input,17,FOLLOW_17_in_word3466); 
+                    match(input,17,FOLLOW_17_in_word3653); 
                      word="import"; 
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1214:17: 'use'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1238:17: 'use'
                     {
-                    match(input,56,FOLLOW_56_in_word3475); 
+                    match(input,57,FOLLOW_57_in_word3662); 
                      word="use"; 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1215:17: 'rule'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1239:17: 'rule'
                     {
-                    match(input,31,FOLLOW_31_in_word3487); 
+                    match(input,31,FOLLOW_31_in_word3674); 
                      word="rule"; 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1216:17: 'query'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1240:17: 'query'
                     {
-                    match(input,28,FOLLOW_28_in_word3498); 
+                    match(input,28,FOLLOW_28_in_word3685); 
                      word="query"; 
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:17: 'salience'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1241:17: 'salience'
                     {
-                    match(input,36,FOLLOW_36_in_word3508); 
+                    match(input,36,FOLLOW_36_in_word3695); 
                      word="salience"; 
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1218:17: 'no-loop'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1242:17: 'no-loop'
                     {
-                    match(input,37,FOLLOW_37_in_word3516); 
+                    match(input,37,FOLLOW_37_in_word3703); 
                      word="no-loop"; 
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1219:17: 'when'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1243:17: 'when'
                     {
-                    match(input,32,FOLLOW_32_in_word3524); 
+                    match(input,32,FOLLOW_32_in_word3711); 
                      word="when"; 
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1220:17: 'then'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1244:17: 'then'
                     {
-                    match(input,34,FOLLOW_34_in_word3535); 
+                    match(input,34,FOLLOW_34_in_word3722); 
                      word="then"; 
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1221:17: 'end'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1245:17: 'end'
                     {
-                    match(input,29,FOLLOW_29_in_word3546); 
+                    match(input,29,FOLLOW_29_in_word3733); 
                      word="end"; 
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1222:17: str= STRING
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1246:17: str= STRING
                     {
                     str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_word3560); 
+                    match(input,STRING,FOLLOW_STRING_in_word3747); 
                      word=getString(str);
 
                     }
@@ -6111,130 +6287,130 @@
 
 
     // $ANTLR start operator
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1225:1: operator returns [String str] : ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' );
+    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1249:1: operator returns [String str] : ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' );
     public String operator() throws RecognitionException {   
         String str;
-
-        		str = null;
+        
+        		str = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1231:17: ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' )
-            int alt76=10;
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1255:17: ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' )
+            int alt79=10;
             switch ( input.LA(1) ) {
-            case 57:
-                alt76=1;
-                break;
             case 58:
-                alt76=2;
+                alt79=1;
                 break;
             case 59:
-                alt76=3;
+                alt79=2;
                 break;
             case 60:
-                alt76=4;
+                alt79=3;
                 break;
             case 61:
-                alt76=5;
+                alt79=4;
                 break;
             case 62:
-                alt76=6;
+                alt79=5;
                 break;
             case 63:
-                alt76=7;
+                alt79=6;
                 break;
             case 64:
-                alt76=8;
+                alt79=7;
                 break;
             case 65:
-                alt76=9;
+                alt79=8;
                 break;
             case 66:
-                alt76=10;
+                alt79=9;
                 break;
+            case 67:
+                alt79=10;
+                break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1225:1: operator returns [String str] : ( \'==\' | \'=\' | \'>\' | \'>=\' | \'<\' | \'<=\' | \'!=\' | \'contains\' | \'matches\' | \'excludes\' );", 76, 0, input);
+                    new NoViableAltException("1249:1: operator returns [String str] : ( \'==\' | \'=\' | \'>\' | \'>=\' | \'<\' | \'<=\' | \'!=\' | \'contains\' | \'matches\' | \'excludes\' );", 79, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt76) {
+            switch (alt79) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1231:17: '=='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1255:17: '=='
                     {
-                    match(input,57,FOLLOW_57_in_operator3589); 
+                    match(input,58,FOLLOW_58_in_operator3776); 
                     str= "==";
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1232:18: '='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1256:18: '='
                     {
-                    match(input,58,FOLLOW_58_in_operator3596); 
+                    match(input,59,FOLLOW_59_in_operator3783); 
                     str="==";
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1233:18: '>'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1257:18: '>'
                     {
-                    match(input,59,FOLLOW_59_in_operator3603); 
+                    match(input,60,FOLLOW_60_in_operator3790); 
                     str=">";
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:18: '>='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1258:18: '>='
                     {
-                    match(input,60,FOLLOW_60_in_operator3610); 
+                    match(input,61,FOLLOW_61_in_operator3797); 
                     str=">=";
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1235:18: '<'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1259:18: '<'
                     {
-                    match(input,61,FOLLOW_61_in_operator3619); 
+                    match(input,62,FOLLOW_62_in_operator3806); 
                     str="<";
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1236:18: '<='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1260:18: '<='
                     {
-                    match(input,62,FOLLOW_62_in_operator3626); 
+                    match(input,63,FOLLOW_63_in_operator3813); 
                     str="<=";
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1237:18: '!='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1261:18: '!='
                     {
-                    match(input,63,FOLLOW_63_in_operator3633); 
+                    match(input,64,FOLLOW_64_in_operator3820); 
                     str="!=";
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1238:18: 'contains'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1262:18: 'contains'
                     {
-                    match(input,64,FOLLOW_64_in_operator3640); 
+                    match(input,65,FOLLOW_65_in_operator3827); 
                     str="contains";
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1239:18: 'matches'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1263:18: 'matches'
                     {
-                    match(input,65,FOLLOW_65_in_operator3647); 
+                    match(input,66,FOLLOW_66_in_operator3834); 
                     str="matches";
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1240:18: 'excludes'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1264:18: 'excludes'
                     {
-                    match(input,66,FOLLOW_66_in_operator3654); 
+                    match(input,67,FOLLOW_67_in_operator3841); 
                     str="excludes";
 
                     }
@@ -6253,31 +6429,31 @@
     // $ANTLR end operator
 
 
-    protected DFA2 dfa2 = new DFA2();protected DFA4 dfa4 = new DFA4();protected DFA12 dfa12 = new DFA12();protected DFA13 dfa13 = new DFA13();protected DFA14 dfa14 = new DFA14();protected DFA46 dfa46 = new DFA46();protected DFA47 dfa47 = new DFA47();protected DFA48 dfa48 = new DFA48();protected DFA53 dfa53 = new DFA53();protected DFA56 dfa56 = new DFA56();protected DFA57 dfa57 = new DFA57();
+    protected DFA2 dfa2 = new DFA2();protected DFA4 dfa4 = new DFA4();protected DFA12 dfa12 = new DFA12();protected DFA13 dfa13 = new DFA13();protected DFA14 dfa14 = new DFA14();protected DFA46 dfa46 = new DFA46();protected DFA47 dfa47 = new DFA47();protected DFA48 dfa48 = new DFA48();protected DFA56 dfa56 = new DFA56();protected DFA59 dfa59 = new DFA59();protected DFA60 dfa60 = new DFA60();
     class DFA2 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
         DFA.State s1 = new DFA.State() {{alt=5;}};
+        DFA.State s5 = new DFA.State() {{alt=3;}};
         DFA.State s4 = new DFA.State() {{alt=2;}};
         DFA.State s3 = new DFA.State() {{alt=1;}};
-        DFA.State s5 = new DFA.State() {{alt=3;}};
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 28:
-                    return s4;
+                case 30:
+                    return s5;
 
                 case EOL:
                 case 15:
                     return s2;
 
+                case 28:
+                    return s4;
+
                 case 31:
                     return s3;
 
-                case 30:
-                    return s5;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 2, 2, input);
@@ -6353,7 +6529,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_28 = input.LA(1);
                 if ( LA4_28==ID ) {return s19;}
-                if ( LA4_28==54 ) {return s18;}
+                if ( LA4_28==55 ) {return s18;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 28, input);
@@ -6364,7 +6540,7 @@
         DFA.State s18 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_18 = input.LA(1);
-                if ( LA4_18==55 ) {return s28;}
+                if ( LA4_18==56 ) {return s28;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 18, input);
@@ -6375,7 +6551,7 @@
         DFA.State s27 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 54:
+                case 55:
                     return s18;
 
                 case ID:
@@ -6408,7 +6584,7 @@
                 case 18:
                     return s17;
 
-                case 54:
+                case 55:
                     return s18;
 
                 case ID:
@@ -6432,15 +6608,16 @@
                 throw nvae;
             }
         };
-        DFA.State s122 = new DFA.State() {{alt=1;}};
+        DFA.State s115 = new DFA.State() {{alt=1;}};
+        DFA.State s121 = new DFA.State() {{alt=1;}};
         DFA.State s123 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 27:
-                    return s122;
+                    return s121;
 
                 case 26:
-                    return s121;
+                    return s122;
 
                 case EOL:
                 case ID:
@@ -6503,6 +6680,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s123;
 
                 default:
@@ -6512,13 +6690,13 @@
                     throw nvae;        }
             }
         };
-        DFA.State s121 = new DFA.State() {
+        DFA.State s122 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 27:
                     return s121;
 
-                case 27:
+                case 26:
                     return s122;
 
                 case EOL:
@@ -6582,22 +6760,23 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s123;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 121, input);
+                        new NoViableAltException("", 4, 122, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s115 = new DFA.State() {
+        DFA.State s116 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 27:
                     return s121;
 
-                case 27:
+                case 26:
                     return s122;
 
                 case EOL:
@@ -6661,24 +6840,24 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s123;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 115, input);
+                        new NoViableAltException("", 4, 116, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s116 = new DFA.State() {{alt=1;}};
         DFA.State s117 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 27:
-                    return s116;
+                    return s115;
 
                 case 26:
-                    return s115;
+                    return s116;
 
                 case EOL:
                 case ID:
@@ -6741,6 +6920,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s117;
 
                 default:
@@ -6753,10 +6933,10 @@
         DFA.State s106 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 27:
                     return s115;
 
-                case 27:
+                case 26:
                     return s116;
 
                 case EOL:
@@ -6820,6 +7000,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s117;
 
                 default:
@@ -6900,6 +7081,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s108;
 
                 default:
@@ -6979,6 +7161,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s108;
 
                 default:
@@ -7059,6 +7242,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s90;
 
                 default:
@@ -7138,6 +7322,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s90;
 
                 default:
@@ -7218,6 +7403,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s70;
 
                 default:
@@ -7227,7 +7413,7 @@
                     throw nvae;        }
             }
         };
-        DFA.State s52 = new DFA.State() {
+        DFA.State s54 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 26:
@@ -7297,35 +7483,36 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s70;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 52, input);
+                        new NoViableAltException("", 4, 54, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s51 = new DFA.State() {
+        DFA.State s53 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_51 = input.LA(1);
-                if ( LA4_51==26 ) {return s52;}
-                if ( LA4_51==EOL||LA4_51==15 ) {return s51;}
+                int LA4_53 = input.LA(1);
+                if ( LA4_53==26 ) {return s54;}
+                if ( LA4_53==EOL||LA4_53==15 ) {return s53;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 51, input);
+        	    new NoViableAltException("", 4, 53, input);
 
                 throw nvae;
             }
         };
-        DFA.State s34 = new DFA.State() {
+        DFA.State s36 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_34 = input.LA(1);
-                if ( LA4_34==EOL||LA4_34==15 ) {return s51;}
-                if ( LA4_34==26 ) {return s52;}
+                int LA4_36 = input.LA(1);
+                if ( LA4_36==EOL||LA4_36==15 ) {return s53;}
+                if ( LA4_36==26 ) {return s54;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 34, input);
+        	    new NoViableAltException("", 4, 36, input);
 
                 throw nvae;
             }
@@ -7334,10 +7521,10 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 25:
-                    return s34;
+                    return s36;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case EOL:
                 case 15:
@@ -7350,10 +7537,10 @@
                     throw nvae;        }
             }
         };
-        DFA.State s85 = new DFA.State() {
+        DFA.State s87 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 54:
+                case 55:
                     return s60;
 
                 case EOL:
@@ -7361,37 +7548,37 @@
                     return s103;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 85, input);
+                        new NoViableAltException("", 4, 87, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s84 = new DFA.State() {
+        DFA.State s83 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 25:
-                    return s34;
+                    return s36;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case EOL:
                 case 15:
-                    return s84;
+                    return s83;
 
                 case ID:
-                    return s85;
+                    return s87;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 84, input);
+                        new NoViableAltException("", 4, 83, input);
 
                     throw nvae;        }
             }
@@ -7399,25 +7586,25 @@
         DFA.State s65 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 18:
-                    return s17;
+                case 55:
+                    return s48;
 
-                case 54:
-                    return s46;
-
                 case EOL:
                 case 15:
-                    return s84;
+                    return s83;
 
-                case ID:
-                    return s85;
-
                 case 25:
-                    return s34;
+                    return s36;
 
                 case 24:
-                    return s49;
+                    return s51;
 
+                case 18:
+                    return s17;
+
+                case ID:
+                    return s87;
+
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 4, 65, input);
@@ -7437,14 +7624,14 @@
                 throw nvae;
             }
         };
-        DFA.State s49 = new DFA.State() {
+        DFA.State s51 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_49 = input.LA(1);
-                if ( LA4_49==EOL||LA4_49==15 ) {return s64;}
-                if ( LA4_49==ID ) {return s65;}
+                int LA4_51 = input.LA(1);
+                if ( LA4_51==EOL||LA4_51==15 ) {return s64;}
+                if ( LA4_51==ID ) {return s65;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 49, input);
+        	    new NoViableAltException("", 4, 51, input);
 
                 throw nvae;
             }
@@ -7453,10 +7640,10 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 case EOL:
                 case 15:
@@ -7477,12 +7664,12 @@
                     return s61;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
-                case 54:
+                case 55:
                     return s60;
 
                 default:
@@ -7495,7 +7682,7 @@
         DFA.State s60 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_60 = input.LA(1);
-                if ( LA4_60==55 ) {return s76;}
+                if ( LA4_60==56 ) {return s76;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 60, input);
@@ -7503,10 +7690,10 @@
                 throw nvae;
             }
         };
-        DFA.State s48 = new DFA.State() {
+        DFA.State s50 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 54:
+                case 55:
                     return s60;
 
                 case EOL:
@@ -7514,37 +7701,37 @@
                     return s61;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 48, input);
+                        new NoViableAltException("", 4, 50, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s47 = new DFA.State() {
+        DFA.State s49 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                    return s48;
+                    return s50;
 
                 case EOL:
                 case 15:
-                    return s47;
+                    return s49;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 47, input);
+                        new NoViableAltException("", 4, 49, input);
 
                     throw nvae;        }
             }
@@ -7554,20 +7741,20 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s47;
+                    return s49;
 
+                case ID:
+                    return s50;
+
+                case 55:
+                    return s48;
+
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
-                case 54:
-                    return s46;
-
-                case ID:
-                    return s48;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 4, 55, input);
@@ -7575,126 +7762,126 @@
                     throw nvae;        }
             }
         };
-        DFA.State s46 = new DFA.State() {
+        DFA.State s48 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_46 = input.LA(1);
-                if ( LA4_46==55 ) {return s55;}
+                int LA4_48 = input.LA(1);
+                if ( LA4_48==56 ) {return s55;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 46, input);
+        	    new NoViableAltException("", 4, 48, input);
 
                 throw nvae;
             }
         };
-        DFA.State s33 = new DFA.State() {
+        DFA.State s35 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 18:
                     return s17;
 
-                case 54:
-                    return s46;
+                case 55:
+                    return s48;
 
                 case EOL:
                 case 15:
-                    return s47;
+                    return s49;
 
                 case ID:
-                    return s48;
+                    return s50;
 
                 case 24:
-                    return s49;
+                    return s51;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 33, input);
+                        new NoViableAltException("", 4, 35, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s32 = new DFA.State() {
+        DFA.State s34 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                    return s33;
+                    return s35;
 
                 case EOL:
                 case 15:
-                    return s32;
+                    return s34;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 32, input);
+                        new NoViableAltException("", 4, 34, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s23 = new DFA.State() {
+        DFA.State s26 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s32;
+                    return s34;
 
                 case ID:
-                    return s33;
+                    return s35;
 
                 case 25:
-                    return s34;
+                    return s36;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 23, input);
+                        new NoViableAltException("", 4, 26, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s35 = new DFA.State() {
+        DFA.State s32 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_35 = input.LA(1);
-                if ( LA4_35==23 ) {return s23;}
-                if ( LA4_35==EOL||LA4_35==15 ) {return s35;}
+                int LA4_32 = input.LA(1);
+                if ( LA4_32==23 ) {return s26;}
+                if ( LA4_32==EOL||LA4_32==15 ) {return s32;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 35, input);
+        	    new NoViableAltException("", 4, 32, input);
 
                 throw nvae;
             }
         };
-        DFA.State s26 = new DFA.State() {
+        DFA.State s25 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_26 = input.LA(1);
-                if ( LA4_26==EOL||LA4_26==15 ) {return s35;}
-                if ( LA4_26==23 ) {return s23;}
+                int LA4_25 = input.LA(1);
+                if ( LA4_25==EOL||LA4_25==15 ) {return s32;}
+                if ( LA4_25==23 ) {return s26;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 26, input);
+        	    new NoViableAltException("", 4, 25, input);
 
                 throw nvae;
             }
         };
-        DFA.State s22 = new DFA.State() {
+        DFA.State s24 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                    return s26;
+                    return s25;
 
                 case EOL:
                 case 15:
-                    return s22;
+                    return s24;
 
                 case 23:
-                    return s23;
+                    return s26;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 22, input);
+                        new NoViableAltException("", 4, 24, input);
 
                     throw nvae;        }
             }
@@ -7702,20 +7889,20 @@
         DFA.State s14 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case EOL:
-                case 15:
-                    return s22;
-
-                case 23:
-                    return s23;
-
                 case 18:
                     return s17;
 
-                case 54:
+                case 55:
                     return s18;
 
+                case EOL:
+                case 15:
+                    return s24;
+
                 case ID:
+                    return s25;
+
+                case 23:
                     return s26;
 
                 default:
@@ -7812,7 +7999,7 @@
                 switch ( input.LA(1) ) {
                 case ID:
                 case 18:
-                case 54:
+                case 55:
                     return s3;
 
                 case EOL:
@@ -7846,9 +8033,9 @@
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
-        DFA.State s3 = new DFA.State() {{alt=1;}};
         DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s5 = new DFA.State() {
+        DFA.State s7 = new DFA.State() {{alt=1;}};
+        DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 24:
@@ -7857,14 +8044,14 @@
 
                 case EOL:
                 case 15:
-                    return s5;
+                    return s4;
 
                 case ID:
-                    return s3;
+                    return s7;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 13, 5, input);
+                        new NoViableAltException("", 13, 4, input);
 
                     throw nvae;        }
             }
@@ -7874,14 +8061,14 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s5;
+                    return s4;
 
                 case ID:
+                    return s7;
+
+                case 55:
                     return s3;
 
-                case 54:
-                    return s4;
-
                 case 24:
                 case 25:
                     return s2;
@@ -7893,13 +8080,13 @@
                     throw nvae;        }
             }
         };
-        DFA.State s4 = new DFA.State() {
+        DFA.State s3 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA13_4 = input.LA(1);
-                if ( LA13_4==55 ) {return s9;}
+                int LA13_3 = input.LA(1);
+                if ( LA13_3==56 ) {return s9;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 13, 4, input);
+        	    new NoViableAltException("", 13, 3, input);
 
                 throw nvae;
             }
@@ -7907,21 +8094,21 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case ID:
-                case 18:
+                case 55:
                     return s3;
 
-                case 54:
-                    return s4;
-
                 case EOL:
                 case 15:
-                    return s5;
+                    return s4;
 
                 case 24:
                 case 25:
                     return s2;
 
+                case ID:
+                case 18:
+                    return s7;
+
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 13, 1, input);
@@ -7946,25 +8133,25 @@
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
-        DFA.State s7 = new DFA.State() {{alt=1;}};
+        DFA.State s3 = new DFA.State() {{alt=1;}};
         DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s4 = new DFA.State() {
+        DFA.State s5 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case ID:
-                    return s7;
+                case 24:
+                case 25:
+                    return s2;
 
                 case EOL:
                 case 15:
-                    return s4;
+                    return s5;
 
-                case 24:
-                case 25:
-                    return s2;
+                case ID:
+                    return s3;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 14, 4, input);
+                        new NoViableAltException("", 14, 5, input);
 
                     throw nvae;        }
             }
@@ -7974,18 +8161,18 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
+                    return s5;
+
+                case 24:
+                case 25:
+                    return s2;
+
+                case 55:
                     return s4;
 
                 case ID:
-                    return s7;
-
-                case 54:
                     return s3;
 
-                case 24:
-                case 25:
-                    return s2;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 14, 9, input);
@@ -7993,13 +8180,13 @@
                     throw nvae;        }
             }
         };
-        DFA.State s3 = new DFA.State() {
+        DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA14_3 = input.LA(1);
-                if ( LA14_3==55 ) {return s9;}
+                int LA14_4 = input.LA(1);
+                if ( LA14_4==56 ) {return s9;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 14, 3, input);
+        	    new NoViableAltException("", 14, 4, input);
 
                 throw nvae;
             }
@@ -8007,21 +8194,21 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 54:
+                case ID:
+                case 18:
                     return s3;
 
+                case 55:
+                    return s4;
+
                 case EOL:
                 case 15:
-                    return s4;
+                    return s5;
 
                 case 24:
                 case 25:
                     return s2;
 
-                case ID:
-                case 18:
-                    return s7;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 14, 1, input);
@@ -8046,24 +8233,24 @@
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
-        DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s6 = new DFA.State() {{alt=1;}};
-        DFA.State s4 = new DFA.State() {
+        DFA.State s3 = new DFA.State() {{alt=1;}};
+        DFA.State s4 = new DFA.State() {{alt=2;}};
+        DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 23:
-                    return s2;
+                case 33:
+                    return s3;
 
                 case EOL:
                 case 15:
+                    return s2;
+
+                case 23:
                     return s4;
 
-                case 33:
-                    return s6;
-
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 46, 4, input);
+                        new NoViableAltException("", 46, 2, input);
 
                     throw nvae;        }
             }
@@ -8071,18 +8258,18 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 18:
-                case 23:
-                case 54:
-                    return s2;
-
                 case EOL:
                 case 15:
-                    return s4;
+                    return s2;
 
                 case 33:
-                    return s6;
+                    return s3;
 
+                case 18:
+                case 23:
+                case 55:
+                    return s4;
+
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 46, 1, input);
@@ -8108,7 +8295,7 @@
         }
         DFA.State s8 = new DFA.State() {{alt=1;}};
         DFA.State s27 = new DFA.State() {{alt=2;}};
-        DFA.State s50 = new DFA.State() {
+        DFA.State s52 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 23:
@@ -8117,7 +8304,7 @@
 
                 case EOL:
                 case 15:
-                    return s50;
+                    return s52;
 
                 case 24:
                 case 25:
@@ -8125,7 +8312,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 47, 50, input);
+                        new NoViableAltException("", 47, 52, input);
 
                     throw nvae;        }
             }
@@ -8135,18 +8322,18 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s50;
+                    return s52;
 
-                case 24:
-                case 25:
-                    return s27;
-
                 case 18:
                 case 23:
                 case 33:
-                case 54:
+                case 55:
                     return s8;
 
+                case 24:
+                case 25:
+                    return s27;
+
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 47, 31, input);
@@ -8162,22 +8349,23 @@
                 case STRING:
                 case FLOAT:
                 case 25:
+                case 26:
                 case 43:
                     return s27;
 
-                case ID:
-                    return s31;
-
                 case EOL:
                 case 15:
                     return s26;
 
                 case 23:
-                case 51:
                 case 52:
                 case 53:
+                case 54:
                     return s8;
 
+                case ID:
+                    return s31;
+
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 47, 26, input);
@@ -8197,6 +8385,7 @@
                 case STRING:
                 case FLOAT:
                 case 25:
+                case 26:
                 case 43:
                     return s27;
 
@@ -8204,9 +8393,9 @@
                     return s31;
 
                 case 23:
-                case 51:
                 case 52:
                 case 53:
+                case 54:
                     return s8;
 
                 default:
@@ -8219,19 +8408,19 @@
         DFA.State s6 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case EOL:
-                case 15:
-                    return s6;
-
                 case ID:
                 case 25:
                 case 29:
                 case 34:
-                case 51:
                 case 52:
                 case 53:
+                case 54:
                     return s8;
 
+                case EOL:
+                case 15:
+                    return s6;
+
                 case 23:
                     return s7;
 
@@ -8256,13 +8445,13 @@
                 case 25:
                 case 29:
                 case 34:
-                case 44:
                 case 45:
-                case 49:
+                case 46:
                 case 50:
                 case 51:
                 case 52:
                 case 53:
+                case 54:
                     return s8;
 
                 default:
@@ -8355,28 +8544,28 @@
             }
         };
 
-    }class DFA53 extends DFA {
+    }class DFA56 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
+        DFA.State s2 = new DFA.State() {{alt=1;}};
         DFA.State s3 = new DFA.State() {{alt=2;}};
-        DFA.State s2 = new DFA.State() {{alt=1;}};
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 25:
-                    return s3;
+                case ID:
+                    return s2;
 
                 case EOL:
                 case 15:
                     return s1;
 
-                case ID:
-                    return s2;
+                case 25:
+                    return s3;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 53, 1, input);
+                        new NoViableAltException("", 56, 1, input);
 
                     throw nvae;        }
             }
@@ -8396,13 +8585,13 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 53, 0, input);
+                        new NoViableAltException("", 56, 0, input);
 
                     throw nvae;        }
             }
         };
 
-    }class DFA56 extends DFA {
+    }class DFA59 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
@@ -8423,7 +8612,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 1, input);
+                        new NoViableAltException("", 59, 1, input);
 
                     throw nvae;        }
             }
@@ -8443,31 +8632,27 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 0, input);
+                        new NoViableAltException("", 59, 0, input);
 
                     throw nvae;        }
             }
         };
 
-    }class DFA57 extends DFA {
+    }class DFA60 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
+        DFA.State s3 = new DFA.State() {{alt=2;}};
         DFA.State s15 = new DFA.State() {{alt=1;}};
-        DFA.State s3 = new DFA.State() {{alt=2;}};
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 33:
-                    return s15;
-
                 case EOL:
                 case 15:
                     return s2;
 
                 case 24:
                 case 25:
-                case 57:
                 case 58:
                 case 59:
                 case 60:
@@ -8477,11 +8662,15 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s3;
 
+                case 33:
+                    return s15;
+
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 57, 2, input);
+                        new NoViableAltException("", 60, 2, input);
 
                     throw nvae;        }
             }
@@ -8495,7 +8684,6 @@
 
                 case 24:
                 case 25:
-                case 57:
                 case 58:
                 case 59:
                 case 60:
@@ -8505,6 +8693,7 @@
                 case 64:
                 case 65:
                 case 66:
+                case 67:
                     return s3;
 
                 case 33:
@@ -8512,18 +8701,18 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 57, 1, input);
+                        new NoViableAltException("", 60, 1, input);
 
                     throw nvae;        }
             }
         };
         DFA.State s0 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA57_0 = input.LA(1);
-                if ( LA57_0==ID ) {return s1;}
+                int LA60_0 = input.LA(1);
+                if ( LA60_0==ID ) {return s1;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 57, 0, input);
+        	    new NoViableAltException("", 60, 0, input);
 
                 throw nvae;
             }
@@ -8587,14 +8776,14 @@
     public static final BitSet FOLLOW_opt_eol_in_function451 = new BitSet(new long[]{0x0000000003000000L});
     public static final BitSet FOLLOW_25_in_function476 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_function480 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_26_in_function484 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
+    public static final BitSet FOLLOW_26_in_function484 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
     public static final BitSet FOLLOW_curly_chunk_in_function491 = new BitSet(new long[]{0x0000000008000000L});
     public static final BitSet FOLLOW_27_in_function500 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_function508 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_opt_eol_in_query532 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_28_in_query538 = new BitSet(new long[]{0x01000035B0020120L});
+    public static final BitSet FOLLOW_28_in_query538 = new BitSet(new long[]{0x02000035B0020120L});
     public static final BitSet FOLLOW_word_in_query542 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_query544 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
+    public static final BitSet FOLLOW_opt_eol_in_query544 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
     public static final BitSet FOLLOW_expander_lhs_block_in_query560 = new BitSet(new long[]{0x0000000020000000L});
     public static final BitSet FOLLOW_normal_lhs_block_in_query568 = new BitSet(new long[]{0x0000000020000000L});
     public static final BitSet FOLLOW_29_in_query583 = new BitSet(new long[]{0x0000000000008012L});
@@ -8610,20 +8799,20 @@
     public static final BitSet FOLLOW_ID_in_template_slot689 = new BitSet(new long[]{0x0000000000008010L});
     public static final BitSet FOLLOW_set_in_template_slot693 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_opt_eol_in_rule728 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_31_in_rule734 = new BitSet(new long[]{0x01000035B0020120L});
+    public static final BitSet FOLLOW_31_in_rule734 = new BitSet(new long[]{0x02000035B0020120L});
     public static final BitSet FOLLOW_word_in_rule738 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_rule740 = new BitSet(new long[]{0x0000000A00008012L});
     public static final BitSet FOLLOW_rule_attributes_in_rule751 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_rule761 = new BitSet(new long[]{0x0000000120008012L});
     public static final BitSet FOLLOW_32_in_rule770 = new BitSet(new long[]{0x0000000200008012L});
     public static final BitSet FOLLOW_33_in_rule772 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule775 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
+    public static final BitSet FOLLOW_opt_eol_in_rule775 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
     public static final BitSet FOLLOW_expander_lhs_block_in_rule793 = new BitSet(new long[]{0x0000000020008012L});
     public static final BitSet FOLLOW_normal_lhs_block_in_rule802 = new BitSet(new long[]{0x0000000020008012L});
     public static final BitSet FOLLOW_opt_eol_in_rule825 = new BitSet(new long[]{0x0000000400000000L});
     public static final BitSet FOLLOW_34_in_rule829 = new BitSet(new long[]{0x0000000200008012L});
     public static final BitSet FOLLOW_33_in_rule831 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule835 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000000007L});
+    public static final BitSet FOLLOW_opt_eol_in_rule835 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000000FL});
     public static final BitSet FOLLOW_29_in_rule881 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_rule883 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_extra_statement903 = new BitSet(new long[]{0x0000000000000002L});
@@ -8680,11 +8869,11 @@
     public static final BitSet FOLLOW_15_in_duration1394 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_duration1397 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_in_normal_lhs_block1423 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1425 = new BitSet(new long[]{0x0038000000808032L});
+    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1425 = new BitSet(new long[]{0x0070000000808032L});
     public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1437 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_paren_chunk_in_expander_lhs_block1478 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1482 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1497 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1482 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1497 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
     public static final BitSet FOLLOW_lhs_or_in_lhs1539 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_binding_in_lhs_column1567 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_in_lhs_column1576 = new BitSet(new long[]{0x0000000000000002L});
@@ -8699,167 +8888,180 @@
     public static final BitSet FOLLOW_ID_in_from_source1693 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_from_source1695 = new BitSet(new long[]{0x0000000000800000L});
     public static final BitSet FOLLOW_23_in_from_source1698 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1700 = new BitSet(new long[]{0x00000800000003E2L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1700 = new BitSet(new long[]{0x00000800040003E2L});
     public static final BitSet FOLLOW_argument_list_in_from_source1704 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_from_source1706 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_from_source1708 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_from_source1730 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_from_source1732 = new BitSet(new long[]{0x0000000000800000L});
     public static final BitSet FOLLOW_23_in_from_source1734 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1736 = new BitSet(new long[]{0x00000800000003E2L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1736 = new BitSet(new long[]{0x00000800040003E2L});
     public static final BitSet FOLLOW_argument_list_in_from_source1740 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_from_source1742 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_25_in_from_source1744 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_argument_value_in_argument_list1787 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_argument_list1803 = new BitSet(new long[]{0x0000000001000000L});
     public static final BitSet FOLLOW_24_in_argument_list1805 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_argument_list1807 = new BitSet(new long[]{0x00000800000003E0L});
+    public static final BitSet FOLLOW_opt_eol_in_argument_list1807 = new BitSet(new long[]{0x00000800040003E0L});
     public static final BitSet FOLLOW_argument_value_in_argument_list1811 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_STRING_in_argument_value1849 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_argument_value1860 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_argument_value1873 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_argument_value1884 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument_value1896 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_argument_value1907 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding1946 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding1956 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_fact_binding1958 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding1960 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_binding1964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_fact_expression1996 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression1998 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2002 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2004 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact_expression2006 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2017 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2019 = new BitSet(new long[]{0x0000300000000002L});
-    public static final BitSet FOLLOW_set_in_fact_expression2032 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2037 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2051 = new BitSet(new long[]{0x0000300000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_fact2090 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2098 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_fact2106 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2109 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_constraints_in_fact2115 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2134 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact2138 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2172 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints2177 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints2180 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2188 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_constraints2190 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2192 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints2195 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints2198 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2206 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2225 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint2233 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2235 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_constraint2237 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2239 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint2249 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2263 = new BitSet(new long[]{0xFE00000000008012L,0x0000000000000007L});
-    public static final BitSet FOLLOW_operator_in_constraint2269 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2271 = new BitSet(new long[]{0x00000800008003E0L});
-    public static final BitSet FOLLOW_ID_in_constraint2289 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint2314 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint2346 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint2366 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_set_in_constraint2401 = new BitSet(new long[]{0xFE00000000000000L,0x0000000000000007L});
-    public static final BitSet FOLLOW_operator_in_constraint2423 = new BitSet(new long[]{0x00000800008003E0L});
-    public static final BitSet FOLLOW_ID_in_constraint2435 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint2463 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint2498 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint2520 = new BitSet(new long[]{0x0000C00000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2576 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2603 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2614 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2627 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_literal_constraint2650 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2681 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_18_in_enum_constraint2683 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2687 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_retval_constraint2716 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2721 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_retval_constraint2724 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_predicate2742 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_predicate2744 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_predicate2748 = new BitSet(new long[]{0x0001000000000000L});
-    public static final BitSet FOLLOW_48_in_predicate2750 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_predicate2752 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2756 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_predicate2758 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_paren_chunk2804 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2808 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk2810 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_23_in_paren_chunk22881 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk22885 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk22887 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_26_in_curly_chunk2956 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk2960 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_27_in_curly_chunk2962 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3020 = new BitSet(new long[]{0x0000300000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or3029 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_or3034 = new BitSet(new long[]{0x0038000000800020L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3041 = new BitSet(new long[]{0x0000300000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3081 = new BitSet(new long[]{0x0006000000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_and3090 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_and3095 = new BitSet(new long[]{0x0038000000800020L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3102 = new BitSet(new long[]{0x0006000000000002L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3150 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3174 = new BitSet(new long[]{0x0000040000000002L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary3181 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_lhs_unary3191 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3193 = new BitSet(new long[]{0x0038000000800020L});
-    public static final BitSet FOLLOW_lhs_in_lhs_unary3197 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3199 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_unary3201 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_51_in_lhs_exist3232 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_exist3235 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3239 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_exist3241 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3247 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_52_in_lhs_not3277 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_not3280 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3284 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_not3287 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3293 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_53_in_lhs_eval3319 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_lhs_eval3323 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000007L});
-    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval3331 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_eval3335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3367 = new BitSet(new long[]{0x0040000000040002L});
-    public static final BitSet FOLLOW_18_in_dotted_name3373 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3377 = new BitSet(new long[]{0x0040000000040002L});
-    public static final BitSet FOLLOW_54_in_dotted_name3386 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_55_in_dotted_name3388 = new BitSet(new long[]{0x0040000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument_name3418 = new BitSet(new long[]{0x0040000000000002L});
-    public static final BitSet FOLLOW_54_in_argument_name3424 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_55_in_argument_name3426 = new BitSet(new long[]{0x0040000000000002L});
-    public static final BitSet FOLLOW_ID_in_word3454 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_17_in_word3466 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_56_in_word3475 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_word3487 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_word3498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_word3508 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_word3516 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_32_in_word3524 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_word3535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_29_in_word3546 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_word3560 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_57_in_operator3589 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_58_in_operator3596 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_59_in_operator3603 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_60_in_operator3610 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_61_in_operator3619 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_62_in_operator3626 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_63_in_operator3633 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_64_in_operator3640 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_operator3647 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_66_in_operator3654 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_argument_value1851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_argument_value1862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_argument_value1875 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_argument_value1886 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument_value1898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_argument_value1909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_argument_value1920 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_inline_map_in_argument_value1939 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_inline_map1979 = new BitSet(new long[]{0x00000800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map1997 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_inline_map1999 = new BitSet(new long[]{0x00000800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2003 = new BitSet(new long[]{0x0000000009000010L});
+    public static final BitSet FOLLOW_EOL_in_inline_map2046 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_inline_map2050 = new BitSet(new long[]{0x00000800040003F0L});
+    public static final BitSet FOLLOW_EOL_in_inline_map2053 = new BitSet(new long[]{0x00000800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2059 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_inline_map2061 = new BitSet(new long[]{0x00000800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2065 = new BitSet(new long[]{0x0000000009000010L});
+    public static final BitSet FOLLOW_27_in_inline_map2101 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding2133 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding2143 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_fact_binding2145 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding2147 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_binding2151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_fact_expression2183 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2185 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2189 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2191 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_fact_expression2193 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2204 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2206 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_set_in_fact_expression2219 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2224 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2238 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_fact2277 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2285 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_fact2293 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2296 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_constraints_in_fact2302 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2321 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_fact2325 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2327 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2359 = new BitSet(new long[]{0x0000000000008032L});
+    public static final BitSet FOLLOW_constraint_in_constraints2364 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_predicate_in_constraints2367 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2375 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_constraints2377 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2379 = new BitSet(new long[]{0x0000000000008032L});
+    public static final BitSet FOLLOW_constraint_in_constraints2382 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_predicate_in_constraints2385 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2393 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2412 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_constraint2420 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2422 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_constraint2424 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2426 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_constraint2436 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2450 = new BitSet(new long[]{0xFC00000000008012L,0x000000000000000FL});
+    public static final BitSet FOLLOW_operator_in_constraint2456 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2458 = new BitSet(new long[]{0x00000800008003E0L});
+    public static final BitSet FOLLOW_ID_in_constraint2476 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint2501 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint2533 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint2553 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_set_in_constraint2588 = new BitSet(new long[]{0xFC00000000000000L,0x000000000000000FL});
+    public static final BitSet FOLLOW_operator_in_constraint2610 = new BitSet(new long[]{0x00000800008003E0L});
+    public static final BitSet FOLLOW_ID_in_constraint2622 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint2650 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint2685 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint2707 = new BitSet(new long[]{0x0001800000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2763 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2801 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2814 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2825 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_literal_constraint2837 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2868 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_18_in_enum_constraint2870 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2874 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_retval_constraint2903 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2908 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_retval_constraint2911 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_predicate2929 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_predicate2931 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_predicate2935 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_49_in_predicate2937 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_predicate2939 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2943 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_predicate2945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_paren_chunk2991 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2995 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_paren_chunk2997 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_23_in_paren_chunk23068 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk23072 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_paren_chunk23074 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_26_in_curly_chunk3143 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3147 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_curly_chunk3149 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3207 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_or3216 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_or3221 = new BitSet(new long[]{0x0070000000800020L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3228 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3268 = new BitSet(new long[]{0x000C000000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_and3277 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_and3282 = new BitSet(new long[]{0x0070000000800020L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3289 = new BitSet(new long[]{0x000C000000000002L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3327 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3337 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3347 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3361 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary3368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_lhs_unary3378 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3380 = new BitSet(new long[]{0x0070000000800020L});
+    public static final BitSet FOLLOW_lhs_in_lhs_unary3384 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3386 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_unary3388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_52_in_lhs_exist3419 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_23_in_lhs_exist3422 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3426 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_exist3428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3434 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_53_in_lhs_not3464 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_23_in_lhs_not3467 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3471 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_not3474 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3480 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_54_in_lhs_eval3506 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_lhs_eval3510 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval3518 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_eval3522 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3554 = new BitSet(new long[]{0x0080000000040002L});
+    public static final BitSet FOLLOW_18_in_dotted_name3560 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3564 = new BitSet(new long[]{0x0080000000040002L});
+    public static final BitSet FOLLOW_55_in_dotted_name3573 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_56_in_dotted_name3575 = new BitSet(new long[]{0x0080000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument_name3605 = new BitSet(new long[]{0x0080000000000002L});
+    public static final BitSet FOLLOW_55_in_argument_name3611 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_56_in_argument_name3613 = new BitSet(new long[]{0x0080000000000002L});
+    public static final BitSet FOLLOW_ID_in_word3641 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_word3653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_57_in_word3662 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_word3674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_word3685 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_36_in_word3695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_word3703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_32_in_word3711 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_word3722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_29_in_word3733 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_word3747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_58_in_operator3776 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_59_in_operator3783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_60_in_operator3790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_61_in_operator3797 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_62_in_operator3806 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_63_in_operator3813 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_operator3820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_operator3827 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_66_in_operator3834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_67_in_operator3841 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2006-08-30 15:59:19 UTC (rev 6027)
@@ -1,8 +1,8 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-24 14:53:11
+// $ANTLR 3.0ea8 D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g 2006-08-30 13:06:31
+
+	package org.drools.lang;
 
-	package org.drools.lang;
 
-
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -39,7 +39,7 @@
     public static final int T39=39;
     public static final int ID=5;
     public static final int T21=21;
-    public static final int Synpred1_fragment=68;
+    public static final int Synpred1_fragment=69;
     public static final int T62=62;
     public static final int T44=44;
     public static final int T55=55;
@@ -64,9 +64,10 @@
     public static final int T15=15;
     public static final int T54=54;
     public static final int EOF=-1;
+    public static final int T67=67;
     public static final int T47=47;
     public static final int EOL=4;
-    public static final int Tokens=67;
+    public static final int Tokens=68;
     public static final int T53=53;
     public static final int T60=60;
     public static final int T31=31;
@@ -79,7 +80,7 @@
     public RuleParserLexer() {;} 
     public RuleParserLexer(CharStream input) {
         super(input);
-        ruleMemo = new Map[65+1];
+        ruleMemo = new Map[66+1];
      }
 
 
@@ -93,8 +94,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
-            // /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: ';'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:6:7: ( ';' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:6:7: ';'
             {
             match(';'); if (failed) return ;
 
@@ -119,8 +120,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:7:7: ( 'package' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:7:7: 'package'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:7:7: ( 'package' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:7:7: 'package'
             {
             match("package"); if (failed) return ;
 
@@ -146,8 +147,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:8:7: ( 'import' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:8:7: 'import'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:8:7: ( 'import' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:8:7: 'import'
             {
             match("import"); if (failed) return ;
 
@@ -173,8 +174,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
-            // /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: '.'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:9:7: ( '.' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:9:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -199,8 +200,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
-            // /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: '.*'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:10:7: ( '.*' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:10:7: '.*'
             {
             match(".*"); if (failed) return ;
 
@@ -226,8 +227,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:11:7: ( 'expander' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:11:7: 'expander'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:11:7: ( 'expander' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:11:7: 'expander'
             {
             match("expander"); if (failed) return ;
 
@@ -253,8 +254,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:12:7: ( 'global' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:12:7: 'global'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:12:7: ( 'global' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:12:7: 'global'
             {
             match("global"); if (failed) return ;
 
@@ -280,8 +281,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:13:7: ( 'function' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:13:7: 'function'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:13:7: ( 'function' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:13:7: 'function'
             {
             match("function"); if (failed) return ;
 
@@ -307,8 +308,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
-            // /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: '('
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:14:7: ( '(' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:14:7: '('
             {
             match('('); if (failed) return ;
 
@@ -333,8 +334,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
-            // /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: ','
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:15:7: ( ',' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:15:7: ','
             {
             match(','); if (failed) return ;
 
@@ -359,8 +360,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
-            // /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: ')'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:16:7: ( ')' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:16:7: ')'
             {
             match(')'); if (failed) return ;
 
@@ -385,8 +386,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
-            // /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: '{'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:17:7: ( '{' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:17:7: '{'
             {
             match('{'); if (failed) return ;
 
@@ -411,8 +412,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
-            // /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: '}'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:18:7: ( '}' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:18:7: '}'
             {
             match('}'); if (failed) return ;
 
@@ -437,8 +438,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:19:7: ( 'query' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:19:7: 'query'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:19:7: ( 'query' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:19:7: 'query'
             {
             match("query"); if (failed) return ;
 
@@ -464,8 +465,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:20:7: ( 'end' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:20:7: 'end'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:20:7: ( 'end' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:20:7: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -491,8 +492,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:21:7: ( 'template' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:21:7: 'template'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:21:7: ( 'template' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:21:7: 'template'
             {
             match("template"); if (failed) return ;
 
@@ -518,8 +519,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:22:7: ( 'rule' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:22:7: 'rule'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:22:7: ( 'rule' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:22:7: 'rule'
             {
             match("rule"); if (failed) return ;
 
@@ -545,8 +546,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:23:7: ( 'when' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:23:7: 'when'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:23:7: ( 'when' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:23:7: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -572,8 +573,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:24:7: ( ':' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:24:7: ':'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:24:7: ( ':' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:24:7: ':'
             {
             match(':'); if (failed) return ;
 
@@ -598,8 +599,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:25:7: ( 'then' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:25:7: 'then'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:25:7: ( 'then' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:25:7: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -625,8 +626,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:26:7: ( 'attributes' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:26:7: 'attributes'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:26:7: ( 'attributes' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:26:7: 'attributes'
             {
             match("attributes"); if (failed) return ;
 
@@ -652,8 +653,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:27:7: ( 'salience' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:27:7: 'salience'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:27:7: ( 'salience' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:27:7: 'salience'
             {
             match("salience"); if (failed) return ;
 
@@ -679,8 +680,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:28:7: ( 'no-loop' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:28:7: 'no-loop'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:28:7: ( 'no-loop' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:28:7: 'no-loop'
             {
             match("no-loop"); if (failed) return ;
 
@@ -706,8 +707,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:29:7: ( 'auto-focus' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:29:7: 'auto-focus'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:29:7: ( 'auto-focus' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:29:7: 'auto-focus'
             {
             match("auto-focus"); if (failed) return ;
 
@@ -733,8 +734,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:30:7: ( 'activation-group' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:30:7: 'activation-group'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:30:7: ( 'activation-group' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:30:7: 'activation-group'
             {
             match("activation-group"); if (failed) return ;
 
@@ -760,8 +761,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:31:7: ( 'agenda-group' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:31:7: 'agenda-group'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:31:7: ( 'agenda-group' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:31:7: 'agenda-group'
             {
             match("agenda-group"); if (failed) return ;
 
@@ -787,8 +788,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:32:7: ( 'duration' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:32:7: 'duration'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:32:7: ( 'duration' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:32:7: 'duration'
             {
             match("duration"); if (failed) return ;
 
@@ -814,8 +815,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:33:7: ( 'from' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:33:7: 'from'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:33:7: ( 'from' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:33:7: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -841,8 +842,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:34:7: ( 'null' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:34:7: 'null'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:34:7: ( 'null' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:34:7: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -868,10 +869,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:35:7: ( 'or' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:35:7: 'or'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:35:7: ( '=>' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:35:7: '=>'
             {
-            match("or"); if (failed) return ;
+            match("=>"); if (failed) return ;
 
 
             }
@@ -895,10 +896,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:36:7: ( '||' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:36:7: '||'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:36:7: ( 'or' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:36:7: 'or'
             {
-            match("||"); if (failed) return ;
+            match("or"); if (failed) return ;
 
 
             }
@@ -922,11 +923,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:37:7: ( '&' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:37:7: '&'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:37:7: ( '||' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:37:7: '||'
             {
-            match('&'); if (failed) return ;
+            match("||"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -948,10 +950,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:38:7: ( '|' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:38:7: '|'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:38:7: ( '&' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:38:7: '&'
             {
-            match('|'); if (failed) return ;
+            match('&'); if (failed) return ;
 
             }
 
@@ -974,12 +976,11 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:39:7: ( '->' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:39:7: '->'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:39:7: ( '|' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:39:7: '|'
             {
-            match("->"); if (failed) return ;
+            match('|'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1001,10 +1002,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:40:7: ( 'and' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:40:7: 'and'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:40:7: ( '->' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:40:7: '->'
             {
-            match("and"); if (failed) return ;
+            match("->"); if (failed) return ;
 
 
             }
@@ -1028,10 +1029,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:41:7: ( '&&' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:41:7: '&&'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:41:7: ( 'and' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:41:7: 'and'
             {
-            match("&&"); if (failed) return ;
+            match("and"); if (failed) return ;
 
 
             }
@@ -1055,10 +1056,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:42:7: ( 'exists' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:42:7: 'exists'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:42:7: ( '&&' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:42:7: '&&'
             {
-            match("exists"); if (failed) return ;
+            match("&&"); if (failed) return ;
 
 
             }
@@ -1082,10 +1083,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:43:7: ( 'not' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:43:7: 'not'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:43:7: ( 'exists' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:43:7: 'exists'
             {
-            match("not"); if (failed) return ;
+            match("exists"); if (failed) return ;
 
 
             }
@@ -1109,10 +1110,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:44:7: ( 'eval' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:44:7: 'eval'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:44:7: ( 'not' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:44:7: 'not'
             {
-            match("eval"); if (failed) return ;
+            match("not"); if (failed) return ;
 
 
             }
@@ -1136,11 +1137,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 40) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:45:7: ( '[' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:45:7: '['
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:45:7: ( 'eval' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:45:7: 'eval'
             {
-            match('['); if (failed) return ;
+            match("eval"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1162,10 +1164,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:46:7: ( ']' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:46:7: ']'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:46:7: ( '[' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:46:7: '['
             {
-            match(']'); if (failed) return ;
+            match('['); if (failed) return ;
 
             }
 
@@ -1188,12 +1190,11 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:47:7: ( 'use' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:47:7: 'use'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:47:7: ( ']' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:47:7: ']'
             {
-            match("use"); if (failed) return ;
+            match(']'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1215,10 +1216,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:48:7: ( '==' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:48:7: '=='
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:48:7: ( 'use' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:48:7: 'use'
             {
-            match("=="); if (failed) return ;
+            match("use"); if (failed) return ;
 
 
             }
@@ -1242,11 +1243,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:49:7: ( '=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:49:7: '='
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:49:7: ( '==' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:49:7: '=='
             {
-            match('='); if (failed) return ;
+            match("=="); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1268,10 +1270,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:50:7: ( '>' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:50:7: '>'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:50:7: ( '=' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:50:7: '='
             {
-            match('>'); if (failed) return ;
+            match('='); if (failed) return ;
 
             }
 
@@ -1294,12 +1296,11 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:51:7: ( '>=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:51:7: '>='
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:51:7: ( '>' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:51:7: '>'
             {
-            match(">="); if (failed) return ;
+            match('>'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1321,11 +1322,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:52:7: ( '<' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:52:7: '<'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:52:7: ( '>=' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:52:7: '>='
             {
-            match('<'); if (failed) return ;
+            match(">="); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1347,12 +1349,11 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:53:7: ( '<=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:53:7: '<='
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:53:7: ( '<' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:53:7: '<'
             {
-            match("<="); if (failed) return ;
+            match('<'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
@@ -1374,10 +1375,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:54:7: ( '!=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:54:7: '!='
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:54:7: ( '<=' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:54:7: '<='
             {
-            match("!="); if (failed) return ;
+            match("<="); if (failed) return ;
 
 
             }
@@ -1401,10 +1402,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 50) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:55:7: ( 'contains' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:55:7: 'contains'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:55:7: ( '!=' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:55:7: '!='
             {
-            match("contains"); if (failed) return ;
+            match("!="); if (failed) return ;
 
 
             }
@@ -1428,10 +1429,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:56:7: ( 'matches' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:56:7: 'matches'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:56:7: ( 'contains' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:56:7: 'contains'
             {
-            match("matches"); if (failed) return ;
+            match("contains"); if (failed) return ;
 
 
             }
@@ -1455,10 +1456,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 52) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:57:7: ( 'excludes' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:57:7: 'excludes'
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:57:7: ( 'matches' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:57:7: 'matches'
             {
-            match("excludes"); if (failed) return ;
+            match("matches"); if (failed) return ;
 
 
             }
@@ -1472,6 +1473,33 @@
     // $ANTLR end T66
 
 
+    // $ANTLR start T67
+    public void mT67() throws RecognitionException {
+        int T67_StartIndex = input.index();
+        try {
+            int type = T67;
+            int start = getCharIndex();
+            int line = getLine();
+            int charPosition = getCharPositionInLine();
+            int channel = Token.DEFAULT_CHANNEL;
+            if ( backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:58:7: ( 'excludes' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:58:7: 'excludes'
+            {
+            match("excludes"); if (failed) return ;
+
+
+            }
+
+            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 53, T67_StartIndex); }
+        }
+    }
+    // $ANTLR end T67
+
+
     // $ANTLR start MISC
     public void mMISC() throws RecognitionException {
         int MISC_StartIndex = input.index();
@@ -1481,8 +1509,8 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
+            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
             int alt1=39;
             switch ( input.LA(1) ) {
             case '!':
@@ -1521,24 +1549,24 @@
                 break;
             case '-':
                 switch ( input.LA(2) ) {
+                case '-':
+                    alt1=28;
+                    break;
                 case '=':
                     alt1=33;
                     break;
-                case '-':
-                    alt1=28;
-                    break;
                 default:
                     alt1=9;}
 
                 break;
             case '+':
                 switch ( input.LA(2) ) {
+                case '=':
+                    alt1=31;
+                    break;
                 case '+':
                     alt1=27;
                     break;
-                case '=':
-                    alt1=31;
-                    break;
                 default:
                     alt1=10;}
 
@@ -1571,21 +1599,21 @@
                 break;
             case '=':
                 switch ( input.LA(2) ) {
-                case '*':
-                    alt1=36;
+                case '=':
+                    alt1=30;
                     break;
                 case '-':
                     alt1=34;
                     break;
+                case '+':
+                    alt1=32;
+                    break;
                 case '/':
                     alt1=38;
                     break;
-                case '=':
-                    alt1=30;
+                case '*':
+                    alt1=36;
                     break;
-                case '+':
-                    alt1=32;
-                    break;
                 default:
                     alt1=18;}
 
@@ -1617,16 +1645,16 @@
                 int LA1_25 = input.LA(2);
                 if ( LA1_25=='>' ) {
                     int LA1_46 = input.LA(3);
-                    if ( LA1_46=='>' ) {
+                    if ( LA1_46=='=' ) {
+                        alt1=39;
+                    }
+                    else if ( LA1_46=='>' ) {
                         alt1=29;
                     }
-                    else if ( LA1_46=='=' ) {
-                        alt1=39;
-                    }
                     else {
                         if (backtracking>0) {failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1247:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 46, input);
+                            new NoViableAltException("1271:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 46, input);
 
                         throw nvae;
                     }
@@ -1634,7 +1662,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1247:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 25, input);
+                        new NoViableAltException("1271:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 25, input);
 
                     throw nvae;
                 }
@@ -1642,175 +1670,175 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1247:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 0, input);
+                    new NoViableAltException("1271:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:17: '!'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:17: '!'
                     {
                     match('!'); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:23: '@'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:23: '@'
                     {
                     match('@'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:29: '$'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:29: '$'
                     {
                     match('$'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:35: '%'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:35: '%'
                     {
                     match('%'); if (failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:41: '^'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:41: '^'
                     {
                     match('^'); if (failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:47: '&'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:47: '&'
                     {
                     match('&'); if (failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:53: '*'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:53: '*'
                     {
                     match('*'); if (failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:59: '_'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:59: '_'
                     {
                     match('_'); if (failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:65: '-'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:65: '-'
                     {
                     match('-'); if (failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:71: '+'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:71: '+'
                     {
                     match('+'); if (failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1248:78: '?'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1272:78: '?'
                     {
                     match('?'); if (failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:19: '|'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:19: '|'
                     {
                     match('|'); if (failed) return ;
 
                     }
                     break;
                 case 13 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:25: ','
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:25: ','
                     {
                     match(','); if (failed) return ;
 
                     }
                     break;
                 case 14 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:31: '{'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:31: '{'
                     {
                     match('{'); if (failed) return ;
 
                     }
                     break;
                 case 15 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:37: '}'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:37: '}'
                     {
                     match('}'); if (failed) return ;
 
                     }
                     break;
                 case 16 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:43: '['
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:43: '['
                     {
                     match('['); if (failed) return ;
 
                     }
                     break;
                 case 17 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:49: ']'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:49: ']'
                     {
                     match(']'); if (failed) return ;
 
                     }
                     break;
                 case 18 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:55: '='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:55: '='
                     {
                     match('='); if (failed) return ;
 
                     }
                     break;
                 case 19 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:61: '/'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:61: '/'
                     {
                     match('/'); if (failed) return ;
 
                     }
                     break;
                 case 20 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:67: '('
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:67: '('
                     {
                     match('('); if (failed) return ;
 
                     }
                     break;
                 case 21 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:73: ')'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:73: ')'
                     {
                     match(')'); if (failed) return ;
 
                     }
                     break;
                 case 22 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:79: '\''
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:79: '\''
                     {
                     match('\''); if (failed) return ;
 
                     }
                     break;
                 case 23 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1249:86: '\\'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1273:86: '\\'
                     {
                     match('\\'); if (failed) return ;
 
                     }
                     break;
                 case 24 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:19: '||'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:19: '||'
                     {
                     match("||"); if (failed) return ;
 
@@ -1818,7 +1846,7 @@
                     }
                     break;
                 case 25 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:26: '&&'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:26: '&&'
                     {
                     match("&&"); if (failed) return ;
 
@@ -1826,7 +1854,7 @@
                     }
                     break;
                 case 26 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:33: '<<<'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:33: '<<<'
                     {
                     match("<<<"); if (failed) return ;
 
@@ -1834,7 +1862,7 @@
                     }
                     break;
                 case 27 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:41: '++'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:41: '++'
                     {
                     match("++"); if (failed) return ;
 
@@ -1842,7 +1870,7 @@
                     }
                     break;
                 case 28 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:48: '--'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:48: '--'
                     {
                     match("--"); if (failed) return ;
 
@@ -1850,7 +1878,7 @@
                     }
                     break;
                 case 29 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:55: '>>>'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:55: '>>>'
                     {
                     match(">>>"); if (failed) return ;
 
@@ -1858,7 +1886,7 @@
                     }
                     break;
                 case 30 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:63: '=='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:63: '=='
                     {
                     match("=="); if (failed) return ;
 
@@ -1866,7 +1894,7 @@
                     }
                     break;
                 case 31 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:70: '+='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:70: '+='
                     {
                     match("+="); if (failed) return ;
 
@@ -1874,7 +1902,7 @@
                     }
                     break;
                 case 32 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:77: '=+'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:77: '=+'
                     {
                     match("=+"); if (failed) return ;
 
@@ -1882,7 +1910,7 @@
                     }
                     break;
                 case 33 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:84: '-='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:84: '-='
                     {
                     match("-="); if (failed) return ;
 
@@ -1890,7 +1918,7 @@
                     }
                     break;
                 case 34 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:91: '=-'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:91: '=-'
                     {
                     match("=-"); if (failed) return ;
 
@@ -1898,7 +1926,7 @@
                     }
                     break;
                 case 35 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:97: '*='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:97: '*='
                     {
                     match("*="); if (failed) return ;
 
@@ -1906,7 +1934,7 @@
                     }
                     break;
                 case 36 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1250:104: '=*'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1274:104: '=*'
                     {
                     match("=*"); if (failed) return ;
 
@@ -1914,7 +1942,7 @@
                     }
                     break;
                 case 37 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:19: '/='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1275:19: '/='
                     {
                     match("/="); if (failed) return ;
 
@@ -1922,7 +1950,7 @@
                     }
                     break;
                 case 38 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:26: '=/'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1275:26: '=/'
                     {
                     match("=/"); if (failed) return ;
 
@@ -1930,7 +1958,7 @@
                     }
                     break;
                 case 39 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:33: '>>='
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1275:33: '>>='
                     {
                     match(">>="); if (failed) return ;
 
@@ -1942,7 +1970,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 53, MISC_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 54, MISC_StartIndex); }
         }
     }
     // $ANTLR end MISC
@@ -1957,9 +1985,9 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1255:17: ( (' '|'\t'|'\f'))
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1255:17: (' '|'\t'|'\f')
+            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1279:17: ( (' '|'\t'|'\f'))
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1279:17: (' '|'\t'|'\f')
             {
             if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
                 input.consume();
@@ -1981,7 +2009,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 54, WS_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 55, WS_StartIndex); }
         }
     }
     // $ANTLR end WS
@@ -1996,11 +2024,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
             if ( LA2_0=='\r' ) {
@@ -2017,13 +2045,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1263:17: ( ( \'\\r\\n\' )=> \'\\r\\n\' | \'\\r\' | \'\\n\' )", 2, 0, input);
+                    new NoViableAltException("1287:17: ( ( \'\\r\\n\' )=> \'\\r\\n\' | \'\\r\' | \'\\n\' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:25: ( '\r\n' )=> '\r\n'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:25: ( '\r\n' )=> '\r\n'
                     {
 
                     match("\r\n"); if (failed) return ;
@@ -2032,14 +2060,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1264:25: '\r'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1288:25: '\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1265:25: '\n'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1289:25: '\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -2054,7 +2082,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 55, EOL_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 56, EOL_StartIndex); }
         }
     }
     // $ANTLR end EOL
@@ -2069,11 +2097,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:17: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:17: ( '-' )? ( '0' .. '9' )+
+            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:17: ( ( '-' )? ( '0' .. '9' )+ )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:17: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:17: ( '-' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:17: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
             if ( LA3_0=='-' ) {
@@ -2085,13 +2113,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1270:17: ( \'-\' )?", 3, 0, input);
+                    new NoViableAltException("1294:17: ( \'-\' )?", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:18: '-'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -2100,7 +2128,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:23: ( '0' .. '9' )+
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:23: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -2113,7 +2141,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1270:24: '0' .. '9'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1294:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2136,7 +2164,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 56, INT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 57, INT_StartIndex); }
         }
     }
     // $ANTLR end INT
@@ -2151,11 +2179,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:17: ( '-' )?
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:17: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( LA5_0=='-' ) {
@@ -2167,13 +2195,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1274:17: ( \'-\' )?", 5, 0, input);
+                    new NoViableAltException("1298:17: ( \'-\' )?", 5, 0, input);
 
                 throw nvae;
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:18: '-'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -2182,7 +2210,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:23: ( '0' .. '9' )+
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:23: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -2195,7 +2223,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:24: '0' .. '9'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2213,7 +2241,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:39: ( '0' .. '9' )+
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:39: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -2226,7 +2254,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1274:40: '0' .. '9'
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1298:40: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2249,7 +2277,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 57, FLOAT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 58, FLOAT_StartIndex); }
         }
     }
     // $ANTLR end FLOAT
@@ -2264,8 +2292,8 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: ( ( '"' ( options {greedy=false; } : . )* '"' ) | ( '\'' ( options {greedy=false; } : . )* '\'' ) )
+            if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:17: ( ( '"' ( options {greedy=false; } : . )* '"' ) | ( '\'' ( options {greedy=false; } : . )* '\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
             if ( LA10_0=='"' ) {
@@ -2277,19 +2305,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1277:1: STRING : ( ( \'\"\' ( options {greedy=false; } : . )* \'\"\' ) | ( \'\\\'\' ( options {greedy=false; } : . )* \'\\\'\' ) );", 10, 0, input);
+                    new NoViableAltException("1301:1: STRING : ( ( \'\"\' ( options {greedy=false; } : . )* \'\"\' ) | ( \'\\\'\' ( options {greedy=false; } : . )* \'\\\'\' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: ( '"' ( options {greedy=false; } : . )* '"' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:17: ( '"' ( options {greedy=false; } : . )* '"' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: ( '"' ( options {greedy=false; } : . )* '"' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:18: '"' ( options {greedy=false; } : . )* '"'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:17: ( '"' ( options {greedy=false; } : . )* '"' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:18: '"' ( options {greedy=false; } : . )* '"'
                     {
                     match('"'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:22: ( options {greedy=false; } : . )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:22: ( options {greedy=false; } : . )*
                     loop8:
                     do {
                         int alt8=2;
@@ -2304,7 +2332,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:49: .
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:49: .
                     	    {
                     	    matchAny(); if (failed) return ;
 
@@ -2324,13 +2352,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:62: '\'' ( options {greedy=false; } : . )* '\''
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:62: '\'' ( options {greedy=false; } : . )* '\''
                     {
                     match('\''); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:67: ( options {greedy=false; } : . )*
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:67: ( options {greedy=false; } : . )*
                     loop9:
                     do {
                         int alt9=2;
@@ -2345,7 +2373,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:94: .
+                    	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1302:94: .
                     	    {
                     	    matchAny(); if (failed) return ;
 
@@ -2369,7 +2397,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 58, STRING_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 59, STRING_StartIndex); }
         }
     }
     // $ANTLR end STRING
@@ -2384,11 +2412,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:17: ( ( 'true' | 'false' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:17: ( 'true' | 'false' )
+            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1306:17: ( ( 'true' | 'false' ) )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1306:17: ( 'true' | 'false' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:17: ( 'true' | 'false' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1306:17: ( 'true' | 'false' )
             int alt11=2;
             int LA11_0 = input.LA(1);
             if ( LA11_0=='t' ) {
@@ -2400,13 +2428,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1282:17: ( \'true\' | \'false\' )", 11, 0, input);
+                    new NoViableAltException("1306:17: ( \'true\' | \'false\' )", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:18: 'true'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1306:18: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -2414,7 +2442,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:25: 'false'
+                    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1306:25: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -2430,7 +2458,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 59, BOOL_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 60, BOOL_StartIndex); }
         }
     }
     // $ANTLR end BOOL
@@ -2445,9 +2473,9 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1286:17: ( ('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:1286:17: ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1310:17: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))* )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1310:17: ('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();
@@ -2460,7 +2488,7 @@
                 recover(mse);    throw mse;
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1286:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1310:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
             loop12:
             do {
                 int alt12=2;
@@ -2472,7 +2500,7 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1286:66: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1310:66: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
             	        input.consume();
@@ -2500,7 +2528,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 60, ID_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 61, ID_StartIndex); }
         }
     }
     // $ANTLR end ID
@@ -2515,12 +2543,12 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1292:17: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1292:17: '#' ( options {greedy=false; } : . )* EOL
+            if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1316:17: ( '#' ( options {greedy=false; } : . )* EOL )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1316:17: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1292:21: ( options {greedy=false; } : . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1316:21: ( options {greedy=false; } : . )*
             loop13:
             do {
                 int alt13=2;
@@ -2538,7 +2566,7 @@
 
                 switch (alt13) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1292:48: .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1316:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2560,7 +2588,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 61, SH_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 62, SH_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end SH_STYLE_SINGLE_LINE_COMMENT
@@ -2575,13 +2603,13 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:17: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:17: '//' ( options {greedy=false; } : . )* EOL
+            if ( backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1322:17: ( '//' ( options {greedy=false; } : . )* EOL )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1322:17: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:22: ( options {greedy=false; } : . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1322:22: ( options {greedy=false; } : . )*
             loop14:
             do {
                 int alt14=2;
@@ -2599,7 +2627,7 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:49: .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1322:49: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2621,7 +2649,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 62, C_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 63, C_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end C_STYLE_SINGLE_LINE_COMMENT
@@ -2636,13 +2664,13 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1303:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1303:17: '/*' ( options {greedy=false; } : . )* '*/'
+            if ( backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1327:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1327:17: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1303:22: ( options {greedy=false; } : . )*
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1327:22: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -2665,7 +2693,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1303:48: .
+            	    // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1327:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2688,453 +2716,460 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 63, MULTI_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 64, MULTI_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end MULTI_LINE_COMMENT
 
     public void mTokens() throws RecognitionException {
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:10: ( T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | MISC | WS | EOL | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT )
-        int alt16=63;
+        // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:10: ( T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | MISC | WS | EOL | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT )
+        int alt16=64;
         alt16 = dfa16.predict(input); if (failed) return ;
         switch (alt16) {
             case 1 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:10: T15
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:10: T15
                 {
                 mT15(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:14: T16
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:14: T16
                 {
                 mT16(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:18: T17
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:18: T17
                 {
                 mT17(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:22: T18
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:22: T18
                 {
                 mT18(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:26: T19
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:26: T19
                 {
                 mT19(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:30: T20
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:30: T20
                 {
                 mT20(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:34: T21
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:34: T21
                 {
                 mT21(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:38: T22
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:38: T22
                 {
                 mT22(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:42: T23
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:42: T23
                 {
                 mT23(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:46: T24
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:46: T24
                 {
                 mT24(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:50: T25
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:50: T25
                 {
                 mT25(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:54: T26
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:54: T26
                 {
                 mT26(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:58: T27
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:58: T27
                 {
                 mT27(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:62: T28
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:62: T28
                 {
                 mT28(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:66: T29
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:66: T29
                 {
                 mT29(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:70: T30
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:70: T30
                 {
                 mT30(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:74: T31
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:74: T31
                 {
                 mT31(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:78: T32
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:78: T32
                 {
                 mT32(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:82: T33
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:82: T33
                 {
                 mT33(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:86: T34
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:86: T34
                 {
                 mT34(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:90: T35
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:90: T35
                 {
                 mT35(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:94: T36
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:94: T36
                 {
                 mT36(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:98: T37
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:98: T37
                 {
                 mT37(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:102: T38
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:102: T38
                 {
                 mT38(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:106: T39
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:106: T39
                 {
                 mT39(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:110: T40
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:110: T40
                 {
                 mT40(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:114: T41
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:114: T41
                 {
                 mT41(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:118: T42
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:118: T42
                 {
                 mT42(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:122: T43
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:122: T43
                 {
                 mT43(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:126: T44
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:126: T44
                 {
                 mT44(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:130: T45
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:130: T45
                 {
                 mT45(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:134: T46
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:134: T46
                 {
                 mT46(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:138: T47
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:138: T47
                 {
                 mT47(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:142: T48
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:142: T48
                 {
                 mT48(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:146: T49
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:146: T49
                 {
                 mT49(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:150: T50
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:150: T50
                 {
                 mT50(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:154: T51
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:154: T51
                 {
                 mT51(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:158: T52
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:158: T52
                 {
                 mT52(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:162: T53
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:162: T53
                 {
                 mT53(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:166: T54
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:166: T54
                 {
                 mT54(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:170: T55
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:170: T55
                 {
                 mT55(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:174: T56
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:174: T56
                 {
                 mT56(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:178: T57
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:178: T57
                 {
                 mT57(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:182: T58
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:182: T58
                 {
                 mT58(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:186: T59
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:186: T59
                 {
                 mT59(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:190: T60
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:190: T60
                 {
                 mT60(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:194: T61
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:194: T61
                 {
                 mT61(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:198: T62
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:198: T62
                 {
                 mT62(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:202: T63
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:202: T63
                 {
                 mT63(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:206: T64
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:206: T64
                 {
                 mT64(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:210: T65
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:210: T65
                 {
                 mT65(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:214: T66
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:214: T66
                 {
                 mT66(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:218: MISC
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:218: T67
                 {
-                mMISC(); if (failed) return ;
+                mT67(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:223: WS
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:222: MISC
                 {
-                mWS(); if (failed) return ;
+                mMISC(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:226: EOL
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:227: WS
                 {
-                mEOL(); if (failed) return ;
+                mWS(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:230: INT
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:230: EOL
                 {
-                mINT(); if (failed) return ;
+                mEOL(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:234: FLOAT
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:234: INT
                 {
-                mFLOAT(); if (failed) return ;
+                mINT(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:240: STRING
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:238: FLOAT
                 {
-                mSTRING(); if (failed) return ;
+                mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:247: BOOL
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:244: STRING
                 {
-                mBOOL(); if (failed) return ;
+                mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:252: ID
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:251: BOOL
                 {
-                mID(); if (failed) return ;
+                mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:255: SH_STYLE_SINGLE_LINE_COMMENT
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:256: ID
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:284: C_STYLE_SINGLE_LINE_COMMENT
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:259: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:312: MULTI_LINE_COMMENT
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:288: C_STYLE_SINGLE_LINE_COMMENT
                 {
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 64 :
+                // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1:316: MULTI_LINE_COMMENT
+                {
                 mMULTI_LINE_COMMENT(); if (failed) return ;
 
                 }
@@ -3149,9 +3184,9 @@
     public void mSynpred1_fragment() throws RecognitionException {
         int Synpred1_fragment_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 65) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:25: ( '\r\n' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:27: '\r\n'
+            if ( backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:25: ( '\r\n' )
+            // D:\dev\drools-3.1\drools-compiler\src\main\resources\org\drools\lang\drl2.g:1287:27: '\r\n'
             {
             match("\r\n"); if (failed) return ;
 
@@ -3160,7 +3195,7 @@
 
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 65, Synpred1_fragment_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 66, Synpred1_fragment_StartIndex); }
         }
     }
     // $ANTLR end Synpred1_fragment
@@ -3177,44 +3212,44 @@
             return predict(input, s0);
         }
         DFA.State s1 = new DFA.State() {{alt=1;}};
-        DFA.State s492 = new DFA.State() {{alt=2;}};
-        DFA.State s51 = new DFA.State() {{alt=60;}};
-        DFA.State s450 = new DFA.State() {
+        DFA.State s493 = new DFA.State() {{alt=2;}};
+        DFA.State s51 = new DFA.State() {{alt=61;}};
+        DFA.State s451 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_450 = input.LA(1);
-                if ( (LA16_450>='0' && LA16_450<='9')||(LA16_450>='A' && LA16_450<='Z')||LA16_450=='_'||(LA16_450>='a' && LA16_450<='z')||(LA16_450>='\u00C0' && LA16_450<='\u00FF') ) {return s51;}
-                return s492;
+                int LA16_451 = input.LA(1);
+                if ( (LA16_451>='0' && LA16_451<='9')||(LA16_451>='A' && LA16_451<='Z')||LA16_451=='_'||(LA16_451>='a' && LA16_451<='z')||(LA16_451>='\u00C0' && LA16_451<='\u00FF') ) {return s51;}
+                return s493;
 
             }
         };
-        DFA.State s401 = new DFA.State() {
+        DFA.State s402 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_401 = input.LA(1);
-                if ( LA16_401=='e' ) {return s450;}
+                int LA16_402 = input.LA(1);
+                if ( LA16_402=='e' ) {return s451;}
                 return s51;
 
             }
         };
-        DFA.State s333 = new DFA.State() {
+        DFA.State s334 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_333 = input.LA(1);
-                if ( LA16_333=='g' ) {return s401;}
+                int LA16_334 = input.LA(1);
+                if ( LA16_334=='g' ) {return s402;}
                 return s51;
 
             }
         };
-        DFA.State s250 = new DFA.State() {
+        DFA.State s251 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_250 = input.LA(1);
-                if ( LA16_250=='a' ) {return s333;}
+                int LA16_251 = input.LA(1);
+                if ( LA16_251=='a' ) {return s334;}
                 return s51;
 
             }
         };
-        DFA.State s161 = new DFA.State() {
+        DFA.State s162 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_161 = input.LA(1);
-                if ( LA16_161=='k' ) {return s250;}
+                int LA16_162 = input.LA(1);
+                if ( LA16_162=='k' ) {return s251;}
                 return s51;
 
             }
@@ -3222,7 +3257,7 @@
         DFA.State s53 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_53 = input.LA(1);
-                if ( LA16_53=='c' ) {return s161;}
+                if ( LA16_53=='c' ) {return s162;}
                 return s51;
 
             }
@@ -3235,35 +3270,35 @@
 
             }
         };
-        DFA.State s453 = new DFA.State() {{alt=3;}};
-        DFA.State s404 = new DFA.State() {
+        DFA.State s454 = new DFA.State() {{alt=3;}};
+        DFA.State s405 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_404 = input.LA(1);
-                if ( (LA16_404>='0' && LA16_404<='9')||(LA16_404>='A' && LA16_404<='Z')||LA16_404=='_'||(LA16_404>='a' && LA16_404<='z')||(LA16_404>='\u00C0' && LA16_404<='\u00FF') ) {return s51;}
-                return s453;
+                int LA16_405 = input.LA(1);
+                if ( (LA16_405>='0' && LA16_405<='9')||(LA16_405>='A' && LA16_405<='Z')||LA16_405=='_'||(LA16_405>='a' && LA16_405<='z')||(LA16_405>='\u00C0' && LA16_405<='\u00FF') ) {return s51;}
+                return s454;
 
             }
         };
-        DFA.State s336 = new DFA.State() {
+        DFA.State s337 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_336 = input.LA(1);
-                if ( LA16_336=='t' ) {return s404;}
+                int LA16_337 = input.LA(1);
+                if ( LA16_337=='t' ) {return s405;}
                 return s51;
 
             }
         };
-        DFA.State s253 = new DFA.State() {
+        DFA.State s254 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_253 = input.LA(1);
-                if ( LA16_253=='r' ) {return s336;}
+                int LA16_254 = input.LA(1);
+                if ( LA16_254=='r' ) {return s337;}
                 return s51;
 
             }
         };
-        DFA.State s164 = new DFA.State() {
+        DFA.State s165 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_164 = input.LA(1);
-                if ( LA16_164=='o' ) {return s253;}
+                int LA16_165 = input.LA(1);
+                if ( LA16_165=='o' ) {return s254;}
                 return s51;
 
             }
@@ -3271,7 +3306,7 @@
         DFA.State s56 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_56 = input.LA(1);
-                if ( LA16_56=='p' ) {return s164;}
+                if ( LA16_56=='p' ) {return s165;}
                 return s51;
 
             }
@@ -3294,206 +3329,206 @@
 
             }
         };
-        DFA.State s256 = new DFA.State() {{alt=15;}};
-        DFA.State s167 = new DFA.State() {
+        DFA.State s340 = new DFA.State() {{alt=40;}};
+        DFA.State s257 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_167 = input.LA(1);
-                if ( (LA16_167>='0' && LA16_167<='9')||(LA16_167>='A' && LA16_167<='Z')||LA16_167=='_'||(LA16_167>='a' && LA16_167<='z')||(LA16_167>='\u00C0' && LA16_167<='\u00FF') ) {return s51;}
-                return s256;
+                int LA16_257 = input.LA(1);
+                if ( (LA16_257>='0' && LA16_257<='9')||(LA16_257>='A' && LA16_257<='Z')||LA16_257=='_'||(LA16_257>='a' && LA16_257<='z')||(LA16_257>='\u00C0' && LA16_257<='\u00FF') ) {return s51;}
+                return s340;
 
             }
         };
-        DFA.State s61 = new DFA.State() {
+        DFA.State s168 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_61 = input.LA(1);
-                if ( LA16_61=='d' ) {return s167;}
+                int LA16_168 = input.LA(1);
+                if ( LA16_168=='l' ) {return s257;}
                 return s51;
 
             }
         };
-        DFA.State s339 = new DFA.State() {{alt=39;}};
-        DFA.State s258 = new DFA.State() {
+        DFA.State s61 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_258 = input.LA(1);
-                if ( (LA16_258>='0' && LA16_258<='9')||(LA16_258>='A' && LA16_258<='Z')||LA16_258=='_'||(LA16_258>='a' && LA16_258<='z')||(LA16_258>='\u00C0' && LA16_258<='\u00FF') ) {return s51;}
-                return s339;
-
-            }
-        };
-        DFA.State s170 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_170 = input.LA(1);
-                if ( LA16_170=='l' ) {return s258;}
+                int LA16_61 = input.LA(1);
+                if ( LA16_61=='a' ) {return s168;}
                 return s51;
 
             }
         };
-        DFA.State s62 = new DFA.State() {
+        DFA.State s524 = new DFA.State() {{alt=6;}};
+        DFA.State s495 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_62 = input.LA(1);
-                if ( LA16_62=='a' ) {return s170;}
-                return s51;
+                int LA16_495 = input.LA(1);
+                if ( (LA16_495>='0' && LA16_495<='9')||(LA16_495>='A' && LA16_495<='Z')||LA16_495=='_'||(LA16_495>='a' && LA16_495<='z')||(LA16_495>='\u00C0' && LA16_495<='\u00FF') ) {return s51;}
+                return s524;
 
             }
         };
-        DFA.State s523 = new DFA.State() {{alt=52;}};
-        DFA.State s494 = new DFA.State() {
+        DFA.State s456 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_494 = input.LA(1);
-                if ( (LA16_494>='0' && LA16_494<='9')||(LA16_494>='A' && LA16_494<='Z')||LA16_494=='_'||(LA16_494>='a' && LA16_494<='z')||(LA16_494>='\u00C0' && LA16_494<='\u00FF') ) {return s51;}
-                return s523;
-
-            }
-        };
-        DFA.State s455 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_455 = input.LA(1);
-                if ( LA16_455=='s' ) {return s494;}
+                int LA16_456 = input.LA(1);
+                if ( LA16_456=='r' ) {return s495;}
                 return s51;
 
             }
         };
-        DFA.State s407 = new DFA.State() {
+        DFA.State s408 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_407 = input.LA(1);
-                if ( LA16_407=='e' ) {return s455;}
+                int LA16_408 = input.LA(1);
+                if ( LA16_408=='e' ) {return s456;}
                 return s51;
 
             }
         };
-        DFA.State s341 = new DFA.State() {
+        DFA.State s342 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_341 = input.LA(1);
-                if ( LA16_341=='d' ) {return s407;}
+                int LA16_342 = input.LA(1);
+                if ( LA16_342=='d' ) {return s408;}
                 return s51;
 
             }
         };
-        DFA.State s261 = new DFA.State() {
+        DFA.State s260 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_261 = input.LA(1);
-                if ( LA16_261=='u' ) {return s341;}
+                int LA16_260 = input.LA(1);
+                if ( LA16_260=='n' ) {return s342;}
                 return s51;
 
             }
         };
-        DFA.State s173 = new DFA.State() {
+        DFA.State s171 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_173 = input.LA(1);
-                if ( LA16_173=='l' ) {return s261;}
+                int LA16_171 = input.LA(1);
+                if ( LA16_171=='a' ) {return s260;}
                 return s51;
 
             }
         };
-        DFA.State s458 = new DFA.State() {{alt=37;}};
-        DFA.State s410 = new DFA.State() {
+        DFA.State s459 = new DFA.State() {{alt=38;}};
+        DFA.State s411 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_410 = input.LA(1);
-                if ( (LA16_410>='0' && LA16_410<='9')||(LA16_410>='A' && LA16_410<='Z')||LA16_410=='_'||(LA16_410>='a' && LA16_410<='z')||(LA16_410>='\u00C0' && LA16_410<='\u00FF') ) {return s51;}
-                return s458;
+                int LA16_411 = input.LA(1);
+                if ( (LA16_411>='0' && LA16_411<='9')||(LA16_411>='A' && LA16_411<='Z')||LA16_411=='_'||(LA16_411>='a' && LA16_411<='z')||(LA16_411>='\u00C0' && LA16_411<='\u00FF') ) {return s51;}
+                return s459;
 
             }
         };
-        DFA.State s344 = new DFA.State() {
+        DFA.State s345 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_344 = input.LA(1);
-                if ( LA16_344=='s' ) {return s410;}
+                int LA16_345 = input.LA(1);
+                if ( LA16_345=='s' ) {return s411;}
                 return s51;
 
             }
         };
-        DFA.State s264 = new DFA.State() {
+        DFA.State s263 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_264 = input.LA(1);
-                if ( LA16_264=='t' ) {return s344;}
+                int LA16_263 = input.LA(1);
+                if ( LA16_263=='t' ) {return s345;}
                 return s51;
 
             }
         };
-        DFA.State s174 = new DFA.State() {
+        DFA.State s172 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_174 = input.LA(1);
-                if ( LA16_174=='s' ) {return s264;}
+                int LA16_172 = input.LA(1);
+                if ( LA16_172=='s' ) {return s263;}
                 return s51;
 
             }
         };
-        DFA.State s525 = new DFA.State() {{alt=6;}};
-        DFA.State s497 = new DFA.State() {
+        DFA.State s526 = new DFA.State() {{alt=53;}};
+        DFA.State s498 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_497 = input.LA(1);
-                if ( (LA16_497>='0' && LA16_497<='9')||(LA16_497>='A' && LA16_497<='Z')||LA16_497=='_'||(LA16_497>='a' && LA16_497<='z')||(LA16_497>='\u00C0' && LA16_497<='\u00FF') ) {return s51;}
-                return s525;
+                int LA16_498 = input.LA(1);
+                if ( (LA16_498>='0' && LA16_498<='9')||(LA16_498>='A' && LA16_498<='Z')||LA16_498=='_'||(LA16_498>='a' && LA16_498<='z')||(LA16_498>='\u00C0' && LA16_498<='\u00FF') ) {return s51;}
+                return s526;
 
             }
         };
-        DFA.State s460 = new DFA.State() {
+        DFA.State s461 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_460 = input.LA(1);
-                if ( LA16_460=='r' ) {return s497;}
+                int LA16_461 = input.LA(1);
+                if ( LA16_461=='s' ) {return s498;}
                 return s51;
 
             }
         };
-        DFA.State s413 = new DFA.State() {
+        DFA.State s414 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_413 = input.LA(1);
-                if ( LA16_413=='e' ) {return s460;}
+                int LA16_414 = input.LA(1);
+                if ( LA16_414=='e' ) {return s461;}
                 return s51;
 
             }
         };
-        DFA.State s347 = new DFA.State() {
+        DFA.State s348 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_347 = input.LA(1);
-                if ( LA16_347=='d' ) {return s413;}
+                int LA16_348 = input.LA(1);
+                if ( LA16_348=='d' ) {return s414;}
                 return s51;
 
             }
         };
-        DFA.State s267 = new DFA.State() {
+        DFA.State s266 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_267 = input.LA(1);
-                if ( LA16_267=='n' ) {return s347;}
+                int LA16_266 = input.LA(1);
+                if ( LA16_266=='u' ) {return s348;}
                 return s51;
 
             }
         };
-        DFA.State s175 = new DFA.State() {
+        DFA.State s173 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_175 = input.LA(1);
-                if ( LA16_175=='a' ) {return s267;}
+                int LA16_173 = input.LA(1);
+                if ( LA16_173=='l' ) {return s266;}
                 return s51;
 
             }
         };
-        DFA.State s63 = new DFA.State() {
+        DFA.State s62 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 'c':
-                    return s173;
+                case 'p':
+                    return s171;
 
                 case 'i':
-                    return s174;
+                    return s172;
 
-                case 'p':
-                    return s175;
+                case 'c':
+                    return s173;
 
                 default:
                     return s51;
         	        }
             }
         };
+        DFA.State s269 = new DFA.State() {{alt=15;}};
+        DFA.State s176 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                int LA16_176 = input.LA(1);
+                if ( (LA16_176>='0' && LA16_176<='9')||(LA16_176>='A' && LA16_176<='Z')||LA16_176=='_'||(LA16_176>='a' && LA16_176<='z')||(LA16_176>='\u00C0' && LA16_176<='\u00FF') ) {return s51;}
+                return s269;
+
+            }
+        };
+        DFA.State s63 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                int LA16_63 = input.LA(1);
+                if ( LA16_63=='d' ) {return s176;}
+                return s51;
+
+            }
+        };
         DFA.State s5 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 'n':
+                case 'v':
                     return s61;
 
-                case 'v':
+                case 'x':
                     return s62;
 
-                case 'x':
+                case 'n':
                     return s63;
 
                 default:
@@ -3501,35 +3536,35 @@
         	        }
             }
         };
-        DFA.State s463 = new DFA.State() {{alt=7;}};
-        DFA.State s416 = new DFA.State() {
+        DFA.State s464 = new DFA.State() {{alt=7;}};
+        DFA.State s417 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_416 = input.LA(1);
-                if ( (LA16_416>='0' && LA16_416<='9')||(LA16_416>='A' && LA16_416<='Z')||LA16_416=='_'||(LA16_416>='a' && LA16_416<='z')||(LA16_416>='\u00C0' && LA16_416<='\u00FF') ) {return s51;}
-                return s463;
+                int LA16_417 = input.LA(1);
+                if ( (LA16_417>='0' && LA16_417<='9')||(LA16_417>='A' && LA16_417<='Z')||LA16_417=='_'||(LA16_417>='a' && LA16_417<='z')||(LA16_417>='\u00C0' && LA16_417<='\u00FF') ) {return s51;}
+                return s464;
 
             }
         };
-        DFA.State s350 = new DFA.State() {
+        DFA.State s351 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_350 = input.LA(1);
-                if ( LA16_350=='l' ) {return s416;}
+                int LA16_351 = input.LA(1);
+                if ( LA16_351=='l' ) {return s417;}
                 return s51;
 
             }
         };
-        DFA.State s270 = new DFA.State() {
+        DFA.State s271 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_270 = input.LA(1);
-                if ( LA16_270=='a' ) {return s350;}
+                int LA16_271 = input.LA(1);
+                if ( LA16_271=='a' ) {return s351;}
                 return s51;
 
             }
         };
-        DFA.State s178 = new DFA.State() {
+        DFA.State s179 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_178 = input.LA(1);
-                if ( LA16_178=='b' ) {return s270;}
+                int LA16_179 = input.LA(1);
+                if ( LA16_179=='b' ) {return s271;}
                 return s51;
 
             }
@@ -3537,7 +3572,7 @@
         DFA.State s66 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_66 = input.LA(1);
-                if ( LA16_66=='o' ) {return s178;}
+                if ( LA16_66=='o' ) {return s179;}
                 return s51;
 
             }
@@ -3550,109 +3585,109 @@
 
             }
         };
-        DFA.State s366 = new DFA.State() {{alt=59;}};
-        DFA.State s353 = new DFA.State() {
+        DFA.State s528 = new DFA.State() {{alt=8;}};
+        DFA.State s501 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_353 = input.LA(1);
-                if ( (LA16_353>='0' && LA16_353<='9')||(LA16_353>='A' && LA16_353<='Z')||LA16_353=='_'||(LA16_353>='a' && LA16_353<='z')||(LA16_353>='\u00C0' && LA16_353<='\u00FF') ) {return s51;}
-                return s366;
+                int LA16_501 = input.LA(1);
+                if ( (LA16_501>='0' && LA16_501<='9')||(LA16_501>='A' && LA16_501<='Z')||LA16_501=='_'||(LA16_501>='a' && LA16_501<='z')||(LA16_501>='\u00C0' && LA16_501<='\u00FF') ) {return s51;}
+                return s528;
 
             }
         };
-        DFA.State s273 = new DFA.State() {
+        DFA.State s466 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_273 = input.LA(1);
-                if ( LA16_273=='e' ) {return s353;}
+                int LA16_466 = input.LA(1);
+                if ( LA16_466=='n' ) {return s501;}
                 return s51;
 
             }
         };
-        DFA.State s181 = new DFA.State() {
+        DFA.State s420 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_181 = input.LA(1);
-                if ( LA16_181=='s' ) {return s273;}
+                int LA16_420 = input.LA(1);
+                if ( LA16_420=='o' ) {return s466;}
                 return s51;
 
             }
         };
-        DFA.State s69 = new DFA.State() {
+        DFA.State s354 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_69 = input.LA(1);
-                if ( LA16_69=='l' ) {return s181;}
+                int LA16_354 = input.LA(1);
+                if ( LA16_354=='i' ) {return s420;}
                 return s51;
 
             }
         };
-        DFA.State s356 = new DFA.State() {{alt=28;}};
-        DFA.State s276 = new DFA.State() {
+        DFA.State s274 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_276 = input.LA(1);
-                if ( (LA16_276>='0' && LA16_276<='9')||(LA16_276>='A' && LA16_276<='Z')||LA16_276=='_'||(LA16_276>='a' && LA16_276<='z')||(LA16_276>='\u00C0' && LA16_276<='\u00FF') ) {return s51;}
-                return s356;
+                int LA16_274 = input.LA(1);
+                if ( LA16_274=='t' ) {return s354;}
+                return s51;
 
             }
         };
-        DFA.State s184 = new DFA.State() {
+        DFA.State s182 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_184 = input.LA(1);
-                if ( LA16_184=='m' ) {return s276;}
+                int LA16_182 = input.LA(1);
+                if ( LA16_182=='c' ) {return s274;}
                 return s51;
 
             }
         };
-        DFA.State s70 = new DFA.State() {
+        DFA.State s69 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_70 = input.LA(1);
-                if ( LA16_70=='o' ) {return s184;}
+                int LA16_69 = input.LA(1);
+                if ( LA16_69=='n' ) {return s182;}
                 return s51;
 
             }
         };
-        DFA.State s527 = new DFA.State() {{alt=8;}};
-        DFA.State s500 = new DFA.State() {
+        DFA.State s365 = new DFA.State() {{alt=60;}};
+        DFA.State s357 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_500 = input.LA(1);
-                if ( (LA16_500>='0' && LA16_500<='9')||(LA16_500>='A' && LA16_500<='Z')||LA16_500=='_'||(LA16_500>='a' && LA16_500<='z')||(LA16_500>='\u00C0' && LA16_500<='\u00FF') ) {return s51;}
-                return s527;
+                int LA16_357 = input.LA(1);
+                if ( (LA16_357>='0' && LA16_357<='9')||(LA16_357>='A' && LA16_357<='Z')||LA16_357=='_'||(LA16_357>='a' && LA16_357<='z')||(LA16_357>='\u00C0' && LA16_357<='\u00FF') ) {return s51;}
+                return s365;
 
             }
         };
-        DFA.State s465 = new DFA.State() {
+        DFA.State s277 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_465 = input.LA(1);
-                if ( LA16_465=='n' ) {return s500;}
+                int LA16_277 = input.LA(1);
+                if ( LA16_277=='e' ) {return s357;}
                 return s51;
 
             }
         };
-        DFA.State s421 = new DFA.State() {
+        DFA.State s185 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_421 = input.LA(1);
-                if ( LA16_421=='o' ) {return s465;}
+                int LA16_185 = input.LA(1);
+                if ( LA16_185=='s' ) {return s277;}
                 return s51;
 
             }
         };
-        DFA.State s358 = new DFA.State() {
+        DFA.State s70 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_358 = input.LA(1);
-                if ( LA16_358=='i' ) {return s421;}
+                int LA16_70 = input.LA(1);
+                if ( LA16_70=='l' ) {return s185;}
                 return s51;
 
             }
         };
-        DFA.State s279 = new DFA.State() {
+        DFA.State s360 = new DFA.State() {{alt=28;}};
+        DFA.State s280 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_279 = input.LA(1);
-                if ( LA16_279=='t' ) {return s358;}
-                return s51;
+                int LA16_280 = input.LA(1);
+                if ( (LA16_280>='0' && LA16_280<='9')||(LA16_280>='A' && LA16_280<='Z')||LA16_280=='_'||(LA16_280>='a' && LA16_280<='z')||(LA16_280>='\u00C0' && LA16_280<='\u00FF') ) {return s51;}
+                return s360;
 
             }
         };
-        DFA.State s187 = new DFA.State() {
+        DFA.State s188 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_187 = input.LA(1);
-                if ( LA16_187=='c' ) {return s279;}
+                int LA16_188 = input.LA(1);
+                if ( LA16_188=='m' ) {return s280;}
                 return s51;
 
             }
@@ -3660,7 +3695,7 @@
         DFA.State s71 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_71 = input.LA(1);
-                if ( LA16_71=='n' ) {return s187;}
+                if ( LA16_71=='o' ) {return s188;}
                 return s51;
 
             }
@@ -3668,13 +3703,13 @@
         DFA.State s7 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 'a':
+                case 'u':
                     return s69;
 
-                case 'r':
+                case 'a':
                     return s70;
 
-                case 'u':
+                case 'r':
                     return s71;
 
                 default:
@@ -3722,27 +3757,27 @@
 
             }
         };
-        DFA.State s424 = new DFA.State() {{alt=14;}};
-        DFA.State s361 = new DFA.State() {
+        DFA.State s425 = new DFA.State() {{alt=14;}};
+        DFA.State s362 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_361 = input.LA(1);
-                if ( (LA16_361>='0' && LA16_361<='9')||(LA16_361>='A' && LA16_361<='Z')||LA16_361=='_'||(LA16_361>='a' && LA16_361<='z')||(LA16_361>='\u00C0' && LA16_361<='\u00FF') ) {return s51;}
-                return s424;
+                int LA16_362 = input.LA(1);
+                if ( (LA16_362>='0' && LA16_362<='9')||(LA16_362>='A' && LA16_362<='Z')||LA16_362=='_'||(LA16_362>='a' && LA16_362<='z')||(LA16_362>='\u00C0' && LA16_362<='\u00FF') ) {return s51;}
+                return s425;
 
             }
         };
-        DFA.State s282 = new DFA.State() {
+        DFA.State s283 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_282 = input.LA(1);
-                if ( LA16_282=='y' ) {return s361;}
+                int LA16_283 = input.LA(1);
+                if ( LA16_283=='y' ) {return s362;}
                 return s51;
 
             }
         };
-        DFA.State s190 = new DFA.State() {
+        DFA.State s191 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_190 = input.LA(1);
-                if ( LA16_190=='r' ) {return s282;}
+                int LA16_191 = input.LA(1);
+                if ( LA16_191=='r' ) {return s283;}
                 return s51;
 
             }
@@ -3750,7 +3785,7 @@
         DFA.State s79 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_79 = input.LA(1);
-                if ( LA16_79=='e' ) {return s190;}
+                if ( LA16_79=='e' ) {return s191;}
                 return s51;
 
             }
@@ -3763,19 +3798,18 @@
 
             }
         };
-        DFA.State s364 = new DFA.State() {{alt=20;}};
-        DFA.State s285 = new DFA.State() {
+        DFA.State s286 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_285 = input.LA(1);
-                if ( (LA16_285>='0' && LA16_285<='9')||(LA16_285>='A' && LA16_285<='Z')||LA16_285=='_'||(LA16_285>='a' && LA16_285<='z')||(LA16_285>='\u00C0' && LA16_285<='\u00FF') ) {return s51;}
-                return s364;
+                int LA16_286 = input.LA(1);
+                if ( (LA16_286>='0' && LA16_286<='9')||(LA16_286>='A' && LA16_286<='Z')||LA16_286=='_'||(LA16_286>='a' && LA16_286<='z')||(LA16_286>='\u00C0' && LA16_286<='\u00FF') ) {return s51;}
+                return s365;
 
             }
         };
-        DFA.State s193 = new DFA.State() {
+        DFA.State s194 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_193 = input.LA(1);
-                if ( LA16_193=='n' ) {return s285;}
+                int LA16_194 = input.LA(1);
+                if ( LA16_194=='e' ) {return s286;}
                 return s51;
 
             }
@@ -3783,23 +3817,24 @@
         DFA.State s82 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_82 = input.LA(1);
-                if ( LA16_82=='e' ) {return s193;}
+                if ( LA16_82=='u' ) {return s194;}
                 return s51;
 
             }
         };
-        DFA.State s288 = new DFA.State() {
+        DFA.State s367 = new DFA.State() {{alt=20;}};
+        DFA.State s289 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_288 = input.LA(1);
-                if ( (LA16_288>='0' && LA16_288<='9')||(LA16_288>='A' && LA16_288<='Z')||LA16_288=='_'||(LA16_288>='a' && LA16_288<='z')||(LA16_288>='\u00C0' && LA16_288<='\u00FF') ) {return s51;}
-                return s366;
+                int LA16_289 = input.LA(1);
+                if ( (LA16_289>='0' && LA16_289<='9')||(LA16_289>='A' && LA16_289<='Z')||LA16_289=='_'||(LA16_289>='a' && LA16_289<='z')||(LA16_289>='\u00C0' && LA16_289<='\u00FF') ) {return s51;}
+                return s367;
 
             }
         };
-        DFA.State s196 = new DFA.State() {
+        DFA.State s197 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_196 = input.LA(1);
-                if ( LA16_196=='e' ) {return s288;}
+                int LA16_197 = input.LA(1);
+                if ( LA16_197=='n' ) {return s289;}
                 return s51;
 
             }
@@ -3807,56 +3842,56 @@
         DFA.State s83 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_83 = input.LA(1);
-                if ( LA16_83=='u' ) {return s196;}
+                if ( LA16_83=='e' ) {return s197;}
                 return s51;
 
             }
         };
-        DFA.State s529 = new DFA.State() {{alt=16;}};
-        DFA.State s503 = new DFA.State() {
+        DFA.State s530 = new DFA.State() {{alt=16;}};
+        DFA.State s504 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_503 = input.LA(1);
-                if ( (LA16_503>='0' && LA16_503<='9')||(LA16_503>='A' && LA16_503<='Z')||LA16_503=='_'||(LA16_503>='a' && LA16_503<='z')||(LA16_503>='\u00C0' && LA16_503<='\u00FF') ) {return s51;}
-                return s529;
+                int LA16_504 = input.LA(1);
+                if ( (LA16_504>='0' && LA16_504<='9')||(LA16_504>='A' && LA16_504<='Z')||LA16_504=='_'||(LA16_504>='a' && LA16_504<='z')||(LA16_504>='\u00C0' && LA16_504<='\u00FF') ) {return s51;}
+                return s530;
 
             }
         };
-        DFA.State s468 = new DFA.State() {
+        DFA.State s469 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_468 = input.LA(1);
-                if ( LA16_468=='e' ) {return s503;}
+                int LA16_469 = input.LA(1);
+                if ( LA16_469=='e' ) {return s504;}
                 return s51;
 
             }
         };
-        DFA.State s426 = new DFA.State() {
+        DFA.State s427 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_426 = input.LA(1);
-                if ( LA16_426=='t' ) {return s468;}
+                int LA16_427 = input.LA(1);
+                if ( LA16_427=='t' ) {return s469;}
                 return s51;
 
             }
         };
-        DFA.State s368 = new DFA.State() {
+        DFA.State s369 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_368 = input.LA(1);
-                if ( LA16_368=='a' ) {return s426;}
+                int LA16_369 = input.LA(1);
+                if ( LA16_369=='a' ) {return s427;}
                 return s51;
 
             }
         };
-        DFA.State s291 = new DFA.State() {
+        DFA.State s292 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_291 = input.LA(1);
-                if ( LA16_291=='l' ) {return s368;}
+                int LA16_292 = input.LA(1);
+                if ( LA16_292=='l' ) {return s369;}
                 return s51;
 
             }
         };
-        DFA.State s199 = new DFA.State() {
+        DFA.State s200 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_199 = input.LA(1);
-                if ( LA16_199=='p' ) {return s291;}
+                int LA16_200 = input.LA(1);
+                if ( LA16_200=='p' ) {return s292;}
                 return s51;
 
             }
@@ -3864,7 +3899,7 @@
         DFA.State s84 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_84 = input.LA(1);
-                if ( LA16_84=='m' ) {return s199;}
+                if ( LA16_84=='m' ) {return s200;}
                 return s51;
 
             }
@@ -3872,10 +3907,10 @@
         DFA.State s14 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 'h':
+                case 'r':
                     return s82;
 
-                case 'r':
+                case 'h':
                     return s83;
 
                 case 'e':
@@ -3886,19 +3921,19 @@
         	        }
             }
         };
-        DFA.State s371 = new DFA.State() {{alt=17;}};
-        DFA.State s294 = new DFA.State() {
+        DFA.State s372 = new DFA.State() {{alt=17;}};
+        DFA.State s295 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_294 = input.LA(1);
-                if ( (LA16_294>='0' && LA16_294<='9')||(LA16_294>='A' && LA16_294<='Z')||LA16_294=='_'||(LA16_294>='a' && LA16_294<='z')||(LA16_294>='\u00C0' && LA16_294<='\u00FF') ) {return s51;}
-                return s371;
+                int LA16_295 = input.LA(1);
+                if ( (LA16_295>='0' && LA16_295<='9')||(LA16_295>='A' && LA16_295<='Z')||LA16_295=='_'||(LA16_295>='a' && LA16_295<='z')||(LA16_295>='\u00C0' && LA16_295<='\u00FF') ) {return s51;}
+                return s372;
 
             }
         };
-        DFA.State s202 = new DFA.State() {
+        DFA.State s203 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_202 = input.LA(1);
-                if ( LA16_202=='e' ) {return s294;}
+                int LA16_203 = input.LA(1);
+                if ( LA16_203=='e' ) {return s295;}
                 return s51;
 
             }
@@ -3906,7 +3941,7 @@
         DFA.State s87 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_87 = input.LA(1);
-                if ( LA16_87=='l' ) {return s202;}
+                if ( LA16_87=='l' ) {return s203;}
                 return s51;
 
             }
@@ -3919,19 +3954,19 @@
 
             }
         };
-        DFA.State s373 = new DFA.State() {{alt=18;}};
-        DFA.State s297 = new DFA.State() {
+        DFA.State s374 = new DFA.State() {{alt=18;}};
+        DFA.State s298 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_297 = input.LA(1);
-                if ( (LA16_297>='0' && LA16_297<='9')||(LA16_297>='A' && LA16_297<='Z')||LA16_297=='_'||(LA16_297>='a' && LA16_297<='z')||(LA16_297>='\u00C0' && LA16_297<='\u00FF') ) {return s51;}
-                return s373;
+                int LA16_298 = input.LA(1);
+                if ( (LA16_298>='0' && LA16_298<='9')||(LA16_298>='A' && LA16_298<='Z')||LA16_298=='_'||(LA16_298>='a' && LA16_298<='z')||(LA16_298>='\u00C0' && LA16_298<='\u00FF') ) {return s51;}
+                return s374;
 
             }
         };
-        DFA.State s205 = new DFA.State() {
+        DFA.State s206 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_205 = input.LA(1);
-                if ( LA16_205=='n' ) {return s297;}
+                int LA16_206 = input.LA(1);
+                if ( LA16_206=='n' ) {return s298;}
                 return s51;
 
             }
@@ -3939,7 +3974,7 @@
         DFA.State s90 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_90 = input.LA(1);
-                if ( LA16_90=='e' ) {return s205;}
+                if ( LA16_90=='e' ) {return s206;}
                 return s51;
 
             }
@@ -3953,35 +3988,35 @@
             }
         };
         DFA.State s17 = new DFA.State() {{alt=19;}};
-        DFA.State s471 = new DFA.State() {{alt=26;}};
-        DFA.State s429 = new DFA.State() {
+        DFA.State s472 = new DFA.State() {{alt=26;}};
+        DFA.State s430 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_429 = input.LA(1);
-                if ( LA16_429=='-' ) {return s471;}
+                int LA16_430 = input.LA(1);
+                if ( LA16_430=='-' ) {return s472;}
                 return s51;
 
             }
         };
-        DFA.State s375 = new DFA.State() {
+        DFA.State s376 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_375 = input.LA(1);
-                if ( LA16_375=='a' ) {return s429;}
+                int LA16_376 = input.LA(1);
+                if ( LA16_376=='a' ) {return s430;}
                 return s51;
 
             }
         };
-        DFA.State s300 = new DFA.State() {
+        DFA.State s301 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_300 = input.LA(1);
-                if ( LA16_300=='d' ) {return s375;}
+                int LA16_301 = input.LA(1);
+                if ( LA16_301=='d' ) {return s376;}
                 return s51;
 
             }
         };
-        DFA.State s208 = new DFA.State() {
+        DFA.State s209 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_208 = input.LA(1);
-                if ( LA16_208=='n' ) {return s300;}
+                int LA16_209 = input.LA(1);
+                if ( LA16_209=='n' ) {return s301;}
                 return s51;
 
             }
@@ -3989,187 +4024,187 @@
         DFA.State s93 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_93 = input.LA(1);
-                if ( LA16_93=='e' ) {return s208;}
+                if ( LA16_93=='e' ) {return s209;}
                 return s51;
 
             }
         };
-        DFA.State s303 = new DFA.State() {{alt=35;}};
-        DFA.State s211 = new DFA.State() {
+        DFA.State s550 = new DFA.State() {{alt=25;}};
+        DFA.State s544 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_211 = input.LA(1);
-                if ( (LA16_211>='0' && LA16_211<='9')||(LA16_211>='A' && LA16_211<='Z')||LA16_211=='_'||(LA16_211>='a' && LA16_211<='z')||(LA16_211>='\u00C0' && LA16_211<='\u00FF') ) {return s51;}
-                return s303;
+                int LA16_544 = input.LA(1);
+                if ( LA16_544=='-' ) {return s550;}
+                return s51;
 
             }
         };
-        DFA.State s94 = new DFA.State() {
+        DFA.State s532 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_94 = input.LA(1);
-                if ( LA16_94=='d' ) {return s211;}
+                int LA16_532 = input.LA(1);
+                if ( LA16_532=='n' ) {return s544;}
                 return s51;
 
             }
         };
-        DFA.State s378 = new DFA.State() {{alt=24;}};
-        DFA.State s305 = new DFA.State() {
+        DFA.State s507 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_305 = input.LA(1);
-                if ( LA16_305=='-' ) {return s378;}
+                int LA16_507 = input.LA(1);
+                if ( LA16_507=='o' ) {return s532;}
                 return s51;
 
             }
         };
-        DFA.State s214 = new DFA.State() {
+        DFA.State s475 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_214 = input.LA(1);
-                if ( LA16_214=='o' ) {return s305;}
+                int LA16_475 = input.LA(1);
+                if ( LA16_475=='i' ) {return s507;}
                 return s51;
 
             }
         };
-        DFA.State s95 = new DFA.State() {
+        DFA.State s433 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_95 = input.LA(1);
-                if ( LA16_95=='t' ) {return s214;}
+                int LA16_433 = input.LA(1);
+                if ( LA16_433=='t' ) {return s475;}
                 return s51;
 
             }
         };
-        DFA.State s549 = new DFA.State() {{alt=21;}};
-        DFA.State s543 = new DFA.State() {
+        DFA.State s379 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_543 = input.LA(1);
-                if ( (LA16_543>='0' && LA16_543<='9')||(LA16_543>='A' && LA16_543<='Z')||LA16_543=='_'||(LA16_543>='a' && LA16_543<='z')||(LA16_543>='\u00C0' && LA16_543<='\u00FF') ) {return s51;}
-                return s549;
+                int LA16_379 = input.LA(1);
+                if ( LA16_379=='a' ) {return s433;}
+                return s51;
 
             }
         };
-        DFA.State s531 = new DFA.State() {
+        DFA.State s304 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_531 = input.LA(1);
-                if ( LA16_531=='s' ) {return s543;}
+                int LA16_304 = input.LA(1);
+                if ( LA16_304=='v' ) {return s379;}
                 return s51;
 
             }
         };
-        DFA.State s506 = new DFA.State() {
+        DFA.State s212 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_506 = input.LA(1);
-                if ( LA16_506=='e' ) {return s531;}
+                int LA16_212 = input.LA(1);
+                if ( LA16_212=='i' ) {return s304;}
                 return s51;
 
             }
         };
-        DFA.State s474 = new DFA.State() {
+        DFA.State s94 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_474 = input.LA(1);
-                if ( LA16_474=='t' ) {return s506;}
+                int LA16_94 = input.LA(1);
+                if ( LA16_94=='t' ) {return s212;}
                 return s51;
 
             }
         };
-        DFA.State s432 = new DFA.State() {
+        DFA.State s553 = new DFA.State() {{alt=21;}};
+        DFA.State s547 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_432 = input.LA(1);
-                if ( LA16_432=='u' ) {return s474;}
-                return s51;
+                int LA16_547 = input.LA(1);
+                if ( (LA16_547>='0' && LA16_547<='9')||(LA16_547>='A' && LA16_547<='Z')||LA16_547=='_'||(LA16_547>='a' && LA16_547<='z')||(LA16_547>='\u00C0' && LA16_547<='\u00FF') ) {return s51;}
+                return s553;
 
             }
         };
-        DFA.State s381 = new DFA.State() {
+        DFA.State s535 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_381 = input.LA(1);
-                if ( LA16_381=='b' ) {return s432;}
+                int LA16_535 = input.LA(1);
+                if ( LA16_535=='s' ) {return s547;}
                 return s51;
 
             }
         };
-        DFA.State s308 = new DFA.State() {
+        DFA.State s510 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_308 = input.LA(1);
-                if ( LA16_308=='i' ) {return s381;}
+                int LA16_510 = input.LA(1);
+                if ( LA16_510=='e' ) {return s535;}
                 return s51;
 
             }
         };
-        DFA.State s217 = new DFA.State() {
+        DFA.State s478 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_217 = input.LA(1);
-                if ( LA16_217=='r' ) {return s308;}
+                int LA16_478 = input.LA(1);
+                if ( LA16_478=='t' ) {return s510;}
                 return s51;
 
             }
         };
-        DFA.State s96 = new DFA.State() {
+        DFA.State s436 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_96 = input.LA(1);
-                if ( LA16_96=='t' ) {return s217;}
+                int LA16_436 = input.LA(1);
+                if ( LA16_436=='u' ) {return s478;}
                 return s51;
 
             }
         };
-        DFA.State s551 = new DFA.State() {{alt=25;}};
-        DFA.State s546 = new DFA.State() {
+        DFA.State s382 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_546 = input.LA(1);
-                if ( LA16_546=='-' ) {return s551;}
+                int LA16_382 = input.LA(1);
+                if ( LA16_382=='b' ) {return s436;}
                 return s51;
 
             }
         };
-        DFA.State s534 = new DFA.State() {
+        DFA.State s307 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_534 = input.LA(1);
-                if ( LA16_534=='n' ) {return s546;}
+                int LA16_307 = input.LA(1);
+                if ( LA16_307=='i' ) {return s382;}
                 return s51;
 
             }
         };
-        DFA.State s509 = new DFA.State() {
+        DFA.State s215 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_509 = input.LA(1);
-                if ( LA16_509=='o' ) {return s534;}
+                int LA16_215 = input.LA(1);
+                if ( LA16_215=='r' ) {return s307;}
                 return s51;
 
             }
         };
-        DFA.State s477 = new DFA.State() {
+        DFA.State s95 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_477 = input.LA(1);
-                if ( LA16_477=='i' ) {return s509;}
+                int LA16_95 = input.LA(1);
+                if ( LA16_95=='t' ) {return s215;}
                 return s51;
 
             }
         };
-        DFA.State s435 = new DFA.State() {
+        DFA.State s310 = new DFA.State() {{alt=36;}};
+        DFA.State s218 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_435 = input.LA(1);
-                if ( LA16_435=='t' ) {return s477;}
-                return s51;
+                int LA16_218 = input.LA(1);
+                if ( (LA16_218>='0' && LA16_218<='9')||(LA16_218>='A' && LA16_218<='Z')||LA16_218=='_'||(LA16_218>='a' && LA16_218<='z')||(LA16_218>='\u00C0' && LA16_218<='\u00FF') ) {return s51;}
+                return s310;
 
             }
         };
-        DFA.State s384 = new DFA.State() {
+        DFA.State s96 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_384 = input.LA(1);
-                if ( LA16_384=='a' ) {return s435;}
+                int LA16_96 = input.LA(1);
+                if ( LA16_96=='d' ) {return s218;}
                 return s51;
 
             }
         };
-        DFA.State s311 = new DFA.State() {
+        DFA.State s385 = new DFA.State() {{alt=24;}};
+        DFA.State s312 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_311 = input.LA(1);
-                if ( LA16_311=='v' ) {return s384;}
+                int LA16_312 = input.LA(1);
+                if ( LA16_312=='-' ) {return s385;}
                 return s51;
 
             }
         };
-        DFA.State s220 = new DFA.State() {
+        DFA.State s221 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_220 = input.LA(1);
-                if ( LA16_220=='i' ) {return s311;}
+                int LA16_221 = input.LA(1);
+                if ( LA16_221=='o' ) {return s312;}
                 return s51;
 
             }
@@ -4177,7 +4212,7 @@
         DFA.State s97 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_97 = input.LA(1);
-                if ( LA16_97=='t' ) {return s220;}
+                if ( LA16_97=='t' ) {return s221;}
                 return s51;
 
             }
@@ -4188,16 +4223,16 @@
                 case 'g':
                     return s93;
 
-                case 'n':
+                case 'c':
                     return s94;
 
-                case 'u':
+                case 't':
                     return s95;
 
-                case 't':
+                case 'n':
                     return s96;
 
-                case 'c':
+                case 'u':
                     return s97;
 
                 default:
@@ -4205,51 +4240,51 @@
         	        }
             }
         };
-        DFA.State s537 = new DFA.State() {{alt=22;}};
-        DFA.State s512 = new DFA.State() {
+        DFA.State s538 = new DFA.State() {{alt=22;}};
+        DFA.State s513 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_512 = input.LA(1);
-                if ( (LA16_512>='0' && LA16_512<='9')||(LA16_512>='A' && LA16_512<='Z')||LA16_512=='_'||(LA16_512>='a' && LA16_512<='z')||(LA16_512>='\u00C0' && LA16_512<='\u00FF') ) {return s51;}
-                return s537;
+                int LA16_513 = input.LA(1);
+                if ( (LA16_513>='0' && LA16_513<='9')||(LA16_513>='A' && LA16_513<='Z')||LA16_513=='_'||(LA16_513>='a' && LA16_513<='z')||(LA16_513>='\u00C0' && LA16_513<='\u00FF') ) {return s51;}
+                return s538;
 
             }
         };
-        DFA.State s480 = new DFA.State() {
+        DFA.State s481 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_480 = input.LA(1);
-                if ( LA16_480=='e' ) {return s512;}
+                int LA16_481 = input.LA(1);
+                if ( LA16_481=='e' ) {return s513;}
                 return s51;
 
             }
         };
-        DFA.State s438 = new DFA.State() {
+        DFA.State s439 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_438 = input.LA(1);
-                if ( LA16_438=='c' ) {return s480;}
+                int LA16_439 = input.LA(1);
+                if ( LA16_439=='c' ) {return s481;}
                 return s51;
 
             }
         };
-        DFA.State s387 = new DFA.State() {
+        DFA.State s388 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_387 = input.LA(1);
-                if ( LA16_387=='n' ) {return s438;}
+                int LA16_388 = input.LA(1);
+                if ( LA16_388=='n' ) {return s439;}
                 return s51;
 
             }
         };
-        DFA.State s314 = new DFA.State() {
+        DFA.State s315 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_314 = input.LA(1);
-                if ( LA16_314=='e' ) {return s387;}
+                int LA16_315 = input.LA(1);
+                if ( LA16_315=='e' ) {return s388;}
                 return s51;
 
             }
         };
-        DFA.State s223 = new DFA.State() {
+        DFA.State s224 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_223 = input.LA(1);
-                if ( LA16_223=='i' ) {return s314;}
+                int LA16_224 = input.LA(1);
+                if ( LA16_224=='i' ) {return s315;}
                 return s51;
 
             }
@@ -4257,7 +4292,7 @@
         DFA.State s100 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_100 = input.LA(1);
-                if ( LA16_100=='l' ) {return s223;}
+                if ( LA16_100=='l' ) {return s224;}
                 return s51;
 
             }
@@ -4270,43 +4305,43 @@
 
             }
         };
-        DFA.State s317 = new DFA.State() {{alt=38;}};
-        DFA.State s226 = new DFA.State() {
+        DFA.State s227 = new DFA.State() {{alt=23;}};
+        DFA.State s318 = new DFA.State() {{alt=39;}};
+        DFA.State s228 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_226 = input.LA(1);
-                if ( (LA16_226>='0' && LA16_226<='9')||(LA16_226>='A' && LA16_226<='Z')||LA16_226=='_'||(LA16_226>='a' && LA16_226<='z')||(LA16_226>='\u00C0' && LA16_226<='\u00FF') ) {return s51;}
-                return s317;
+                int LA16_228 = input.LA(1);
+                if ( (LA16_228>='0' && LA16_228<='9')||(LA16_228>='A' && LA16_228<='Z')||LA16_228=='_'||(LA16_228>='a' && LA16_228<='z')||(LA16_228>='\u00C0' && LA16_228<='\u00FF') ) {return s51;}
+                return s318;
 
             }
         };
-        DFA.State s227 = new DFA.State() {{alt=23;}};
         DFA.State s103 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 't':
-                    return s226;
-
                 case '-':
                     return s227;
 
+                case 't':
+                    return s228;
+
                 default:
                     return s51;
         	        }
             }
         };
-        DFA.State s390 = new DFA.State() {{alt=29;}};
-        DFA.State s319 = new DFA.State() {
+        DFA.State s391 = new DFA.State() {{alt=29;}};
+        DFA.State s320 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_319 = input.LA(1);
-                if ( (LA16_319>='0' && LA16_319<='9')||(LA16_319>='A' && LA16_319<='Z')||LA16_319=='_'||(LA16_319>='a' && LA16_319<='z')||(LA16_319>='\u00C0' && LA16_319<='\u00FF') ) {return s51;}
-                return s390;
+                int LA16_320 = input.LA(1);
+                if ( (LA16_320>='0' && LA16_320<='9')||(LA16_320>='A' && LA16_320<='Z')||LA16_320=='_'||(LA16_320>='a' && LA16_320<='z')||(LA16_320>='\u00C0' && LA16_320<='\u00FF') ) {return s51;}
+                return s391;
 
             }
         };
-        DFA.State s230 = new DFA.State() {
+        DFA.State s231 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_230 = input.LA(1);
-                if ( LA16_230=='l' ) {return s319;}
+                int LA16_231 = input.LA(1);
+                if ( LA16_231=='l' ) {return s320;}
                 return s51;
 
             }
@@ -4314,7 +4349,7 @@
         DFA.State s104 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_104 = input.LA(1);
-                if ( LA16_104=='l' ) {return s230;}
+                if ( LA16_104=='l' ) {return s231;}
                 return s51;
 
             }
@@ -4333,51 +4368,51 @@
         	        }
             }
         };
-        DFA.State s539 = new DFA.State() {{alt=27;}};
-        DFA.State s515 = new DFA.State() {
+        DFA.State s540 = new DFA.State() {{alt=27;}};
+        DFA.State s516 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_515 = input.LA(1);
-                if ( (LA16_515>='0' && LA16_515<='9')||(LA16_515>='A' && LA16_515<='Z')||LA16_515=='_'||(LA16_515>='a' && LA16_515<='z')||(LA16_515>='\u00C0' && LA16_515<='\u00FF') ) {return s51;}
-                return s539;
+                int LA16_516 = input.LA(1);
+                if ( (LA16_516>='0' && LA16_516<='9')||(LA16_516>='A' && LA16_516<='Z')||LA16_516=='_'||(LA16_516>='a' && LA16_516<='z')||(LA16_516>='\u00C0' && LA16_516<='\u00FF') ) {return s51;}
+                return s540;
 
             }
         };
-        DFA.State s483 = new DFA.State() {
+        DFA.State s484 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_483 = input.LA(1);
-                if ( LA16_483=='n' ) {return s515;}
+                int LA16_484 = input.LA(1);
+                if ( LA16_484=='n' ) {return s516;}
                 return s51;
 
             }
         };
-        DFA.State s441 = new DFA.State() {
+        DFA.State s442 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_441 = input.LA(1);
-                if ( LA16_441=='o' ) {return s483;}
+                int LA16_442 = input.LA(1);
+                if ( LA16_442=='o' ) {return s484;}
                 return s51;
 
             }
         };
-        DFA.State s392 = new DFA.State() {
+        DFA.State s393 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_392 = input.LA(1);
-                if ( LA16_392=='i' ) {return s441;}
+                int LA16_393 = input.LA(1);
+                if ( LA16_393=='i' ) {return s442;}
                 return s51;
 
             }
         };
-        DFA.State s322 = new DFA.State() {
+        DFA.State s323 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_322 = input.LA(1);
-                if ( LA16_322=='t' ) {return s392;}
+                int LA16_323 = input.LA(1);
+                if ( LA16_323=='t' ) {return s393;}
                 return s51;
 
             }
         };
-        DFA.State s233 = new DFA.State() {
+        DFA.State s234 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_233 = input.LA(1);
-                if ( LA16_233=='a' ) {return s322;}
+                int LA16_234 = input.LA(1);
+                if ( LA16_234=='a' ) {return s323;}
                 return s51;
 
             }
@@ -4385,7 +4420,7 @@
         DFA.State s107 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_107 = input.LA(1);
-                if ( LA16_107=='r' ) {return s233;}
+                if ( LA16_107=='r' ) {return s234;}
                 return s51;
 
             }
@@ -4398,61 +4433,91 @@
 
             }
         };
-        DFA.State s236 = new DFA.State() {{alt=30;}};
+        DFA.State s237 = new DFA.State() {{alt=44;}};
         DFA.State s110 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_110 = input.LA(1);
-                if ( (LA16_110>='0' && LA16_110<='9')||(LA16_110>='A' && LA16_110<='Z')||LA16_110=='_'||(LA16_110>='a' && LA16_110<='z')||(LA16_110>='\u00C0' && LA16_110<='\u00FF') ) {return s51;}
-                return s236;
+                return s237;
 
             }
         };
+        DFA.State s35 = new DFA.State() {{alt=54;}};
+        DFA.State s114 = new DFA.State() {{alt=30;}};
+        DFA.State s116 = new DFA.State() {{alt=45;}};
         DFA.State s22 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_22 = input.LA(1);
-                if ( LA16_22=='r' ) {return s110;}
-                return s51;
+                switch ( input.LA(1) ) {
+                case '=':
+                    return s110;
 
+                case '*':
+                case '+':
+                case '-':
+                case '/':
+                    return s35;
+
+                case '>':
+                    return s114;
+
+                default:
+                    return s116;
+        	        }
             }
         };
         DFA.State s238 = new DFA.State() {{alt=31;}};
-        DFA.State s113 = new DFA.State() {
+        DFA.State s117 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_113 = input.LA(1);
+                int LA16_117 = input.LA(1);
+                if ( (LA16_117>='0' && LA16_117<='9')||(LA16_117>='A' && LA16_117<='Z')||LA16_117=='_'||(LA16_117>='a' && LA16_117<='z')||(LA16_117>='\u00C0' && LA16_117<='\u00FF') ) {return s51;}
                 return s238;
 
             }
         };
-        DFA.State s114 = new DFA.State() {{alt=33;}};
         DFA.State s23 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_23 = input.LA(1);
-                if ( LA16_23=='|' ) {return s113;}
-                return s114;
+                if ( LA16_23=='r' ) {return s117;}
+                return s51;
 
             }
         };
-        DFA.State s239 = new DFA.State() {{alt=36;}};
-        DFA.State s115 = new DFA.State() {
+        DFA.State s240 = new DFA.State() {{alt=32;}};
+        DFA.State s120 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_115 = input.LA(1);
-                return s239;
+                int LA16_120 = input.LA(1);
+                return s240;
 
             }
         };
-        DFA.State s116 = new DFA.State() {{alt=32;}};
+        DFA.State s121 = new DFA.State() {{alt=34;}};
         DFA.State s24 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_24 = input.LA(1);
-                if ( LA16_24=='&' ) {return s115;}
-                return s116;
+                if ( LA16_24=='|' ) {return s120;}
+                return s121;
 
             }
         };
-        DFA.State s117 = new DFA.State() {{alt=34;}};
-        DFA.State s35 = new DFA.State() {{alt=53;}};
-        DFA.State s158 = new DFA.State() {{alt=56;}};
-        DFA.State s160 = new DFA.State() {{alt=57;}};
+        DFA.State s241 = new DFA.State() {{alt=37;}};
+        DFA.State s122 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                int LA16_122 = input.LA(1);
+                return s241;
+
+            }
+        };
+        DFA.State s123 = new DFA.State() {{alt=33;}};
+        DFA.State s25 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                int LA16_25 = input.LA(1);
+                if ( LA16_25=='&' ) {return s122;}
+                return s123;
+
+            }
+        };
+        DFA.State s125 = new DFA.State() {{alt=35;}};
+        DFA.State s159 = new DFA.State() {{alt=57;}};
+        DFA.State s161 = new DFA.State() {{alt=58;}};
         DFA.State s49 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
@@ -4469,18 +4534,18 @@
                     return s49;
 
                 case '.':
-                    return s160;
+                    return s161;
 
                 default:
-                    return s158;
+                    return s159;
         	        }
             }
         };
-        DFA.State s25 = new DFA.State() {
+        DFA.State s26 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case '>':
-                    return s117;
+                    return s125;
 
                 case '0':
                 case '1':
@@ -4499,75 +4564,49 @@
         	        }
             }
         };
-        DFA.State s122 = new DFA.State() {{alt=40;}};
-        DFA.State s26 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_26 = input.LA(1);
-                return s122;
-
-            }
-        };
-        DFA.State s123 = new DFA.State() {{alt=41;}};
+        DFA.State s129 = new DFA.State() {{alt=41;}};
         DFA.State s27 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_27 = input.LA(1);
-                return s123;
+                return s129;
 
             }
         };
-        DFA.State s325 = new DFA.State() {{alt=42;}};
-        DFA.State s240 = new DFA.State() {
+        DFA.State s130 = new DFA.State() {{alt=42;}};
+        DFA.State s28 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_240 = input.LA(1);
-                if ( (LA16_240>='0' && LA16_240<='9')||(LA16_240>='A' && LA16_240<='Z')||LA16_240=='_'||(LA16_240>='a' && LA16_240<='z')||(LA16_240>='\u00C0' && LA16_240<='\u00FF') ) {return s51;}
-                return s325;
+                int LA16_28 = input.LA(1);
+                return s130;
 
             }
         };
-        DFA.State s124 = new DFA.State() {
+        DFA.State s326 = new DFA.State() {{alt=43;}};
+        DFA.State s242 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_124 = input.LA(1);
-                if ( LA16_124=='e' ) {return s240;}
-                return s51;
+                int LA16_242 = input.LA(1);
+                if ( (LA16_242>='0' && LA16_242<='9')||(LA16_242>='A' && LA16_242<='Z')||LA16_242=='_'||(LA16_242>='a' && LA16_242<='z')||(LA16_242>='\u00C0' && LA16_242<='\u00FF') ) {return s51;}
+                return s326;
 
             }
         };
-        DFA.State s28 = new DFA.State() {
+        DFA.State s131 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_28 = input.LA(1);
-                if ( LA16_28=='s' ) {return s124;}
+                int LA16_131 = input.LA(1);
+                if ( LA16_131=='e' ) {return s242;}
                 return s51;
 
             }
         };
-        DFA.State s243 = new DFA.State() {{alt=43;}};
-        DFA.State s128 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_128 = input.LA(1);
-                return s243;
-
-            }
-        };
-        DFA.State s132 = new DFA.State() {{alt=44;}};
         DFA.State s29 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                switch ( input.LA(1) ) {
-                case '*':
-                case '+':
-                case '-':
-                case '/':
-                    return s35;
+                int LA16_29 = input.LA(1);
+                if ( LA16_29=='s' ) {return s131;}
+                return s51;
 
-                case '=':
-                    return s128;
-
-                default:
-                    return s132;
-        	        }
             }
         };
-        DFA.State s134 = new DFA.State() {{alt=46;}};
-        DFA.State s135 = new DFA.State() {{alt=45;}};
+        DFA.State s135 = new DFA.State() {{alt=47;}};
+        DFA.State s136 = new DFA.State() {{alt=46;}};
         DFA.State s30 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
@@ -4575,91 +4614,91 @@
                     return s35;
 
                 case '=':
-                    return s134;
+                    return s135;
 
                 default:
-                    return s135;
+                    return s136;
         	        }
             }
         };
-        DFA.State s137 = new DFA.State() {{alt=48;}};
-        DFA.State s138 = new DFA.State() {{alt=47;}};
+        DFA.State s137 = new DFA.State() {{alt=49;}};
+        DFA.State s139 = new DFA.State() {{alt=48;}};
         DFA.State s31 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case '=':
+                    return s137;
+
                 case '<':
                     return s35;
 
-                case '=':
-                    return s137;
-
                 default:
-                    return s138;
+                    return s139;
         	        }
             }
         };
-        DFA.State s139 = new DFA.State() {{alt=49;}};
+        DFA.State s140 = new DFA.State() {{alt=50;}};
         DFA.State s32 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_32 = input.LA(1);
-                if ( LA16_32=='=' ) {return s139;}
+                if ( LA16_32=='=' ) {return s140;}
                 return s35;
 
             }
         };
-        DFA.State s541 = new DFA.State() {{alt=50;}};
-        DFA.State s518 = new DFA.State() {
+        DFA.State s542 = new DFA.State() {{alt=51;}};
+        DFA.State s519 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_518 = input.LA(1);
-                if ( (LA16_518>='0' && LA16_518<='9')||(LA16_518>='A' && LA16_518<='Z')||LA16_518=='_'||(LA16_518>='a' && LA16_518<='z')||(LA16_518>='\u00C0' && LA16_518<='\u00FF') ) {return s51;}
-                return s541;
+                int LA16_519 = input.LA(1);
+                if ( (LA16_519>='0' && LA16_519<='9')||(LA16_519>='A' && LA16_519<='Z')||LA16_519=='_'||(LA16_519>='a' && LA16_519<='z')||(LA16_519>='\u00C0' && LA16_519<='\u00FF') ) {return s51;}
+                return s542;
 
             }
         };
-        DFA.State s486 = new DFA.State() {
+        DFA.State s487 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_486 = input.LA(1);
-                if ( LA16_486=='s' ) {return s518;}
+                int LA16_487 = input.LA(1);
+                if ( LA16_487=='s' ) {return s519;}
                 return s51;
 
             }
         };
-        DFA.State s444 = new DFA.State() {
+        DFA.State s445 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_444 = input.LA(1);
-                if ( LA16_444=='n' ) {return s486;}
+                int LA16_445 = input.LA(1);
+                if ( LA16_445=='n' ) {return s487;}
                 return s51;
 
             }
         };
-        DFA.State s395 = new DFA.State() {
+        DFA.State s396 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_395 = input.LA(1);
-                if ( LA16_395=='i' ) {return s444;}
+                int LA16_396 = input.LA(1);
+                if ( LA16_396=='i' ) {return s445;}
                 return s51;
 
             }
         };
-        DFA.State s327 = new DFA.State() {
+        DFA.State s328 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_327 = input.LA(1);
-                if ( LA16_327=='a' ) {return s395;}
+                int LA16_328 = input.LA(1);
+                if ( LA16_328=='a' ) {return s396;}
                 return s51;
 
             }
         };
-        DFA.State s244 = new DFA.State() {
+        DFA.State s245 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_244 = input.LA(1);
-                if ( LA16_244=='t' ) {return s327;}
+                int LA16_245 = input.LA(1);
+                if ( LA16_245=='t' ) {return s328;}
                 return s51;
 
             }
         };
-        DFA.State s141 = new DFA.State() {
+        DFA.State s142 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_141 = input.LA(1);
-                if ( LA16_141=='n' ) {return s244;}
+                int LA16_142 = input.LA(1);
+                if ( LA16_142=='n' ) {return s245;}
                 return s51;
 
             }
@@ -4667,56 +4706,56 @@
         DFA.State s33 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_33 = input.LA(1);
-                if ( LA16_33=='o' ) {return s141;}
+                if ( LA16_33=='o' ) {return s142;}
                 return s51;
 
             }
         };
-        DFA.State s521 = new DFA.State() {{alt=51;}};
-        DFA.State s489 = new DFA.State() {
+        DFA.State s522 = new DFA.State() {{alt=52;}};
+        DFA.State s490 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_489 = input.LA(1);
-                if ( (LA16_489>='0' && LA16_489<='9')||(LA16_489>='A' && LA16_489<='Z')||LA16_489=='_'||(LA16_489>='a' && LA16_489<='z')||(LA16_489>='\u00C0' && LA16_489<='\u00FF') ) {return s51;}
-                return s521;
+                int LA16_490 = input.LA(1);
+                if ( (LA16_490>='0' && LA16_490<='9')||(LA16_490>='A' && LA16_490<='Z')||LA16_490=='_'||(LA16_490>='a' && LA16_490<='z')||(LA16_490>='\u00C0' && LA16_490<='\u00FF') ) {return s51;}
+                return s522;
 
             }
         };
-        DFA.State s447 = new DFA.State() {
+        DFA.State s448 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_447 = input.LA(1);
-                if ( LA16_447=='s' ) {return s489;}
+                int LA16_448 = input.LA(1);
+                if ( LA16_448=='s' ) {return s490;}
                 return s51;
 
             }
         };
-        DFA.State s398 = new DFA.State() {
+        DFA.State s399 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_398 = input.LA(1);
-                if ( LA16_398=='e' ) {return s447;}
+                int LA16_399 = input.LA(1);
+                if ( LA16_399=='e' ) {return s448;}
                 return s51;
 
             }
         };
-        DFA.State s330 = new DFA.State() {
+        DFA.State s331 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_330 = input.LA(1);
-                if ( LA16_330=='h' ) {return s398;}
+                int LA16_331 = input.LA(1);
+                if ( LA16_331=='h' ) {return s399;}
                 return s51;
 
             }
         };
-        DFA.State s247 = new DFA.State() {
+        DFA.State s248 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_247 = input.LA(1);
-                if ( LA16_247=='c' ) {return s330;}
+                int LA16_248 = input.LA(1);
+                if ( LA16_248=='c' ) {return s331;}
                 return s51;
 
             }
         };
-        DFA.State s144 = new DFA.State() {
+        DFA.State s145 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_144 = input.LA(1);
-                if ( LA16_144=='t' ) {return s247;}
+                int LA16_145 = input.LA(1);
+                if ( LA16_145=='t' ) {return s248;}
                 return s51;
 
             }
@@ -4724,17 +4763,17 @@
         DFA.State s34 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_34 = input.LA(1);
-                if ( LA16_34=='a' ) {return s144;}
+                if ( LA16_34=='a' ) {return s145;}
                 return s51;
 
             }
         };
-        DFA.State s147 = new DFA.State() {{alt=53;}};
+        DFA.State s148 = new DFA.State() {{alt=54;}};
         DFA.State s36 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_36 = input.LA(1);
                 if ( (LA16_36>='0' && LA16_36<='9')||(LA16_36>='A' && LA16_36<='Z')||LA16_36=='_'||(LA16_36>='a' && LA16_36<='z')||(LA16_36>='\u00C0' && LA16_36<='\u00FF') ) {return s51;}
-                return s147;
+                return s148;
 
             }
         };
@@ -4742,38 +4781,38 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_40 = input.LA(1);
                 if ( (LA16_40>='0' && LA16_40<='9')||(LA16_40>='A' && LA16_40<='Z')||LA16_40=='_'||(LA16_40>='a' && LA16_40<='z')||(LA16_40>='\u00C0' && LA16_40<='\u00FF') ) {return s51;}
-                return s147;
+                return s148;
 
             }
         };
-        DFA.State s151 = new DFA.State() {{alt=63;}};
-        DFA.State s153 = new DFA.State() {{alt=62;}};
+        DFA.State s152 = new DFA.State() {{alt=64;}};
+        DFA.State s153 = new DFA.State() {{alt=63;}};
         DFA.State s43 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case '*':
-                    return s151;
+                    return s152;
 
                 case '/':
                     return s153;
 
                 default:
-                    return s147;
+                    return s148;
         	        }
             }
         };
-        DFA.State s50 = new DFA.State() {{alt=58;}};
+        DFA.State s50 = new DFA.State() {{alt=59;}};
         DFA.State s44 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA16_44 = input.LA(1);
                 if ( (LA16_44>='\u0000' && LA16_44<='\uFFFE') ) {return s50;}
-                return s147;
+                return s148;
 
             }
         };
-        DFA.State s46 = new DFA.State() {{alt=54;}};
-        DFA.State s47 = new DFA.State() {{alt=55;}};
-        DFA.State s52 = new DFA.State() {{alt=61;}};
+        DFA.State s46 = new DFA.State() {{alt=55;}};
+        DFA.State s47 = new DFA.State() {{alt=56;}};
+        DFA.State s52 = new DFA.State() {{alt=62;}};
         DFA.State s0 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
@@ -4840,28 +4879,28 @@
                 case 'd':
                     return s21;
 
-                case 'o':
+                case '=':
                     return s22;
 
-                case '|':
+                case 'o':
                     return s23;
 
-                case '&':
+                case '|':
                     return s24;
 
-                case '-':
+                case '&':
                     return s25;
 
-                case '[':
+                case '-':
                     return s26;
 
-                case ']':
+                case '[':
                     return s27;
 
-                case 'u':
+                case ']':
                     return s28;
 
-                case '=':
+                case 'u':
                     return s29;
 
                 case '>':

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ArgumentValueDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ArgumentValueDescr.java	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/ArgumentValueDescr.java	2006-08-30 15:59:19 UTC (rev 6027)
@@ -64,20 +64,20 @@
             list = new ArrayList();
         }
 
-        public void add(MapPairDescr pair) {
+        public void add(KeyValuePairDescr pair) {
             this.list.add( pair );
         }
 
-        public MapPairDescr[] getMapPairs() {
-            return ( MapPairDescr[] ) this.list.toArray( new MapPairDescr[ this.list.size() ] );
+        public KeyValuePairDescr[] getKeyValuePairs() {
+            return ( KeyValuePairDescr[] ) this.list.toArray( new KeyValuePairDescr[ this.list.size() ] );
         }
     }
 
-    public static class MapPairDescr {
+    public static class KeyValuePairDescr {
         private ArgumentValueDescr key;
         private ArgumentValueDescr value;
 
-        public MapPairDescr(ArgumentValueDescr key,
+        public KeyValuePairDescr(ArgumentValueDescr key,
                             ArgumentValueDescr value) {
             this.key = key;
             this.value = value;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-08-30 15:59:19 UTC (rev 6027)
@@ -1,1326 +1,1329 @@
-grammar RuleParser; 
-
- at parser::header {
-	package org.drools.lang;
-	import java.util.List;
-	import java.util.ArrayList;
-	import java.util.Iterator;
-	import java.util.StringTokenizer;
-	import java.util.Map;
-	import java.util.HashMap;
-	import org.drools.lang.descr.*;
-}
-
- at parser::members {
-	private ExpanderResolver expanderResolver;
-	private Expander expander;
-	private boolean expanderDebug = false;
-	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;
-	
-	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;
-	}	
-
-	/**
-	 * This may be set to enable debuggin of DSLs/expanders.
-	 * If set to true, expander stuff will be sent to the Std out.
-	 */	
-	public void setExpanderDebug(boolean status) {
-		expanderDebug = status;
-	}
-	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;
-	}
-	
-	public void setExpanderResolver(ExpanderResolver expanderResolver) {
-		this.expanderResolver = expanderResolver;
-	}
-	
-	public ExpanderResolver getExpanderResolver() {
-		return expanderResolver;
-	}
-	
-	/** Expand the LHS */
-	private String runWhenExpander(String text, int line) throws RecognitionException {
-		String expanded = text.trim();
-		if (expanded.startsWith(">")) {
-			expanded = expanded.substring(1);  //escape !!
-		} else {
-			try {
-				expanded = expander.expand( "when", text );			
-			} catch (Exception e) {
-				this.errors.add(new ExpanderException("Unable to expand: " + text + ". Due to " + e.getMessage(), line));
-				return "";
-			}
-		}
-		if (expanderDebug) {
-			System.out.println("Expanding LHS: " + text + " ----> " + expanded + " --> from line: " + line);
-		}
-		return expanded;			
-	}
-	
-    	/** This will apply a list of constraints to an LHS block */
-    	private String applyConstraints(List constraints, String block) {
-    		//apply the constraints as a comma seperated list inside the previous block
-    		//the block will end in something like "foo()" and the constraint patterns will be put in the ()
-    		if (constraints == null) {
-    			return block;
-    		}
-    		StringBuffer list = new StringBuffer();    		
-    		for (Iterator iter = constraints.iterator(); iter.hasNext();) {
-				String con = (String) iter.next();
-				list.append("\n\t\t");
-				list.append(con);
-				if (iter.hasNext()) {
-					list.append(",");					
-				}			
-			}
-    		if (block.endsWith("()")) {
-    			return block.substring(0, block.length() - 2) + "(" + list.toString() + ")";
-    		} else {
-    			return block + "(" + list.toString() + ")";
-    		}
-    	}  
-    	
-        	/** Reparse the results of the expansion */
-    	private void reparseLhs(String text, AndDescr descrs) throws RecognitionException {
-    		CharStream charStream = new ANTLRStringStream( text  + " \n  then"); //need to then so it knows when to end... werd...
-    		RuleParserLexer lexer = new RuleParserLexer( charStream );
-    		TokenStream tokenStream = new CommonTokenStream( lexer );
-    		RuleParser parser = new RuleParser( tokenStream );
-    		parser.setLineOffset( descrs.getLine() );
-    		parser.normal_lhs_block(descrs);
-            
-                if (parser.hasErrors()) {
-    			this.errors.addAll(parser.getErrors());
-    		}
-		if (expanderDebug) {
-			System.out.println("Reparsing LHS: " + text + " --> successful:" + !parser.hasErrors());
-		}    		
-    		
-    	}
-	
-	/** Expand a line on the RHS */
-	private String runThenExpander(String text, int startLine) {
-		//System.err.println( "expand THEN [" + text + "]" );
-		StringTokenizer lines = new StringTokenizer( text, "\n\r" );
-
-		StringBuffer expanded = new StringBuffer();
-		
-		String eol = System.getProperty( "line.separator" );
-				
-		while ( lines.hasMoreTokens() ) {
-			startLine++;
-			String line = lines.nextToken();
-			line = line.trim();
-			if ( line.length() > 0 ) {
-				if ( line.startsWith( ">" ) ) {
-					expanded.append( line.substring( 1 ) );
-					expanded.append( eol );
-				} else {
-					try {
-						expanded.append( expander.expand( "then", line ) );
-						expanded.append( eol );
-					} catch (Exception e) {
-						this.errors.add(new ExpanderException("Unable to expand: " + line + ". Due to " + e.getMessage(), startLine));			
-					}
-				}
-			}
-		}
-		
-		if (expanderDebug) {
-			System.out.println("Expanding RHS: " + text + " ----> " + expanded.toString() + " --> from line starting: " + startLine);
-		}		
-		
-		return expanded.toString();
-	}
-	
-
-	
-	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_eol	:
-		(';'|EOL)*	
-	;
-
-compilation_unit
-	:	opt_eol
-		prolog 
-		(	r=rule 	{this.packageDescr.addRule( r ); } 
-		| 	q=query	{this.packageDescr.addRule( q ); }
-		|	t=template	{this.packageDescr.addFactTemplate ( t ); }
-		|	extra_statement 
-		)*
-	;
-	
-prolog
-	@init {
-		String packageName = "";
-	}
-	:	opt_eol
-		( name=package_statement { packageName = name; } )?
-		{ 
-			this.packageDescr = new PackageDescr( name ); 
-		}
-		(	extra_statement
-		|	expander
-		)*
-		
-		opt_eol
-	;
-	
-package_statement returns [String packageName]
-	@init{
-		packageName = null;
-	}
-	:	
-		'package' opt_eol name=dotted_name ';'? opt_eol
-		{
-			packageName = name;
-		}
-	;
-	
-import_statement
-	:	'import' opt_eol name=import_name ';'? opt_eol
-		{
-			if (packageDescr != null) 
-				packageDescr.addImport( name );
-		}	
-	;
-
-import_name returns [String name]
-	@init {
-		name = null;
-	}
-	:	
-		id=ID { name=id.getText(); } ( '.' id=ID { name = name + "." + id.getText(); } )* (star='.*' { name = name + star.getText(); })?
-	;
-expander
-	@init {
-		String config=null;
-	}
-	:	'expander' (name=dotted_name)? ';'? opt_eol
-		{
-			if (expanderResolver == null) 
-				throw new IllegalArgumentException("Unable to use expander. Make sure a expander or dsl config is being passed to the parser. [ExpanderResolver was not set].");
-			if ( expander != null )
-				throw new IllegalArgumentException( "Only one 'expander' statement per file is allowed" );
-			expander = expanderResolver.get( name, config );
-		}
-	;
-	
-global
-	@init {
-	}
-	:
-		'global' type=dotted_name id=ID ';'? opt_eol
-		{
-			packageDescr.addGlobal( id.getText(), type );
-		}
-	;
-	
-function
-	@init {
-		FunctionDescr f = null;
-	}
-	:
-		'function' opt_eol (retType=dotted_name)? opt_eol name=ID opt_eol
-		{
-			//System.err.println( "function :: " + name.getText() );
-			f = new FunctionDescr( name.getText(), retType );
-		} 
-		'(' opt_eol
-			(	(paramType=dotted_name)? opt_eol paramName=argument_name opt_eol
-				{
-					f.addParameter( paramType, paramName );
-				}
-				(	',' opt_eol (paramType=dotted_name)? opt_eol paramName=argument_name opt_eol 
-					{
-						f.addParameter( paramType, paramName );
-					}
-				)*
-			)?
-		')'
-		opt_eol
-		'{'
-			body=curly_chunk
-			{
-				f.setText( body );
-			}
-		'}'
-		{
-			packageDescr.addFunction( f );
-		}
-		opt_eol
-	;
-
-
-query returns [QueryDescr query]
-	@init {
-		query = null;
-	}
-	:
-		opt_eol
-		loc='query' queryName=word opt_eol 
-		{ 
-			query = new QueryDescr( queryName, null ); 
-			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			AndDescr lhs = new AndDescr(); query.setLhs( lhs ); 
-			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-		(
-			{ expander != null }? expander_lhs_block[lhs]
-			| normal_lhs_block[lhs]
-		)
-					
-		'end' opt_eol
-	;
-	
-template returns [FactTemplateDescr template]
-	@init {
-		template = null;		
-	}
-	:
-		opt_eol
-		loc='template' templateName=ID EOL
-		{
-			template = new FactTemplateDescr(templateName.getText());
-			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
-		}
-		(
-			slot=template_slot 
-			{
-				template.addFieldTemplate(slot);
-			}
-		)+
-		'end' EOL		
-	;
-	
-template_slot returns [FieldTemplateDescr field]
-	@init {
-		field = null;
-	}
-	:
-		//name=ID ':' fieldType=dotted_name ( EOL | ';' )
-		 fieldType=dotted_name name=ID ( EOL | ';' )
-		{
-			
-			
-			field = new FieldTemplateDescr(name.getText(), fieldType);
-			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
-		}
-	;	
-	
-rule returns [RuleDescr rule]
-	@init {
-		rule = null;
-		String consequence = "";
-	}
-	:
-		opt_eol
-		loc='rule' ruleName=word opt_eol 
-		{ 
-			debug( "start rule: " + ruleName );
-			rule = new RuleDescr( ruleName, null ); 
-			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-		(	rule_attributes[rule]
-		)?
-		opt_eol
-		((	loc='when' ':'? opt_eol
-			{ 
-				AndDescr lhs = new AndDescr(); rule.setLhs( lhs ); 
-				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			}
-			(
-				{ expander != null }? expander_lhs_block[lhs]
-				| normal_lhs_block[lhs]
-			)
-					
-		)?
-		( opt_eol loc='then' ':'?  opt_eol
-			( options{greedy=false;} : any=.
-				{
-					consequence = consequence + " " + any.getText();
-				}
-			)*
-			{
-				if ( expander != null ) {
-					String expanded = runThenExpander( consequence, offset(loc.getLine()) );
-					rule.setConsequence( expanded );
-				} else { 
-					rule.setConsequence( consequence ); 
-				}
-				rule.setConsequenceLocation(offset(loc.getLine()), loc.getCharPositionInLine());
-			})?
-		)?
-		'end' opt_eol
-		{
-			debug( "end rule: " + ruleName );
-		} 
-	;
-	
-extra_statement
-	:
-	(	import_statement
-	|	global
-	|	function
-	)
-	;
-
-rule_attributes[RuleDescr rule]
-	: 
-			'attributes'? ':'? opt_eol
-			(	','? a=rule_attribute opt_eol
-				{
-					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; }	
-		
-	;
-	
-salience returns [AttributeDescr d ]
-	@init {
-		d = null;
-	}
-	:	
-		loc='salience' opt_eol i=INT ';'? opt_eol
-		{
-			d = new AttributeDescr( "salience", i.getText() );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-	;
-	
-no_loop returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		(
-			loc='no-loop' opt_eol ';'? opt_eol
-			{
-				d = new AttributeDescr( "no-loop", "true" );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			}
-		) 
-		|
-		(
-			loc='no-loop' t=BOOL opt_eol ';'? opt_eol
-			{
-				d = new AttributeDescr( "no-loop", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			}
-		
-		)
-		
-	;
-	
-auto_focus returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		(
-			loc='auto-focus' opt_eol ';'? opt_eol
-			{
-				d = new AttributeDescr( "auto-focus", "true" );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			}
-		) 
-		|
-		(
-			loc='auto-focus' t=BOOL opt_eol ';'? opt_eol
-			{
-				d = new AttributeDescr( "auto-focus", t.getText() );
-				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-			}
-		
-		)
-		
-	;	
-	
-activation_group returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc='activation-group' opt_eol name=STRING ';'? opt_eol
-		{
-			d = new AttributeDescr( "activation-group", getString( name ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-	;
-
-agenda_group returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc='agenda-group' opt_eol name=STRING ';'? opt_eol
-		{
-			d = new AttributeDescr( "agenda-group", getString( name ) );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-	;		
-
-
-duration returns [AttributeDescr d]
-	@init {
-		d = null;
-	}
-	:
-		loc='duration' opt_eol i=INT ';'? opt_eol
-		{
-			d = new AttributeDescr( "duration", i.getText() );
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-	;		
-	
-
-normal_lhs_block[AndDescr descrs]
-	:
-		(	d=lhs opt_eol
-			{ descrs.addDescr( d ); }
-		)* opt_eol
-	;
-
-	
-
-	
-expander_lhs_block[AndDescr descrs]
-	@init {
-		String lhsBlock = null;
-		String eol = System.getProperty( "line.separator" );
-		List constraints = null;
-	}
-	:
-		(options{greedy=false;} : 
-			text=paren_chunk loc=EOL 
-			{
-				//only expand non null
-				if (text != null) {
-					if (text.trim().startsWith("-")) {
-						if (constraints == null) {
-							constraints = new ArrayList();
-						}
-						constraints.add(runWhenExpander( text, offset(loc.getLine())));
-					} else {
-						if (constraints != null) {
-							lhsBlock = applyConstraints(constraints, lhsBlock);
-							constraints = null;
-						}
-					
-					
-						if (lhsBlock == null) {					
-							lhsBlock = runWhenExpander( text, offset(loc.getLine()));
-						} else {
-							lhsBlock = lhsBlock + eol + runWhenExpander( text, offset(loc.getLine()));
-						}
-					}
-					text = null;
-				}
-			}
-			
-		(EOL)* )* 
-		
-		{	
-			//flush out any constraints left handing before the RHS
-			lhsBlock = applyConstraints(constraints, lhsBlock);
-			if (lhsBlock != null) {
-				reparseLhs(lhsBlock, descrs);
-			}
-		}
-
-	;
-	
-	
-	
-lhs returns [PatternDescr d]
-	@init {
-		d=null;
-	}
-	:	l=lhs_or { d = l; } 
-	;
-
-	
-lhs_column returns [PatternDescr d]
-	@init {
-		d=null;
-	}
-	:	f=fact_binding { d = f; }
-	|	f=fact { d = f; }
-	;
-	
-from_statement returns [FromDescr d]
-	@init {
-		d=factory.createFrom();
-	}
- 	:
- 		'from' opt_eol ds=from_source
- 		{
- 			d.setDataSource(ds);
- 		
- 		}
- 		
- 		
- 		
-	;
-	
-from_source returns [DeclarativeInvokerDescr ds]
-	@init {
-		ds = null;
-	}
-	:
-		(var=ID '.' field=ID 
-		
-			{
-			  FieldAccessDescr fa = new FieldAccessDescr(var.getText(), field.getText());	
-			  fa.setLine(var.getLine());
-			  ds = fa;
-			 }
-	
-		) 
-		|
-		(var=ID '.' method=ID opt_eol  '(' opt_eol args=argument_list opt_eol ')' 
-			{
-			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
-			mc.setArguments(args);
-			mc.setLine(var.getLine());
-			ds = mc;
-			}	
-		)
-		|
-		(functionName=ID opt_eol '(' opt_eol args=argument_list opt_eol ')'
-			{
-			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
-			fc.setLine(functionName.getLine());
-			fc.setArguments(args);
-			ds = fc;
-			}
-
-		
-		)
-	
-	;	
-	
-argument_list returns [ArrayList args]
-	@init {
-		args = new ArrayList();
-	}
-	:
-		(param=argument_value  {
-			if (param != null) {
-				args.add(param);
-			}
-		}
-		 
-		(
-			opt_eol ',' opt_eol param=argument_value {
-				if (param != null) {
-					args.add(param);
-				}
-			}
-		)*
-		)?
-	;
-	        	
-argument_value returns [ArgumentValueDescr value]
-	@init {
-		value = null;
-		Object text = null;
-	}
-	:	(	t=STRING { text = getString( t );  value=new ArgumentValueDescr(ArgumentValueDescr.STRING, text); } 
-		|	t=INT    { text = t.getText();  value=new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, text); }
-		|	t=FLOAT	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.DECIMAL, text); }
-		|	t=BOOL 	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.BOOLEAN, text); }
-		|	t=ID { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, text); }	
-		|	t='null' { text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text); }			
-		|   m=map { value=new ArgumentValueDescr(ArgumentValueDescr.MAP, m.getPairs() }; }
-		)
-	;			
-
-map returns [ArgumentValueDescr.MapPairDescr mapDescr]
-    @init {
-        mapDescr = new ArgumentValueDescr.MapDescr();
-    }	
-    :  '{' 
-           ( key=argument_value '=>' value=argument_value {
-                 if ( key != null ) {
-                     mapDescr.add( new ArgumentValueDescr.MapPairDescr( key, value ) );
-                 }
-             }
-           )
-           
-           ( (EOL)? ',' (EOL)? key=argument_value '=>' value=argument_value {
-                 if ( key != null ) {
-                     mapDescr.add( new ArgumentValueDescr.MapPairDescr( key, value ) );
-                 }
-             }
-           )*           
-       '}'
-    ;
- 	
-fact_binding returns [PatternDescr d]
-	@init {
-		d=null;
-		boolean multi=false;
-	}
- 	:
- 		id=ID 
- 		
- 		opt_eol ':' opt_eol fe=fact_expression[id.getText()]
- 		{
- 			d=fe;
- 		}
-	;
- 
- fact_expression[String id] returns [PatternDescr pd]
- 	@init {
- 		pd = null;
- 		boolean multi = false;
- 	}
- 	:	'(' opt_eol fe=fact_expression[id]opt_eol ')' { pd=fe; }
- 	| 	f=fact opt_eol
- 		{
- 			((ColumnDescr)f).setIdentifier( id );
- 			pd = f;
- 		}
- 		(	('or'|'||') opt_eol
- 			{	if ( ! multi ) {
- 					PatternDescr first = pd;
- 					pd = new OrDescr();
- 					((OrDescr)pd).addDescr( first );
- 					multi=true;
- 				}
- 			}
- 			f=fact
- 			{
- 				((ColumnDescr)f).setIdentifier( id );
- 				((OrDescr)pd).addDescr( f );
- 			}
- 		)*	
-	;
- 
-fact returns [PatternDescr d] 
-	@init {
-		d=null;
-	}
- 	:	id=dotted_name 
- 		{ 
- 			d = new ColumnDescr( id ); 
- 		} opt_eol 
- 		loc='(' {
- 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- 			}opt_eol (	c=constraints
- 				{
-		 			for ( Iterator cIter = c.iterator() ; cIter.hasNext() ; ) {
- 						((ColumnDescr)d).addDescr( (PatternDescr) cIter.next() );
- 					}
- 				}
- 
- 				)? opt_eol endLoc=')' opt_eol
- 				{
- 					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
- 				}
- 	;
-	
-	
-constraints returns [List constraints]
-	@init {
-		constraints = new ArrayList();
-	}
-	:	opt_eol
-		(constraint[constraints]|predicate[constraints])
-		( opt_eol ',' opt_eol (constraint[constraints]|predicate[constraints]))*
-		opt_eol
-	;
-	
-constraint[List constraints]
-	@init {
-		PatternDescr d = null;
-	}
-	:	opt_eol
-		( fb=ID opt_eol ':' opt_eol )? 
-		f=ID	
-		{
-
-			if ( fb != null ) {
-				//System.err.println( "fb: " + fb.getText() );
-				//System.err.println( " f: " + f.getText() );
-				d = new FieldBindingDescr( f.getText(), fb.getText() );
-				//System.err.println( "fbd: " + d );
-				
-				d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-				constraints.add( d );
-			} 
-			FieldConstraintDescr fc = new FieldConstraintDescr(f.getText());
-			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-									
-			
-		}				
-			opt_eol (	op=operator opt_eol	
-					
-					(	bvc=ID
-						{
-							
-														
-							
-							VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
-							fc.addRestriction(vd);
-							constraints.add(fc);
-							
-						}
-					|
-						lc=enum_constraint 
-						{ 
-
-							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
-							fc.addRestriction(lrd);
-							constraints.add(fc);
-							
-						}						
-					|
-						lc=literal_constraint 
-						{ 
-							
-							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
-							fc.addRestriction(lrd);
-							constraints.add(fc);
-							
-						}
-					|	rvc=retval_constraint 
-						{ 
-							
-							
-
-							ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
-							fc.addRestriction(rvd);
-							constraints.add(fc);
-							
-						} 
-					)
-					(
-						con=('&'|'|')
-						{
-							if (con.getText().equals("&") ) {								
-								fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
-							} else {
-								fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
-							}							
-						}
-
-						op=operator
-						(	bvc=ID
-							{
-								VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
-								fc.addRestriction(vd);
-							}
-						|
-							lc=enum_constraint 
-							{ 
-								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
-								fc.addRestriction(lrd);
-								
-							}						
-						|
-							lc=literal_constraint 
-							{ 
-								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
-								fc.addRestriction(lrd);
-								
-							}
-						|	rvc=retval_constraint 
-							{ 
-								ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
-								fc.addRestriction(rvd);
-								
-							} 
-						)						
-						
-					)*
-				)?					
-		opt_eol
-	;
-		
-literal_constraint returns [String text]
-	@init {
-		text = null;
-	}
-	:	(	t=STRING { text = getString( t ); } //t.getText(); text=text.substring( 1, text.length() - 1 ); }
-		|	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;
-	}
-	:	(cls=ID '.' en=ID) { text = cls.getText() + "." + en.getText(); }
-	;	
-	
-retval_constraint returns [String text]
-	@init {
-		text = null;
-	}
-	:	
-		'('  c=paren_chunk  ')' { text = c; }
-	;
-
-predicate[List constraints]
-	:
-		decl=ID ':' field=ID '->' '(' text=paren_chunk ')'
-		{
-			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
-			constraints.add( d );
-		}
-	;
-	
-paren_chunk returns [String text]
-	@init {
-		text = null;
-	}
-	
-	:
-		 (	options{greedy=false;} : 
-			'(' c=paren_chunk ')' 	
-			{
-				if ( c == null ) {
-					c = "";
-				}
-				if ( text == null ) {
-					text = "( " + c + " )";
-				} else {
-					text = text + " ( " + c + " )";
-				}
-			} 
-		| any=. 
-			{
-				if ( text == null ) {
-					text = any.getText();
-				} else {
-					text = text + " " + any.getText(); 
-				} 
-			}
-		)* 
-	;
-	
-//NOTE: this is needed as there is a bug in antlr if you sometimes use the same sub rule in multiple places
-paren_chunk2 returns [String text]
-	@init {
-		text = null;
-	}
-	
-	:
-		 (	options{greedy=false;} : 
-			'(' c=paren_chunk2 ')' 	
-			{
-				if ( c == null ) {
-					c = "";
-				}
-				if ( text == null ) {
-					text = "( " + c + " )";
-				} else {
-					text = text + " ( " + c + " )";
-				}
-			} 
-		| any=. 
-			{
-				if ( text == null ) {
-					text = any.getText();
-				} else {
-					text = text + " " + any.getText(); 
-				} 
-			}
-		)* 
-	;
-	
-curly_chunk returns [String text]
-	@init {
-		text = null;
-	}
-	
-	:
-		(	options{greedy=false;} : 
-			'{' c=curly_chunk '}' 	
-			{
-				//System.err.println( "chunk [" + c + "]" );
-				if ( c == null ) {
-					c = "";
-				}
-				if ( text == null ) {
-					text = "{ " + c + " }";
-				} else {
-					text = text + " { " + c + " }";
-				}
-			} 
-		| any=. 
-			{
-				//System.err.println( "any [" + any.getText() + "]" );
-				if ( text == null ) {
-					text = any.getText();
-				} else {
-					text = text + " " + any.getText(); 
-				} 
-			}
-		)*
-	;	
-	
-lhs_or returns [PatternDescr d]
-	@init{
-		d = null;
-	}
-	:	
-		{ OrDescr or = null; }
-		left=lhs_and {d = left; }
-		( ('or'|'||') opt_eol
-			right=lhs_and 
-			{
-				if ( or == null ) {
-					or = new OrDescr();
-					or.addDescr( left );
-					d = or;
-				}
-				
-				or.addDescr( right );
-			}
-		)*
-	;
-	
-lhs_and returns [PatternDescr d]
-	@init{
-		d = null;
-	}
-	:
-		{ AndDescr and = null; }
-		left=lhs_unary { d = left; }
-		( ('and'|'&&') opt_eol
-			right=lhs_unary 
-			{
-				if ( and == null ) {
-					and = new AndDescr();
-					and.addDescr( left );
-					d = and;
-				}
-				
-				and.addDescr( right );
-			}
-		)* 
-	;
-	
-lhs_unary returns [PatternDescr d]
-	@init {
-		d = null;
-	}
-	:	(	u=lhs_exist {d = u;}
-		|	u=lhs_not {d = u;}
-		|	u=lhs_eval {d = u;}				
-		|	u=lhs_column {d=u;} (fm=from_statement {fm.setColumn((ColumnDescr) u); d=fm;})?
-		|	'(' opt_eol u=lhs opt_eol ')' {d = u;}
-		) 
-	;
-	
-lhs_exist returns [PatternDescr d]
-	@init {
-		d = null;
-	}
-	:	loc='exists' ('(' column=lhs_column ')' | column=lhs_column)
-		{ 
-			d = new ExistsDescr( (ColumnDescr) column ); 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}	
-	;
-	
-lhs_not	returns [NotDescr d]
-	@init {
-		d = null;
-	}
-	:	loc='not' ('(' column=lhs_column  ')' | column=lhs_column)
-		{
-			d = new NotDescr( (ColumnDescr) column ); 
-			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
-		}
-	;
-
-lhs_eval returns [PatternDescr d]
-	@init {
-		d = null;
-		String text = "";
-	}
-	:	'eval' loc='(' 
-			c=paren_chunk2
-		')' 
-		{ 
-			checkTrailingSemicolon( c, offset(loc.getLine()) );
-			d = new EvalDescr( c ); 
-		}
-	;
-	
-dotted_name returns [String name]
-	@init {
-		name = null;
-	}
-	:	
-		id=ID { name=id.getText(); } ( '.' id=ID { name = name + "." + id.getText(); } )* ( '[' ']' { name = name + "[]";})*
-	;
-	
-argument_name returns [String name]
-	@init {
-		name = null;
-	}
-	:
-		id=ID { name=id.getText(); } ( '[' ']' { name = name + "[]";})*
-	;
-
-	
-word returns [String word]
-	@init{
-		word = null;
-	}
-	:	id=ID      { word=id.getText(); }
-	|	'import'   { word="import"; }
-	|	'use'      { word="use"; }
-	|	'rule'     { word="rule"; }
-	|	'query'    { word="query"; }
-	|	'salience' { word="salience"; }
- 	|	'no-loop'  { word="no-loop"; }
-	|	'when'     { word="when"; }
-	|	'then'     { word="then"; }
-	|	'end'      { word="end"; }
-	|	str=STRING { word=getString(str);} 
-	;
-
-operator returns [String str] 	
-	@init {
-		str = null;
-	}
-	:
-
-		'==' {str= "==";}
-		|'=' {str="==";}
-		|'>' {str=">";}
-		|'>=' {str=">=";}		
-		|'<' {str="<";}
-		|'<=' {str="<=";}
-		|'!=' {str="!=";}
-		|'contains' {str="contains";}
-		|'matches' {str="matches";}
-		|'excludes' {str="excludes";}
-					
-						
-	;
-
-
-
-MISC 	:
-		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?'
-		| '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\'
-		| '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' |'*=' | '=*' 
-		| '/=' | '=/' | '>>=' 
-		
-	;
-	
-WS      :       (	' '
-                |	'\t'
-                |	'\f'
-                )
-                { channel=99; }
-        ;
-        
-EOL 	:	     
-   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
-                |       '\r'    // Macintosh
-                |       '\n'    // Unix (the right way)
-                )
-        ;  
-        
-INT	
-	:	('-')?('0'..'9')+
-	;
-
-FLOAT
-	:	('-')?('0'..'9')+ '.' ('0'..'9')+
-	;
-	
-STRING
-	:	('"' ( options{greedy=false;} : .)* '"' ) | ('\'' ( options{greedy=false;} : .)* '\'')
-	;
-	
-BOOL
-	:	('true'|'false') 
-	;	
-	
-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=99; }
-	;
-        
-        
-C_STYLE_SINGLE_LINE_COMMENT	
-	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
-                { channel=99; }
-	;
-
-MULTI_LINE_COMMENT
-	:	'/*' (options{greedy=false;} : .)* '*/'
-                { channel=99; }
-	;
+grammar RuleParser; 
+
+ at parser::header {
+	package org.drools.lang;
+	import java.util.List;
+	import java.util.ArrayList;
+	import java.util.Iterator;
+	import java.util.Map;	
+	import java.util.HashMap;	
+	import java.util.StringTokenizer;
+	import org.drools.lang.descr.*;
+}
+
+ at parser::members {
+	private ExpanderResolver expanderResolver;
+	private Expander expander;
+	private boolean expanderDebug = false;
+	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;
+	
+	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;
+	}	
+
+	/**
+	 * This may be set to enable debuggin of DSLs/expanders.
+	 * If set to true, expander stuff will be sent to the Std out.
+	 */	
+	public void setExpanderDebug(boolean status) {
+		expanderDebug = status;
+	}
+	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;
+	}
+	
+	public void setExpanderResolver(ExpanderResolver expanderResolver) {
+		this.expanderResolver = expanderResolver;
+	}
+	
+	public ExpanderResolver getExpanderResolver() {
+		return expanderResolver;
+	}
+	
+	/** Expand the LHS */
+	private String runWhenExpander(String text, int line) throws RecognitionException {
+		String expanded = text.trim();
+		if (expanded.startsWith(">")) {
+			expanded = expanded.substring(1);  //escape !!
+		} else {
+			try {
+				expanded = expander.expand( "when", text );			
+			} catch (Exception e) {
+				this.errors.add(new ExpanderException("Unable to expand: " + text + ". Due to " + e.getMessage(), line));
+				return "";
+			}
+		}
+		if (expanderDebug) {
+			System.out.println("Expanding LHS: " + text + " ----> " + expanded + " --> from line: " + line);
+		}
+		return expanded;			
+	}
+	
+    	/** This will apply a list of constraints to an LHS block */
+    	private String applyConstraints(List constraints, String block) {
+    		//apply the constraints as a comma seperated list inside the previous block
+    		//the block will end in something like "foo()" and the constraint patterns will be put in the ()
+    		if (constraints == null) {
+    			return block;
+    		}
+    		StringBuffer list = new StringBuffer();    		
+    		for (Iterator iter = constraints.iterator(); iter.hasNext();) {
+				String con = (String) iter.next();
+				list.append("\n\t\t");
+				list.append(con);
+				if (iter.hasNext()) {
+					list.append(",");					
+				}			
+			}
+    		if (block.endsWith("()")) {
+    			return block.substring(0, block.length() - 2) + "(" + list.toString() + ")";
+    		} else {
+    			return block + "(" + list.toString() + ")";
+    		}
+    	}  
+    	
+        	/** Reparse the results of the expansion */
+    	private void reparseLhs(String text, AndDescr descrs) throws RecognitionException {
+    		CharStream charStream = new ANTLRStringStream( text  + " \n  then"); //need to then so it knows when to end... werd...
+    		RuleParserLexer lexer = new RuleParserLexer( charStream );
+    		TokenStream tokenStream = new CommonTokenStream( lexer );
+    		RuleParser parser = new RuleParser( tokenStream );
+    		parser.setLineOffset( descrs.getLine() );
+    		parser.normal_lhs_block(descrs);
+            
+                if (parser.hasErrors()) {
+    			this.errors.addAll(parser.getErrors());
+    		}
+		if (expanderDebug) {
+			System.out.println("Reparsing LHS: " + text + " --> successful:" + !parser.hasErrors());
+		}    		
+    		
+    	}
+	
+	/** Expand a line on the RHS */
+	private String runThenExpander(String text, int startLine) {
+		//System.err.println( "expand THEN [" + text + "]" );
+		StringTokenizer lines = new StringTokenizer( text, "\n\r" );
+
+		StringBuffer expanded = new StringBuffer();
+		
+		String eol = System.getProperty( "line.separator" );
+				
+		while ( lines.hasMoreTokens() ) {
+			startLine++;
+			String line = lines.nextToken();
+			line = line.trim();
+			if ( line.length() > 0 ) {
+				if ( line.startsWith( ">" ) ) {
+					expanded.append( line.substring( 1 ) );
+					expanded.append( eol );
+				} else {
+					try {
+						expanded.append( expander.expand( "then", line ) );
+						expanded.append( eol );
+					} catch (Exception e) {
+						this.errors.add(new ExpanderException("Unable to expand: " + line + ". Due to " + e.getMessage(), startLine));			
+					}
+				}
+			}
+		}
+		
+		if (expanderDebug) {
+			System.out.println("Expanding RHS: " + text + " ----> " + expanded.toString() + " --> from line starting: " + startLine);
+		}		
+		
+		return expanded.toString();
+	}
+	
+
+	
+	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_eol	:
+		(';'|EOL)*	
+	;
+
+compilation_unit
+	:	opt_eol
+		prolog 
+		(	r=rule 	{this.packageDescr.addRule( r ); } 
+		| 	q=query	{this.packageDescr.addRule( q ); }
+		|	t=template	{this.packageDescr.addFactTemplate ( t ); }
+		|	extra_statement 
+		)*
+	;
+	
+prolog
+	@init {
+		String packageName = "";
+	}
+	:	opt_eol
+		( name=package_statement { packageName = name; } )?
+		{ 
+			this.packageDescr = new PackageDescr( name ); 
+		}
+		(	extra_statement
+		|	expander
+		)*
+		
+		opt_eol
+	;
+	
+package_statement returns [String packageName]
+	@init{
+		packageName = null;
+	}
+	:	
+		'package' opt_eol name=dotted_name ';'? opt_eol
+		{
+			packageName = name;
+		}
+	;
+	
+import_statement
+	:	'import' opt_eol name=import_name ';'? opt_eol
+		{
+			if (packageDescr != null) 
+				packageDescr.addImport( name );
+		}	
+	;
+
+import_name returns [String name]
+	@init {
+		name = null;
+	}
+	:	
+		id=ID { name=id.getText(); } ( '.' id=ID { name = name + "." + id.getText(); } )* (star='.*' { name = name + star.getText(); })?
+	;
+expander
+	@init {
+		String config=null;
+	}
+	:	'expander' (name=dotted_name)? ';'? opt_eol
+		{
+			if (expanderResolver == null) 
+				throw new IllegalArgumentException("Unable to use expander. Make sure a expander or dsl config is being passed to the parser. [ExpanderResolver was not set].");
+			if ( expander != null )
+				throw new IllegalArgumentException( "Only one 'expander' statement per file is allowed" );
+			expander = expanderResolver.get( name, config );
+		}
+	;
+	
+global
+	@init {
+	}
+	:
+		'global' type=dotted_name id=ID ';'? opt_eol
+		{
+			packageDescr.addGlobal( id.getText(), type );
+		}
+	;
+	
+function
+	@init {
+		FunctionDescr f = null;
+	}
+	:
+		'function' opt_eol (retType=dotted_name)? opt_eol name=ID opt_eol
+		{
+			//System.err.println( "function :: " + name.getText() );
+			f = new FunctionDescr( name.getText(), retType );
+		} 
+		'(' opt_eol
+			(	(paramType=dotted_name)? opt_eol paramName=argument_name opt_eol
+				{
+					f.addParameter( paramType, paramName );
+				}
+				(	',' opt_eol (paramType=dotted_name)? opt_eol paramName=argument_name opt_eol 
+					{
+						f.addParameter( paramType, paramName );
+					}
+				)*
+			)?
+		')'
+		opt_eol
+		'{'
+			body=curly_chunk
+			{
+				f.setText( body );
+			}
+		'}'
+		{
+			packageDescr.addFunction( f );
+		}
+		opt_eol
+	;
+
+
+query returns [QueryDescr query]
+	@init {
+		query = null;
+	}
+	:
+		opt_eol
+		loc='query' queryName=word opt_eol 
+		{ 
+			query = new QueryDescr( queryName, null ); 
+			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			AndDescr lhs = new AndDescr(); query.setLhs( lhs ); 
+			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+		(
+			{ expander != null }? expander_lhs_block[lhs]
+			| normal_lhs_block[lhs]
+		)
+					
+		'end' opt_eol
+	;
+	
+template returns [FactTemplateDescr template]
+	@init {
+		template = null;		
+	}
+	:
+		opt_eol
+		loc='template' templateName=ID EOL
+		{
+			template = new FactTemplateDescr(templateName.getText());
+			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
+		}
+		(
+			slot=template_slot 
+			{
+				template.addFieldTemplate(slot);
+			}
+		)+
+		'end' EOL		
+	;
+	
+template_slot returns [FieldTemplateDescr field]
+	@init {
+		field = null;
+	}
+	:
+		//name=ID ':' fieldType=dotted_name ( EOL | ';' )
+		 fieldType=dotted_name name=ID ( EOL | ';' )
+		{
+			
+			
+			field = new FieldTemplateDescr(name.getText(), fieldType);
+			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
+		}
+	;	
+	
+rule returns [RuleDescr rule]
+	@init {
+		rule = null;
+		String consequence = "";
+	}
+	:
+		opt_eol
+		loc='rule' ruleName=word opt_eol 
+		{ 
+			debug( "start rule: " + ruleName );
+			rule = new RuleDescr( ruleName, null ); 
+			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+		(	rule_attributes[rule]
+		)?
+		opt_eol
+		((	loc='when' ':'? opt_eol
+			{ 
+				AndDescr lhs = new AndDescr(); rule.setLhs( lhs ); 
+				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			}
+			(
+				{ expander != null }? expander_lhs_block[lhs]
+				| normal_lhs_block[lhs]
+			)
+					
+		)?
+		( opt_eol loc='then' ':'?  opt_eol
+			( options{greedy=false;} : any=.
+				{
+					consequence = consequence + " " + any.getText();
+				}
+			)*
+			{
+				if ( expander != null ) {
+					String expanded = runThenExpander( consequence, offset(loc.getLine()) );
+					rule.setConsequence( expanded );
+				} else { 
+					rule.setConsequence( consequence ); 
+				}
+				rule.setConsequenceLocation(offset(loc.getLine()), loc.getCharPositionInLine());
+			})?
+		)?
+		'end' opt_eol
+		{
+			debug( "end rule: " + ruleName );
+		} 
+	;
+	
+extra_statement
+	:
+	(	import_statement
+	|	global
+	|	function
+	)
+	;
+
+rule_attributes[RuleDescr rule]
+	: 
+			'attributes'? ':'? opt_eol
+			(	','? a=rule_attribute opt_eol
+				{
+					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; }	
+		
+	;
+	
+salience returns [AttributeDescr d ]
+	@init {
+		d = null;
+	}
+	:	
+		loc='salience' opt_eol i=INT ';'? opt_eol
+		{
+			d = new AttributeDescr( "salience", i.getText() );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+	;
+	
+no_loop returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		(
+			loc='no-loop' opt_eol ';'? opt_eol
+			{
+				d = new AttributeDescr( "no-loop", "true" );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			}
+		) 
+		|
+		(
+			loc='no-loop' t=BOOL opt_eol ';'? opt_eol
+			{
+				d = new AttributeDescr( "no-loop", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			}
+		
+		)
+		
+	;
+	
+auto_focus returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		(
+			loc='auto-focus' opt_eol ';'? opt_eol
+			{
+				d = new AttributeDescr( "auto-focus", "true" );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			}
+		) 
+		|
+		(
+			loc='auto-focus' t=BOOL opt_eol ';'? opt_eol
+			{
+				d = new AttributeDescr( "auto-focus", t.getText() );
+				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+			}
+		
+		)
+		
+	;	
+	
+activation_group returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc='activation-group' opt_eol name=STRING ';'? opt_eol
+		{
+			d = new AttributeDescr( "activation-group", getString( name ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+	;
+
+agenda_group returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc='agenda-group' opt_eol name=STRING ';'? opt_eol
+		{
+			d = new AttributeDescr( "agenda-group", getString( name ) );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+	;		
+
+
+duration returns [AttributeDescr d]
+	@init {
+		d = null;
+	}
+	:
+		loc='duration' opt_eol i=INT ';'? opt_eol
+		{
+			d = new AttributeDescr( "duration", i.getText() );
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+	;		
+	
+
+normal_lhs_block[AndDescr descrs]
+	:
+		(	d=lhs opt_eol
+			{ descrs.addDescr( d ); }
+		)* opt_eol
+	;
+
+	
+
+	
+expander_lhs_block[AndDescr descrs]
+	@init {
+		String lhsBlock = null;
+		String eol = System.getProperty( "line.separator" );
+		List constraints = null;
+	}
+	:
+		(options{greedy=false;} : 
+			text=paren_chunk loc=EOL 
+			{
+				//only expand non null
+				if (text != null) {
+					if (text.trim().startsWith("-")) {
+						if (constraints == null) {
+							constraints = new ArrayList();
+						}
+						constraints.add(runWhenExpander( text, offset(loc.getLine())));
+					} else {
+						if (constraints != null) {
+							lhsBlock = applyConstraints(constraints, lhsBlock);
+							constraints = null;
+						}
+					
+					
+						if (lhsBlock == null) {					
+							lhsBlock = runWhenExpander( text, offset(loc.getLine()));
+						} else {
+							lhsBlock = lhsBlock + eol + runWhenExpander( text, offset(loc.getLine()));
+						}
+					}
+					text = null;
+				}
+			}
+			
+		(EOL)* )* 
+		
+		{	
+			//flush out any constraints left handing before the RHS
+			lhsBlock = applyConstraints(constraints, lhsBlock);
+			if (lhsBlock != null) {
+				reparseLhs(lhsBlock, descrs);
+			}
+		}
+
+	;
+	
+	
+	
+lhs returns [PatternDescr d]
+	@init {
+		d=null;
+	}
+	:	l=lhs_or { d = l; } 
+	;
+
+	
+lhs_column returns [PatternDescr d]
+	@init {
+		d=null;
+	}
+	:	f=fact_binding { d = f; }
+	|	f=fact { d = f; }
+	;
+	
+from_statement returns [FromDescr d]
+	@init {
+		d=factory.createFrom();
+	}
+ 	:
+ 		'from' opt_eol ds=from_source
+ 		{
+ 			d.setDataSource(ds);
+ 		
+ 		}
+ 		
+ 		
+ 		
+	;
+	
+from_source returns [DeclarativeInvokerDescr ds]
+	@init {
+		ds = null;
+	}
+	:
+		(var=ID '.' field=ID 
+		
+			{
+			  FieldAccessDescr fa = new FieldAccessDescr(var.getText(), field.getText());	
+			  fa.setLine(var.getLine());
+			  ds = fa;
+			 }
+	
+		) 
+		|
+		(var=ID '.' method=ID opt_eol  '(' opt_eol args=argument_list opt_eol ')' 
+			{
+			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
+			mc.setArguments(args);
+			mc.setLine(var.getLine());
+			ds = mc;
+			}	
+		)
+		|
+		(functionName=ID opt_eol '(' opt_eol args=argument_list opt_eol ')'
+			{
+			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
+			fc.setLine(functionName.getLine());
+			fc.setArguments(args);
+			ds = fc;
+			}
+
+		
+		)
+	
+	;	
+	
+argument_list returns [ArrayList args]
+	@init {
+		args = new ArrayList();
+	}
+	:
+		(param=argument_value  {
+			if (param != null) {
+				args.add(param);
+			}
+		}
+		 
+		(
+			opt_eol ',' opt_eol param=argument_value {
+				if (param != null) {
+					args.add(param);
+				}
+			}
+		)*
+		)?
+	;		
+	
+argument_value returns [ArgumentValueDescr value]
+	@init {
+		value = null;
+		String text = null;
+	}
+	:	(	t=STRING { text = getString( t );  value=new ArgumentValueDescr(ArgumentValueDescr.STRING, text);} 
+		|	t=INT    { text = t.getText();  value=new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, text);}
+		|	t=FLOAT	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.DECIMAL, text); }
+		|	t=BOOL 	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.BOOLEAN, text); }
+		|	t=ID { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, text);}	
+		|	t='null' { text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);}	
+		|	t='null' { text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);}			
+		|       m=inline_map {  value=new ArgumentValueDescr(ArgumentValueDescr.MAP, m.getKeyValuePairs() ); }		
+		)
+	;			
+
+inline_map returns [ArgumentValueDescr.MapDescr mapDescr]
+    @init {
+        mapDescr = new ArgumentValueDescr.MapDescr();
+    }	
+    :  '{' 
+           ( key=argument_value '=>' value=argument_value {
+                 if ( key != null ) {
+                     mapDescr.add( new ArgumentValueDescr.KeyValuePairDescr( key, value ) );
+                 }
+             }
+           )
+           
+           ( (EOL)? ',' (EOL)? key=argument_value '=>' value=argument_value {
+                 if ( key != null ) {
+                     mapDescr.add( new ArgumentValueDescr.KeyValuePairDescr( key, value ) );
+                 }
+             }
+           )*           
+       '}'
+    ;
+ 	
+fact_binding returns [PatternDescr d]
+	@init {
+		d=null;
+		boolean multi=false;
+	}
+ 	:
+ 		id=ID 
+ 		
+ 		opt_eol ':' opt_eol fe=fact_expression[id.getText()]
+ 		{
+ 			d=fe;
+ 		}
+	;
+ 
+ fact_expression[String id] returns [PatternDescr pd]
+ 	@init {
+ 		pd = null;
+ 		boolean multi = false;
+ 	}
+ 	:	'(' opt_eol fe=fact_expression[id]opt_eol ')' { pd=fe; }
+ 	| 	f=fact opt_eol
+ 		{
+ 			((ColumnDescr)f).setIdentifier( id );
+ 			pd = f;
+ 		}
+ 		(	('or'|'||') opt_eol
+ 			{	if ( ! multi ) {
+ 					PatternDescr first = pd;
+ 					pd = new OrDescr();
+ 					((OrDescr)pd).addDescr( first );
+ 					multi=true;
+ 				}
+ 			}
+ 			f=fact
+ 			{
+ 				((ColumnDescr)f).setIdentifier( id );
+ 				((OrDescr)pd).addDescr( f );
+ 			}
+ 		)*	
+	;
+ 
+fact returns [PatternDescr d] 
+	@init {
+		d=null;
+	}
+ 	:	id=dotted_name 
+ 		{ 
+ 			d = new ColumnDescr( id ); 
+ 		} opt_eol 
+ 		loc='(' {
+ 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ 			}opt_eol (	c=constraints
+ 				{
+		 			for ( Iterator cIter = c.iterator() ; cIter.hasNext() ; ) {
+ 						((ColumnDescr)d).addDescr( (PatternDescr) cIter.next() );
+ 					}
+ 				}
+ 
+ 				)? opt_eol endLoc=')' opt_eol
+ 				{
+ 					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
+ 				}
+ 	;
+	
+	
+constraints returns [List constraints]
+	@init {
+		constraints = new ArrayList();
+	}
+	:	opt_eol
+		(constraint[constraints]|predicate[constraints])
+		( opt_eol ',' opt_eol (constraint[constraints]|predicate[constraints]))*
+		opt_eol
+	;
+	
+constraint[List constraints]
+	@init {
+		PatternDescr d = null;
+	}
+	:	opt_eol
+		( fb=ID opt_eol ':' opt_eol )? 
+		f=ID	
+		{
+
+			if ( fb != null ) {
+				//System.err.println( "fb: " + fb.getText() );
+				//System.err.println( " f: " + f.getText() );
+				d = new FieldBindingDescr( f.getText(), fb.getText() );
+				//System.err.println( "fbd: " + d );
+				
+				d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+				constraints.add( d );
+			} 
+			FieldConstraintDescr fc = new FieldConstraintDescr(f.getText());
+			fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+									
+			
+		}				
+			opt_eol (	op=operator opt_eol	
+					
+					(	bvc=ID
+						{
+							
+														
+							
+							VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
+							fc.addRestriction(vd);
+							constraints.add(fc);
+							
+						}
+					|
+						lc=enum_constraint 
+						{ 
+
+							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
+							fc.addRestriction(lrd);
+							constraints.add(fc);
+							
+						}						
+					|
+						lc=literal_constraint 
+						{ 
+							
+							LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
+							fc.addRestriction(lrd);
+							constraints.add(fc);
+							
+						}
+					|	rvc=retval_constraint 
+						{ 
+							
+							
+
+							ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
+							fc.addRestriction(rvd);
+							constraints.add(fc);
+							
+						} 
+					)
+					(
+						con=('&'|'|')
+						{
+							if (con.getText().equals("&") ) {								
+								fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND));	
+							} else {
+								fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
+							}							
+						}
+
+						op=operator
+						(	bvc=ID
+							{
+								VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
+								fc.addRestriction(vd);
+							}
+						|
+							lc=enum_constraint 
+							{ 
+								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc, true);
+								fc.addRestriction(lrd);
+								
+							}						
+						|
+							lc=literal_constraint 
+							{ 
+								LiteralRestrictionDescr lrd  = new LiteralRestrictionDescr(op, lc);
+								fc.addRestriction(lrd);
+								
+							}
+						|	rvc=retval_constraint 
+							{ 
+								ReturnValueRestrictionDescr rvd = new ReturnValueRestrictionDescr(op, rvc);							
+								fc.addRestriction(rvd);
+								
+							} 
+						)						
+						
+					)*
+				)?					
+		opt_eol
+	;
+		
+literal_constraint returns [String text]
+	@init {
+		text = null;
+	}
+	:	(	t=STRING { text = getString( t ); } //t.getText(); text=text.substring( 1, text.length() - 1 ); }
+		|	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;
+	}
+	:	(cls=ID '.' en=ID) { text = cls.getText() + "." + en.getText(); }
+	;	
+	
+retval_constraint returns [String text]
+	@init {
+		text = null;
+	}
+	:	
+		'('  c=paren_chunk  ')' { text = c; }
+	;
+
+predicate[List constraints]
+	:
+		decl=ID ':' field=ID '->' '(' text=paren_chunk ')'
+		{
+			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
+			constraints.add( d );
+		}
+	;
+	
+paren_chunk returns [String text]
+	@init {
+		text = null;
+	}
+	
+	:
+		 (	options{greedy=false;} : 
+			'(' c=paren_chunk ')' 	
+			{
+				if ( c == null ) {
+					c = "";
+				}
+				if ( text == null ) {
+					text = "( " + c + " )";
+				} else {
+					text = text + " ( " + c + " )";
+				}
+			} 
+		| any=. 
+			{
+				if ( text == null ) {
+					text = any.getText();
+				} else {
+					text = text + " " + any.getText(); 
+				} 
+			}
+		)* 
+	;
+	
+//NOTE: this is needed as there is a bug in antlr if you sometimes use the same sub rule in multiple places
+paren_chunk2 returns [String text]
+	@init {
+		text = null;
+	}
+	
+	:
+		 (	options{greedy=false;} : 
+			'(' c=paren_chunk2 ')' 	
+			{
+				if ( c == null ) {
+					c = "";
+				}
+				if ( text == null ) {
+					text = "( " + c + " )";
+				} else {
+					text = text + " ( " + c + " )";
+				}
+			} 
+		| any=. 
+			{
+				if ( text == null ) {
+					text = any.getText();
+				} else {
+					text = text + " " + any.getText(); 
+				} 
+			}
+		)* 
+	;
+	
+curly_chunk returns [String text]
+	@init {
+		text = null;
+	}
+	
+	:
+		(	options{greedy=false;} : 
+			'{' c=curly_chunk '}' 	
+			{
+				//System.err.println( "chunk [" + c + "]" );
+				if ( c == null ) {
+					c = "";
+				}
+				if ( text == null ) {
+					text = "{ " + c + " }";
+				} else {
+					text = text + " { " + c + " }";
+				}
+			} 
+		| any=. 
+			{
+				//System.err.println( "any [" + any.getText() + "]" );
+				if ( text == null ) {
+					text = any.getText();
+				} else {
+					text = text + " " + any.getText(); 
+				} 
+			}
+		)*
+	;	
+	
+lhs_or returns [PatternDescr d]
+	@init{
+		d = null;
+	}
+	:	
+		{ OrDescr or = null; }
+		left=lhs_and {d = left; }
+		( ('or'|'||') opt_eol
+			right=lhs_and 
+			{
+				if ( or == null ) {
+					or = new OrDescr();
+					or.addDescr( left );
+					d = or;
+				}
+				
+				or.addDescr( right );
+			}
+		)*
+	;
+	
+lhs_and returns [PatternDescr d]
+	@init{
+		d = null;
+	}
+	:
+		{ AndDescr and = null; }
+		left=lhs_unary { d = left; }
+		( ('and'|'&&') opt_eol
+			right=lhs_unary 
+			{
+				if ( and == null ) {
+					and = new AndDescr();
+					and.addDescr( left );
+					d = and;
+				}
+				
+				and.addDescr( right );
+			}
+		)* 
+	;
+	
+lhs_unary returns [PatternDescr d]
+	@init {
+		d = null;
+	}
+	:	(	u=lhs_exist {d = u;}
+		|	u=lhs_not {d = u;}
+		|	u=lhs_eval {d = u;}				
+		|	u=lhs_column {d=u;} (fm=from_statement {fm.setColumn((ColumnDescr) u); d=fm;})?
+		|	'(' opt_eol u=lhs opt_eol ')' {d = u;}
+		) 
+	;
+	
+lhs_exist returns [PatternDescr d]
+	@init {
+		d = null;
+	}
+	:	loc='exists' ('(' column=lhs_column ')' | column=lhs_column)
+		{ 
+			d = new ExistsDescr( (ColumnDescr) column ); 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}	
+	;
+	
+lhs_not	returns [NotDescr d]
+	@init {
+		d = null;
+	}
+	:	loc='not' ('(' column=lhs_column  ')' | column=lhs_column)
+		{
+			d = new NotDescr( (ColumnDescr) column ); 
+			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+		}
+	;
+
+lhs_eval returns [PatternDescr d]
+	@init {
+		d = null;
+		String text = "";
+	}
+	:	'eval' loc='(' 
+			c=paren_chunk2
+		')' 
+		{ 
+			checkTrailingSemicolon( c, offset(loc.getLine()) );
+			d = new EvalDescr( c ); 
+		}
+	;
+	
+dotted_name returns [String name]
+	@init {
+		name = null;
+	}
+	:	
+		id=ID { name=id.getText(); } ( '.' id=ID { name = name + "." + id.getText(); } )* ( '[' ']' { name = name + "[]";})*
+	;
+	
+argument_name returns [String name]
+	@init {
+		name = null;
+	}
+	:
+		id=ID { name=id.getText(); } ( '[' ']' { name = name + "[]";})*
+	;
+
+	
+word returns [String word]
+	@init{
+		word = null;
+	}
+	:	id=ID      { word=id.getText(); }
+	|	'import'   { word="import"; }
+	|	'use'      { word="use"; }
+	|	'rule'     { word="rule"; }
+	|	'query'    { word="query"; }
+	|	'salience' { word="salience"; }
+ 	|	'no-loop'  { word="no-loop"; }
+	|	'when'     { word="when"; }
+	|	'then'     { word="then"; }
+	|	'end'      { word="end"; }
+	|	str=STRING { word=getString(str);} 
+	;
+
+operator returns [String str] 	
+	@init {
+		str = null;
+	}
+	:
+
+		'==' {str= "==";}
+		|'=' {str="==";}
+		|'>' {str=">";}
+		|'>=' {str=">=";}		
+		|'<' {str="<";}
+		|'<=' {str="<=";}
+		|'!=' {str="!=";}
+		|'contains' {str="contains";}
+		|'matches' {str="matches";}
+		|'excludes' {str="excludes";}
+					
+						
+	;
+
+
+
+MISC 	:
+		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+'  | '?'
+		| '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\'
+		| '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' |'*=' | '=*' 
+		| '/=' | '=/' | '>>=' 
+		
+	;
+	
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                )
+                { channel=99; }
+        ;
+        
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;  
+        
+INT	
+	:	('-')?('0'..'9')+
+	;
+
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+	
+STRING
+	:	('"' ( options{greedy=false;} : .)* '"' ) | ('\'' ( options{greedy=false;} : .)* '\'')
+	;
+	
+BOOL
+	:	('true'|'false') 
+	;	
+	
+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=99; }
+	;
+        
+        
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { channel=99; }
+	;
+
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { channel=99; }
+	;

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java	2006-08-30 15:59:19 UTC (rev 6027)
@@ -418,4 +418,13 @@
         assertEquals( "3 1", 
                       list.get( 1 ) );
     }
+    
+    public void testBasicFrom() throws Exception {
+    
+    }
+    
+    public void testFromWithParams() throws Exception {
+        
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-08-30 15:59:19 UTC (rev 6027)
@@ -56,6 +56,7 @@
 import org.drools.lang.descr.ReturnValueRestrictionDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.lang.descr.VariableRestrictionDescr;
+import org.drools.lang.descr.ArgumentValueDescr.KeyValuePairDescr;
 import org.drools.lang.dsl.DefaultExpanderResolver;
 
 public class RuleParserTest extends TestCase {
@@ -476,8 +477,73 @@
                       columnDescr.getObjectType() );
 
     }
+    
+    public void testArguementList() throws Exception {
+        
+        final RuleDescr rule = parseResource( "argument_list.drl" ).rule();
+        FromDescr from = (FromDescr) rule.getLhs().getDescrs().get( 0 );
+        MethodAccessDescr meth = (MethodAccessDescr) from.getDataSource();
+        final List argList = meth.getArguments();
+        if (parser.hasErrors()) {
+            System.err.println(parser.getErrorMessages());
+        }
+        assertFalse(parser.hasErrors());
+        
+        assertEquals(6, argList.size());
+        ArgumentValueDescr arg = (ArgumentValueDescr) argList.get( 0 );
+        assertEquals( ArgumentValueDescr.VARIABLE, arg.getType());
+        assertEquals("foo", arg.getValue());
+        
+        arg = (ArgumentValueDescr) argList.get( 1 );
+        assertEquals( ArgumentValueDescr.VARIABLE, arg.getType());
+        assertEquals("bar", arg.getValue());        
 
+        arg = (ArgumentValueDescr) argList.get( 2 );
+        assertEquals( ArgumentValueDescr.INTEGRAL, arg.getType());
+        assertEquals("42", arg.getValue());
+        
+        arg = (ArgumentValueDescr) argList.get( 3 );
+        assertEquals( ArgumentValueDescr.STRING, arg.getType());
+        assertEquals("hello", arg.getValue());
+        
+        arg = (ArgumentValueDescr) argList.get( 4 );
+        assertEquals( ArgumentValueDescr.MAP, arg.getType());
+        
+        ArgumentValueDescr.KeyValuePairDescr[] keyValuePairs = ( ArgumentValueDescr.KeyValuePairDescr[] ) arg.getValue();
+        
+        KeyValuePairDescr pair = keyValuePairs[0];
+        arg = pair.getKey();
+        assertEquals(ArgumentValueDescr.VARIABLE, arg.getType());
+        assertEquals("a", arg.getValue());
+        
+        assertEquals("b", pair.getValue().getValue());
+        assertEquals(ArgumentValueDescr.STRING, pair.getValue().getType());
+        
+        pair = keyValuePairs[1];
+        assertEquals(ArgumentValueDescr.STRING, pair.getKey().getType());
+        assertEquals("something", pair.getKey().getValue());
+        assertEquals(ArgumentValueDescr.INTEGRAL, pair.getValue().getType());
+        assertEquals("42", pair.getValue().getValue());
+        
+        
+        pair = keyValuePairs[2];
+        assertEquals(ArgumentValueDescr.STRING, pair.getKey().getType());
+        assertEquals("a", pair.getKey().getValue());
+        assertEquals(ArgumentValueDescr.VARIABLE, pair.getValue().getType());
+        assertEquals("foo", pair.getValue().getValue());
+        
+        pair = keyValuePairs[3];
+        assertEquals("x", pair.getKey().getValue());
+        assertEquals(ArgumentValueDescr.MAP, pair.getValue().getType());
+        
+        arg = (ArgumentValueDescr) argList.get( 5 );
+        assertEquals("end", arg.getValue() );
+        assertEquals(ArgumentValueDescr.STRING, arg.getType());
+        
+        //assertEquals("42", arg.getValue());           
+    }
 
+
     public void testFrom() throws Exception {
         final RuleDescr rule = parseResource( "from.drl" ).rule();
 

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/argument_list.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/argument_list.drl	2006-08-30 15:42:25 UTC (rev 6026)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/argument_list.drl	2006-08-30 15:59:19 UTC (rev 6027)
@@ -0,0 +1,9 @@
+
+rule blah
+
+ when 
+
+	Col() from something.doIt(foo,bar,42,"hello",{ a => "b", "something" => 42, "a" => foo, x => {x=>y}},"end" )
+ then
+	partay();
+end	
\ No newline at end of file




More information about the jboss-svn-commits mailing list