[jboss-svn-commits] JBL Code SVN: r10602 - in labs/jbossrules/branches/3.0.x/drools-compiler/src/main: resources/org/drools/lang and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 28 20:49:48 EDT 2007


Author: tirelli
Date: 2007-03-28 20:49:47 -0400 (Wed, 28 Mar 2007)
New Revision: 10602

Modified:
   labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
   labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
   labs/jbossrules/branches/3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g
Log:
JBRULES-757: Improving string quote support

Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2007-03-28 23:42:51 UTC (rev 10601)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2007-03-29 00:49:47 UTC (rev 10602)
@@ -1,13 +1,13 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-16 14:21:20
+// $ANTLR 3.0ea8 D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g 2007-03-28 19:44:10
+
+	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.*;
 
-	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,9 +15,12 @@
 
 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\'", "\'rule\'", "\'when\'", "\':\'", "\'then\'", "\'attributes\'", "\'salience\'", "\'no-loop\'", "\'auto-focus\'", "\'activation-group\'", "\'agenda-group\'", "\'duration\'", "\'or\'", "\'||\'", "\'==\'", "\'>\'", "\'>=\'", "\'<\'", "\'<=\'", "\'!=\'", "\'contains\'", "\'matches\'", "\'excludes\'", "\'null\'", "\'->\'", "\'and\'", "\'&&\'", "\'exists\'", "\'not\'", "\'eval\'", "\'[\'", "\']\'", "\'use\'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "EOL", "ID", "INT", "BOOL", "STRING", "FLOAT", "MISC", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "\';\'", "\'package\'", "\'import\'", "\'.\'", "\'.*\'", "\'expander\'", "\'global\'", "\'function\'", "\'(\'", "\',\'", "\')\'", "\'{\'", "\'}\'", "\'query\'", "\'end\'", "\'rule\'", "\'when\'", "\':\'", "\'then\'", "\'attributes\'", "\'salience\'", "\'no-loop\'", "\'auto-focus\'", "\'activation-group\'", "\'agenda-group\'", "\'duration\'", "\'or\'", "\'||\'", "\'==\'", "\'>\'", "\'>=\'", "\'<\'", "\'<=\'", "\'!=\'", "\'contains\'", "\'matches\'", "\'excludes\'", "\'null\'", "\'->\'", "\'and\'", "\'&&\'", "\'exists\'", "\'not\'", "\'eval\'", "\'[\'", "\']\'", "\'use\'"
     };
+    public static final int UnicodeEscape=14;
     public static final int BOOL=7;
+    public static final int HexDigit=13;
+    public static final int EscapeSequence=12;
     public static final int INT=6;
     public static final int WS=11;
     public static final int EOF=-1;
@@ -25,9 +28,10 @@
     public static final int STRING=8;
     public static final int EOL=4;
     public static final int FLOAT=9;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=12;
-    public static final int MULTI_LINE_COMMENT=14;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=13;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=16;
+    public static final int OctalEscape=15;
+    public static final int MULTI_LINE_COMMENT=18;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=17;
     public static final int ID=5;
         public RuleParser(TokenStream input) {
             super(input);
@@ -36,274 +40,274 @@
 
     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 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;
+    	}
+    
+    	/**
+    	 * 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 );
+        		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 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;
-    	}
 
-    	/**
-    	 * 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 );
-        		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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:275:1: opt_eol : ( (';'|EOL))* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:275:1: opt_eol : ( (';'|EOL))* ;
     public void opt_eol() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:276:17: ( ( (';'|EOL))* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:276:17: ( (';'|EOL))*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:276:17: ( ( (';'|EOL))* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:276:17: ( (';'|EOL))*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:276:17: ( (';'|EOL))*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:276:17: ( (';'|EOL))*
             loop1:
             do {
                 int alt1=2;
@@ -311,16 +315,16 @@
                 if ( LA1_0==EOL ) {
                     alt1=1;
                 }
-                else if ( LA1_0==15 ) {
+                else if ( LA1_0==19 ) {
                     alt1=1;
                 }
 
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:276:18: (';'|EOL)
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:276:18: (';'|EOL)
             	    {
-            	    if ( input.LA(1)==EOL||input.LA(1)==15 ) {
+            	    if ( input.LA(1)==EOL||input.LA(1)==19 ) {
             	        input.consume();
             	        errorRecovery=false;
             	    }
@@ -355,7 +359,7 @@
 
 
     // $ANTLR start compilation_unit
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:279:1: compilation_unit : opt_eol prolog (r= rule | q= query | extra_statement )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:279:1: compilation_unit : opt_eol prolog (r= rule | q= query | extra_statement )* ;
     public void compilation_unit() throws RecognitionException {   
         RuleDescr r = null;
 
@@ -363,8 +367,8 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:280:17: ( opt_eol prolog (r= rule | q= query | extra_statement )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:280:17: opt_eol prolog (r= rule | q= query | extra_statement )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:280:17: ( opt_eol prolog (r= rule | q= query | extra_statement )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:280:17: opt_eol prolog (r= rule | q= query | extra_statement )*
             {
             following.push(FOLLOW_opt_eol_in_compilation_unit57);
             opt_eol();
@@ -374,14 +378,14 @@
             prolog();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:17: (r= rule | q= query | extra_statement )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:282:17: (r= rule | q= query | extra_statement )*
             loop2:
             do {
                 int alt2=4;
                 alt2 = dfa2.predict(input); 
                 switch (alt2) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:25: r= rule
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:282:25: r= rule
             	    {
             	    following.push(FOLLOW_rule_in_compilation_unit70);
             	    r=rule();
@@ -392,7 +396,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:283:25: q= query
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:283:25: q= query
             	    {
             	    following.push(FOLLOW_query_in_compilation_unit83);
             	    q=query();
@@ -403,7 +407,7 @@
             	    }
             	    break;
             	case 3 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:284:25: extra_statement
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:284:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_compilation_unit91);
             	    extra_statement();
@@ -434,29 +438,29 @@
 
 
     // $ANTLR start prolog
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:288:1: prolog : opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:288: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:292:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:292:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:292:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:292:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
             {
             following.push(FOLLOW_opt_eol_in_prolog115);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:293:17: (name= package_statement )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:293:17: (name= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
-            if ( LA3_0==16 ) {
+            if ( LA3_0==20 ) {
                 alt3=1;
             }
-            else if ( LA3_0==-1||LA3_0==EOL||LA3_0==15||LA3_0==17||(LA3_0>=20 && LA3_0<=22)||LA3_0==28||LA3_0==30 ) {
+            else if ( LA3_0==-1||LA3_0==EOL||LA3_0==19||LA3_0==21||(LA3_0>=24 && LA3_0<=26)||LA3_0==32||LA3_0==34 ) {
                 alt3=2;
             }
             else {
@@ -467,7 +471,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:293:19: name= package_statement
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:293:19: name= package_statement
                     {
                     following.push(FOLLOW_package_statement_in_prolog123);
                     name=package_statement();
@@ -480,17 +484,17 @@
 
             }
 
-             
-            			this.packageDescr = new PackageDescr( name ); 
+             
+            			this.packageDescr = new PackageDescr( name ); 
             		
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:297:17: ( extra_statement | expander )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:297:17: ( extra_statement | expander )*
             loop4:
             do {
                 int alt4=3;
                 alt4 = dfa4.predict(input); 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:297:25: extra_statement
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:297:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_prolog138);
             	    extra_statement();
@@ -500,7 +504,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:298:25: expander
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:298:25: expander
             	    {
             	    following.push(FOLLOW_expander_in_prolog144);
             	    expander();
@@ -535,20 +539,20 @@
 
 
     // $ANTLR start package_statement
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:304:1: package_statement returns [String packageName] : 'package' opt_eol name= dotted_name ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:304: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:309:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:309:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:309:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:309:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
             {
-            match(input,16,FOLLOW_16_in_package_statement180); 
+            match(input,20,FOLLOW_20_in_package_statement180); 
             following.push(FOLLOW_opt_eol_in_package_statement182);
             opt_eol();
             following.pop();
@@ -557,13 +561,13 @@
             name=dotted_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:309:52: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:309:52: ( ';' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
-            if ( LA5_0==15 ) {
+            if ( LA5_0==19 ) {
                 alt5=1;
             }
-            else if ( LA5_0==-1||LA5_0==EOL||LA5_0==17||(LA5_0>=20 && LA5_0<=22)||LA5_0==28||LA5_0==30 ) {
+            else if ( LA5_0==-1||LA5_0==EOL||LA5_0==21||(LA5_0>=24 && LA5_0<=26)||LA5_0==32||LA5_0==34 ) {
                 alt5=2;
             }
             else {
@@ -574,9 +578,9 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:309:52: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:309:52: ';'
                     {
-                    match(input,15,FOLLOW_15_in_package_statement188); 
+                    match(input,19,FOLLOW_19_in_package_statement188); 
 
                     }
                     break;
@@ -587,8 +591,8 @@
             opt_eol();
             following.pop();
 
-
-            			packageName = name;
+            
+            			packageName = name;
             		
 
             }
@@ -606,16 +610,16 @@
 
 
     // $ANTLR start import_statement
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:315:1: import_statement : 'import' opt_eol name= import_name ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:315: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:316:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:316:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
             {
-            match(input,17,FOLLOW_17_in_import_statement207); 
+            match(input,21,FOLLOW_21_in_import_statement207); 
             following.push(FOLLOW_opt_eol_in_import_statement209);
             opt_eol();
             following.pop();
@@ -624,13 +628,13 @@
             name=import_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:51: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:316:51: ( ';' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
-            if ( LA6_0==15 ) {
+            if ( LA6_0==19 ) {
                 alt6=1;
             }
-            else if ( LA6_0==-1||LA6_0==EOL||LA6_0==17||(LA6_0>=20 && LA6_0<=22)||LA6_0==28||LA6_0==30 ) {
+            else if ( LA6_0==-1||LA6_0==EOL||LA6_0==21||(LA6_0>=24 && LA6_0<=26)||LA6_0==32||LA6_0==34 ) {
                 alt6=2;
             }
             else {
@@ -641,9 +645,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:316:51: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:316:51: ';'
                     {
-                    match(input,15,FOLLOW_15_in_import_statement215); 
+                    match(input,19,FOLLOW_19_in_import_statement215); 
 
                     }
                     break;
@@ -654,9 +658,9 @@
             opt_eol();
             following.pop();
 
-
-            			if (packageDescr != null) 
-            				packageDescr.addImport( name );
+            
+            			if (packageDescr != null) 
+            				packageDescr.addImport( name );
             		
 
             }
@@ -674,37 +678,37 @@
 
 
     // $ANTLR start import_name
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:1: import_name returns [String name] : id= ID ( '.' id= ID )* (star= '.*' )? ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:323: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:17: id= ID ( '.' id= ID )* (star= '.*' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:17: id= ID ( '.' id= ID )* (star= '.*' )?
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_import_name249); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:46: ( '.' id= ID )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:46: ( '.' id= ID )*
             loop7:
             do {
                 int alt7=2;
                 int LA7_0 = input.LA(1);
-                if ( LA7_0==18 ) {
+                if ( LA7_0==22 ) {
                     alt7=1;
                 }
 
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:48: '.' id= ID
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:48: '.' id= ID
             	    {
-            	    match(input,18,FOLLOW_18_in_import_name255); 
+            	    match(input,22,FOLLOW_22_in_import_name255); 
             	    id=(Token)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_import_name259); 
             	     name = name + "." + id.getText(); 
@@ -717,13 +721,13 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:99: (star= '.*' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:99: (star= '.*' )?
             int alt8=2;
             int LA8_0 = input.LA(1);
-            if ( LA8_0==19 ) {
+            if ( LA8_0==23 ) {
                 alt8=1;
             }
-            else if ( LA8_0==-1||LA8_0==EOL||LA8_0==15||LA8_0==17||(LA8_0>=20 && LA8_0<=22)||LA8_0==28||LA8_0==30 ) {
+            else if ( LA8_0==-1||LA8_0==EOL||LA8_0==19||LA8_0==21||(LA8_0>=24 && LA8_0<=26)||LA8_0==32||LA8_0==34 ) {
                 alt8=2;
             }
             else {
@@ -734,10 +738,10 @@
             }
             switch (alt8) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:328:100: star= '.*'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:328:100: star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,19,FOLLOW_19_in_import_name269); 
+                    match(input,23,FOLLOW_23_in_import_name269); 
                      name = name + star.getText(); 
 
                     }
@@ -761,26 +765,26 @@
 
 
     // $ANTLR start expander
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:330:1: expander : 'expander' (name= dotted_name )? ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:330: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
             {
-            match(input,20,FOLLOW_20_in_expander289); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:28: (name= dotted_name )?
+            match(input,24,FOLLOW_24_in_expander289); 
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:28: (name= dotted_name )?
             int alt9=2;
             int LA9_0 = input.LA(1);
             if ( LA9_0==ID ) {
                 alt9=1;
             }
-            else if ( LA9_0==-1||LA9_0==EOL||LA9_0==15||LA9_0==17||(LA9_0>=20 && LA9_0<=22)||LA9_0==28||LA9_0==30 ) {
+            else if ( LA9_0==-1||LA9_0==EOL||LA9_0==19||LA9_0==21||(LA9_0>=24 && LA9_0<=26)||LA9_0==32||LA9_0==34 ) {
                 alt9=2;
             }
             else {
@@ -791,7 +795,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:29: name= dotted_name
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:29: name= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_expander294);
                     name=dotted_name();
@@ -803,13 +807,13 @@
 
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:48: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:48: ( ';' )?
             int alt10=2;
             int LA10_0 = input.LA(1);
-            if ( LA10_0==15 ) {
+            if ( LA10_0==19 ) {
                 alt10=1;
             }
-            else if ( LA10_0==-1||LA10_0==EOL||LA10_0==17||(LA10_0>=20 && LA10_0<=22)||LA10_0==28||LA10_0==30 ) {
+            else if ( LA10_0==-1||LA10_0==EOL||LA10_0==21||(LA10_0>=24 && LA10_0<=26)||LA10_0==32||LA10_0==34 ) {
                 alt10=2;
             }
             else {
@@ -820,9 +824,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:334:48: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:334:48: ';'
                     {
-                    match(input,15,FOLLOW_15_in_expander298); 
+                    match(input,19,FOLLOW_19_in_expander298); 
 
                     }
                     break;
@@ -833,12 +837,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 );
             		
 
             }
@@ -856,32 +860,32 @@
 
 
     // $ANTLR start global
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:344:1: global : 'global' type= dotted_name id= ID ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:344: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:348:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:348:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:348:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:348:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
             {
-            match(input,21,FOLLOW_21_in_global325); 
+            match(input,25,FOLLOW_25_in_global325); 
             following.push(FOLLOW_dotted_name_in_global329);
             type=dotted_name();
             following.pop();
 
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_global333); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:348:49: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:348:49: ( ';' )?
             int alt11=2;
             int LA11_0 = input.LA(1);
-            if ( LA11_0==15 ) {
+            if ( LA11_0==19 ) {
                 alt11=1;
             }
-            else if ( LA11_0==-1||LA11_0==EOL||LA11_0==17||(LA11_0>=20 && LA11_0<=22)||LA11_0==28||LA11_0==30 ) {
+            else if ( LA11_0==-1||LA11_0==EOL||LA11_0==21||(LA11_0>=24 && LA11_0<=26)||LA11_0==32||LA11_0==34 ) {
                 alt11=2;
             }
             else {
@@ -892,9 +896,9 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:348:49: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:348:49: ';'
                     {
-                    match(input,15,FOLLOW_15_in_global335); 
+                    match(input,19,FOLLOW_19_in_global335); 
 
                     }
                     break;
@@ -905,8 +909,8 @@
             opt_eol();
             following.pop();
 
-
-            			packageDescr.addGlobal( id.getText(), type );
+            
+            			packageDescr.addGlobal( id.getText(), type );
             		
 
             }
@@ -924,7 +928,7 @@
 
 
     // $ANTLR start function
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:354:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:354:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
     public void function() throws RecognitionException {   
         Token name=null;
         String retType = null;
@@ -936,24 +940,24 @@
         String body = null;
 
 
-
-        		FunctionDescr f = null;
+        
+        		FunctionDescr f = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:359:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:359:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:359:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:359:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
             {
-            match(input,22,FOLLOW_22_in_function362); 
+            match(input,26,FOLLOW_26_in_function362); 
             following.push(FOLLOW_opt_eol_in_function364);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:359:36: (retType= dotted_name )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:359:36: (retType= dotted_name )?
             int alt12=2;
             alt12 = dfa12.predict(input); 
             switch (alt12) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:359:37: retType= dotted_name
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:359:37: retType= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_function369);
                     retType=dotted_name();
@@ -975,22 +979,22 @@
             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_function388); 
+            match(input,27,FOLLOW_27_in_function388); 
             following.push(FOLLOW_opt_eol_in_function390);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:25: ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:365:25: ( (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
-            if ( (LA16_0>=EOL && LA16_0<=ID)||LA16_0==15 ) {
+            if ( (LA16_0>=EOL && LA16_0<=ID)||LA16_0==19 ) {
                 alt16=1;
             }
-            else if ( LA16_0==25 ) {
+            else if ( LA16_0==29 ) {
                 alt16=2;
             }
             else {
@@ -1001,14 +1005,14 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:33: (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:365:33: (paramType= dotted_name )? opt_eol paramName= argument opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )*
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:33: (paramType= dotted_name )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:365:33: (paramType= dotted_name )?
                     int alt13=2;
                     alt13 = dfa13.predict(input); 
                     switch (alt13) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:34: paramType= dotted_name
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:365:34: paramType= dotted_name
                             {
                             following.push(FOLLOW_dotted_name_in_function400);
                             paramType=dotted_name();
@@ -1032,34 +1036,34 @@
                     opt_eol();
                     following.pop();
 
-
-                    					f.addParameter( paramType, paramName );
+                    
+                    					f.addParameter( paramType, paramName );
                     				
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:369:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:369:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol )*
                     loop15:
                     do {
                         int alt15=2;
                         int LA15_0 = input.LA(1);
-                        if ( LA15_0==24 ) {
+                        if ( LA15_0==28 ) {
                             alt15=1;
                         }
 
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:369:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:369:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument opt_eol
                     	    {
-                    	    match(input,24,FOLLOW_24_in_function424); 
+                    	    match(input,28,FOLLOW_28_in_function424); 
                     	    following.push(FOLLOW_opt_eol_in_function426);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:369:53: (paramType= dotted_name )?
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:369:53: (paramType= dotted_name )?
                     	    int alt14=2;
                     	    alt14 = dfa14.predict(input); 
                     	    switch (alt14) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:369:54: paramType= dotted_name
+                    	            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:369:54: paramType= dotted_name
                     	            {
                     	            following.push(FOLLOW_dotted_name_in_function431);
                     	            paramType=dotted_name();
@@ -1083,8 +1087,8 @@
                     	    opt_eol();
                     	    following.pop();
 
-
-                    	    						f.addParameter( paramType, paramName );
+                    	    
+                    	    						f.addParameter( paramType, paramName );
                     	    					
 
                     	    }
@@ -1101,22 +1105,22 @@
 
             }
 
-            match(input,25,FOLLOW_25_in_function466); 
+            match(input,29,FOLLOW_29_in_function466); 
             following.push(FOLLOW_opt_eol_in_function470);
             opt_eol();
             following.pop();
 
-            match(input,26,FOLLOW_26_in_function474); 
+            match(input,30,FOLLOW_30_in_function474); 
             following.push(FOLLOW_curly_chunk_in_function481);
             body=curly_chunk();
             following.pop();
 
-
-            				f.setText( body );
+            
+            				f.setText( body );
             			
-            match(input,27,FOLLOW_27_in_function490); 
-
-            			packageDescr.addFunction( f );
+            match(input,31,FOLLOW_31_in_function490); 
+            
+            			packageDescr.addFunction( f );
             		
             following.push(FOLLOW_opt_eol_in_function498);
             opt_eol();
@@ -1138,26 +1142,26 @@
 
 
     // $ANTLR start query
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:390: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:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:390: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:395: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:395:17: opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:395:17: ( opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:395: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_query522);
             opt_eol();
             following.pop();
 
             loc=(Token)input.LT(1);
-            match(input,28,FOLLOW_28_in_query528); 
+            match(input,32,FOLLOW_32_in_query528); 
             following.push(FOLLOW_word_in_query532);
             queryName=word();
             following.pop();
@@ -1166,16 +1170,16 @@
             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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:403:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:403:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
             int alt17=2;
             switch ( input.LA(1) ) {
-            case 23:
+            case 27:
                 int LA17_1 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1205,7 +1209,7 @@
                     throw nvae;
                 }
                 break;
-            case 29:
+            case 33:
                 int LA17_3 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1220,7 +1224,7 @@
                     throw nvae;
                 }
                 break;
-            case 56:
+            case 60:
                 int LA17_4 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1235,7 +1239,7 @@
                     throw nvae;
                 }
                 break;
-            case 57:
+            case 61:
                 int LA17_5 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1250,7 +1254,7 @@
                     throw nvae;
                 }
                 break;
-            case 58:
+            case 62:
                 int LA17_6 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1280,7 +1284,7 @@
                     throw nvae;
                 }
                 break;
-            case 15:
+            case 19:
                 int LA17_8 = input.LA(2);
                 if (  expander != null  ) {
                     alt17=1;
@@ -1301,25 +1305,25 @@
             case FLOAT:
             case MISC:
             case WS:
+            case EscapeSequence:
+            case HexDigit:
+            case UnicodeEscape:
+            case OctalEscape:
             case SH_STYLE_SINGLE_LINE_COMMENT:
             case C_STYLE_SINGLE_LINE_COMMENT:
             case MULTI_LINE_COMMENT:
-            case 16:
-            case 17:
-            case 18:
-            case 19:
             case 20:
             case 21:
             case 22:
+            case 23:
             case 24:
             case 25:
             case 26:
-            case 27:
             case 28:
+            case 29:
             case 30:
             case 31:
             case 32:
-            case 33:
             case 34:
             case 35:
             case 36:
@@ -1342,9 +1346,13 @@
             case 53:
             case 54:
             case 55:
+            case 56:
+            case 57:
+            case 58:
             case 59:
-            case 60:
-            case 61:
+            case 63:
+            case 64:
+            case 65:
                 alt17=1;
                 break;
             default:
@@ -1356,7 +1364,7 @@
 
             switch (alt17) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:404:25: {...}? expander_lhs_block[lhs]
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:404:25: {...}? expander_lhs_block[lhs]
                     {
                     if ( !( expander != null ) ) {
                         throw new FailedPredicateException(input, "query", " expander != null ");
@@ -1369,7 +1377,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:405:27: normal_lhs_block[lhs]
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:405:27: normal_lhs_block[lhs]
                     {
                     following.push(FOLLOW_normal_lhs_block_in_query558);
                     normal_lhs_block(lhs);
@@ -1381,7 +1389,7 @@
 
             }
 
-            match(input,29,FOLLOW_29_in_query573); 
+            match(input,33,FOLLOW_33_in_query573); 
             following.push(FOLLOW_opt_eol_in_query575);
             opt_eol();
             following.pop();
@@ -1402,7 +1410,7 @@
 
 
     // $ANTLR start rule
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:411: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:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:411: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;
@@ -1410,20 +1418,20 @@
         String ruleName = null;
 
 
-
-        		rule = null;
-        		String consequence = "";
+        
+        		rule = null;
+        		String consequence = "";
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:417: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:417: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:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:417: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:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:417: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_rule598);
             opt_eol();
             following.pop();
 
             loc=(Token)input.LT(1);
-            match(input,30,FOLLOW_30_in_rule604); 
+            match(input,34,FOLLOW_34_in_rule604); 
             following.push(FOLLOW_word_in_rule608);
             ruleName=word();
             following.pop();
@@ -1432,36 +1440,36 @@
             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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:424:17: ( rule_attributes[rule] )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:424:17: ( rule_attributes[rule] )?
             int alt18=2;
             switch ( input.LA(1) ) {
-            case 32:
-            case 34:
+            case 36:
+            case 38:
                 alt18=1;
                 break;
             case EOL:
-            case 15:
-            case 24:
-            case 35:
-            case 36:
-            case 37:
-            case 38:
+            case 19:
+            case 28:
             case 39:
             case 40:
+            case 41:
+            case 42:
+            case 43:
+            case 44:
                 alt18=1;
                 break;
-            case 31:
+            case 35:
                 alt18=1;
                 break;
-            case 33:
+            case 37:
                 alt18=1;
                 break;
-            case 29:
+            case 33:
                 alt18=1;
                 break;
             default:
@@ -1473,7 +1481,7 @@
 
             switch (alt18) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:424:25: rule_attributes[rule]
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:424:25: rule_attributes[rule]
                     {
                     following.push(FOLLOW_rule_attributes_in_rule621);
                     rule_attributes(rule);
@@ -1489,13 +1497,13 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( 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==31||LA25_0==33 ) {
+            if ( LA25_0==EOL||LA25_0==19||LA25_0==35||LA25_0==37 ) {
                 alt25=1;
             }
-            else if ( LA25_0==29 ) {
+            else if ( LA25_0==33 ) {
                 alt25=1;
             }
             else {
@@ -1506,15 +1514,15 @@
             }
             switch (alt25) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
                     int alt21=2;
                     int LA21_0 = input.LA(1);
-                    if ( LA21_0==31 ) {
+                    if ( LA21_0==35 ) {
                         alt21=1;
                     }
-                    else if ( LA21_0==EOL||LA21_0==15||LA21_0==29||LA21_0==33 ) {
+                    else if ( LA21_0==EOL||LA21_0==19||LA21_0==33||LA21_0==37 ) {
                         alt21=2;
                     }
                     else {
@@ -1525,14 +1533,14 @@
                     }
                     switch (alt21) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             {
                             loc=(Token)input.LT(1);
-                            match(input,31,FOLLOW_31_in_rule640); 
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:36: ( ':' )?
+                            match(input,35,FOLLOW_35_in_rule640); 
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427:36: ( ':' )?
                             int alt19=2;
                             int LA19_0 = input.LA(1);
-                            if ( LA19_0==32 ) {
+                            if ( LA19_0==36 ) {
                                 int LA19_1 = input.LA(2);
                                 if ( !( expander != null ) ) {
                                     alt19=1;
@@ -1547,7 +1555,7 @@
                                     throw nvae;
                                 }
                             }
-                            else if ( (LA19_0>=EOL && LA19_0<=31)||(LA19_0>=33 && LA19_0<=61) ) {
+                            else if ( (LA19_0>=EOL && LA19_0<=35)||(LA19_0>=37 && LA19_0<=65) ) {
                                 alt19=2;
                             }
                             else {
@@ -1558,9 +1566,9 @@
                             }
                             switch (alt19) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:36: ':'
+                                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:427:36: ':'
                                     {
-                                    match(input,32,FOLLOW_32_in_rule642); 
+                                    match(input,36,FOLLOW_36_in_rule642); 
 
                                     }
                                     break;
@@ -1571,14 +1579,14 @@
                             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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:432:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:432:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             int alt20=2;
                             switch ( input.LA(1) ) {
-                            case 23:
+                            case 27:
                                 int LA20_1 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1608,7 +1616,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 15:
+                            case 19:
                                 int LA20_3 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1623,7 +1631,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 33:
+                            case 37:
                                 int LA20_4 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1638,7 +1646,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 29:
+                            case 33:
                                 int LA20_5 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1653,7 +1661,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 56:
+                            case 60:
                                 int LA20_6 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1668,7 +1676,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 57:
+                            case 61:
                                 int LA20_7 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1683,7 +1691,7 @@
                                     throw nvae;
                                 }
                                 break;
-                            case 58:
+                            case 62:
                                 int LA20_8 = input.LA(2);
                                 if (  expander != null  ) {
                                     alt20=1;
@@ -1719,28 +1727,28 @@
                             case FLOAT:
                             case MISC:
                             case WS:
+                            case EscapeSequence:
+                            case HexDigit:
+                            case UnicodeEscape:
+                            case OctalEscape:
                             case SH_STYLE_SINGLE_LINE_COMMENT:
                             case C_STYLE_SINGLE_LINE_COMMENT:
                             case MULTI_LINE_COMMENT:
-                            case 16:
-                            case 17:
-                            case 18:
-                            case 19:
                             case 20:
                             case 21:
                             case 22:
+                            case 23:
                             case 24:
                             case 25:
                             case 26:
-                            case 27:
                             case 28:
+                            case 29:
                             case 30:
                             case 31:
                             case 32:
                             case 34:
                             case 35:
                             case 36:
-                            case 37:
                             case 38:
                             case 39:
                             case 40:
@@ -1759,9 +1767,13 @@
                             case 53:
                             case 54:
                             case 55:
+                            case 56:
+                            case 57:
+                            case 58:
                             case 59:
-                            case 60:
-                            case 61:
+                            case 63:
+                            case 64:
+                            case 65:
                                 alt20=1;
                                 break;
                             default:
@@ -1773,7 +1785,7 @@
 
                             switch (alt20) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:433:33: {...}? expander_lhs_block[lhs]
+                                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:433:33: {...}? expander_lhs_block[lhs]
                                     {
                                     if ( !( expander != null ) ) {
                                         throw new FailedPredicateException(input, "rule", " expander != null ");
@@ -1786,7 +1798,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:434:35: normal_lhs_block[lhs]
+                                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:434:35: normal_lhs_block[lhs]
                                     {
                                     following.push(FOLLOW_normal_lhs_block_in_rule672);
                                     normal_lhs_block(lhs);
@@ -1804,13 +1816,13 @@
 
                     }
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:438:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:438:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
                     int alt24=2;
                     int LA24_0 = input.LA(1);
-                    if ( LA24_0==EOL||LA24_0==15||LA24_0==33 ) {
+                    if ( LA24_0==EOL||LA24_0==19||LA24_0==37 ) {
                         alt24=1;
                     }
-                    else if ( LA24_0==29 ) {
+                    else if ( LA24_0==33 ) {
                         alt24=2;
                     }
                     else {
@@ -1821,21 +1833,21 @@
                     }
                     switch (alt24) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:438:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )*
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:438:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )*
                             {
                             following.push(FOLLOW_opt_eol_in_rule695);
                             opt_eol();
                             following.pop();
 
                             loc=(Token)input.LT(1);
-                            match(input,33,FOLLOW_33_in_rule699); 
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:438:38: ( ':' )?
+                            match(input,37,FOLLOW_37_in_rule699); 
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:438:38: ( ':' )?
                             int alt22=2;
                             int LA22_0 = input.LA(1);
-                            if ( LA22_0==32 ) {
+                            if ( LA22_0==36 ) {
                                 alt22=1;
                             }
-                            else if ( (LA22_0>=EOL && LA22_0<=31)||(LA22_0>=33 && LA22_0<=61) ) {
+                            else if ( (LA22_0>=EOL && LA22_0<=35)||(LA22_0>=37 && LA22_0<=65) ) {
                                 alt22=2;
                             }
                             else {
@@ -1846,9 +1858,9 @@
                             }
                             switch (alt22) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:438:38: ':'
+                                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:438:38: ':'
                                     {
-                                    match(input,32,FOLLOW_32_in_rule701); 
+                                    match(input,36,FOLLOW_36_in_rule701); 
 
                                     }
                                     break;
@@ -1859,27 +1871,27 @@
                             opt_eol();
                             following.pop();
 
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:439:25: ( options {greedy=false; } : any= . )*
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:439:25: ( options {greedy=false; } : any= . )*
                             loop23:
                             do {
                                 int alt23=2;
                                 int LA23_0 = input.LA(1);
-                                if ( LA23_0==29 ) {
+                                if ( LA23_0==33 ) {
                                     alt23=2;
                                 }
-                                else if ( (LA23_0>=EOL && LA23_0<=28)||(LA23_0>=30 && LA23_0<=61) ) {
+                                else if ( (LA23_0>=EOL && LA23_0<=32)||(LA23_0>=34 && LA23_0<=65) ) {
                                     alt23=1;
                                 }
 
 
                                 switch (alt23) {
                             	case 1 :
-                            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:439:52: any= .
+                            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:439:52: any= .
                             	    {
                             	    any=(Token)input.LT(1);
                             	    matchAny(input); 
-
-                            	    					consequence = consequence + " " + any.getText();
+                            	    
+                            	    					consequence = consequence + " " + any.getText();
                             	    				
 
                             	    }
@@ -1890,14 +1902,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());
                             			
 
                             }
@@ -1911,13 +1923,13 @@
 
             }
 
-            match(input,29,FOLLOW_29_in_rule751); 
+            match(input,33,FOLLOW_33_in_rule751); 
             following.push(FOLLOW_opt_eol_in_rule753);
             opt_eol();
             following.pop();
 
-
-            			debug( "end rule: " + ruleName );
+            
+            			debug( "end rule: " + ruleName );
             		
 
             }
@@ -1935,22 +1947,22 @@
 
 
     // $ANTLR start extra_statement
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:460:1: extra_statement : ( import_statement | global | function ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:460:1: extra_statement : ( import_statement | global | function ) ;
     public void extra_statement() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:462:9: ( ( import_statement | global | function ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:462:9: ( import_statement | global | function )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:462:9: ( ( import_statement | global | function ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:462:9: ( import_statement | global | function )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:462:9: ( import_statement | global | function )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:462:9: ( import_statement | global | function )
             int alt26=3;
             switch ( input.LA(1) ) {
-            case 17:
+            case 21:
                 alt26=1;
                 break;
-            case 21:
+            case 25:
                 alt26=2;
                 break;
-            case 22:
+            case 26:
                 alt26=3;
                 break;
             default:
@@ -1962,7 +1974,7 @@
 
             switch (alt26) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:462:17: import_statement
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:462:17: import_statement
                     {
                     following.push(FOLLOW_import_statement_in_extra_statement773);
                     import_statement();
@@ -1972,7 +1984,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:463:17: global
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:463:17: global
                     {
                     following.push(FOLLOW_global_in_extra_statement778);
                     global();
@@ -1982,7 +1994,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:464:17: function
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:464:17: function
                     {
                     following.push(FOLLOW_function_in_extra_statement783);
                     function();
@@ -2010,22 +2022,22 @@
 
 
     // $ANTLR start rule_attributes
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:468:1: rule_attributes[RuleDescr rule] : ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:468: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:25: ( 'attributes' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:25: ( 'attributes' )?
             int alt27=2;
             int LA27_0 = input.LA(1);
-            if ( LA27_0==34 ) {
+            if ( LA27_0==38 ) {
                 alt27=1;
             }
-            else if ( LA27_0==EOL||LA27_0==15||LA27_0==24||LA27_0==29||(LA27_0>=31 && LA27_0<=33)||(LA27_0>=35 && LA27_0<=40) ) {
+            else if ( LA27_0==EOL||LA27_0==19||LA27_0==28||LA27_0==33||(LA27_0>=35 && LA27_0<=37)||(LA27_0>=39 && LA27_0<=44) ) {
                 alt27=2;
             }
             else {
@@ -2036,22 +2048,22 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:25: 'attributes'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:25: 'attributes'
                     {
-                    match(input,34,FOLLOW_34_in_rule_attributes802); 
+                    match(input,38,FOLLOW_38_in_rule_attributes802); 
 
                     }
                     break;
 
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:39: ( ':' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:39: ( ':' )?
             int alt28=2;
             int LA28_0 = input.LA(1);
-            if ( LA28_0==32 ) {
+            if ( LA28_0==36 ) {
                 alt28=1;
             }
-            else if ( LA28_0==EOL||LA28_0==15||LA28_0==24||LA28_0==29||LA28_0==31||LA28_0==33||(LA28_0>=35 && LA28_0<=40) ) {
+            else if ( LA28_0==EOL||LA28_0==19||LA28_0==28||LA28_0==33||LA28_0==35||LA28_0==37||(LA28_0>=39 && LA28_0<=44) ) {
                 alt28=2;
             }
             else {
@@ -2062,9 +2074,9 @@
             }
             switch (alt28) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:39: ':'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:470:39: ':'
                     {
-                    match(input,32,FOLLOW_32_in_rule_attributes805); 
+                    match(input,36,FOLLOW_36_in_rule_attributes805); 
 
                     }
                     break;
@@ -2075,27 +2087,27 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:471:25: ( ( ',' )? a= rule_attribute opt_eol )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:471:25: ( ( ',' )? a= rule_attribute opt_eol )*
             loop30:
             do {
                 int alt30=2;
                 int LA30_0 = input.LA(1);
-                if ( LA30_0==24||(LA30_0>=35 && LA30_0<=40) ) {
+                if ( LA30_0==28||(LA30_0>=39 && LA30_0<=44) ) {
                     alt30=1;
                 }
 
 
                 switch (alt30) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:471:33: ( ',' )? a= rule_attribute opt_eol
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:471:33: ( ',' )? a= rule_attribute opt_eol
             	    {
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:471:33: ( ',' )?
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:471:33: ( ',' )?
             	    int alt29=2;
             	    int LA29_0 = input.LA(1);
-            	    if ( LA29_0==24 ) {
+            	    if ( LA29_0==28 ) {
             	        alt29=1;
             	    }
-            	    else if ( (LA29_0>=35 && LA29_0<=40) ) {
+            	    else if ( (LA29_0>=39 && LA29_0<=44) ) {
             	        alt29=2;
             	    }
             	    else {
@@ -2106,9 +2118,9 @@
             	    }
             	    switch (alt29) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:471:33: ','
+            	            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:471:33: ','
             	            {
-            	            match(input,24,FOLLOW_24_in_rule_attributes815); 
+            	            match(input,28,FOLLOW_28_in_rule_attributes815); 
 
             	            }
             	            break;
@@ -2123,8 +2135,8 @@
             	    opt_eol();
             	    following.pop();
 
-
-            	    					rule.addAttribute( a );
+            	    
+            	    					rule.addAttribute( a );
             	    				
 
             	    }
@@ -2151,35 +2163,35 @@
 
 
     // $ANTLR start rule_attribute
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:478:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:478: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:483:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:483:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
             int alt31=6;
             switch ( input.LA(1) ) {
-            case 35:
+            case 39:
                 alt31=1;
                 break;
-            case 36:
+            case 40:
                 alt31=2;
                 break;
-            case 39:
+            case 43:
                 alt31=3;
                 break;
-            case 40:
+            case 44:
                 alt31=4;
                 break;
-            case 38:
+            case 42:
                 alt31=5;
                 break;
-            case 37:
+            case 41:
                 alt31=6;
                 break;
             default:
@@ -2191,7 +2203,7 @@
 
             switch (alt31) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:483:25: a= salience
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:483:25: a= salience
                     {
                     following.push(FOLLOW_salience_in_rule_attribute861);
                     a=salience();
@@ -2202,7 +2214,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:484:25: a= no_loop
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:484:25: a= no_loop
                     {
                     following.push(FOLLOW_no_loop_in_rule_attribute871);
                     a=no_loop();
@@ -2213,7 +2225,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:485:25: a= agenda_group
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:485:25: a= agenda_group
                     {
                     following.push(FOLLOW_agenda_group_in_rule_attribute882);
                     a=agenda_group();
@@ -2224,7 +2236,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:25: a= duration
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:486:25: a= duration
                     {
                     following.push(FOLLOW_duration_in_rule_attribute895);
                     a=duration();
@@ -2235,7 +2247,7 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:487:25: a= activation_group
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:487:25: a= activation_group
                     {
                     following.push(FOLLOW_activation_group_in_rule_attribute909);
                     a=activation_group();
@@ -2246,7 +2258,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:488:25: a= auto_focus
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:488:25: a= auto_focus
                     {
                     following.push(FOLLOW_auto_focus_in_rule_attribute920);
                     a=auto_focus();
@@ -2271,34 +2283,34 @@
 
 
     // $ANTLR start salience
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:492:1: salience returns [AttributeDescr d ] : loc= 'salience' opt_eol i= INT ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:492: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:497:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:497:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,35,FOLLOW_35_in_salience953); 
+            match(input,39,FOLLOW_39_in_salience953); 
             following.push(FOLLOW_opt_eol_in_salience955);
             opt_eol();
             following.pop();
 
             i=(Token)input.LT(1);
             match(input,INT,FOLLOW_INT_in_salience959); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:46: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:497:46: ( ';' )?
             int alt32=2;
             int LA32_0 = input.LA(1);
-            if ( LA32_0==15 ) {
+            if ( LA32_0==19 ) {
                 alt32=1;
             }
-            else if ( LA32_0==EOL||LA32_0==24||LA32_0==29||LA32_0==31||LA32_0==33||(LA32_0>=35 && LA32_0<=40) ) {
+            else if ( LA32_0==EOL||LA32_0==28||LA32_0==33||LA32_0==35||LA32_0==37||(LA32_0>=39 && LA32_0<=44) ) {
                 alt32=2;
             }
             else {
@@ -2309,9 +2321,9 @@
             }
             switch (alt32) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:46: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:497:46: ';'
                     {
-                    match(input,15,FOLLOW_15_in_salience961); 
+                    match(input,19,FOLLOW_19_in_salience961); 
 
                     }
                     break;
@@ -2322,9 +2334,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() );
             		
 
             }
@@ -2342,25 +2354,25 @@
 
 
     // $ANTLR start no_loop
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:504:1: no_loop returns [AttributeDescr d] : ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:504: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:509:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:509:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
             int alt35=2;
             int LA35_0 = input.LA(1);
-            if ( LA35_0==36 ) {
+            if ( LA35_0==40 ) {
                 int LA35_1 = input.LA(2);
                 if ( LA35_1==BOOL ) {
                     alt35=2;
                 }
-                else if ( LA35_1==EOL||LA35_1==15||LA35_1==24||LA35_1==29||LA35_1==31||LA35_1==33||(LA35_1>=35 && LA35_1<=40) ) {
+                else if ( LA35_1==EOL||LA35_1==19||LA35_1==28||LA35_1==33||LA35_1==35||LA35_1==37||(LA35_1>=39 && LA35_1<=44) ) {
                     alt35=1;
                 }
                 else {
@@ -2378,24 +2390,24 @@
             }
             switch (alt35) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:509:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:509:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:509:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:510:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:509:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:510:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,36,FOLLOW_36_in_no_loop999); 
+                    match(input,40,FOLLOW_40_in_no_loop999); 
                     following.push(FOLLOW_opt_eol_in_no_loop1001);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:510:47: ( ';' )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:510:47: ( ';' )?
                     int alt33=2;
                     int LA33_0 = input.LA(1);
-                    if ( LA33_0==15 ) {
+                    if ( LA33_0==19 ) {
                         alt33=1;
                     }
-                    else if ( LA33_0==EOL||LA33_0==24||LA33_0==29||LA33_0==31||LA33_0==33||(LA33_0>=35 && LA33_0<=40) ) {
+                    else if ( LA33_0==EOL||LA33_0==28||LA33_0==33||LA33_0==35||LA33_0==37||(LA33_0>=39 && LA33_0<=44) ) {
                         alt33=2;
                     }
                     else {
@@ -2406,9 +2418,9 @@
                     }
                     switch (alt33) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:510:47: ';'
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:510:47: ';'
                             {
-                            match(input,15,FOLLOW_15_in_no_loop1003); 
+                            match(input,19,FOLLOW_19_in_no_loop1003); 
 
                             }
                             break;
@@ -2419,9 +2431,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() );
                     			
 
                     }
@@ -2430,26 +2442,26 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:517:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:517:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:517:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:518:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:517:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:518:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,36,FOLLOW_36_in_no_loop1031); 
+                    match(input,40,FOLLOW_40_in_no_loop1031); 
                     t=(Token)input.LT(1);
                     match(input,BOOL,FOLLOW_BOOL_in_no_loop1035); 
                     following.push(FOLLOW_opt_eol_in_no_loop1037);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:518:54: ( ';' )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:518:54: ( ';' )?
                     int alt34=2;
                     int LA34_0 = input.LA(1);
-                    if ( LA34_0==15 ) {
+                    if ( LA34_0==19 ) {
                         alt34=1;
                     }
-                    else if ( LA34_0==EOL||LA34_0==24||LA34_0==29||LA34_0==31||LA34_0==33||(LA34_0>=35 && LA34_0<=40) ) {
+                    else if ( LA34_0==EOL||LA34_0==28||LA34_0==33||LA34_0==35||LA34_0==37||(LA34_0>=39 && LA34_0<=44) ) {
                         alt34=2;
                     }
                     else {
@@ -2460,9 +2472,9 @@
                     }
                     switch (alt34) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:518:54: ';'
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:518:54: ';'
                             {
-                            match(input,15,FOLLOW_15_in_no_loop1039); 
+                            match(input,19,FOLLOW_19_in_no_loop1039); 
 
                             }
                             break;
@@ -2473,9 +2485,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() );
                     			
 
                     }
@@ -2498,25 +2510,25 @@
 
 
     // $ANTLR start auto_focus
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:528:1: auto_focus returns [AttributeDescr d] : ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:528: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:533:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:533:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
             int alt38=2;
             int LA38_0 = input.LA(1);
-            if ( LA38_0==37 ) {
+            if ( LA38_0==41 ) {
                 int LA38_1 = input.LA(2);
                 if ( LA38_1==BOOL ) {
                     alt38=2;
                 }
-                else if ( LA38_1==EOL||LA38_1==15||LA38_1==24||LA38_1==29||LA38_1==31||LA38_1==33||(LA38_1>=35 && LA38_1<=40) ) {
+                else if ( LA38_1==EOL||LA38_1==19||LA38_1==28||LA38_1==33||LA38_1==35||LA38_1==37||(LA38_1>=39 && LA38_1<=44) ) {
                     alt38=1;
                 }
                 else {
@@ -2534,24 +2546,24 @@
             }
             switch (alt38) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:533:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:533:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:533:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:534:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:533:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:534:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,37,FOLLOW_37_in_auto_focus1088); 
+                    match(input,41,FOLLOW_41_in_auto_focus1088); 
                     following.push(FOLLOW_opt_eol_in_auto_focus1090);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:534:50: ( ';' )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:534:50: ( ';' )?
                     int alt36=2;
                     int LA36_0 = input.LA(1);
-                    if ( LA36_0==15 ) {
+                    if ( LA36_0==19 ) {
                         alt36=1;
                     }
-                    else if ( LA36_0==EOL||LA36_0==24||LA36_0==29||LA36_0==31||LA36_0==33||(LA36_0>=35 && LA36_0<=40) ) {
+                    else if ( LA36_0==EOL||LA36_0==28||LA36_0==33||LA36_0==35||LA36_0==37||(LA36_0>=39 && LA36_0<=44) ) {
                         alt36=2;
                     }
                     else {
@@ -2562,9 +2574,9 @@
                     }
                     switch (alt36) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:534:50: ';'
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:534:50: ';'
                             {
-                            match(input,15,FOLLOW_15_in_auto_focus1092); 
+                            match(input,19,FOLLOW_19_in_auto_focus1092); 
 
                             }
                             break;
@@ -2575,9 +2587,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() );
                     			
 
                     }
@@ -2586,26 +2598,26 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:541:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:542:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:541:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:542:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,37,FOLLOW_37_in_auto_focus1120); 
+                    match(input,41,FOLLOW_41_in_auto_focus1120); 
                     t=(Token)input.LT(1);
                     match(input,BOOL,FOLLOW_BOOL_in_auto_focus1124); 
                     following.push(FOLLOW_opt_eol_in_auto_focus1126);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:542:57: ( ';' )?
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:542:57: ( ';' )?
                     int alt37=2;
                     int LA37_0 = input.LA(1);
-                    if ( LA37_0==15 ) {
+                    if ( LA37_0==19 ) {
                         alt37=1;
                     }
-                    else if ( LA37_0==EOL||LA37_0==24||LA37_0==29||LA37_0==31||LA37_0==33||(LA37_0>=35 && LA37_0<=40) ) {
+                    else if ( LA37_0==EOL||LA37_0==28||LA37_0==33||LA37_0==35||LA37_0==37||(LA37_0>=39 && LA37_0<=44) ) {
                         alt37=2;
                     }
                     else {
@@ -2616,9 +2628,9 @@
                     }
                     switch (alt37) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:542:57: ';'
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:542:57: ';'
                             {
-                            match(input,15,FOLLOW_15_in_auto_focus1128); 
+                            match(input,19,FOLLOW_19_in_auto_focus1128); 
 
                             }
                             break;
@@ -2629,9 +2641,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() );
                     			
 
                     }
@@ -2654,34 +2666,34 @@
 
 
     // $ANTLR start activation_group
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:552:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:552: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:557:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:557:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,38,FOLLOW_38_in_activation_group1173); 
+            match(input,42,FOLLOW_42_in_activation_group1173); 
             following.push(FOLLOW_opt_eol_in_activation_group1175);
             opt_eol();
             following.pop();
 
             name=(Token)input.LT(1);
             match(input,STRING,FOLLOW_STRING_in_activation_group1179); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:60: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:557:60: ( ';' )?
             int alt39=2;
             int LA39_0 = input.LA(1);
-            if ( LA39_0==15 ) {
+            if ( LA39_0==19 ) {
                 alt39=1;
             }
-            else if ( LA39_0==EOL||LA39_0==24||LA39_0==29||LA39_0==31||LA39_0==33||(LA39_0>=35 && LA39_0<=40) ) {
+            else if ( LA39_0==EOL||LA39_0==28||LA39_0==33||LA39_0==35||LA39_0==37||(LA39_0>=39 && LA39_0<=44) ) {
                 alt39=2;
             }
             else {
@@ -2692,9 +2704,9 @@
             }
             switch (alt39) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:60: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:557:60: ';'
                     {
-                    match(input,15,FOLLOW_15_in_activation_group1181); 
+                    match(input,19,FOLLOW_19_in_activation_group1181); 
 
                     }
                     break;
@@ -2705,9 +2717,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() );
             		
 
             }
@@ -2725,34 +2737,34 @@
 
 
     // $ANTLR start agenda_group
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:564:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:564: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:569:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:569:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:569:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:569:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,39,FOLLOW_39_in_agenda_group1213); 
+            match(input,43,FOLLOW_43_in_agenda_group1213); 
             following.push(FOLLOW_opt_eol_in_agenda_group1215);
             opt_eol();
             following.pop();
 
             name=(Token)input.LT(1);
             match(input,STRING,FOLLOW_STRING_in_agenda_group1219); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:569:56: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:569:56: ( ';' )?
             int alt40=2;
             int LA40_0 = input.LA(1);
-            if ( LA40_0==15 ) {
+            if ( LA40_0==19 ) {
                 alt40=1;
             }
-            else if ( LA40_0==EOL||LA40_0==24||LA40_0==29||LA40_0==31||LA40_0==33||(LA40_0>=35 && LA40_0<=40) ) {
+            else if ( LA40_0==EOL||LA40_0==28||LA40_0==33||LA40_0==35||LA40_0==37||(LA40_0>=39 && LA40_0<=44) ) {
                 alt40=2;
             }
             else {
@@ -2763,9 +2775,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:569:56: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:569:56: ';'
                     {
-                    match(input,15,FOLLOW_15_in_agenda_group1221); 
+                    match(input,19,FOLLOW_19_in_agenda_group1221); 
 
                     }
                     break;
@@ -2776,9 +2788,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() );
             		
 
             }
@@ -2796,34 +2808,34 @@
 
 
     // $ANTLR start duration
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:577:1: duration returns [AttributeDescr d] : loc= 'duration' opt_eol i= INT ( ';' )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:577: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:582:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:582:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:582:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:582:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,40,FOLLOW_40_in_duration1256); 
+            match(input,44,FOLLOW_44_in_duration1256); 
             following.push(FOLLOW_opt_eol_in_duration1258);
             opt_eol();
             following.pop();
 
             i=(Token)input.LT(1);
             match(input,INT,FOLLOW_INT_in_duration1262); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:582:46: ( ';' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:582:46: ( ';' )?
             int alt41=2;
             int LA41_0 = input.LA(1);
-            if ( LA41_0==15 ) {
+            if ( LA41_0==19 ) {
                 alt41=1;
             }
-            else if ( LA41_0==EOL||LA41_0==24||LA41_0==29||LA41_0==31||LA41_0==33||(LA41_0>=35 && LA41_0<=40) ) {
+            else if ( LA41_0==EOL||LA41_0==28||LA41_0==33||LA41_0==35||LA41_0==37||(LA41_0>=39 && LA41_0<=44) ) {
                 alt41=2;
             }
             else {
@@ -2834,9 +2846,9 @@
             }
             switch (alt41) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:582:46: ';'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:582:46: ';'
                     {
-                    match(input,15,FOLLOW_15_in_duration1264); 
+                    match(input,19,FOLLOW_19_in_duration1264); 
 
                     }
                     break;
@@ -2847,9 +2859,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() );
             		
 
             }
@@ -2867,28 +2879,28 @@
 
 
     // $ANTLR start normal_lhs_block
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:590:1: normal_lhs_block[AndDescr descrs] : (d= lhs opt_eol )* opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:590: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:592:17: ( (d= lhs opt_eol )* opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:592:17: (d= lhs opt_eol )* opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:592:17: ( (d= lhs opt_eol )* opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:592:17: (d= lhs opt_eol )* opt_eol
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:592:17: (d= lhs opt_eol )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:592:17: (d= lhs opt_eol )*
             loop42:
             do {
                 int alt42=2;
                 int LA42_0 = input.LA(1);
-                if ( LA42_0==ID||LA42_0==23||(LA42_0>=56 && LA42_0<=58) ) {
+                if ( LA42_0==ID||LA42_0==27||(LA42_0>=60 && LA42_0<=62) ) {
                     alt42=1;
                 }
 
 
                 switch (alt42) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:592:25: d= lhs opt_eol
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:592:25: d= lhs opt_eol
             	    {
             	    following.push(FOLLOW_lhs_in_normal_lhs_block1293);
             	    d=lhs();
@@ -2928,33 +2940,33 @@
 
 
     // $ANTLR start expander_lhs_block
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:600:1: expander_lhs_block[AndDescr descrs] : ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:600: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:607:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:607:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:607:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:607:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:607:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:607:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
             loop44:
             do {
                 int alt44=2;
                 switch ( input.LA(1) ) {
-                case 29:
+                case 33:
                     alt44=2;
                     break;
                 case EOL:
                     alt44=2;
                     break;
-                case 33:
+                case 37:
                     alt44=2;
                     break;
                 case ID:
@@ -2964,13 +2976,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 16:
-                case 17:
-                case 18:
-                case 19:
                 case 20:
                 case 21:
                 case 22:
@@ -2980,13 +2992,13 @@
                 case 26:
                 case 27:
                 case 28:
+                case 29:
                 case 30:
                 case 31:
                 case 32:
                 case 34:
                 case 35:
                 case 36:
-                case 37:
                 case 38:
                 case 39:
                 case 40:
@@ -3011,9 +3023,13 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     alt44=1;
                     break;
-                case 15:
+                case 19:
                     alt44=2;
                     break;
 
@@ -3021,7 +3037,7 @@
 
                 switch (alt44) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:608:25: text= paren_chunk loc= EOL ( EOL )*
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:608:25: text= paren_chunk loc= EOL ( EOL )*
             	    {
             	    following.push(FOLLOW_paren_chunk_in_expander_lhs_block1348);
             	    text=paren_chunk();
@@ -3029,31 +3045,31 @@
 
             	    loc=(Token)input.LT(1);
             	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1352); 
-
-            	    				//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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:18: ( EOL )*
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:635:18: ( EOL )*
             	    loop43:
             	    do {
             	        int alt43=2;
@@ -3065,7 +3081,7 @@
 
             	        switch (alt43) {
             	    	case 1 :
-            	    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:19: EOL
+            	    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:635:19: EOL
             	    	    {
             	    	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1372); 
 
@@ -3086,12 +3102,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);
+            			}
             		
 
             }
@@ -3109,18 +3125,18 @@
 
 
     // $ANTLR start lhs
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:650:1: lhs returns [PatternDescr d] : l= lhs_or ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:650: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:654:17: (l= lhs_or )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:654:17: l= lhs_or
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:654:17: (l= lhs_or )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:654:17: l= lhs_or
             {
             following.push(FOLLOW_lhs_or_in_lhs1415);
             l=lhs_or();
@@ -3143,22 +3159,22 @@
 
 
     // $ANTLR start lhs_column
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:658:1: lhs_column returns [PatternDescr d] : (f= fact_binding | f= fact );
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:658: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:17: (f= fact_binding | f= fact )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:662:17: (f= fact_binding | f= fact )
             int alt45=2;
             alt45 = dfa45.predict(input); 
             switch (alt45) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:17: f= fact_binding
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:662:17: f= fact_binding
                     {
                     following.push(FOLLOW_fact_binding_in_lhs_column1443);
                     f=fact_binding();
@@ -3169,7 +3185,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:663:17: f= fact
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:663:17: f= fact
                     {
                     following.push(FOLLOW_fact_in_lhs_column1452);
                     f=fact();
@@ -3194,20 +3210,20 @@
 
 
     // $ANTLR start fact_binding
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:666:1: fact_binding returns [PatternDescr d] : id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:666: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:672:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:672:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:672:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:672:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_fact_binding1484); 
@@ -3215,7 +3231,7 @@
             opt_eol();
             following.pop();
 
-            match(input,32,FOLLOW_32_in_fact_binding1496); 
+            match(input,36,FOLLOW_36_in_fact_binding1496); 
             following.push(FOLLOW_opt_eol_in_fact_binding1498);
             opt_eol();
             following.pop();
@@ -3224,8 +3240,8 @@
             fe=fact_expression(id.getText());
             following.pop();
 
-
-             			d=fe;
+            
+             			d=fe;
              		
 
             }
@@ -3243,7 +3259,7 @@
 
 
     // $ANTLR start fact_expression
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:680: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:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:680: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;
@@ -3251,15 +3267,15 @@
         PatternDescr f = null;
 
 
-
-         		pd = null;
-         		boolean multi = false;
+        
+         		pd = null;
+         		boolean multi = false;
          	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:685:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:685:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
             int alt47=2;
             int LA47_0 = input.LA(1);
-            if ( LA47_0==23 ) {
+            if ( LA47_0==27 ) {
                 alt47=1;
             }
             else if ( LA47_0==ID ) {
@@ -3273,9 +3289,9 @@
             }
             switch (alt47) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:685:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:685:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_fact_expression1534); 
+                    match(input,27,FOLLOW_27_in_fact_expression1534); 
                     following.push(FOLLOW_opt_eol_in_fact_expression1536);
                     opt_eol();
                     following.pop();
@@ -3288,13 +3304,13 @@
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_fact_expression1544); 
+                    match(input,29,FOLLOW_29_in_fact_expression1544); 
                      pd=fe; 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:686:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:686:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
                     {
                     following.push(FOLLOW_fact_in_fact_expression1555);
                     f=fact();
@@ -3304,25 +3320,25 @@
                     opt_eol();
                     following.pop();
 
-
-                     			((ColumnDescr)f).setIdentifier( id );
-                     			pd = f;
+                    
+                     			((ColumnDescr)f).setIdentifier( id );
+                     			pd = f;
                      		
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:691:17: ( ('or'|'||') opt_eol f= fact )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:691:17: ( ('or'|'||') opt_eol f= fact )*
                     loop46:
                     do {
                         int alt46=2;
                         int LA46_0 = input.LA(1);
-                        if ( (LA46_0>=41 && LA46_0<=42) ) {
+                        if ( (LA46_0>=45 && LA46_0<=46) ) {
                             alt46=1;
                         }
 
 
                         switch (alt46) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:691:25: ('or'|'||') opt_eol f= fact
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:691:25: ('or'|'||') opt_eol f= fact
                     	    {
-                    	    if ( (input.LA(1)>=41 && input.LA(1)<=42) ) {
+                    	    if ( (input.LA(1)>=45 && input.LA(1)<=46) ) {
                     	        input.consume();
                     	        errorRecovery=false;
                     	    }
@@ -3336,20 +3352,20 @@
                     	    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_expression1589);
                     	    f=fact();
                     	    following.pop();
 
-
-                    	     				((ColumnDescr)f).setIdentifier( id );
-                    	     				((OrDescr)pd).addDescr( f );
+                    	    
+                    	     				((ColumnDescr)f).setIdentifier( id );
+                    	     				((OrDescr)pd).addDescr( f );
                     	     			
 
                     	    }
@@ -3378,7 +3394,7 @@
 
 
     // $ANTLR start fact
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:707:1: fact returns [PatternDescr d] : id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:707: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;
@@ -3388,48 +3404,48 @@
         List c = null;
 
 
-
-        		d=null;
+        
+        		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:711:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:711:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:711:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:711:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
             {
             following.push(FOLLOW_dotted_name_in_fact1628);
             id=dotted_name();
             following.pop();
 
-             
-             			d = new ColumnDescr( id ); 
+             
+             			d = new ColumnDescr( id ); 
              		
             following.push(FOLLOW_opt_eol_in_fact1636);
             opt_eol();
             following.pop();
 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_fact1644); 
-
-             				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+            match(input,27,FOLLOW_27_in_fact1644); 
+            
+             				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
              			
             following.push(FOLLOW_opt_eol_in_fact1647);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:717:34: (c= constraints )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:717:34: (c= constraints )?
             int alt48=2;
             alt48 = dfa48.predict(input); 
             switch (alt48) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:717:41: c= constraints
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:717:41: c= constraints
                     {
                     following.push(FOLLOW_constraints_in_fact1653);
                     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() );
+                     					}
                      				
 
                     }
@@ -3442,13 +3458,13 @@
             following.pop();
 
             endLoc=(Token)input.LT(1);
-            match(input,25,FOLLOW_25_in_fact1676); 
+            match(input,29,FOLLOW_29_in_fact1676); 
             following.push(FOLLOW_opt_eol_in_fact1678);
             opt_eol();
             following.pop();
 
-
-             					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
+            
+             					d.setEndLocation( offset(endLoc.getLine()), endLoc.getCharPositionInLine() );	
              				
 
             }
@@ -3466,36 +3482,36 @@
 
 
     // $ANTLR start constraints
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:731:1: constraints returns [List constraints] : opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:731: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:735:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:735:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:735:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:735:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
             {
             following.push(FOLLOW_opt_eol_in_constraints1710);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:17: ( constraint[constraints] | predicate[constraints] )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:736:17: ( constraint[constraints] | predicate[constraints] )
             int alt49=2;
             int LA49_0 = input.LA(1);
-            if ( LA49_0==EOL||LA49_0==15 ) {
+            if ( LA49_0==EOL||LA49_0==19 ) {
                 alt49=1;
             }
             else if ( LA49_0==ID ) {
                 int LA49_2 = input.LA(2);
-                if ( LA49_2==32 ) {
+                if ( LA49_2==36 ) {
                     int LA49_3 = input.LA(3);
                     if ( LA49_3==ID ) {
                         int LA49_8 = input.LA(4);
-                        if ( LA49_8==53 ) {
+                        if ( LA49_8==57 ) {
                             alt49=2;
                         }
-                        else if ( LA49_8==EOL||LA49_8==15||(LA49_8>=24 && LA49_8<=25)||(LA49_8>=43 && LA49_8<=51) ) {
+                        else if ( LA49_8==EOL||LA49_8==19||(LA49_8>=28 && LA49_8<=29)||(LA49_8>=47 && LA49_8<=55) ) {
                             alt49=1;
                         }
                         else {
@@ -3505,7 +3521,7 @@
                             throw nvae;
                         }
                     }
-                    else if ( LA49_3==EOL||LA49_3==15 ) {
+                    else if ( LA49_3==EOL||LA49_3==19 ) {
                         alt49=1;
                     }
                     else {
@@ -3515,7 +3531,7 @@
                         throw nvae;
                     }
                 }
-                else if ( LA49_2==EOL||LA49_2==15||(LA49_2>=24 && LA49_2<=25)||(LA49_2>=43 && LA49_2<=51) ) {
+                else if ( LA49_2==EOL||LA49_2==19||(LA49_2>=28 && LA49_2<=29)||(LA49_2>=47 && LA49_2<=55) ) {
                     alt49=1;
                 }
                 else {
@@ -3533,7 +3549,7 @@
             }
             switch (alt49) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:18: constraint[constraints]
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:736:18: constraint[constraints]
                     {
                     following.push(FOLLOW_constraint_in_constraints1715);
                     constraint(constraints);
@@ -3543,7 +3559,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:736:42: predicate[constraints]
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:736:42: predicate[constraints]
                     {
                     following.push(FOLLOW_predicate_in_constraints1718);
                     predicate(constraints);
@@ -3555,40 +3571,40 @@
 
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:737:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
             loop51:
             do {
                 int alt51=2;
                 alt51 = dfa51.predict(input); 
                 switch (alt51) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:737:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
             	    {
             	    following.push(FOLLOW_opt_eol_in_constraints1726);
             	    opt_eol();
             	    following.pop();
 
-            	    match(input,24,FOLLOW_24_in_constraints1728); 
+            	    match(input,28,FOLLOW_28_in_constraints1728); 
             	    following.push(FOLLOW_opt_eol_in_constraints1730);
             	    opt_eol();
             	    following.pop();
 
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:39: ( constraint[constraints] | predicate[constraints] )
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:737:39: ( constraint[constraints] | predicate[constraints] )
             	    int alt50=2;
             	    int LA50_0 = input.LA(1);
-            	    if ( LA50_0==EOL||LA50_0==15 ) {
+            	    if ( LA50_0==EOL||LA50_0==19 ) {
             	        alt50=1;
             	    }
             	    else if ( LA50_0==ID ) {
             	        int LA50_2 = input.LA(2);
-            	        if ( LA50_2==32 ) {
+            	        if ( LA50_2==36 ) {
             	            int LA50_3 = input.LA(3);
             	            if ( LA50_3==ID ) {
             	                int LA50_8 = input.LA(4);
-            	                if ( LA50_8==53 ) {
+            	                if ( LA50_8==57 ) {
             	                    alt50=2;
             	                }
-            	                else if ( LA50_8==EOL||LA50_8==15||(LA50_8>=24 && LA50_8<=25)||(LA50_8>=43 && LA50_8<=51) ) {
+            	                else if ( LA50_8==EOL||LA50_8==19||(LA50_8>=28 && LA50_8<=29)||(LA50_8>=47 && LA50_8<=55) ) {
             	                    alt50=1;
             	                }
             	                else {
@@ -3598,7 +3614,7 @@
             	                    throw nvae;
             	                }
             	            }
-            	            else if ( LA50_3==EOL||LA50_3==15 ) {
+            	            else if ( LA50_3==EOL||LA50_3==19 ) {
             	                alt50=1;
             	            }
             	            else {
@@ -3608,7 +3624,7 @@
             	                throw nvae;
             	            }
             	        }
-            	        else if ( LA50_2==EOL||LA50_2==15||(LA50_2>=24 && LA50_2<=25)||(LA50_2>=43 && LA50_2<=51) ) {
+            	        else if ( LA50_2==EOL||LA50_2==19||(LA50_2>=28 && LA50_2<=29)||(LA50_2>=47 && LA50_2<=55) ) {
             	            alt50=1;
             	        }
             	        else {
@@ -3626,7 +3642,7 @@
             	    }
             	    switch (alt50) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:40: constraint[constraints]
+            	            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:737:40: constraint[constraints]
             	            {
             	            following.push(FOLLOW_constraint_in_constraints1733);
             	            constraint(constraints);
@@ -3636,7 +3652,7 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:64: predicate[constraints]
+            	            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:737:64: predicate[constraints]
             	            {
             	            following.push(FOLLOW_predicate_in_constraints1736);
             	            predicate(constraints);
@@ -3677,7 +3693,7 @@
 
 
     // $ANTLR start constraint
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:741:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )? opt_eol ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:741:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (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;
@@ -3688,23 +3704,23 @@
         String rvc = null;
 
 
-
-        		PatternDescr d = null;
+        
+        		PatternDescr d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:745:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )? opt_eol )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:745:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )? opt_eol
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:745:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )? opt_eol )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:745:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )? opt_eol
             {
             following.push(FOLLOW_opt_eol_in_constraint1763);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:746:17: (fb= ID opt_eol ':' opt_eol )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:746:17: (fb= ID opt_eol ':' opt_eol )?
             int alt52=2;
             alt52 = dfa52.predict(input); 
             switch (alt52) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:746:19: fb= ID opt_eol ':' opt_eol
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:746:19: fb= ID opt_eol ':' opt_eol
                     {
                     fb=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_constraint1771); 
@@ -3712,7 +3728,7 @@
                     opt_eol();
                     following.pop();
 
-                    match(input,32,FOLLOW_32_in_constraint1775); 
+                    match(input,36,FOLLOW_36_in_constraint1775); 
                     following.push(FOLLOW_opt_eol_in_constraint1777);
                     opt_eol();
                     following.pop();
@@ -3725,28 +3741,28 @@
 
             f=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_constraint1787); 
-
-            			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 );
-            			} 
+            
+            			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 );
+            			} 
             		
             following.push(FOLLOW_opt_eol_in_constraint1797);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:759:33: (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:759:33: (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )?
             int alt54=2;
             int LA54_0 = input.LA(1);
-            if ( (LA54_0>=43 && LA54_0<=51) ) {
+            if ( (LA54_0>=47 && LA54_0<=55) ) {
                 alt54=1;
             }
-            else if ( LA54_0==EOL||LA54_0==15||(LA54_0>=24 && LA54_0<=25) ) {
+            else if ( LA54_0==EOL||LA54_0==19||(LA54_0>=28 && LA54_0<=29) ) {
                 alt54=2;
             }
             else {
@@ -3757,10 +3773,10 @@
             }
             switch (alt54) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:759:41: op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:759:41: op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
                     {
                     op=(Token)input.LT(1);
-                    if ( (input.LA(1)>=43 && input.LA(1)<=51) ) {
+                    if ( (input.LA(1)>=47 && input.LA(1)<=55) ) {
                         input.consume();
                         errorRecovery=false;
                     }
@@ -3774,15 +3790,15 @@
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:770:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:770:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
                     int alt53=4;
                     switch ( input.LA(1) ) {
                     case ID:
                         int LA53_1 = input.LA(2);
-                        if ( LA53_1==18 ) {
+                        if ( LA53_1==22 ) {
                             alt53=2;
                         }
-                        else if ( LA53_1==EOL||LA53_1==15||(LA53_1>=24 && LA53_1<=25) ) {
+                        else if ( LA53_1==EOL||LA53_1==19||(LA53_1>=28 && LA53_1<=29) ) {
                             alt53=1;
                         }
                         else {
@@ -3796,10 +3812,10 @@
                     case BOOL:
                     case STRING:
                     case FLOAT:
-                    case 52:
+                    case 56:
                         alt53=3;
                         break;
-                    case 23:
+                    case 27:
                         alt53=4;
                         break;
                     default:
@@ -3811,59 +3827,59 @@
 
                     switch (alt53) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:770:49: bvc= ID
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:770:49: bvc= ID
                             {
                             bvc=(Token)input.LT(1);
                             match(input,ID,FOLLOW_ID_in_constraint1910); 
-
-                            							d = new BoundVariableDescr( f.getText(), op.getText(), bvc.getText() );
-                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-                            							constraints.add( d );
+                            
+                            							d = new BoundVariableDescr( f.getText(), op.getText(), bvc.getText() );
+                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+                            							constraints.add( d );
                             						
 
                             }
                             break;
                         case 2 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:777:49: lc= enum_constraint
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:777:49: lc= enum_constraint
                             {
                             following.push(FOLLOW_enum_constraint_in_constraint1935);
                             lc=enum_constraint();
                             following.pop();
 
-                             
-                            							d = new LiteralDescr( f.getText(), op.getText(), lc, true ); 
-                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-                            							constraints.add( d );
+                             
+                            							d = new LiteralDescr( f.getText(), op.getText(), lc, true ); 
+                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+                            							constraints.add( d );
                             						
 
                             }
                             break;
                         case 3 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:784:49: lc= literal_constraint
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:784:49: lc= literal_constraint
                             {
                             following.push(FOLLOW_literal_constraint_in_constraint1967);
                             lc=literal_constraint();
                             following.pop();
 
-                             
-                            							d = new LiteralDescr( f.getText(), op.getText(), lc ); 
-                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-                            							constraints.add( d );
+                             
+                            							d = new LiteralDescr( f.getText(), op.getText(), lc ); 
+                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+                            							constraints.add( d );
                             						
 
                             }
                             break;
                         case 4 :
-                            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:790:49: rvc= retval_constraint
+                            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:790:49: rvc= retval_constraint
                             {
                             following.push(FOLLOW_retval_constraint_in_constraint1987);
                             rvc=retval_constraint();
                             following.pop();
 
-                             
-                            							d = new ReturnValueDescr( f.getText(), op.getText(), rvc ); 
-                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-                            							constraints.add( d );
+                             
+                            							d = new ReturnValueDescr( f.getText(), op.getText(), rvc ); 
+                            							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+                            							constraints.add( d );
                             						
 
                             }
@@ -3897,19 +3913,19 @@
 
 
     // $ANTLR start literal_constraint
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:801:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:801: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:805:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:805:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:805:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:805:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:805:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:805:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
             int alt55=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -3924,7 +3940,7 @@
             case BOOL:
                 alt55=4;
                 break;
-            case 52:
+            case 56:
                 alt55=5;
                 break;
             default:
@@ -3936,7 +3952,7 @@
 
             switch (alt55) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:805:25: t= STRING
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:805:25: t= STRING
                     {
                     t=(Token)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_literal_constraint2047); 
@@ -3945,7 +3961,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:806:25: t= INT
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:806:25: t= INT
                     {
                     t=(Token)input.LT(1);
                     match(input,INT,FOLLOW_INT_in_literal_constraint2058); 
@@ -3954,7 +3970,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:807:25: t= FLOAT
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:807:25: t= FLOAT
                     {
                     t=(Token)input.LT(1);
                     match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2071); 
@@ -3963,7 +3979,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:808:25: t= BOOL
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:808:25: t= BOOL
                     {
                     t=(Token)input.LT(1);
                     match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2082); 
@@ -3972,10 +3988,10 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:809:25: t= 'null'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:809:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,52,FOLLOW_52_in_literal_constraint2094); 
+                    match(input,56,FOLLOW_56_in_literal_constraint2094); 
                      text = null; 
 
                     }
@@ -3999,25 +4015,25 @@
 
 
     // $ANTLR start enum_constraint
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:813:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:813: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:817:17: ( (cls= ID '.' en= ID ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:817:17: (cls= ID '.' en= ID )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:817:17: ( (cls= ID '.' en= ID ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:817:17: (cls= ID '.' en= ID )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:817:17: (cls= ID '.' en= ID )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:817:18: cls= ID '.' en= ID
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:817:17: (cls= ID '.' en= ID )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:817:18: cls= ID '.' en= ID
             {
             cls=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_enum_constraint2125); 
-            match(input,18,FOLLOW_18_in_enum_constraint2127); 
+            match(input,22,FOLLOW_22_in_enum_constraint2127); 
             en=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_enum_constraint2131); 
 
@@ -4040,25 +4056,25 @@
 
 
     // $ANTLR start retval_constraint
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:820:1: retval_constraint returns [String text] : '(' c= paren_chunk ')' ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:820: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:825:17: ( '(' c= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:825:17: '(' c= paren_chunk ')'
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:825:17: ( '(' c= paren_chunk ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:825:17: '(' c= paren_chunk ')'
             {
-            match(input,23,FOLLOW_23_in_retval_constraint2160); 
+            match(input,27,FOLLOW_27_in_retval_constraint2160); 
             following.push(FOLLOW_paren_chunk_in_retval_constraint2165);
             c=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_retval_constraint2168); 
+            match(input,29,FOLLOW_29_in_retval_constraint2168); 
              text = c; 
 
             }
@@ -4076,7 +4092,7 @@
 
 
     // $ANTLR start predicate
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:828:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:828:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
     public void predicate(List constraints) throws RecognitionException {   
         Token decl=null;
         Token field=null;
@@ -4084,24 +4100,24 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:830:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:830:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:830:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:830:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
             {
             decl=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_predicate2186); 
-            match(input,32,FOLLOW_32_in_predicate2188); 
+            match(input,36,FOLLOW_36_in_predicate2188); 
             field=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_predicate2192); 
-            match(input,53,FOLLOW_53_in_predicate2194); 
-            match(input,23,FOLLOW_23_in_predicate2196); 
+            match(input,57,FOLLOW_57_in_predicate2194); 
+            match(input,27,FOLLOW_27_in_predicate2196); 
             following.push(FOLLOW_paren_chunk_in_predicate2200);
             text=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_predicate2202); 
-
-            			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
-            			constraints.add( d );
+            match(input,29,FOLLOW_29_in_predicate2202); 
+            
+            			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
+            			constraints.add( d );
             		
 
             }
@@ -4119,21 +4135,21 @@
 
 
     // $ANTLR start paren_chunk
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:837:1: paren_chunk returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:837: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:843:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:843:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:843:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:843:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:843:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:843:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
             loop56:
             do {
                 int alt56=3;
@@ -4141,10 +4157,10 @@
                 case EOL:
                     alt56=3;
                     break;
-                case 25:
+                case 29:
                     alt56=3;
                     break;
-                case 23:
+                case 27:
                     alt56=1;
                     break;
                 case ID:
@@ -4154,22 +4170,22 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
                 case 22:
+                case 23:
                 case 24:
+                case 25:
                 case 26:
-                case 27:
                 case 28:
-                case 29:
                 case 30:
                 case 31:
                 case 32:
@@ -4202,6 +4218,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     alt56=2;
                     break;
 
@@ -4209,38 +4229,38 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:844:25: '(' c= paren_chunk ')'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:844:25: '(' c= paren_chunk ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk2248); 
+            	    match(input,27,FOLLOW_27_in_paren_chunk2248); 
             	    following.push(FOLLOW_paren_chunk_in_paren_chunk2252);
             	    c=paren_chunk();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk2254); 
-
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "( " + c + " )";
-            	    				} else {
-            	    					text = text + " ( " + c + " )";
-            	    				}
+            	    match(input,29,FOLLOW_29_in_paren_chunk2254); 
+            	    
+            	    				if ( c == null ) {
+            	    					c = "";
+            	    				}
+            	    				if ( text == null ) {
+            	    					text = "( " + c + " )";
+            	    				} else {
+            	    					text = text + " ( " + c + " )";
+            	    				}
             	    			
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:855:19: any= .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:855: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(); 
+            	    				} 
             	    			
 
             	    }
@@ -4267,29 +4287,29 @@
 
 
     // $ANTLR start paren_chunk2
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:867:1: paren_chunk2 returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:867: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:873:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:873:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:873:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:873:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:873:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:873:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
             loop57:
             do {
                 int alt57=3;
                 switch ( input.LA(1) ) {
-                case 25:
+                case 29:
                     alt57=3;
                     break;
-                case 23:
+                case 27:
                     alt57=1;
                     break;
                 case EOL:
@@ -4300,22 +4320,22 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
                 case 22:
+                case 23:
                 case 24:
+                case 25:
                 case 26:
-                case 27:
                 case 28:
-                case 29:
                 case 30:
                 case 31:
                 case 32:
@@ -4348,6 +4368,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     alt57=2;
                     break;
 
@@ -4355,38 +4379,38 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:874:25: '(' c= paren_chunk2 ')'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:874:25: '(' c= paren_chunk2 ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk22325); 
+            	    match(input,27,FOLLOW_27_in_paren_chunk22325); 
             	    following.push(FOLLOW_paren_chunk2_in_paren_chunk22329);
             	    c=paren_chunk2();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk22331); 
-
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "( " + c + " )";
-            	    				} else {
-            	    					text = text + " ( " + c + " )";
-            	    				}
+            	    match(input,29,FOLLOW_29_in_paren_chunk22331); 
+            	    
+            	    				if ( c == null ) {
+            	    					c = "";
+            	    				}
+            	    				if ( text == null ) {
+            	    					text = "( " + c + " )";
+            	    				} else {
+            	    					text = text + " ( " + c + " )";
+            	    				}
             	    			
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:885:19: any= .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:885: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(); 
+            	    				} 
             	    			
 
             	    }
@@ -4413,29 +4437,29 @@
 
 
     // $ANTLR start curly_chunk
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:896:1: curly_chunk returns [String text] : ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:896: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:902:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:902:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:902:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:902:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:902:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:902:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
             loop58:
             do {
                 int alt58=3;
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     alt58=3;
                     break;
-                case 26:
+                case 30:
                     alt58=1;
                     break;
                 case EOL:
@@ -4446,13 +4470,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -4460,10 +4484,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -4494,6 +4518,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     alt58=2;
                     break;
 
@@ -4501,40 +4529,40 @@
 
                 switch (alt58) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:903:25: '{' c= curly_chunk '}'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:903:25: '{' c= curly_chunk '}'
             	    {
-            	    match(input,26,FOLLOW_26_in_curly_chunk2400); 
+            	    match(input,30,FOLLOW_30_in_curly_chunk2400); 
             	    following.push(FOLLOW_curly_chunk_in_curly_chunk2404);
             	    c=curly_chunk();
             	    following.pop();
 
-            	    match(input,27,FOLLOW_27_in_curly_chunk2406); 
-
-            	    				//System.err.println( "chunk [" + c + "]" );
-            	    				if ( c == null ) {
-            	    					c = "";
-            	    				}
-            	    				if ( text == null ) {
-            	    					text = "{ " + c + " }";
-            	    				} else {
-            	    					text = text + " { " + c + " }";
-            	    				}
+            	    match(input,31,FOLLOW_31_in_curly_chunk2406); 
+            	    
+            	    				//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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:915:19: any= .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:915: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(); 
+            	    				} 
             	    			
 
             	    }
@@ -4561,7 +4589,7 @@
 
 
     // $ANTLR start lhs_or
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:927:1: lhs_or returns [PatternDescr d] : left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:927: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;
@@ -4569,12 +4597,12 @@
         PatternDescr right = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:932:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:932:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:932:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:932:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
             {
              OrDescr or = null; 
             following.push(FOLLOW_lhs_and_in_lhs_or2464);
@@ -4582,21 +4610,21 @@
             following.pop();
 
             d = left; 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:934:17: ( ('or'|'||') opt_eol right= lhs_and )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:934:17: ( ('or'|'||') opt_eol right= lhs_and )*
             loop59:
             do {
                 int alt59=2;
                 int LA59_0 = input.LA(1);
-                if ( (LA59_0>=41 && LA59_0<=42) ) {
+                if ( (LA59_0>=45 && LA59_0<=46) ) {
                     alt59=1;
                 }
 
 
                 switch (alt59) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:934:19: ('or'|'||') opt_eol right= lhs_and
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:934:19: ('or'|'||') opt_eol right= lhs_and
             	    {
-            	    if ( (input.LA(1)>=41 && input.LA(1)<=42) ) {
+            	    if ( (input.LA(1)>=45 && input.LA(1)<=46) ) {
             	        input.consume();
             	        errorRecovery=false;
             	    }
@@ -4614,14 +4642,14 @@
             	    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 );
             	    			
 
             	    }
@@ -4648,7 +4676,7 @@
 
 
     // $ANTLR start lhs_and
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:948:1: lhs_and returns [PatternDescr d] : left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:948: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;
@@ -4656,12 +4684,12 @@
         PatternDescr right = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:953:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:953:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:953:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:953:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
             {
              AndDescr and = null; 
             following.push(FOLLOW_lhs_unary_in_lhs_and2525);
@@ -4669,21 +4697,21 @@
             following.pop();
 
              d = left; 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:955:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:955:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
             loop60:
             do {
                 int alt60=2;
                 int LA60_0 = input.LA(1);
-                if ( (LA60_0>=54 && LA60_0<=55) ) {
+                if ( (LA60_0>=58 && LA60_0<=59) ) {
                     alt60=1;
                 }
 
 
                 switch (alt60) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:955:19: ('and'|'&&') opt_eol right= lhs_unary
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:955:19: ('and'|'&&') opt_eol right= lhs_unary
             	    {
-            	    if ( (input.LA(1)>=54 && input.LA(1)<=55) ) {
+            	    if ( (input.LA(1)>=58 && input.LA(1)<=59) ) {
             	        input.consume();
             	        errorRecovery=false;
             	    }
@@ -4701,14 +4729,14 @@
             	    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 );
             	    			
 
             	    }
@@ -4735,35 +4763,35 @@
 
 
     // $ANTLR start lhs_unary
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:969:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:969:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' ) ;
     public PatternDescr lhs_unary() throws RecognitionException {   
         PatternDescr d;
         PatternDescr u = null;
 
 
-
-        		d = null;
+        
+        		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:973:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:973:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:973:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:973:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:973:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:973:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column | '(' opt_eol u= lhs opt_eol ')' )
             int alt61=5;
             switch ( input.LA(1) ) {
-            case 56:
+            case 60:
                 alt61=1;
                 break;
-            case 57:
+            case 61:
                 alt61=2;
                 break;
-            case 58:
+            case 62:
                 alt61=3;
                 break;
             case ID:
                 alt61=4;
                 break;
-            case 23:
+            case 27:
                 alt61=5;
                 break;
             default:
@@ -4775,7 +4803,7 @@
 
             switch (alt61) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:973:25: u= lhs_exist
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:973:25: u= lhs_exist
                     {
                     following.push(FOLLOW_lhs_exist_in_lhs_unary2584);
                     u=lhs_exist();
@@ -4785,7 +4813,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:974:25: u= lhs_not
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:974:25: u= lhs_not
                     {
                     following.push(FOLLOW_lhs_not_in_lhs_unary2592);
                     u=lhs_not();
@@ -4795,7 +4823,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:975:25: u= lhs_eval
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:975:25: u= lhs_eval
                     {
                     following.push(FOLLOW_lhs_eval_in_lhs_unary2600);
                     u=lhs_eval();
@@ -4805,7 +4833,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:976:25: u= lhs_column
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:976:25: u= lhs_column
                     {
                     following.push(FOLLOW_lhs_column_in_lhs_unary2608);
                     u=lhs_column();
@@ -4815,9 +4843,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:977:25: '(' opt_eol u= lhs opt_eol ')'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:977:25: '(' opt_eol u= lhs opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_unary2614); 
+                    match(input,27,FOLLOW_27_in_lhs_unary2614); 
                     following.push(FOLLOW_opt_eol_in_lhs_unary2616);
                     opt_eol();
                     following.pop();
@@ -4830,7 +4858,7 @@
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_unary2624); 
+                    match(input,29,FOLLOW_29_in_lhs_unary2624); 
 
                     }
                     break;
@@ -4854,26 +4882,26 @@
 
 
     // $ANTLR start lhs_exist
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:981:1: lhs_exist returns [PatternDescr d] : loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:981: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:985:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:985:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,56,FOLLOW_56_in_lhs_exist2654); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:30: ( '(' column= lhs_column ')' | column= lhs_column )
+            match(input,60,FOLLOW_60_in_lhs_exist2654); 
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:985:30: ( '(' column= lhs_column ')' | column= lhs_column )
             int alt62=2;
             int LA62_0 = input.LA(1);
-            if ( LA62_0==23 ) {
+            if ( LA62_0==27 ) {
                 alt62=1;
             }
             else if ( LA62_0==ID ) {
@@ -4887,19 +4915,19 @@
             }
             switch (alt62) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:31: '(' column= lhs_column ')'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:985:31: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_exist2657); 
+                    match(input,27,FOLLOW_27_in_lhs_exist2657); 
                     following.push(FOLLOW_lhs_column_in_lhs_exist2661);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_exist2663); 
+                    match(input,29,FOLLOW_29_in_lhs_exist2663); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:59: column= lhs_column
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:985:59: column= lhs_column
                     {
                     following.push(FOLLOW_lhs_column_in_lhs_exist2669);
                     column=lhs_column();
@@ -4911,9 +4939,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() );
             		
 
             }
@@ -4931,26 +4959,26 @@
 
 
     // $ANTLR start lhs_not
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:992:1: lhs_not returns [NotDescr d] : loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:992: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:996:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:996:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,57,FOLLOW_57_in_lhs_not2699); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:27: ( '(' column= lhs_column ')' | column= lhs_column )
+            match(input,61,FOLLOW_61_in_lhs_not2699); 
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:996:27: ( '(' column= lhs_column ')' | column= lhs_column )
             int alt63=2;
             int LA63_0 = input.LA(1);
-            if ( LA63_0==23 ) {
+            if ( LA63_0==27 ) {
                 alt63=1;
             }
             else if ( LA63_0==ID ) {
@@ -4964,19 +4992,19 @@
             }
             switch (alt63) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:28: '(' column= lhs_column ')'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:996:28: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_not2702); 
+                    match(input,27,FOLLOW_27_in_lhs_not2702); 
                     following.push(FOLLOW_lhs_column_in_lhs_not2706);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_not2709); 
+                    match(input,29,FOLLOW_29_in_lhs_not2709); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:57: column= lhs_column
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:996:57: column= lhs_column
                     {
                     following.push(FOLLOW_lhs_column_in_lhs_not2715);
                     column=lhs_column();
@@ -4988,9 +5016,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() );
             		
 
             }
@@ -5008,32 +5036,32 @@
 
 
     // $ANTLR start lhs_eval
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1003:1: lhs_eval returns [PatternDescr d] : 'eval' loc= '(' c= paren_chunk2 ')' ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1003: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1008:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1008:17: 'eval' loc= '(' c= paren_chunk2 ')'
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1008:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1008:17: 'eval' loc= '(' c= paren_chunk2 ')'
             {
-            match(input,58,FOLLOW_58_in_lhs_eval2741); 
+            match(input,62,FOLLOW_62_in_lhs_eval2741); 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_lhs_eval2745); 
+            match(input,27,FOLLOW_27_in_lhs_eval2745); 
             following.push(FOLLOW_paren_chunk2_in_lhs_eval2753);
             c=paren_chunk2();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_lhs_eval2757); 
-             
-            			checkTrailingSemicolon( c, offset(loc.getLine()) );
-            			d = new EvalDescr( c ); 
+            match(input,29,FOLLOW_29_in_lhs_eval2757); 
+             
+            			checkTrailingSemicolon( c, offset(loc.getLine()) );
+            			d = new EvalDescr( c ); 
             		
 
             }
@@ -5051,36 +5079,36 @@
 
 
     // $ANTLR start dotted_name
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1017:1: dotted_name returns [String name] : id= ID ( '.' id= ID )* ( '[' ']' )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1017: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:17: id= ID ( '.' id= ID )* ( '[' ']' )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:17: id= ID ( '.' id= ID )* ( '[' ']' )*
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_dotted_name2789); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:46: ( '.' id= ID )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:46: ( '.' id= ID )*
             loop64:
             do {
                 int alt64=2;
                 int LA64_0 = input.LA(1);
-                if ( LA64_0==18 ) {
+                if ( LA64_0==22 ) {
                     alt64=1;
                 }
 
 
                 switch (alt64) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:48: '.' id= ID
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:48: '.' id= ID
             	    {
-            	    match(input,18,FOLLOW_18_in_dotted_name2795); 
+            	    match(input,22,FOLLOW_22_in_dotted_name2795); 
             	    id=(Token)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_dotted_name2799); 
             	     name = name + "." + id.getText(); 
@@ -5093,22 +5121,22 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:99: ( '[' ']' )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:99: ( '[' ']' )*
             loop65:
             do {
                 int alt65=2;
                 int LA65_0 = input.LA(1);
-                if ( LA65_0==59 ) {
+                if ( LA65_0==63 ) {
                     alt65=1;
                 }
 
 
                 switch (alt65) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:101: '[' ']'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1022:101: '[' ']'
             	    {
-            	    match(input,59,FOLLOW_59_in_dotted_name2808); 
-            	    match(input,60,FOLLOW_60_in_dotted_name2810); 
+            	    match(input,63,FOLLOW_63_in_dotted_name2808); 
+            	    match(input,64,FOLLOW_64_in_dotted_name2810); 
             	     name = name + "[]";
 
             	    }
@@ -5135,37 +5163,37 @@
 
 
     // $ANTLR start argument
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1025:1: argument returns [String name] : id= ID ( '[' ']' )* ;
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1025:1: argument returns [String name] : id= ID ( '[' ']' )* ;
     public String argument() throws RecognitionException {   
         String name;
         Token id=null;
 
-
-        		name = null;
+        
+        		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1030:17: (id= ID ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1030:17: id= ID ( '[' ']' )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1030:17: (id= ID ( '[' ']' )* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1030:17: id= ID ( '[' ']' )*
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_argument2840); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1030:46: ( '[' ']' )*
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1030:46: ( '[' ']' )*
             loop66:
             do {
                 int alt66=2;
                 int LA66_0 = input.LA(1);
-                if ( LA66_0==59 ) {
+                if ( LA66_0==63 ) {
                     alt66=1;
                 }
 
 
                 switch (alt66) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1030:48: '[' ']'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1030:48: '[' ']'
             	    {
-            	    match(input,59,FOLLOW_59_in_argument2846); 
-            	    match(input,60,FOLLOW_60_in_argument2848); 
+            	    match(input,63,FOLLOW_63_in_argument2846); 
+            	    match(input,64,FOLLOW_64_in_argument2848); 
             	     name = name + "[]";
 
             	    }
@@ -5192,47 +5220,47 @@
 
 
     // $ANTLR start word
-    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1034:1: word returns [String word] : (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING );
+    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1034: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-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1038:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
             int alt67=11;
             switch ( input.LA(1) ) {
             case ID:
                 alt67=1;
                 break;
-            case 17:
+            case 21:
                 alt67=2;
                 break;
-            case 61:
+            case 65:
                 alt67=3;
                 break;
-            case 30:
+            case 34:
                 alt67=4;
                 break;
-            case 28:
+            case 32:
                 alt67=5;
                 break;
-            case 35:
+            case 39:
                 alt67=6;
                 break;
-            case 36:
+            case 40:
                 alt67=7;
                 break;
-            case 31:
+            case 35:
                 alt67=8;
                 break;
-            case 33:
+            case 37:
                 alt67=9;
                 break;
-            case 29:
+            case 33:
                 alt67=10;
                 break;
             case STRING:
@@ -5247,7 +5275,7 @@
 
             switch (alt67) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:17: id= ID
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1038:17: id= ID
                     {
                     id=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_word2876); 
@@ -5256,79 +5284,79 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1039:17: 'import'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1039:17: 'import'
                     {
-                    match(input,17,FOLLOW_17_in_word2888); 
+                    match(input,21,FOLLOW_21_in_word2888); 
                      word="import"; 
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1040:17: 'use'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1040:17: 'use'
                     {
-                    match(input,61,FOLLOW_61_in_word2897); 
+                    match(input,65,FOLLOW_65_in_word2897); 
                      word="use"; 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1041:17: 'rule'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1041:17: 'rule'
                     {
-                    match(input,30,FOLLOW_30_in_word2909); 
+                    match(input,34,FOLLOW_34_in_word2909); 
                      word="rule"; 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1042:17: 'query'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1042:17: 'query'
                     {
-                    match(input,28,FOLLOW_28_in_word2920); 
+                    match(input,32,FOLLOW_32_in_word2920); 
                      word="query"; 
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1043:17: 'salience'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1043:17: 'salience'
                     {
-                    match(input,35,FOLLOW_35_in_word2930); 
+                    match(input,39,FOLLOW_39_in_word2930); 
                      word="salience"; 
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1044:17: 'no-loop'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1044:17: 'no-loop'
                     {
-                    match(input,36,FOLLOW_36_in_word2938); 
+                    match(input,40,FOLLOW_40_in_word2938); 
                      word="no-loop"; 
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1045:17: 'when'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1045:17: 'when'
                     {
-                    match(input,31,FOLLOW_31_in_word2946); 
+                    match(input,35,FOLLOW_35_in_word2946); 
                      word="when"; 
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1046:17: 'then'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1046:17: 'then'
                     {
-                    match(input,33,FOLLOW_33_in_word2957); 
+                    match(input,37,FOLLOW_37_in_word2957); 
                      word="then"; 
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1047:17: 'end'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1047:17: 'end'
                     {
-                    match(input,29,FOLLOW_29_in_word2968); 
+                    match(input,33,FOLLOW_33_in_word2968); 
                      word="end"; 
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1048:17: str= STRING
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1048:17: str= STRING
                     {
                     str=(Token)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_word2982); 
@@ -5361,14 +5389,14 @@
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 30:
+                case 34:
                     return s3;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s2;
 
-                case 28:
+                case 32:
                     return s4;
 
                 default:
@@ -5386,18 +5414,18 @@
                     return s1;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s2;
 
-                case 30:
+                case 34:
                     return s3;
 
-                case 28:
+                case 32:
                     return s4;
 
-                case 17:
                 case 21:
-                case 22:
+                case 25:
+                case 26:
                     return s5;
 
                 default:
@@ -5418,7 +5446,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_9 = input.LA(1);
                 if ( LA4_9==ID ) {return s10;}
-                if ( LA4_9==EOL||LA4_9==15 ) {return s9;}
+                if ( LA4_9==EOL||LA4_9==19 ) {return s9;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 9, input);
@@ -5429,7 +5457,7 @@
         DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_4 = input.LA(1);
-                if ( LA4_4==EOL||LA4_4==15 ) {return s9;}
+                if ( LA4_4==EOL||LA4_4==19 ) {return s9;}
                 if ( LA4_4==ID ) {return s10;}
 
                 NoViableAltException nvae =
@@ -5443,7 +5471,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_27 = input.LA(1);
                 if ( LA4_27==ID ) {return s18;}
-                if ( LA4_27==59 ) {return s17;}
+                if ( LA4_27==63 ) {return s17;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 27, input);
@@ -5454,7 +5482,7 @@
         DFA.State s17 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_17 = input.LA(1);
-                if ( LA4_17==60 ) {return s27;}
+                if ( LA4_17==64 ) {return s27;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 17, input);
@@ -5465,13 +5493,13 @@
         DFA.State s26 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 59:
+                case 63:
                     return s17;
 
                 case ID:
                     return s18;
 
-                case 18:
+                case 22:
                     return s16;
 
                 default:
@@ -5495,10 +5523,10 @@
         DFA.State s11 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 18:
+                case 22:
                     return s16;
 
-                case 59:
+                case 63:
                     return s17;
 
                 case ID:
@@ -5528,10 +5556,10 @@
         DFA.State s122 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s121;
 
-                case 26:
+                case 30:
                     return s120;
 
                 case EOL:
@@ -5542,13 +5570,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5556,10 +5584,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5590,6 +5618,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s122;
 
                 default:
@@ -5602,10 +5634,10 @@
         DFA.State s120 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s121;
 
-                case 26:
+                case 30:
                     return s120;
 
                 case EOL:
@@ -5616,13 +5648,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5630,10 +5662,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5664,6 +5696,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s122;
 
                 default:
@@ -5676,10 +5712,10 @@
         DFA.State s115 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 30:
                     return s120;
 
-                case 27:
+                case 31:
                     return s121;
 
                 case EOL:
@@ -5690,13 +5726,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5704,10 +5740,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5738,6 +5774,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s122;
 
                 default:
@@ -5750,10 +5790,10 @@
         DFA.State s116 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s114;
 
-                case 26:
+                case 30:
                     return s115;
 
                 case EOL:
@@ -5764,13 +5804,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5778,10 +5818,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5812,6 +5852,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s116;
 
                 default:
@@ -5824,10 +5868,10 @@
         DFA.State s106 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s114;
 
-                case 26:
+                case 30:
                     return s115;
 
                 case EOL:
@@ -5838,13 +5882,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5852,10 +5896,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5886,6 +5930,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s116;
 
                 default:
@@ -5898,10 +5946,10 @@
         DFA.State s107 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s105;
 
-                case 26:
+                case 30:
                     return s106;
 
                 case EOL:
@@ -5912,13 +5960,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -5926,10 +5974,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -5960,6 +6008,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s107;
 
                 default:
@@ -5972,10 +6024,10 @@
         DFA.State s87 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s105;
 
-                case 26:
+                case 30:
                     return s106;
 
                 case EOL:
@@ -5986,13 +6038,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -6000,10 +6052,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -6034,6 +6086,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s107;
 
                 default:
@@ -6047,10 +6103,10 @@
         DFA.State s89 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s88;
 
-                case 26:
+                case 30:
                     return s87;
 
                 case EOL:
@@ -6061,13 +6117,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -6075,10 +6131,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -6109,6 +6165,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s89;
 
                 default:
@@ -6121,10 +6181,10 @@
         DFA.State s67 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 30:
                     return s87;
 
-                case 27:
+                case 31:
                     return s88;
 
                 case EOL:
@@ -6135,13 +6195,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -6149,10 +6209,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -6183,6 +6243,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s89;
 
                 default:
@@ -6196,10 +6260,10 @@
         DFA.State s69 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 31:
                     return s68;
 
-                case 26:
+                case 30:
                     return s67;
 
                 case EOL:
@@ -6210,13 +6274,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -6224,10 +6288,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -6258,6 +6322,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s69;
 
                 default:
@@ -6270,10 +6338,10 @@
         DFA.State s51 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 26:
+                case 30:
                     return s67;
 
-                case 27:
+                case 31:
                     return s68;
 
                 case EOL:
@@ -6284,13 +6352,13 @@
                 case FLOAT:
                 case MISC:
                 case WS:
+                case EscapeSequence:
+                case HexDigit:
+                case UnicodeEscape:
+                case OctalEscape:
                 case SH_STYLE_SINGLE_LINE_COMMENT:
                 case C_STYLE_SINGLE_LINE_COMMENT:
                 case MULTI_LINE_COMMENT:
-                case 15:
-                case 16:
-                case 17:
-                case 18:
                 case 19:
                 case 20:
                 case 21:
@@ -6298,10 +6366,10 @@
                 case 23:
                 case 24:
                 case 25:
+                case 26:
+                case 27:
                 case 28:
                 case 29:
-                case 30:
-                case 31:
                 case 32:
                 case 33:
                 case 34:
@@ -6332,6 +6400,10 @@
                 case 59:
                 case 60:
                 case 61:
+                case 62:
+                case 63:
+                case 64:
+                case 65:
                     return s69;
 
                 default:
@@ -6344,8 +6416,8 @@
         DFA.State s50 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_50 = input.LA(1);
-                if ( LA4_50==26 ) {return s51;}
-                if ( LA4_50==EOL||LA4_50==15 ) {return s50;}
+                if ( LA4_50==30 ) {return s51;}
+                if ( LA4_50==EOL||LA4_50==19 ) {return s50;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 50, input);
@@ -6356,8 +6428,8 @@
         DFA.State s33 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_33 = input.LA(1);
-                if ( LA4_33==EOL||LA4_33==15 ) {return s50;}
-                if ( LA4_33==26 ) {return s51;}
+                if ( LA4_33==EOL||LA4_33==19 ) {return s50;}
+                if ( LA4_33==30 ) {return s51;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 33, input);
@@ -6368,14 +6440,14 @@
         DFA.State s62 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s62;
 
                 default:
@@ -6389,16 +6461,16 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s62;
 
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
-                case 59:
+                case 63:
                     return s61;
 
                 default:
@@ -6411,7 +6483,7 @@
         DFA.State s61 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_61 = input.LA(1);
-                if ( LA4_61==60 ) {return s83;}
+                if ( LA4_61==64 ) {return s83;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 61, input);
@@ -6422,14 +6494,14 @@
         DFA.State s98 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 25:
+                case 29:
                     return s33;
 
-                case 24:
+                case 28:
                     return s46;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s98;
 
                 default:
@@ -6442,17 +6514,17 @@
         DFA.State s82 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 59:
+                case 63:
                     return s61;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s98;
 
-                case 25:
+                case 29:
                     return s33;
 
-                case 24:
+                case 28:
                     return s46;
 
                 default:
@@ -6465,14 +6537,14 @@
         DFA.State s78 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 25:
+                case 29:
                     return s33;
 
-                case 24:
+                case 28:
                     return s46;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s78;
 
                 case ID:
@@ -6488,20 +6560,20 @@
         DFA.State s60 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 59:
+                case 63:
                     return s44;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s78;
 
-                case 25:
+                case 29:
                     return s33;
 
-                case 24:
+                case 28:
                     return s46;
 
-                case 18:
+                case 22:
                     return s16;
 
                 case ID:
@@ -6518,7 +6590,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_59 = input.LA(1);
                 if ( LA4_59==ID ) {return s60;}
-                if ( LA4_59==EOL||LA4_59==15 ) {return s59;}
+                if ( LA4_59==EOL||LA4_59==19 ) {return s59;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 59, input);
@@ -6529,7 +6601,7 @@
         DFA.State s46 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_46 = input.LA(1);
-                if ( LA4_46==EOL||LA4_46==15 ) {return s59;}
+                if ( LA4_46==EOL||LA4_46==19 ) {return s59;}
                 if ( LA4_46==ID ) {return s60;}
 
                 NoViableAltException nvae =
@@ -6541,17 +6613,17 @@
         DFA.State s49 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 59:
+                case 63:
                     return s61;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s62;
 
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
                 default:
@@ -6564,14 +6636,14 @@
         DFA.State s45 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s45;
 
                 case ID:
@@ -6588,19 +6660,19 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s45;
 
                 case ID:
                     return s49;
 
-                case 59:
+                case 63:
                     return s44;
 
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
                 default:
@@ -6613,7 +6685,7 @@
         DFA.State s44 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_44 = input.LA(1);
-                if ( LA4_44==60 ) {return s54;}
+                if ( LA4_44==64 ) {return s54;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 44, input);
@@ -6624,20 +6696,20 @@
         DFA.State s32 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 59:
+                case 63:
                     return s44;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s45;
 
-                case 24:
+                case 28:
                     return s46;
 
-                case 25:
+                case 29:
                     return s33;
 
-                case 18:
+                case 22:
                     return s16;
 
                 case ID:
@@ -6657,10 +6729,10 @@
                     return s32;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s31;
 
-                case 25:
+                case 29:
                     return s33;
 
                 default:
@@ -6674,13 +6746,13 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s31;
 
                 case ID:
                     return s32;
 
-                case 25:
+                case 29:
                     return s33;
 
                 default:
@@ -6693,8 +6765,8 @@
         DFA.State s34 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_34 = input.LA(1);
-                if ( LA4_34==23 ) {return s22;}
-                if ( LA4_34==EOL||LA4_34==15 ) {return s34;}
+                if ( LA4_34==27 ) {return s22;}
+                if ( LA4_34==EOL||LA4_34==19 ) {return s34;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 34, input);
@@ -6705,8 +6777,8 @@
         DFA.State s25 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_25 = input.LA(1);
-                if ( LA4_25==EOL||LA4_25==15 ) {return s34;}
-                if ( LA4_25==23 ) {return s22;}
+                if ( LA4_25==EOL||LA4_25==19 ) {return s34;}
+                if ( LA4_25==27 ) {return s22;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 25, input);
@@ -6717,11 +6789,11 @@
         DFA.State s21 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 23:
+                case 27:
                     return s22;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s21;
 
                 case ID:
@@ -6738,16 +6810,16 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s21;
 
-                case 23:
+                case 27:
                     return s22;
 
-                case 18:
+                case 22:
                     return s16;
 
-                case 59:
+                case 63:
                     return s17;
 
                 case ID:
@@ -6764,7 +6836,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_12 = input.LA(1);
                 if ( LA4_12==ID ) {return s13;}
-                if ( LA4_12==EOL||LA4_12==15 ) {return s12;}
+                if ( LA4_12==EOL||LA4_12==19 ) {return s12;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 4, 12, input);
@@ -6775,7 +6847,7 @@
         DFA.State s6 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA4_6 = input.LA(1);
-                if ( LA4_6==EOL||LA4_6==15 ) {return s12;}
+                if ( LA4_6==EOL||LA4_6==19 ) {return s12;}
                 if ( LA4_6==ID ) {return s13;}
 
                 NoViableAltException nvae =
@@ -6790,21 +6862,21 @@
                 switch ( input.LA(1) ) {
                 case -1:
                 case EOL:
-                case 15:
-                case 28:
-                case 30:
+                case 19:
+                case 32:
+                case 34:
                     return s1;
 
-                case 17:
+                case 21:
                     return s4;
 
-                case 21:
+                case 25:
                     return s5;
 
-                case 22:
+                case 26:
                     return s6;
 
-                case 20:
+                case 24:
                     return s8;
 
                 default:
@@ -6828,10 +6900,10 @@
                     return s5;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s3;
 
-                case 23:
+                case 27:
                     return s2;
 
                 default:
@@ -6845,15 +6917,15 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s3;
 
-                case 23:
+                case 27:
                     return s2;
 
                 case ID:
-                case 18:
-                case 59:
+                case 22:
+                case 63:
                     return s5;
 
                 default:
@@ -6867,7 +6939,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA12_0 = input.LA(1);
                 if ( LA12_0==ID ) {return s1;}
-                if ( LA12_0==EOL||LA12_0==15 ) {return s2;}
+                if ( LA12_0==EOL||LA12_0==19 ) {return s2;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 12, 0, input);
@@ -6889,11 +6961,11 @@
                     return s3;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
                 default:
@@ -6907,14 +6979,14 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
-                case 59:
+                case 63:
                     return s4;
 
                 case ID:
@@ -6930,7 +7002,7 @@
         DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA13_4 = input.LA(1);
-                if ( LA13_4==60 ) {return s9;}
+                if ( LA13_4==64 ) {return s9;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 13, 4, input);
@@ -6942,18 +7014,18 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                case 18:
+                case 22:
                     return s3;
 
-                case 59:
+                case 63:
                     return s4;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
                 default:
@@ -6967,7 +7039,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA13_0 = input.LA(1);
                 if ( LA13_0==ID ) {return s1;}
-                if ( LA13_0==EOL||LA13_0==15 ) {return s2;}
+                if ( LA13_0==EOL||LA13_0==19 ) {return s2;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 13, 0, input);
@@ -6985,12 +7057,12 @@
         DFA.State s5 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
                 case ID:
@@ -7007,14 +7079,14 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
-                case 59:
+                case 63:
                     return s4;
 
                 case ID:
@@ -7030,7 +7102,7 @@
         DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA14_4 = input.LA(1);
-                if ( LA14_4==60 ) {return s9;}
+                if ( LA14_4==64 ) {return s9;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 14, 4, input);
@@ -7042,18 +7114,18 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                case 18:
+                case 22:
                     return s3;
 
-                case 59:
+                case 63:
                     return s4;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s5;
 
-                case 24:
-                case 25:
+                case 28:
+                case 29:
                     return s2;
 
                 default:
@@ -7067,7 +7139,7 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 int LA14_0 = input.LA(1);
                 if ( LA14_0==ID ) {return s1;}
-                if ( LA14_0==EOL||LA14_0==15 ) {return s2;}
+                if ( LA14_0==EOL||LA14_0==19 ) {return s2;}
 
                 NoViableAltException nvae =
         	    new NoViableAltException("", 14, 0, input);
@@ -7085,14 +7157,14 @@
         DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 23:
+                case 27:
                     return s2;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s4;
 
-                case 32:
+                case 36:
                     return s6;
 
                 default:
@@ -7105,16 +7177,16 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 18:
-                case 23:
-                case 59:
+                case 22:
+                case 27:
+                case 63:
                     return s2;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s4;
 
-                case 32:
+                case 36:
                     return s6;
 
                 default:
@@ -7146,13 +7218,13 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s1;
 
                 case ID:
                     return s2;
 
-                case 25:
+                case 29:
                     return s3;
 
                 default:
@@ -7166,13 +7238,13 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s1;
 
                 case ID:
                     return s2;
 
-                case 25:
+                case 29:
                     return s3;
 
                 default:
@@ -7192,14 +7264,14 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 25:
+                case 29:
                     return s2;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s1;
 
-                case 24:
+                case 28:
                     return s3;
 
                 default:
@@ -7213,13 +7285,13 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s1;
 
-                case 25:
+                case 29:
                     return s2;
 
-                case 24:
+                case 28:
                     return s3;
 
                 default:
@@ -7239,24 +7311,24 @@
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 32:
+                case 36:
                     return s3;
 
                 case EOL:
-                case 15:
+                case 19:
                     return s2;
 
-                case 24:
-                case 25:
-                case 43:
-                case 44:
-                case 45:
-                case 46:
+                case 28:
+                case 29:
                 case 47:
                 case 48:
                 case 49:
                 case 50:
                 case 51:
+                case 52:
+                case 53:
+                case 54:
+                case 55:
                     return s4;
 
                 default:
@@ -7270,23 +7342,23 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
-                case 15:
+                case 19:
                     return s2;
 
-                case 32:
+                case 36:
                     return s3;
 
-                case 24:
-                case 25:
-                case 43:
-                case 44:
-                case 45:
-                case 46:
+                case 28:
+                case 29:
                 case 47:
                 case 48:
                 case 49:
                 case 50:
                 case 51:
+                case 52:
+                case 53:
+                case 54:
+                case 55:
                     return s4;
 
                 default:
@@ -7311,273 +7383,273 @@
     }
 
 
-    public static final BitSet FOLLOW_set_in_opt_eol41 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_compilation_unit57 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_prolog_in_compilation_unit61 = new BitSet(new long[]{0x0000000000628012L});
-    public static final BitSet FOLLOW_rule_in_compilation_unit70 = new BitSet(new long[]{0x0000000000628012L});
-    public static final BitSet FOLLOW_query_in_compilation_unit83 = new BitSet(new long[]{0x0000000000628012L});
-    public static final BitSet FOLLOW_extra_statement_in_compilation_unit91 = new BitSet(new long[]{0x0000000000628012L});
-    public static final BitSet FOLLOW_opt_eol_in_prolog115 = new BitSet(new long[]{0x0000000000738012L});
-    public static final BitSet FOLLOW_package_statement_in_prolog123 = new BitSet(new long[]{0x0000000000728012L});
-    public static final BitSet FOLLOW_extra_statement_in_prolog138 = new BitSet(new long[]{0x0000000000728012L});
-    public static final BitSet FOLLOW_expander_in_prolog144 = new BitSet(new long[]{0x0000000000728012L});
+    public static final BitSet FOLLOW_set_in_opt_eol41 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_compilation_unit57 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_prolog_in_compilation_unit61 = new BitSet(new long[]{0x0000000006280012L});
+    public static final BitSet FOLLOW_rule_in_compilation_unit70 = new BitSet(new long[]{0x0000000006280012L});
+    public static final BitSet FOLLOW_query_in_compilation_unit83 = new BitSet(new long[]{0x0000000006280012L});
+    public static final BitSet FOLLOW_extra_statement_in_compilation_unit91 = new BitSet(new long[]{0x0000000006280012L});
+    public static final BitSet FOLLOW_opt_eol_in_prolog115 = new BitSet(new long[]{0x0000000007380012L});
+    public static final BitSet FOLLOW_package_statement_in_prolog123 = new BitSet(new long[]{0x0000000007280012L});
+    public static final BitSet FOLLOW_extra_statement_in_prolog138 = new BitSet(new long[]{0x0000000007280012L});
+    public static final BitSet FOLLOW_expander_in_prolog144 = new BitSet(new long[]{0x0000000007280012L});
     public static final BitSet FOLLOW_opt_eol_in_prolog156 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_16_in_package_statement180 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_20_in_package_statement180 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_package_statement182 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement186 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_package_statement188 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement186 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_package_statement188 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_package_statement191 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_17_in_import_statement207 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_21_in_import_statement207 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_import_statement209 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_import_name_in_import_statement213 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_import_statement215 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_import_name_in_import_statement213 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_import_statement215 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_import_statement218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name249 = new BitSet(new long[]{0x00000000000C0002L});
-    public static final BitSet FOLLOW_18_in_import_name255 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_import_name259 = new BitSet(new long[]{0x00000000000C0002L});
-    public static final BitSet FOLLOW_19_in_import_name269 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_20_in_expander289 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_dotted_name_in_expander294 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_expander298 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_ID_in_import_name249 = new BitSet(new long[]{0x0000000000C00002L});
+    public static final BitSet FOLLOW_22_in_import_name255 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_import_name259 = new BitSet(new long[]{0x0000000000C00002L});
+    public static final BitSet FOLLOW_23_in_import_name269 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_24_in_expander289 = new BitSet(new long[]{0x0000000000080032L});
+    public static final BitSet FOLLOW_dotted_name_in_expander294 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_expander298 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_expander301 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_21_in_global325 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_25_in_global325 = new BitSet(new long[]{0x0000000000000020L});
     public static final BitSet FOLLOW_dotted_name_in_global329 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_global333 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_global335 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_ID_in_global333 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_global335 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_global338 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_22_in_function362 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function364 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_dotted_name_in_function369 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_26_in_function362 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function364 = new BitSet(new long[]{0x0000000000080032L});
+    public static final BitSet FOLLOW_dotted_name_in_function369 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_function373 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_function377 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function379 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_function388 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function390 = new BitSet(new long[]{0x0000000002008032L});
-    public static final BitSet FOLLOW_dotted_name_in_function400 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_ID_in_function377 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function379 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_function388 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function390 = new BitSet(new long[]{0x0000000020080032L});
+    public static final BitSet FOLLOW_dotted_name_in_function400 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_function404 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_argument_in_function408 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function410 = new BitSet(new long[]{0x0000000003000000L});
-    public static final BitSet FOLLOW_24_in_function424 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function426 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_dotted_name_in_function431 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_argument_in_function408 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function410 = new BitSet(new long[]{0x0000000030000000L});
+    public static final BitSet FOLLOW_28_in_function424 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function426 = new BitSet(new long[]{0x0000000000080032L});
+    public static final BitSet FOLLOW_dotted_name_in_function431 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_function435 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_argument_in_function439 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function441 = new BitSet(new long[]{0x0000000003000000L});
-    public static final BitSet FOLLOW_25_in_function466 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_function470 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_26_in_function474 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_curly_chunk_in_function481 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_27_in_function490 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_argument_in_function439 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function441 = new BitSet(new long[]{0x0000000030000000L});
+    public static final BitSet FOLLOW_29_in_function466 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_function470 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_function474 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_curly_chunk_in_function481 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_31_in_function490 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_function498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_query522 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_28_in_query528 = new BitSet(new long[]{0x2000001AF0020120L});
-    public static final BitSet FOLLOW_word_in_query532 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_query534 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_expander_lhs_block_in_query550 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query558 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_29_in_query573 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_query522 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_32_in_query528 = new BitSet(new long[]{0x000001AF00200120L,0x0000000000000002L});
+    public static final BitSet FOLLOW_word_in_query532 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_query534 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_expander_lhs_block_in_query550 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query558 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_query573 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_query575 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_rule598 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_rule604 = new BitSet(new long[]{0x2000001AF0020120L});
-    public static final BitSet FOLLOW_word_in_rule608 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule610 = new BitSet(new long[]{0x0000000500008012L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule621 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule631 = new BitSet(new long[]{0x00000000A0008012L});
-    public static final BitSet FOLLOW_31_in_rule640 = new BitSet(new long[]{0x0000000100008012L});
-    public static final BitSet FOLLOW_32_in_rule642 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule645 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_expander_lhs_block_in_rule663 = new BitSet(new long[]{0x0000000020008012L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule672 = new BitSet(new long[]{0x0000000020008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule695 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_rule699 = new BitSet(new long[]{0x0000000100008012L});
-    public static final BitSet FOLLOW_32_in_rule701 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule705 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF0L});
-    public static final BitSet FOLLOW_29_in_rule751 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule598 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_34_in_rule604 = new BitSet(new long[]{0x000001AF00200120L,0x0000000000000002L});
+    public static final BitSet FOLLOW_word_in_rule608 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule610 = new BitSet(new long[]{0x0000005000080012L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule621 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule631 = new BitSet(new long[]{0x0000000A00080012L});
+    public static final BitSet FOLLOW_35_in_rule640 = new BitSet(new long[]{0x0000001000080012L});
+    public static final BitSet FOLLOW_36_in_rule642 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule645 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_expander_lhs_block_in_rule663 = new BitSet(new long[]{0x0000000200080012L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule672 = new BitSet(new long[]{0x0000000200080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule695 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_37_in_rule699 = new BitSet(new long[]{0x0000001000080012L});
+    public static final BitSet FOLLOW_36_in_rule701 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule705 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000000003L});
+    public static final BitSet FOLLOW_33_in_rule751 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_rule753 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_extra_statement773 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_global_in_extra_statement778 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_in_extra_statement783 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_rule_attributes802 = new BitSet(new long[]{0x0000000100008012L});
-    public static final BitSet FOLLOW_32_in_rule_attributes805 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule_attributes808 = new BitSet(new long[]{0x000001F801000002L});
-    public static final BitSet FOLLOW_24_in_rule_attributes815 = new BitSet(new long[]{0x000001F800000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes820 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule_attributes822 = new BitSet(new long[]{0x000001F801000002L});
+    public static final BitSet FOLLOW_38_in_rule_attributes802 = new BitSet(new long[]{0x0000001000080012L});
+    public static final BitSet FOLLOW_36_in_rule_attributes805 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule_attributes808 = new BitSet(new long[]{0x00001F8010000002L});
+    public static final BitSet FOLLOW_28_in_rule_attributes815 = new BitSet(new long[]{0x00001F8000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes820 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule_attributes822 = new BitSet(new long[]{0x00001F8010000002L});
     public static final BitSet FOLLOW_salience_in_rule_attribute861 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_no_loop_in_rule_attribute871 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_agenda_group_in_rule_attribute882 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_duration_in_rule_attribute895 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_activation_group_in_rule_attribute909 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_auto_focus_in_rule_attribute920 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_salience953 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_39_in_salience953 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_salience955 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_INT_in_salience959 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_salience961 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_INT_in_salience959 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_salience961 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_salience964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_no_loop999 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1001 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_no_loop1003 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_40_in_no_loop999 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1001 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_no_loop1003 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_no_loop1006 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_no_loop1031 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1035 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1037 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_no_loop1039 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_40_in_no_loop1031 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1035 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1037 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_no_loop1039 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_no_loop1042 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_auto_focus1088 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1090 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_auto_focus1092 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_41_in_auto_focus1088 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1090 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_auto_focus1092 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_auto_focus1095 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_auto_focus1120 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1124 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1126 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_auto_focus1128 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_41_in_auto_focus1120 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1124 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1126 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_auto_focus1128 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_auto_focus1131 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_38_in_activation_group1173 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_42_in_activation_group1173 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_activation_group1175 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1179 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_activation_group1181 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1179 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_activation_group1181 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_activation_group1184 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_39_in_agenda_group1213 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_43_in_agenda_group1213 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_agenda_group1215 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1219 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_agenda_group1221 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1219 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_agenda_group1221 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_agenda_group1224 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_duration1256 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_44_in_duration1256 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_duration1258 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_INT_in_duration1262 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_duration1264 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_INT_in_duration1262 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_19_in_duration1264 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_duration1267 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1293 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1295 = new BitSet(new long[]{0x0700000000808032L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1293 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1295 = new BitSet(new long[]{0x7000000008080032L});
     public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1307 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_paren_chunk_in_expander_lhs_block1348 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1352 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1372 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1352 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1372 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
     public static final BitSet FOLLOW_lhs_or_in_lhs1415 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_binding_in_lhs_column1443 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_in_lhs_column1452 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding1484 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding1494 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_32_in_fact_binding1496 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding1498 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_ID_in_fact_binding1484 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding1494 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_fact_binding1496 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding1498 = new BitSet(new long[]{0x0000000008000020L});
     public static final BitSet FOLLOW_fact_expression_in_fact_binding1502 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_fact_expression1534 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression1536 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1540 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression1542 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact_expression1544 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression1555 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression1557 = new BitSet(new long[]{0x0000060000000002L});
-    public static final BitSet FOLLOW_set_in_fact_expression1570 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_27_in_fact_expression1534 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression1536 = new BitSet(new long[]{0x0000000008000020L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1540 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression1542 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_fact_expression1544 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression1555 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression1557 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_set_in_fact_expression1570 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_fact_expression1575 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_fact_in_fact_expression1589 = new BitSet(new long[]{0x0000060000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_fact1628 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact1636 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_fact1644 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact1647 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_constraints_in_fact1653 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact1672 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact1676 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_fact_in_fact_expression1589 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_fact1628 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact1636 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_fact1644 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact1647 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_constraints_in_fact1653 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact1672 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_fact1676 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_fact1678 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints1710 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints1715 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints1718 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints1726 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_constraints1728 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints1730 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints1733 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints1736 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints1710 = new BitSet(new long[]{0x0000000000080032L});
+    public static final BitSet FOLLOW_constraint_in_constraints1715 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_predicate_in_constraints1718 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints1726 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_28_in_constraints1728 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints1730 = new BitSet(new long[]{0x0000000000080032L});
+    public static final BitSet FOLLOW_constraint_in_constraints1733 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_predicate_in_constraints1736 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_constraints1744 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_opt_eol_in_constraint1763 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint1771 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint1773 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_32_in_constraint1775 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_ID_in_constraint1771 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint1773 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_constraint1775 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_constraint1777 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint1787 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint1797 = new BitSet(new long[]{0x000FF80000008012L});
-    public static final BitSet FOLLOW_set_in_constraint1805 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint1892 = new BitSet(new long[]{0x00100000008003E0L});
-    public static final BitSet FOLLOW_ID_in_constraint1910 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint1935 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint1967 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint1987 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_ID_in_constraint1787 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint1797 = new BitSet(new long[]{0x00FF800000080012L});
+    public static final BitSet FOLLOW_set_in_constraint1805 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint1892 = new BitSet(new long[]{0x01000000080003E0L});
+    public static final BitSet FOLLOW_ID_in_constraint1910 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint1935 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint1967 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint1987 = new BitSet(new long[]{0x0000000000080012L});
     public static final BitSet FOLLOW_opt_eol_in_constraint2020 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_STRING_in_literal_constraint2047 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_INT_in_literal_constraint2058 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_FLOAT_in_literal_constraint2071 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_BOOL_in_literal_constraint2082 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_52_in_literal_constraint2094 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2125 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_18_in_enum_constraint2127 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_56_in_literal_constraint2094 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2125 = new BitSet(new long[]{0x0000000000400000L});
+    public static final BitSet FOLLOW_22_in_enum_constraint2127 = new BitSet(new long[]{0x0000000000000020L});
     public static final BitSet FOLLOW_ID_in_enum_constraint2131 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_retval_constraint2160 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2165 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_retval_constraint2168 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_predicate2186 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_32_in_predicate2188 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_predicate2192 = new BitSet(new long[]{0x0020000000000000L});
-    public static final BitSet FOLLOW_53_in_predicate2194 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_predicate2196 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2200 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_predicate2202 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_paren_chunk2248 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2252 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk2254 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_23_in_paren_chunk22325 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk22329 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk22331 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_26_in_curly_chunk2400 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk2404 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_27_in_curly_chunk2406 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2464 = new BitSet(new long[]{0x0000060000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or2473 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_or2478 = new BitSet(new long[]{0x0700000000800020L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2485 = new BitSet(new long[]{0x0000060000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2525 = new BitSet(new long[]{0x00C0000000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_and2534 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_and2539 = new BitSet(new long[]{0x0700000000800020L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2546 = new BitSet(new long[]{0x00C0000000000002L});
+    public static final BitSet FOLLOW_27_in_retval_constraint2160 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint2165 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_retval_constraint2168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_predicate2186 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_36_in_predicate2188 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_predicate2192 = new BitSet(new long[]{0x0200000000000000L});
+    public static final BitSet FOLLOW_57_in_predicate2194 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_predicate2196 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2200 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_predicate2202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_paren_chunk2248 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2252 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_paren_chunk2254 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_27_in_paren_chunk22325 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk22329 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_paren_chunk22331 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_30_in_curly_chunk2400 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk2404 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_31_in_curly_chunk2406 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2464 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_or2473 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_or2478 = new BitSet(new long[]{0x7000000008000020L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2485 = new BitSet(new long[]{0x0000600000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2525 = new BitSet(new long[]{0x0C00000000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_and2534 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_and2539 = new BitSet(new long[]{0x7000000008000020L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2546 = new BitSet(new long[]{0x0C00000000000002L});
     public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2584 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_not_in_lhs_unary2592 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2600 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_column_in_lhs_unary2608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_lhs_unary2614 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary2616 = new BitSet(new long[]{0x0700000000800020L});
-    public static final BitSet FOLLOW_lhs_in_lhs_unary2620 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary2622 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_unary2624 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_56_in_lhs_exist2654 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_exist2657 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist2661 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_exist2663 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_lhs_unary2614 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary2616 = new BitSet(new long[]{0x7000000008000020L});
+    public static final BitSet FOLLOW_lhs_in_lhs_unary2620 = new BitSet(new long[]{0x0000000000080012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary2622 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_lhs_unary2624 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_60_in_lhs_exist2654 = new BitSet(new long[]{0x0000000008000020L});
+    public static final BitSet FOLLOW_27_in_lhs_exist2657 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist2661 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_lhs_exist2663 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_column_in_lhs_exist2669 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_57_in_lhs_not2699 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_not2702 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not2706 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_not2709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_61_in_lhs_not2699 = new BitSet(new long[]{0x0000000008000020L});
+    public static final BitSet FOLLOW_27_in_lhs_not2702 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not2706 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_lhs_not2709 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lhs_column_in_lhs_not2715 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_58_in_lhs_eval2741 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_lhs_eval2745 = new BitSet(new long[]{0x3FFFFFFFFFFFFFF2L});
-    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval2753 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_eval2757 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name2789 = new BitSet(new long[]{0x0800000000040002L});
-    public static final BitSet FOLLOW_18_in_dotted_name2795 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_dotted_name2799 = new BitSet(new long[]{0x0800000000040002L});
-    public static final BitSet FOLLOW_59_in_dotted_name2808 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_60_in_dotted_name2810 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument2840 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_59_in_argument2846 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_60_in_argument2848 = new BitSet(new long[]{0x0800000000000002L});
+    public static final BitSet FOLLOW_62_in_lhs_eval2741 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_lhs_eval2745 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x0000000000000003L});
+    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval2753 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_lhs_eval2757 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name2789 = new BitSet(new long[]{0x8000000000400002L});
+    public static final BitSet FOLLOW_22_in_dotted_name2795 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_dotted_name2799 = new BitSet(new long[]{0x8000000000400002L});
+    public static final BitSet FOLLOW_63_in_dotted_name2808 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_dotted_name2810 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument2840 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_63_in_argument2846 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_argument2848 = new BitSet(new long[]{0x8000000000000002L});
     public static final BitSet FOLLOW_ID_in_word2876 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_17_in_word2888 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_61_in_word2897 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_30_in_word2909 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_word2920 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_word2930 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_word2938 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_word2946 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_33_in_word2957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_29_in_word2968 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_word2888 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_word2897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_word2909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_32_in_word2920 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_39_in_word2930 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_word2938 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_word2946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_word2957 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_word2968 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_STRING_in_word2982 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2007-03-28 23:42:51 UTC (rev 10601)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2007-03-29 00:49:47 UTC (rev 10602)
@@ -1,8 +1,8 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-16 14:21:22
+// $ANTLR 3.0ea8 D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g 2007-03-28 19:44:12
+
+	package org.drools.lang;
 
-	package org.drools.lang;
 
-
 import org.antlr.runtime.*;
 import java.util.Stack;
 import java.util.List;
@@ -11,6 +11,7 @@
 import java.util.HashMap;
 public class RuleParserLexer extends Lexer {
     public static final int T29=29;
+    public static final int HexDigit=13;
     public static final int T36=36;
     public static final int T58=58;
     public static final int MISC=10;
@@ -20,17 +21,16 @@
     public static final int T45=45;
     public static final int T20=20;
     public static final int T34=34;
+    public static final int T64=64;
     public static final int T25=25;
-    public static final int T18=18;
     public static final int T37=37;
+    public static final int EscapeSequence=12;
     public static final int INT=6;
     public static final int T26=26;
     public static final int T32=32;
-    public static final int T17=17;
     public static final int T51=51;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=12;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=16;
     public static final int T46=46;
-    public static final int T16=16;
     public static final int T38=38;
     public static final int T41=41;
     public static final int T24=24;
@@ -38,7 +38,8 @@
     public static final int T39=39;
     public static final int ID=5;
     public static final int T21=21;
-    public static final int Synpred1_fragment=63;
+    public static final int Synpred1_fragment=67;
+    public static final int T62=62;
     public static final int T44=44;
     public static final int T55=55;
     public static final int BOOL=7;
@@ -52,138 +53,35 @@
     public static final int T28=28;
     public static final int T42=42;
     public static final int T40=40;
+    public static final int T63=63;
     public static final int T57=57;
+    public static final int T65=65;
     public static final int T56=56;
+    public static final int UnicodeEscape=14;
     public static final int T59=59;
     public static final int T48=48;
-    public static final int T15=15;
     public static final int T54=54;
     public static final int EOF=-1;
     public static final int T47=47;
     public static final int EOL=4;
-    public static final int Tokens=62;
+    public static final int Tokens=66;
     public static final int T53=53;
     public static final int T60=60;
     public static final int T31=31;
-    public static final int MULTI_LINE_COMMENT=14;
+    public static final int OctalEscape=15;
+    public static final int MULTI_LINE_COMMENT=18;
     public static final int T49=49;
     public static final int T27=27;
     public static final int T52=52;
     public static final int T30=30;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=13;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=17;
     public RuleParserLexer() {;} 
     public RuleParserLexer(CharStream input) {
         super(input);
-        ruleMemo = new Map[60+1];
+        ruleMemo = new Map[64+1];
      }
 
 
-    // $ANTLR start T15
-    public void mT15() throws RecognitionException {
-        int T15_StartIndex = input.index();
-        try {
-            int type = T15;
-            int start = getCharIndex();
-            int line = getLine();
-            int charPosition = getCharPositionInLine();
-            int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:6:7: ( ';' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:6:7: ';'
-            {
-            match(';'); if (failed) return ;
-
-            }
-
-            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
-        }
-        finally {
-            if ( backtracking>0 ) { memoize(input, 1, T15_StartIndex); }
-        }
-    }
-    // $ANTLR end T15
-
-
-    // $ANTLR start T16
-    public void mT16() throws RecognitionException {
-        int T16_StartIndex = input.index();
-        try {
-            int type = T16;
-            int start = getCharIndex();
-            int line = getLine();
-            int charPosition = getCharPositionInLine();
-            int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:7:7: ( 'package' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:7:7: 'package'
-            {
-            match("package"); if (failed) return ;
-
-
-            }
-
-            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
-        }
-        finally {
-            if ( backtracking>0 ) { memoize(input, 2, T16_StartIndex); }
-        }
-    }
-    // $ANTLR end T16
-
-
-    // $ANTLR start T17
-    public void mT17() throws RecognitionException {
-        int T17_StartIndex = input.index();
-        try {
-            int type = T17;
-            int start = getCharIndex();
-            int line = getLine();
-            int charPosition = getCharPositionInLine();
-            int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:8:7: ( 'import' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:8:7: 'import'
-            {
-            match("import"); if (failed) return ;
-
-
-            }
-
-            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
-        }
-        finally {
-            if ( backtracking>0 ) { memoize(input, 3, T17_StartIndex); }
-        }
-    }
-    // $ANTLR end T17
-
-
-    // $ANTLR start T18
-    public void mT18() throws RecognitionException {
-        int T18_StartIndex = input.index();
-        try {
-            int type = T18;
-            int start = getCharIndex();
-            int line = getLine();
-            int charPosition = getCharPositionInLine();
-            int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:9:7: ( '.' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:9:7: '.'
-            {
-            match('.'); if (failed) return ;
-
-            }
-
-            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
-        }
-        finally {
-            if ( backtracking>0 ) { memoize(input, 4, T18_StartIndex); }
-        }
-    }
-    // $ANTLR end T18
-
-
     // $ANTLR start T19
     public void mT19() throws RecognitionException {
         int T19_StartIndex = input.index();
@@ -193,19 +91,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:10:7: ( '.*' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:10:7: '.*'
+            if ( backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:6:7: ( ';' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:6:7: ';'
             {
-            match(".*"); if (failed) return ;
+            match(';'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 5, T19_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 1, T19_StartIndex); }
         }
     }
     // $ANTLR end T19
@@ -220,11 +117,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:11:7: ( 'expander' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:11:7: 'expander'
+            if ( backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:7:7: ( 'package' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:7:7: 'package'
             {
-            match("expander"); if (failed) return ;
+            match("package"); if (failed) return ;
 
 
             }
@@ -232,7 +129,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 6, T20_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 2, T20_StartIndex); }
         }
     }
     // $ANTLR end T20
@@ -247,11 +144,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:12:7: ( 'global' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:12:7: 'global'
+            if ( backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:8:7: ( 'import' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:8:7: 'import'
             {
-            match("global"); if (failed) return ;
+            match("import"); if (failed) return ;
 
 
             }
@@ -259,7 +156,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 7, T21_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 3, T21_StartIndex); }
         }
     }
     // $ANTLR end T21
@@ -274,19 +171,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:13:7: ( 'function' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:13:7: 'function'
+            if ( backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:9:7: ( '.' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:9:7: '.'
             {
-            match("function"); if (failed) return ;
+            match('.'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 8, T22_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 4, T22_StartIndex); }
         }
     }
     // $ANTLR end T22
@@ -301,18 +197,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:14:7: ( '(' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:14:7: '('
+            if ( backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:10:7: ( '.*' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:10:7: '.*'
             {
-            match('('); if (failed) return ;
+            match(".*"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 9, T23_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 5, T23_StartIndex); }
         }
     }
     // $ANTLR end T23
@@ -327,18 +224,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:15:7: ( ',' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:15:7: ','
+            if ( backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:11:7: ( 'expander' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:11:7: 'expander'
             {
-            match(','); if (failed) return ;
+            match("expander"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 10, T24_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 6, T24_StartIndex); }
         }
     }
     // $ANTLR end T24
@@ -353,18 +251,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:16:7: ( ')' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:16:7: ')'
+            if ( backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:12:7: ( 'global' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:12:7: 'global'
             {
-            match(')'); if (failed) return ;
+            match("global"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 11, T25_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 7, T25_StartIndex); }
         }
     }
     // $ANTLR end T25
@@ -379,18 +278,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:17:7: ( '{' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:17:7: '{'
+            if ( backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:13:7: ( 'function' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:13:7: 'function'
             {
-            match('{'); if (failed) return ;
+            match("function"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 12, T26_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 8, T26_StartIndex); }
         }
     }
     // $ANTLR end T26
@@ -405,18 +305,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:18:7: ( '}' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:18:7: '}'
+            if ( backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:14:7: ( '(' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:14:7: '('
             {
-            match('}'); if (failed) return ;
+            match('('); if (failed) return ;
 
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 13, T27_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 9, T27_StartIndex); }
         }
     }
     // $ANTLR end T27
@@ -431,19 +331,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:19:7: ( 'query' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:19:7: 'query'
+            if ( backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:15:7: ( ',' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:15:7: ','
             {
-            match("query"); if (failed) return ;
+            match(','); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 14, T28_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 10, T28_StartIndex); }
         }
     }
     // $ANTLR end T28
@@ -458,19 +357,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:20:7: ( 'end' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:20:7: 'end'
+            if ( backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:16:7: ( ')' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:16:7: ')'
             {
-            match("end"); if (failed) return ;
+            match(')'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 15, T29_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 11, T29_StartIndex); }
         }
     }
     // $ANTLR end T29
@@ -485,19 +383,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:21:7: ( 'rule' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:21:7: 'rule'
+            if ( backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:17:7: ( '{' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:17:7: '{'
             {
-            match("rule"); if (failed) return ;
+            match('{'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 16, T30_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 12, T30_StartIndex); }
         }
     }
     // $ANTLR end T30
@@ -512,19 +409,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:22:7: ( 'when' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:22:7: 'when'
+            if ( backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:18:7: ( '}' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:18:7: '}'
             {
-            match("when"); if (failed) return ;
+            match('}'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 17, T31_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 13, T31_StartIndex); }
         }
     }
     // $ANTLR end T31
@@ -539,18 +435,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:23:7: ( ':' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:23:7: ':'
+            if ( backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:19:7: ( 'query' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:19:7: 'query'
             {
-            match(':'); if (failed) return ;
+            match("query"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 18, T32_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 14, T32_StartIndex); }
         }
     }
     // $ANTLR end T32
@@ -565,11 +462,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:24:7: ( 'then' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:24:7: 'then'
+            if ( backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:20:7: ( 'end' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:20:7: 'end'
             {
-            match("then"); if (failed) return ;
+            match("end"); if (failed) return ;
 
 
             }
@@ -577,7 +474,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 19, T33_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 15, T33_StartIndex); }
         }
     }
     // $ANTLR end T33
@@ -592,11 +489,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:25:7: ( 'attributes' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:25:7: 'attributes'
+            if ( backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:21:7: ( 'rule' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:21:7: 'rule'
             {
-            match("attributes"); if (failed) return ;
+            match("rule"); if (failed) return ;
 
 
             }
@@ -604,7 +501,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 20, T34_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 16, T34_StartIndex); }
         }
     }
     // $ANTLR end T34
@@ -619,11 +516,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:26:7: ( 'salience' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:26:7: 'salience'
+            if ( backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:22:7: ( 'when' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:22:7: 'when'
             {
-            match("salience"); if (failed) return ;
+            match("when"); if (failed) return ;
 
 
             }
@@ -631,7 +528,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 21, T35_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 17, T35_StartIndex); }
         }
     }
     // $ANTLR end T35
@@ -646,19 +543,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:27:7: ( 'no-loop' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:27:7: 'no-loop'
+            if ( backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:23:7: ( ':' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:23:7: ':'
             {
-            match("no-loop"); if (failed) return ;
+            match(':'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 22, T36_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 18, T36_StartIndex); }
         }
     }
     // $ANTLR end T36
@@ -673,11 +569,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:28:7: ( 'auto-focus' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:28:7: 'auto-focus'
+            if ( backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:24:7: ( 'then' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:24:7: 'then'
             {
-            match("auto-focus"); if (failed) return ;
+            match("then"); if (failed) return ;
 
 
             }
@@ -685,7 +581,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 23, T37_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 19, T37_StartIndex); }
         }
     }
     // $ANTLR end T37
@@ -700,11 +596,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:29:7: ( 'activation-group' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:29:7: 'activation-group'
+            if ( backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:25:7: ( 'attributes' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:25:7: 'attributes'
             {
-            match("activation-group"); if (failed) return ;
+            match("attributes"); if (failed) return ;
 
 
             }
@@ -712,7 +608,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 24, T38_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 20, T38_StartIndex); }
         }
     }
     // $ANTLR end T38
@@ -727,11 +623,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:30:7: ( 'agenda-group' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:30:7: 'agenda-group'
+            if ( backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:26:7: ( 'salience' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:26:7: 'salience'
             {
-            match("agenda-group"); if (failed) return ;
+            match("salience"); if (failed) return ;
 
 
             }
@@ -739,7 +635,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 25, T39_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 21, T39_StartIndex); }
         }
     }
     // $ANTLR end T39
@@ -754,11 +650,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:31:7: ( 'duration' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:31:7: 'duration'
+            if ( backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:27:7: ( 'no-loop' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:27:7: 'no-loop'
             {
-            match("duration"); if (failed) return ;
+            match("no-loop"); if (failed) return ;
 
 
             }
@@ -766,7 +662,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 26, T40_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 22, T40_StartIndex); }
         }
     }
     // $ANTLR end T40
@@ -781,11 +677,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:32:7: ( 'or' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:32:7: 'or'
+            if ( backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:28:7: ( 'auto-focus' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:28:7: 'auto-focus'
             {
-            match("or"); if (failed) return ;
+            match("auto-focus"); if (failed) return ;
 
 
             }
@@ -793,7 +689,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 27, T41_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 23, T41_StartIndex); }
         }
     }
     // $ANTLR end T41
@@ -808,11 +704,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:33:7: ( '||' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:33:7: '||'
+            if ( backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:29:7: ( 'activation-group' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:29:7: 'activation-group'
             {
-            match("||"); if (failed) return ;
+            match("activation-group"); if (failed) return ;
 
 
             }
@@ -820,7 +716,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 28, T42_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 24, T42_StartIndex); }
         }
     }
     // $ANTLR end T42
@@ -835,11 +731,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:34:7: ( '==' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:34:7: '=='
+            if ( backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:30:7: ( 'agenda-group' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:30:7: 'agenda-group'
             {
-            match("=="); if (failed) return ;
+            match("agenda-group"); if (failed) return ;
 
 
             }
@@ -847,7 +743,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 29, T43_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 25, T43_StartIndex); }
         }
     }
     // $ANTLR end T43
@@ -862,18 +758,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:35:7: ( '>' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:35:7: '>'
+            if ( backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:31:7: ( 'duration' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:31:7: 'duration'
             {
-            match('>'); if (failed) return ;
+            match("duration"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 30, T44_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 26, T44_StartIndex); }
         }
     }
     // $ANTLR end T44
@@ -888,11 +785,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:36:7: ( '>=' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:36:7: '>='
+            if ( backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:32:7: ( 'or' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:32:7: 'or'
             {
-            match(">="); if (failed) return ;
+            match("or"); if (failed) return ;
 
 
             }
@@ -900,7 +797,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 31, T45_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 27, T45_StartIndex); }
         }
     }
     // $ANTLR end T45
@@ -915,18 +812,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:37:7: ( '<' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:37:7: '<'
+            if ( backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:33:7: ( '||' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:33:7: '||'
             {
-            match('<'); if (failed) return ;
+            match("||"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 32, T46_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 28, T46_StartIndex); }
         }
     }
     // $ANTLR end T46
@@ -941,11 +839,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:38:7: ( '<=' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:38:7: '<='
+            if ( backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:34:7: ( '==' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:34:7: '=='
             {
-            match("<="); if (failed) return ;
+            match("=="); if (failed) return ;
 
 
             }
@@ -953,7 +851,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 33, T47_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 29, T47_StartIndex); }
         }
     }
     // $ANTLR end T47
@@ -968,19 +866,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:39:7: ( '!=' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:39:7: '!='
+            if ( backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:35:7: ( '>' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:35:7: '>'
             {
-            match("!="); if (failed) return ;
+            match('>'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 34, T48_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 30, T48_StartIndex); }
         }
     }
     // $ANTLR end T48
@@ -995,11 +892,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:40:7: ( 'contains' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:40:7: 'contains'
+            if ( backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:36:7: ( '>=' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:36:7: '>='
             {
-            match("contains"); if (failed) return ;
+            match(">="); if (failed) return ;
 
 
             }
@@ -1007,7 +904,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 35, T49_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 31, T49_StartIndex); }
         }
     }
     // $ANTLR end T49
@@ -1022,19 +919,18 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:41:7: ( 'matches' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:41:7: 'matches'
+            if ( backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:37:7: ( '<' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:37:7: '<'
             {
-            match("matches"); if (failed) return ;
+            match('<'); if (failed) return ;
 
-
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 36, T50_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 32, T50_StartIndex); }
         }
     }
     // $ANTLR end T50
@@ -1049,11 +945,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:42:7: ( 'excludes' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:42:7: 'excludes'
+            if ( backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:38:7: ( '<=' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:38:7: '<='
             {
-            match("excludes"); if (failed) return ;
+            match("<="); if (failed) return ;
 
 
             }
@@ -1061,7 +957,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 37, T51_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 33, T51_StartIndex); }
         }
     }
     // $ANTLR end T51
@@ -1076,11 +972,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:43:7: ( 'null' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:43:7: 'null'
+            if ( backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:39:7: ( '!=' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:39:7: '!='
             {
-            match("null"); if (failed) return ;
+            match("!="); if (failed) return ;
 
 
             }
@@ -1088,7 +984,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 38, T52_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 34, T52_StartIndex); }
         }
     }
     // $ANTLR end T52
@@ -1103,11 +999,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:44:7: ( '->' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:44:7: '->'
+            if ( backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:40:7: ( 'contains' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:40:7: 'contains'
             {
-            match("->"); if (failed) return ;
+            match("contains"); if (failed) return ;
 
 
             }
@@ -1115,7 +1011,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 39, T53_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 35, T53_StartIndex); }
         }
     }
     // $ANTLR end T53
@@ -1130,11 +1026,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 40) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:45:7: ( 'and' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:45:7: 'and'
+            if ( backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:41:7: ( 'matches' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:41:7: 'matches'
             {
-            match("and"); if (failed) return ;
+            match("matches"); if (failed) return ;
 
 
             }
@@ -1142,7 +1038,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 40, T54_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 36, T54_StartIndex); }
         }
     }
     // $ANTLR end T54
@@ -1157,11 +1053,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:46:7: ( '&&' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:46:7: '&&'
+            if ( backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:42:7: ( 'excludes' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:42:7: 'excludes'
             {
-            match("&&"); if (failed) return ;
+            match("excludes"); if (failed) return ;
 
 
             }
@@ -1169,7 +1065,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 41, T55_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 37, T55_StartIndex); }
         }
     }
     // $ANTLR end T55
@@ -1184,11 +1080,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:47:7: ( 'exists' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:47:7: 'exists'
+            if ( backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:43:7: ( 'null' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:43:7: 'null'
             {
-            match("exists"); if (failed) return ;
+            match("null"); if (failed) return ;
 
 
             }
@@ -1196,7 +1092,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 42, T56_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 38, T56_StartIndex); }
         }
     }
     // $ANTLR end T56
@@ -1211,11 +1107,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:48:7: ( 'not' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:48:7: 'not'
+            if ( backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:44:7: ( '->' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:44:7: '->'
             {
-            match("not"); if (failed) return ;
+            match("->"); if (failed) return ;
 
 
             }
@@ -1223,7 +1119,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 43, T57_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 39, T57_StartIndex); }
         }
     }
     // $ANTLR end T57
@@ -1238,11 +1134,11 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:49:7: ( 'eval' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:49:7: 'eval'
+            if ( backtracking>0 && alreadyParsedRule(input, 40) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:45:7: ( 'and' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:45:7: 'and'
             {
-            match("eval"); if (failed) return ;
+            match("and"); if (failed) return ;
 
 
             }
@@ -1250,7 +1146,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 44, T58_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 40, T58_StartIndex); }
         }
     }
     // $ANTLR end T58
@@ -1265,18 +1161,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:50:7: ( '[' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:50:7: '['
+            if ( backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:46:7: ( '&&' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:46:7: '&&'
             {
-            match('['); if (failed) return ;
+            match("&&"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 45, T59_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 41, T59_StartIndex); }
         }
     }
     // $ANTLR end T59
@@ -1291,18 +1188,19 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:51:7: ( ']' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:51:7: ']'
+            if ( backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:47:7: ( 'exists' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:47:7: 'exists'
             {
-            match(']'); if (failed) return ;
+            match("exists"); if (failed) return ;
 
+
             }
 
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 46, T60_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 42, T60_StartIndex); }
         }
     }
     // $ANTLR end T60
@@ -1317,9 +1215,115 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
+            if ( backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:48:7: ( 'not' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:48:7: 'not'
+            {
+            match("not"); if (failed) return ;
+
+
+            }
+
+            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 43, T61_StartIndex); }
+        }
+    }
+    // $ANTLR end T61
+
+
+    // $ANTLR start T62
+    public void mT62() throws RecognitionException {
+        int T62_StartIndex = input.index();
+        try {
+            int type = T62;
+            int start = getCharIndex();
+            int line = getLine();
+            int charPosition = getCharPositionInLine();
+            int channel = Token.DEFAULT_CHANNEL;
+            if ( backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:49:7: ( 'eval' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:49:7: 'eval'
+            {
+            match("eval"); if (failed) return ;
+
+
+            }
+
+            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 44, T62_StartIndex); }
+        }
+    }
+    // $ANTLR end T62
+
+
+    // $ANTLR start T63
+    public void mT63() throws RecognitionException {
+        int T63_StartIndex = input.index();
+        try {
+            int type = T63;
+            int start = getCharIndex();
+            int line = getLine();
+            int charPosition = getCharPositionInLine();
+            int channel = Token.DEFAULT_CHANNEL;
+            if ( backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:50:7: ( '[' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:50:7: '['
+            {
+            match('['); if (failed) return ;
+
+            }
+
+            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 45, T63_StartIndex); }
+        }
+    }
+    // $ANTLR end T63
+
+
+    // $ANTLR start T64
+    public void mT64() throws RecognitionException {
+        int T64_StartIndex = input.index();
+        try {
+            int type = T64;
+            int start = getCharIndex();
+            int line = getLine();
+            int charPosition = getCharPositionInLine();
+            int channel = Token.DEFAULT_CHANNEL;
+            if ( backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:51:7: ( ']' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:51:7: ']'
+            {
+            match(']'); if (failed) return ;
+
+            }
+
+            if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 46, T64_StartIndex); }
+        }
+    }
+    // $ANTLR end T64
+
+
+    // $ANTLR start T65
+    public void mT65() throws RecognitionException {
+        int T65_StartIndex = input.index();
+        try {
+            int type = T65;
+            int start = getCharIndex();
+            int line = getLine();
+            int charPosition = getCharPositionInLine();
+            int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:52:7: ( 'use' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:52:7: 'use'
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:52:7: ( 'use' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:52:7: 'use'
             {
             match("use"); if (failed) return ;
 
@@ -1329,10 +1333,10 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 47, T61_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 47, T65_StartIndex); }
         }
     }
-    // $ANTLR end T61
+    // $ANTLR end T65
 
 
     // $ANTLR start MISC
@@ -1345,7 +1349,7 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
             int alt1=39;
             switch ( input.LA(1) ) {
             case '!':
@@ -1434,18 +1438,18 @@
                 break;
             case '=':
                 switch ( input.LA(2) ) {
+                case '-':
+                    alt1=34;
+                    break;
                 case '*':
                     alt1=36;
                     break;
+                case '+':
+                    alt1=32;
+                    break;
                 case '/':
                     alt1=38;
                     break;
-                case '-':
-                    alt1=34;
-                    break;
-                case '+':
-                    alt1=32;
-                    break;
                 case '=':
                     alt1=30;
                     break;
@@ -1480,12 +1484,12 @@
                 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 =
@@ -1512,168 +1516,168 @@
 
             switch (alt1) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:17: '!'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:17: '!'
                     {
                     match('!'); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:23: '@'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:23: '@'
                     {
                     match('@'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:29: '$'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:29: '$'
                     {
                     match('$'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:35: '%'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:35: '%'
                     {
                     match('%'); if (failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:41: '^'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:41: '^'
                     {
                     match('^'); if (failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:47: '&'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:47: '&'
                     {
                     match('&'); if (failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:53: '*'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:53: '*'
                     {
                     match('*'); if (failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:59: '_'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:59: '_'
                     {
                     match('_'); if (failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:65: '-'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:65: '-'
                     {
                     match('-'); if (failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:71: '+'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:71: '+'
                     {
                     match('+'); if (failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1053:78: '?'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1053:78: '?'
                     {
                     match('?'); if (failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:19: '|'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:19: '|'
                     {
                     match('|'); if (failed) return ;
 
                     }
                     break;
                 case 13 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:25: ','
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:25: ','
                     {
                     match(','); if (failed) return ;
 
                     }
                     break;
                 case 14 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:31: '{'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:31: '{'
                     {
                     match('{'); if (failed) return ;
 
                     }
                     break;
                 case 15 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:37: '}'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:37: '}'
                     {
                     match('}'); if (failed) return ;
 
                     }
                     break;
                 case 16 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:43: '['
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:43: '['
                     {
                     match('['); if (failed) return ;
 
                     }
                     break;
                 case 17 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:49: ']'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:49: ']'
                     {
                     match(']'); if (failed) return ;
 
                     }
                     break;
                 case 18 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:55: '='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:55: '='
                     {
                     match('='); if (failed) return ;
 
                     }
                     break;
                 case 19 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:61: '/'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:61: '/'
                     {
                     match('/'); if (failed) return ;
 
                     }
                     break;
                 case 20 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:67: '('
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:67: '('
                     {
                     match('('); if (failed) return ;
 
                     }
                     break;
                 case 21 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:73: ')'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:73: ')'
                     {
                     match(')'); if (failed) return ;
 
                     }
                     break;
                 case 22 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:79: '\''
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:79: '\''
                     {
                     match('\''); if (failed) return ;
 
                     }
                     break;
                 case 23 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1054:86: '\\'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1054:86: '\\'
                     {
                     match('\\'); if (failed) return ;
 
                     }
                     break;
                 case 24 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:19: '||'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:19: '||'
                     {
                     match("||"); if (failed) return ;
 
@@ -1681,7 +1685,7 @@
                     }
                     break;
                 case 25 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:26: '&&'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:26: '&&'
                     {
                     match("&&"); if (failed) return ;
 
@@ -1689,7 +1693,7 @@
                     }
                     break;
                 case 26 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:33: '<<<'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:33: '<<<'
                     {
                     match("<<<"); if (failed) return ;
 
@@ -1697,7 +1701,7 @@
                     }
                     break;
                 case 27 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:41: '++'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:41: '++'
                     {
                     match("++"); if (failed) return ;
 
@@ -1705,7 +1709,7 @@
                     }
                     break;
                 case 28 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:48: '--'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:48: '--'
                     {
                     match("--"); if (failed) return ;
 
@@ -1713,7 +1717,7 @@
                     }
                     break;
                 case 29 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:55: '>>>'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:55: '>>>'
                     {
                     match(">>>"); if (failed) return ;
 
@@ -1721,7 +1725,7 @@
                     }
                     break;
                 case 30 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:63: '=='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:63: '=='
                     {
                     match("=="); if (failed) return ;
 
@@ -1729,7 +1733,7 @@
                     }
                     break;
                 case 31 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:70: '+='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:70: '+='
                     {
                     match("+="); if (failed) return ;
 
@@ -1737,7 +1741,7 @@
                     }
                     break;
                 case 32 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:77: '=+'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:77: '=+'
                     {
                     match("=+"); if (failed) return ;
 
@@ -1745,7 +1749,7 @@
                     }
                     break;
                 case 33 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:84: '-='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:84: '-='
                     {
                     match("-="); if (failed) return ;
 
@@ -1753,7 +1757,7 @@
                     }
                     break;
                 case 34 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:91: '=-'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:91: '=-'
                     {
                     match("=-"); if (failed) return ;
 
@@ -1761,7 +1765,7 @@
                     }
                     break;
                 case 35 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:97: '*='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:97: '*='
                     {
                     match("*="); if (failed) return ;
 
@@ -1769,7 +1773,7 @@
                     }
                     break;
                 case 36 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:104: '=*'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1055:104: '=*'
                     {
                     match("=*"); if (failed) return ;
 
@@ -1777,7 +1781,7 @@
                     }
                     break;
                 case 37 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1056:19: '/='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1056:19: '/='
                     {
                     match("/="); if (failed) return ;
 
@@ -1785,7 +1789,7 @@
                     }
                     break;
                 case 38 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1056:26: '=/'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1056:26: '=/'
                     {
                     match("=/"); if (failed) return ;
 
@@ -1793,7 +1797,7 @@
                     }
                     break;
                 case 39 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1056:33: '>>='
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1056:33: '>>='
                     {
                     match(">>="); if (failed) return ;
 
@@ -1821,8 +1825,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1060:17: ( (' '|'\t'|'\f'))
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1060:17: (' '|'\t'|'\f')
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1060:17: ( (' '|'\t'|'\f'))
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1060:17: (' '|'\t'|'\f')
             {
             if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
                 input.consume();
@@ -1860,10 +1864,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 50) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
             if ( LA2_0=='\r' ) {
@@ -1886,7 +1890,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:25: ( '\r\n' )=> '\r\n'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:25: ( '\r\n' )=> '\r\n'
                     {
 
                     match("\r\n"); if (failed) return ;
@@ -1895,14 +1899,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1069:25: '\r'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1069:25: '\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1070:25: '\n'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1070:25: '\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -1933,10 +1937,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:17: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:17: ( '-' )? ( '0' .. '9' )+
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:17: ( ( '-' )? ( '0' .. '9' )+ )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:17: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:17: ( '-' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:17: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
             if ( LA3_0=='-' ) {
@@ -1954,7 +1958,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:18: '-'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -1963,7 +1967,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:23: ( '0' .. '9' )+
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:23: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -1976,7 +1980,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:24: '0' .. '9'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1075:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2015,10 +2019,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 52) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:17: ( '-' )?
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:17: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( LA5_0=='-' ) {
@@ -2036,7 +2040,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:18: '-'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -2045,7 +2049,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:23: ( '0' .. '9' )+
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:23: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -2058,7 +2062,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:24: '0' .. '9'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2076,7 +2080,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:39: ( '0' .. '9' )+
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:39: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -2089,7 +2093,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1079:40: '0' .. '9'
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1079:40: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2128,7 +2132,7 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:17: ( ( '"' ( options {greedy=false; } : . )* '"' ) | ( '\'' ( options {greedy=false; } : . )* '\'' ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:8: ( ( '"' ( EscapeSequence | ~ ('\\'|'"'))* '"' ) | ( '\'' ( EscapeSequence | ~ ('\\'|'\''))* '\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
             if ( LA10_0=='"' ) {
@@ -2140,40 +2144,57 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1082:1: STRING : ( ( \'\"\' ( options {greedy=false; } : . )* \'\"\' ) | ( \'\\\'\' ( options {greedy=false; } : . )* \'\\\'\' ) );", 10, 0, input);
+                    new NoViableAltException("1082:1: STRING : ( ( \'\"\' ( EscapeSequence | ~ (\'\\\\\'|\'\"\'))* \'\"\' ) | ( \'\\\'\' ( EscapeSequence | ~ (\'\\\\\'|\'\\\'\'))* \'\\\'\' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:17: ( '"' ( options {greedy=false; } : . )* '"' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:8: ( '"' ( EscapeSequence | ~ ('\\'|'"'))* '"' )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:17: ( '"' ( options {greedy=false; } : . )* '"' )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:18: '"' ( options {greedy=false; } : . )* '"'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:8: ( '"' ( EscapeSequence | ~ ('\\'|'"'))* '"' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:9: '"' ( EscapeSequence | ~ ('\\'|'"'))* '"'
                     {
                     match('"'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:22: ( options {greedy=false; } : . )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:13: ( EscapeSequence | ~ ('\\'|'"'))*
                     loop8:
                     do {
-                        int alt8=2;
+                        int alt8=3;
                         int LA8_0 = input.LA(1);
-                        if ( LA8_0=='"' ) {
+                        if ( LA8_0=='\\' ) {
+                            alt8=1;
+                        }
+                        else if ( (LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE') ) {
                             alt8=2;
                         }
-                        else if ( (LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='\uFFFE') ) {
-                            alt8=1;
-                        }
 
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:49: .
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:15: EscapeSequence
                     	    {
-                    	    matchAny(); if (failed) return ;
+                    	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
+                    	case 2 :
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1083:32: ~ ('\\'|'"')
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	        input.consume();
+                    	    failed=false;
+                    	    }
+                    	    else {
+                    	        if (backtracking>0) {failed=true; return ;}
+                    	        MismatchedSetException mse =
+                    	            new MismatchedSetException(null,input);
+                    	        recover(mse);    throw mse;
+                    	    }
 
+
+                    	    }
+                    	    break;
+
                     	default :
                     	    break loop8;
                         }
@@ -2187,34 +2208,51 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:8: ( '\'' ( EscapeSequence | ~ ('\\'|'\''))* '\'' )
                     {
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:62: '\'' ( options {greedy=false; } : . )* '\''
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:8: ( '\'' ( EscapeSequence | ~ ('\\'|'\''))* '\'' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:9: '\'' ( EscapeSequence | ~ ('\\'|'\''))* '\''
                     {
                     match('\''); if (failed) return ;
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:67: ( options {greedy=false; } : . )*
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:14: ( EscapeSequence | ~ ('\\'|'\''))*
                     loop9:
                     do {
-                        int alt9=2;
+                        int alt9=3;
                         int LA9_0 = input.LA(1);
-                        if ( LA9_0=='\'' ) {
+                        if ( LA9_0=='\\' ) {
+                            alt9=1;
+                        }
+                        else if ( (LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE') ) {
                             alt9=2;
                         }
-                        else if ( (LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='\uFFFE') ) {
-                            alt9=1;
-                        }
 
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1083:94: .
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:16: EscapeSequence
                     	    {
-                    	    matchAny(); if (failed) return ;
+                    	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
+                    	case 2 :
+                    	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1084:33: ~ ('\\'|'\'')
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	        input.consume();
+                    	    failed=false;
+                    	    }
+                    	    else {
+                    	        if (backtracking>0) {failed=true; return ;}
+                    	        MismatchedSetException mse =
+                    	            new MismatchedSetException(null,input);
+                    	        recover(mse);    throw mse;
+                    	    }
 
+
+                    	    }
+                    	    break;
+
                     	default :
                     	    break loop9;
                         }
@@ -2238,6 +2276,274 @@
     // $ANTLR end STRING
 
 
+    // $ANTLR start HexDigit
+    public void mHexDigit() throws RecognitionException {
+        int HexDigit_StartIndex = input.index();
+        try {
+            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1088:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1088:12: ('0'..'9'|'a'..'f'|'A'..'F')
+            {
+            if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+                input.consume();
+            failed=false;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 54, HexDigit_StartIndex); }
+        }
+    }
+    // $ANTLR end HexDigit
+
+
+    // $ANTLR start EscapeSequence
+    public void mEscapeSequence() throws RecognitionException {
+        int EscapeSequence_StartIndex = input.index();
+        try {
+            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1092:9: ( '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.') | UnicodeEscape | OctalEscape )
+            int alt11=3;
+            int LA11_0 = input.LA(1);
+            if ( LA11_0=='\\' ) {
+                switch ( input.LA(2) ) {
+                case 'u':
+                    alt11=2;
+                    break;
+                case '"':
+                case '\'':
+                case '.':
+                case '\\':
+                case 'b':
+                case 'f':
+                case 'n':
+                case 'r':
+                case 't':
+                    alt11=1;
+                    break;
+                case '0':
+                case '1':
+                case '2':
+                case '3':
+                case '4':
+                case '5':
+                case '6':
+                case '7':
+                    alt11=3;
+                    break;
+                default:
+                    if (backtracking>0) {failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("1090:1: fragment EscapeSequence : ( \'\\\\\' (\'b\'|\'t\'|\'n\'|\'f\'|\'r\'|\'\\\"\'|\'\\\'\'|\'\\\\\'|\'.\') | UnicodeEscape | OctalEscape );", 11, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1090:1: fragment EscapeSequence : ( \'\\\\\' (\'b\'|\'t\'|\'n\'|\'f\'|\'r\'|\'\\\"\'|\'\\\'\'|\'\\\\\'|\'.\') | UnicodeEscape | OctalEscape );", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1092:9: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.')
+                    {
+                    match('\\'); if (failed) return ;
+                    if ( input.LA(1)=='"'||input.LA(1)=='\''||input.LA(1)=='.'||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+                        input.consume();
+                    failed=false;
+                    }
+                    else {
+                        if (backtracking>0) {failed=true; return ;}
+                        MismatchedSetException mse =
+                            new MismatchedSetException(null,input);
+                        recover(mse);    throw mse;
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1093:9: UnicodeEscape
+                    {
+                    mUnicodeEscape(); if (failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1094:9: OctalEscape
+                    {
+                    mOctalEscape(); if (failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 55, EscapeSequence_StartIndex); }
+        }
+    }
+    // $ANTLR end EscapeSequence
+
+
+    // $ANTLR start OctalEscape
+    public void mOctalEscape() throws RecognitionException {
+        int OctalEscape_StartIndex = input.index();
+        try {
+            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:9: ( '\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\' ( '0' .. '7' ) )
+            int alt12=3;
+            int LA12_0 = input.LA(1);
+            if ( LA12_0=='\\' ) {
+                int LA12_1 = input.LA(2);
+                if ( (LA12_1>='0' && LA12_1<='3') ) {
+                    int LA12_2 = input.LA(3);
+                    if ( (LA12_2>='0' && LA12_2<='7') ) {
+                        int LA12_5 = input.LA(4);
+                        if ( (LA12_5>='0' && LA12_5<='7') ) {
+                            alt12=1;
+                        }
+                        else {
+                            alt12=2;}
+                    }
+                    else {
+                        alt12=3;}
+                }
+                else if ( (LA12_1>='4' && LA12_1<='7') ) {
+                    int LA12_3 = input.LA(3);
+                    if ( (LA12_3>='0' && LA12_3<='7') ) {
+                        alt12=2;
+                    }
+                    else {
+                        alt12=3;}
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("1097:1: fragment OctalEscape : ( \'\\\\\' ( \'0\' .. \'3\' ) ( \'0\' .. \'7\' ) ( \'0\' .. \'7\' ) | \'\\\\\' ( \'0\' .. \'7\' ) ( \'0\' .. \'7\' ) | \'\\\\\' ( \'0\' .. \'7\' ) );", 12, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1097:1: fragment OctalEscape : ( \'\\\\\' ( \'0\' .. \'3\' ) ( \'0\' .. \'7\' ) ( \'0\' .. \'7\' ) | \'\\\\\' ( \'0\' .. \'7\' ) ( \'0\' .. \'7\' ) | \'\\\\\' ( \'0\' .. \'7\' ) );", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:9: '\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:14: ( '0' .. '3' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:15: '0' .. '3'
+                    {
+                    matchRange('0','3'); if (failed) return ;
+
+                    }
+
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:25: ( '0' .. '7' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:36: ( '0' .. '7' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1099:37: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1100:9: '\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1100:14: ( '0' .. '7' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1100:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1100:25: ( '0' .. '7' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1100:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1101:9: '\\' ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1101:14: ( '0' .. '7' )
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1101:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 56, OctalEscape_StartIndex); }
+        }
+    }
+    // $ANTLR end OctalEscape
+
+
+    // $ANTLR start UnicodeEscape
+    public void mUnicodeEscape() throws RecognitionException {
+        int UnicodeEscape_StartIndex = input.index();
+        try {
+            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1106:9: ( '\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1106:9: '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            {
+            match('\\'); if (failed) return ;
+            match('u'); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+
+            }
+
+        }
+        finally {
+            if ( backtracking>0 ) { memoize(input, 57, UnicodeEscape_StartIndex); }
+        }
+    }
+    // $ANTLR end UnicodeEscape
+
+
     // $ANTLR start BOOL
     public void mBOOL() throws RecognitionException {
         int BOOL_StartIndex = input.index();
@@ -2247,29 +2553,29 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1087:17: ( ( 'true' | 'false' ) )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1087:17: ( 'true' | 'false' )
+            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1110:17: ( ( 'true' | 'false' ) )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1110:17: ( 'true' | 'false' )
             {
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1087:17: ( 'true' | 'false' )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
-            if ( LA11_0=='t' ) {
-                alt11=1;
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1110:17: ( 'true' | 'false' )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+            if ( LA13_0=='t' ) {
+                alt13=1;
             }
-            else if ( LA11_0=='f' ) {
-                alt11=2;
+            else if ( LA13_0=='f' ) {
+                alt13=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1087:17: ( \'true\' | \'false\' )", 11, 0, input);
+                    new NoViableAltException("1110:17: ( \'true\' | \'false\' )", 13, 0, input);
 
                 throw nvae;
             }
-            switch (alt11) {
+            switch (alt13) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1087:18: 'true'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1110:18: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -2277,7 +2583,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1087:25: 'false'
+                    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1110:25: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -2293,7 +2599,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 54, BOOL_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 58, BOOL_StartIndex); }
         }
     }
     // $ANTLR end BOOL
@@ -2308,9 +2614,9 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1091:17: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))* )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1091:17: ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1114:17: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))* )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1114: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();
@@ -2323,19 +2629,19 @@
                 recover(mse);    throw mse;
             }
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1091:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
-            loop12:
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1114:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            loop14:
             do {
-                int alt12=2;
-                int LA12_0 = input.LA(1);
-                if ( (LA12_0>='0' && LA12_0<='9')||(LA12_0>='A' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='z')||(LA12_0>='\u00C0' && LA12_0<='\u00FF') ) {
-                    alt12=1;
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+                if ( (LA14_0>='0' && LA14_0<='9')||(LA14_0>='A' && LA14_0<='Z')||LA14_0=='_'||(LA14_0>='a' && LA14_0<='z')||(LA14_0>='\u00C0' && LA14_0<='\u00FF') ) {
+                    alt14=1;
                 }
 
 
-                switch (alt12) {
+                switch (alt14) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1091:66: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1114: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();
@@ -2353,7 +2659,7 @@
             	    break;
 
             	default :
-            	    break loop12;
+            	    break loop14;
                 }
             } while (true);
 
@@ -2363,7 +2669,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 55, ID_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 59, ID_StartIndex); }
         }
     }
     // $ANTLR end ID
@@ -2378,30 +2684,30 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1096:17: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1096:17: '#' ( options {greedy=false; } : . )* EOL
+            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1119:17: ( '#' ( options {greedy=false; } : . )* EOL )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1119:17: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1096:21: ( options {greedy=false; } : . )*
-            loop13:
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1119:21: ( options {greedy=false; } : . )*
+            loop15:
             do {
-                int alt13=2;
-                int LA13_0 = input.LA(1);
-                if ( LA13_0=='\r' ) {
-                    alt13=2;
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+                if ( LA15_0=='\r' ) {
+                    alt15=2;
                 }
-                else if ( LA13_0=='\n' ) {
-                    alt13=2;
+                else if ( LA15_0=='\n' ) {
+                    alt15=2;
                 }
-                else if ( (LA13_0>='\u0000' && LA13_0<='\t')||(LA13_0>='\u000B' && LA13_0<='\f')||(LA13_0>='\u000E' && LA13_0<='\uFFFE') ) {
-                    alt13=1;
+                else if ( (LA15_0>='\u0000' && LA15_0<='\t')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\uFFFE') ) {
+                    alt15=1;
                 }
 
 
-                switch (alt13) {
+                switch (alt15) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1096:48: .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1119:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2409,7 +2715,7 @@
             	    break;
 
             	default :
-            	    break loop13;
+            	    break loop15;
                 }
             } while (true);
 
@@ -2423,7 +2729,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 56, SH_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 60, SH_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end SH_STYLE_SINGLE_LINE_COMMENT
@@ -2438,31 +2744,31 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1102:17: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1102:17: '//' ( options {greedy=false; } : . )* EOL
+            if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1125:17: ( '//' ( options {greedy=false; } : . )* EOL )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1125:17: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1102:22: ( options {greedy=false; } : . )*
-            loop14:
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1125:22: ( options {greedy=false; } : . )*
+            loop16:
             do {
-                int alt14=2;
-                int LA14_0 = input.LA(1);
-                if ( LA14_0=='\r' ) {
-                    alt14=2;
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+                if ( LA16_0=='\r' ) {
+                    alt16=2;
                 }
-                else if ( LA14_0=='\n' ) {
-                    alt14=2;
+                else if ( LA16_0=='\n' ) {
+                    alt16=2;
                 }
-                else if ( (LA14_0>='\u0000' && LA14_0<='\t')||(LA14_0>='\u000B' && LA14_0<='\f')||(LA14_0>='\u000E' && LA14_0<='\uFFFE') ) {
-                    alt14=1;
+                else if ( (LA16_0>='\u0000' && LA16_0<='\t')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\uFFFE') ) {
+                    alt16=1;
                 }
 
 
-                switch (alt14) {
+                switch (alt16) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1102:49: .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1125:49: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2470,7 +2776,7 @@
             	    break;
 
             	default :
-            	    break loop14;
+            	    break loop16;
                 }
             } while (true);
 
@@ -2484,7 +2790,7 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 57, C_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 61, C_STYLE_SINGLE_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end C_STYLE_SINGLE_LINE_COMMENT
@@ -2499,36 +2805,36 @@
             int line = getLine();
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
-            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1107:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1107:17: '/*' ( options {greedy=false; } : . )* '*/'
+            if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1130:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1130:17: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1107:22: ( options {greedy=false; } : . )*
-            loop15:
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1130:22: ( options {greedy=false; } : . )*
+            loop17:
             do {
-                int alt15=2;
-                int LA15_0 = input.LA(1);
-                if ( LA15_0=='*' ) {
-                    int LA15_1 = input.LA(2);
-                    if ( LA15_1=='/' ) {
-                        alt15=2;
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+                if ( LA17_0=='*' ) {
+                    int LA17_1 = input.LA(2);
+                    if ( LA17_1=='/' ) {
+                        alt17=2;
                     }
-                    else if ( (LA15_1>='\u0000' && LA15_1<='.')||(LA15_1>='0' && LA15_1<='\uFFFE') ) {
-                        alt15=1;
+                    else if ( (LA17_1>='\u0000' && LA17_1<='.')||(LA17_1>='0' && LA17_1<='\uFFFE') ) {
+                        alt17=1;
                     }
 
 
                 }
-                else if ( (LA15_0>='\u0000' && LA15_0<=')')||(LA15_0>='+' && LA15_0<='\uFFFE') ) {
-                    alt15=1;
+                else if ( (LA17_0>='\u0000' && LA17_0<=')')||(LA17_0>='+' && LA17_0<='\uFFFE') ) {
+                    alt17=1;
                 }
 
 
-                switch (alt15) {
+                switch (alt17) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1107:48: .
+            	    // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1130:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2536,7 +2842,7 @@
             	    break;
 
             	default :
-            	    break loop15;
+            	    break loop17;
                 }
             } while (true);
 
@@ -2551,417 +2857,417 @@
             if ( token==null ) {emit(type,line,charPosition,channel,start,getCharIndex()-1);}
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 58, MULTI_LINE_COMMENT_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 62, MULTI_LINE_COMMENT_StartIndex); }
         }
     }
     // $ANTLR end MULTI_LINE_COMMENT
 
     public void mTokens() throws RecognitionException {
-        // /home/michael/projects/jboss-rules-3.0.x/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 | MISC | WS | EOL | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT )
-        int alt16=58;
-        alt16 = dfa16.predict(input); if (failed) return ;
-        switch (alt16) {
+        // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:10: ( 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 | MISC | WS | EOL | INT | FLOAT | STRING | BOOL | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT )
+        int alt18=58;
+        alt18 = dfa18.predict(input); if (failed) return ;
+        switch (alt18) {
             case 1 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:10: T15
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:10: T19
                 {
-                mT15(); if (failed) return ;
+                mT19(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:14: T16
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:14: T20
                 {
-                mT16(); if (failed) return ;
+                mT20(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:18: T17
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:18: T21
                 {
-                mT17(); if (failed) return ;
+                mT21(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:22: T18
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:22: T22
                 {
-                mT18(); if (failed) return ;
+                mT22(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:26: T19
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:26: T23
                 {
-                mT19(); if (failed) return ;
+                mT23(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:30: T20
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:30: T24
                 {
-                mT20(); if (failed) return ;
+                mT24(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:34: T21
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:34: T25
                 {
-                mT21(); if (failed) return ;
+                mT25(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:38: T22
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:38: T26
                 {
-                mT22(); if (failed) return ;
+                mT26(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:42: T23
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:42: T27
                 {
-                mT23(); if (failed) return ;
+                mT27(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:46: T24
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:46: T28
                 {
-                mT24(); if (failed) return ;
+                mT28(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:50: T25
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:50: T29
                 {
-                mT25(); if (failed) return ;
+                mT29(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:54: T26
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:54: T30
                 {
-                mT26(); if (failed) return ;
+                mT30(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:58: T27
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:58: T31
                 {
-                mT27(); if (failed) return ;
+                mT31(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:62: T28
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:62: T32
                 {
-                mT28(); if (failed) return ;
+                mT32(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:66: T29
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:66: T33
                 {
-                mT29(); if (failed) return ;
+                mT33(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:70: T30
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:70: T34
                 {
-                mT30(); if (failed) return ;
+                mT34(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:74: T31
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:74: T35
                 {
-                mT31(); if (failed) return ;
+                mT35(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:78: T32
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:78: T36
                 {
-                mT32(); if (failed) return ;
+                mT36(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:82: T33
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:82: T37
                 {
-                mT33(); if (failed) return ;
+                mT37(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:86: T34
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:86: T38
                 {
-                mT34(); if (failed) return ;
+                mT38(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:90: T35
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:90: T39
                 {
-                mT35(); if (failed) return ;
+                mT39(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:94: T36
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:94: T40
                 {
-                mT36(); if (failed) return ;
+                mT40(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:98: T37
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:98: T41
                 {
-                mT37(); if (failed) return ;
+                mT41(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:102: T38
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:102: T42
                 {
-                mT38(); if (failed) return ;
+                mT42(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:106: T39
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:106: T43
                 {
-                mT39(); if (failed) return ;
+                mT43(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:110: T40
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:110: T44
                 {
-                mT40(); if (failed) return ;
+                mT44(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:114: T41
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:114: T45
                 {
-                mT41(); if (failed) return ;
+                mT45(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:118: T42
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:118: T46
                 {
-                mT42(); if (failed) return ;
+                mT46(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:122: T43
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:122: T47
                 {
-                mT43(); if (failed) return ;
+                mT47(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:126: T44
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:126: T48
                 {
-                mT44(); if (failed) return ;
+                mT48(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:130: T45
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:130: T49
                 {
-                mT45(); if (failed) return ;
+                mT49(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:134: T46
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:134: T50
                 {
-                mT46(); if (failed) return ;
+                mT50(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:138: T47
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:138: T51
                 {
-                mT47(); if (failed) return ;
+                mT51(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:142: T48
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:142: T52
                 {
-                mT48(); if (failed) return ;
+                mT52(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:146: T49
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:146: T53
                 {
-                mT49(); if (failed) return ;
+                mT53(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:150: T50
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:150: T54
                 {
-                mT50(); if (failed) return ;
+                mT54(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:154: T51
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:154: T55
                 {
-                mT51(); if (failed) return ;
+                mT55(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:158: T52
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:158: T56
                 {
-                mT52(); if (failed) return ;
+                mT56(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:162: T53
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:162: T57
                 {
-                mT53(); if (failed) return ;
+                mT57(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:166: T54
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:166: T58
                 {
-                mT54(); if (failed) return ;
+                mT58(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:170: T55
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:170: T59
                 {
-                mT55(); if (failed) return ;
+                mT59(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:174: T56
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:174: T60
                 {
-                mT56(); if (failed) return ;
+                mT60(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:178: T57
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:178: T61
                 {
-                mT57(); if (failed) return ;
+                mT61(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:182: T58
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:182: T62
                 {
-                mT58(); if (failed) return ;
+                mT62(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:186: T59
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:186: T63
                 {
-                mT59(); if (failed) return ;
+                mT63(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:190: T60
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:190: T64
                 {
-                mT60(); if (failed) return ;
+                mT64(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:194: T61
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:194: T65
                 {
-                mT61(); if (failed) return ;
+                mT65(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:198: MISC
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:198: MISC
                 {
                 mMISC(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:203: WS
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:203: WS
                 {
                 mWS(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:206: EOL
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:206: EOL
                 {
                 mEOL(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:210: INT
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:210: INT
                 {
                 mINT(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:214: FLOAT
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:214: FLOAT
                 {
                 mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:220: STRING
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:220: STRING
                 {
                 mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:227: BOOL
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:227: BOOL
                 {
                 mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:232: ID
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:232: ID
                 {
                 mID(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:235: SH_STYLE_SINGLE_LINE_COMMENT
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:235: SH_STYLE_SINGLE_LINE_COMMENT
                 {
                 mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:264: C_STYLE_SINGLE_LINE_COMMENT
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:264: C_STYLE_SINGLE_LINE_COMMENT
                 {
                 mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1:292: MULTI_LINE_COMMENT
+                // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1:292: MULTI_LINE_COMMENT
                 {
                 mMULTI_LINE_COMMENT(); if (failed) return ;
 
@@ -2977,9 +3283,9 @@
     public void mSynpred1_fragment() throws RecognitionException {
         int Synpred1_fragment_StartIndex = input.index();
         try {
-            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:25: ( '\r\n' )
-            // /home/michael/projects/jboss-rules-3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:27: '\r\n'
+            if ( backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:25: ( '\r\n' )
+            // D:\workspace\jboss\jbrules-3.0.x\drools-compiler\src\main\resources\org\drools\lang\drl.g:1068:27: '\r\n'
             {
             match("\r\n"); if (failed) return ;
 
@@ -2988,7 +3294,7 @@
 
         }
         finally {
-            if ( backtracking>0 ) { memoize(input, 60, Synpred1_fragment_StartIndex); }
+            if ( backtracking>0 ) { memoize(input, 64, Synpred1_fragment_StartIndex); }
         }
     }
     // $ANTLR end Synpred1_fragment
@@ -2999,115 +3305,115 @@
     Synpred1Ptr Synpred1 = new Synpred1Ptr();
 
 
-    protected DFA16 dfa16 = new DFA16();
-    class DFA16 extends DFA {
+    protected DFA18 dfa18 = new DFA18();
+    class DFA18 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
         DFA.State s1 = new DFA.State() {{alt=1;}};
-        DFA.State s467 = new DFA.State() {{alt=2;}};
+        DFA.State s468 = new DFA.State() {{alt=2;}};
         DFA.State s51 = new DFA.State() {{alt=55;}};
-        DFA.State s428 = new DFA.State() {
+        DFA.State s429 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_428 = input.LA(1);
-                if ( (LA16_428>='0' && LA16_428<='9')||(LA16_428>='A' && LA16_428<='Z')||LA16_428=='_'||(LA16_428>='a' && LA16_428<='z')||(LA16_428>='\u00C0' && LA16_428<='\u00FF') ) {return s51;}
-                return s467;
+                int LA18_429 = input.LA(1);
+                if ( (LA18_429>='0' && LA18_429<='9')||(LA18_429>='A' && LA18_429<='Z')||LA18_429=='_'||(LA18_429>='a' && LA18_429<='z')||(LA18_429>='\u00C0' && LA18_429<='\u00FF') ) {return s51;}
+                return s468;
 
             }
         };
-        DFA.State s382 = new DFA.State() {
+        DFA.State s383 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_382 = input.LA(1);
-                if ( LA16_382=='e' ) {return s428;}
+                int LA18_383 = input.LA(1);
+                if ( LA18_383=='e' ) {return s429;}
                 return s51;
 
             }
         };
-        DFA.State s319 = new DFA.State() {
+        DFA.State s320 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_319 = input.LA(1);
-                if ( LA16_319=='g' ) {return s382;}
+                int LA18_320 = input.LA(1);
+                if ( LA18_320=='g' ) {return s383;}
                 return s51;
 
             }
         };
-        DFA.State s242 = new DFA.State() {
+        DFA.State s243 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_242 = input.LA(1);
-                if ( LA16_242=='a' ) {return s319;}
+                int LA18_243 = input.LA(1);
+                if ( LA18_243=='a' ) {return s320;}
                 return s51;
 
             }
         };
-        DFA.State s159 = new DFA.State() {
+        DFA.State s160 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_159 = input.LA(1);
-                if ( LA16_159=='k' ) {return s242;}
+                int LA18_160 = input.LA(1);
+                if ( LA18_160=='k' ) {return s243;}
                 return s51;
 
             }
         };
         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 s159;}
+                int LA18_53 = input.LA(1);
+                if ( LA18_53=='c' ) {return s160;}
                 return s51;
 
             }
         };
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_2 = input.LA(1);
-                if ( LA16_2=='a' ) {return s53;}
+                int LA18_2 = input.LA(1);
+                if ( LA18_2=='a' ) {return s53;}
                 return s51;
 
             }
         };
-        DFA.State s431 = new DFA.State() {{alt=3;}};
-        DFA.State s385 = new DFA.State() {
+        DFA.State s432 = new DFA.State() {{alt=3;}};
+        DFA.State s386 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_385 = input.LA(1);
-                if ( (LA16_385>='0' && LA16_385<='9')||(LA16_385>='A' && LA16_385<='Z')||LA16_385=='_'||(LA16_385>='a' && LA16_385<='z')||(LA16_385>='\u00C0' && LA16_385<='\u00FF') ) {return s51;}
-                return s431;
+                int LA18_386 = input.LA(1);
+                if ( (LA18_386>='0' && LA18_386<='9')||(LA18_386>='A' && LA18_386<='Z')||LA18_386=='_'||(LA18_386>='a' && LA18_386<='z')||(LA18_386>='\u00C0' && LA18_386<='\u00FF') ) {return s51;}
+                return s432;
 
             }
         };
-        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 s385;}
+                int LA18_323 = input.LA(1);
+                if ( LA18_323=='t' ) {return s386;}
                 return s51;
 
             }
         };
-        DFA.State s245 = new DFA.State() {
+        DFA.State s246 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_245 = input.LA(1);
-                if ( LA16_245=='r' ) {return s322;}
+                int LA18_246 = input.LA(1);
+                if ( LA18_246=='r' ) {return s323;}
                 return s51;
 
             }
         };
-        DFA.State s162 = new DFA.State() {
+        DFA.State s163 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_162 = input.LA(1);
-                if ( LA16_162=='o' ) {return s245;}
+                int LA18_163 = input.LA(1);
+                if ( LA18_163=='o' ) {return s246;}
                 return s51;
 
             }
         };
         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 s162;}
+                int LA18_56 = input.LA(1);
+                if ( LA18_56=='p' ) {return s163;}
                 return s51;
 
             }
         };
         DFA.State s3 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_3 = input.LA(1);
-                if ( LA16_3=='m' ) {return s56;}
+                int LA18_3 = input.LA(1);
+                if ( LA18_3=='m' ) {return s56;}
                 return s51;
 
             }
@@ -3116,156 +3422,156 @@
         DFA.State s60 = new DFA.State() {{alt=4;}};
         DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_4 = input.LA(1);
-                if ( LA16_4=='*' ) {return s59;}
+                int LA18_4 = input.LA(1);
+                if ( LA18_4=='*' ) {return s59;}
                 return s60;
 
             }
         };
-        DFA.State s248 = new DFA.State() {{alt=15;}};
-        DFA.State s165 = new DFA.State() {
+        DFA.State s249 = new DFA.State() {{alt=15;}};
+        DFA.State s166 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_165 = input.LA(1);
-                if ( (LA16_165>='0' && LA16_165<='9')||(LA16_165>='A' && LA16_165<='Z')||LA16_165=='_'||(LA16_165>='a' && LA16_165<='z')||(LA16_165>='\u00C0' && LA16_165<='\u00FF') ) {return s51;}
-                return s248;
+                int LA18_166 = input.LA(1);
+                if ( (LA18_166>='0' && LA18_166<='9')||(LA18_166>='A' && LA18_166<='Z')||LA18_166=='_'||(LA18_166>='a' && LA18_166<='z')||(LA18_166>='\u00C0' && LA18_166<='\u00FF') ) {return s51;}
+                return s249;
 
             }
         };
         DFA.State s61 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_61 = input.LA(1);
-                if ( LA16_61=='d' ) {return s165;}
+                int LA18_61 = input.LA(1);
+                if ( LA18_61=='d' ) {return s166;}
                 return s51;
 
             }
         };
-        DFA.State s495 = new DFA.State() {{alt=6;}};
-        DFA.State s469 = new DFA.State() {
+        DFA.State s434 = new DFA.State() {{alt=42;}};
+        DFA.State s389 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_469 = input.LA(1);
-                if ( (LA16_469>='0' && LA16_469<='9')||(LA16_469>='A' && LA16_469<='Z')||LA16_469=='_'||(LA16_469>='a' && LA16_469<='z')||(LA16_469>='\u00C0' && LA16_469<='\u00FF') ) {return s51;}
-                return s495;
+                int LA18_389 = input.LA(1);
+                if ( (LA18_389>='0' && LA18_389<='9')||(LA18_389>='A' && LA18_389<='Z')||LA18_389=='_'||(LA18_389>='a' && LA18_389<='z')||(LA18_389>='\u00C0' && LA18_389<='\u00FF') ) {return s51;}
+                return s434;
 
             }
         };
-        DFA.State s433 = new DFA.State() {
+        DFA.State s326 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_433 = input.LA(1);
-                if ( LA16_433=='r' ) {return s469;}
+                int LA18_326 = input.LA(1);
+                if ( LA18_326=='s' ) {return s389;}
                 return s51;
 
             }
         };
-        DFA.State s388 = new DFA.State() {
+        DFA.State s251 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_388 = input.LA(1);
-                if ( LA16_388=='e' ) {return s433;}
+                int LA18_251 = input.LA(1);
+                if ( LA18_251=='t' ) {return s326;}
                 return s51;
 
             }
         };
-        DFA.State s325 = new DFA.State() {
+        DFA.State s169 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_325 = input.LA(1);
-                if ( LA16_325=='d' ) {return s388;}
+                int LA18_169 = input.LA(1);
+                if ( LA18_169=='s' ) {return s251;}
                 return s51;
 
             }
         };
-        DFA.State s250 = new DFA.State() {
+        DFA.State s496 = new DFA.State() {{alt=6;}};
+        DFA.State s470 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_250 = input.LA(1);
-                if ( LA16_250=='n' ) {return s325;}
-                return s51;
+                int LA18_470 = input.LA(1);
+                if ( (LA18_470>='0' && LA18_470<='9')||(LA18_470>='A' && LA18_470<='Z')||LA18_470=='_'||(LA18_470>='a' && LA18_470<='z')||(LA18_470>='\u00C0' && LA18_470<='\u00FF') ) {return s51;}
+                return s496;
 
             }
         };
-        DFA.State s168 = new DFA.State() {
+        DFA.State s436 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_168 = input.LA(1);
-                if ( LA16_168=='a' ) {return s250;}
+                int LA18_436 = input.LA(1);
+                if ( LA18_436=='r' ) {return s470;}
                 return s51;
 
             }
         };
-        DFA.State s436 = new DFA.State() {{alt=42;}};
-        DFA.State s391 = new DFA.State() {
+        DFA.State s392 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_391 = input.LA(1);
-                if ( (LA16_391>='0' && LA16_391<='9')||(LA16_391>='A' && LA16_391<='Z')||LA16_391=='_'||(LA16_391>='a' && LA16_391<='z')||(LA16_391>='\u00C0' && LA16_391<='\u00FF') ) {return s51;}
-                return s436;
+                int LA18_392 = input.LA(1);
+                if ( LA18_392=='e' ) {return s436;}
+                return s51;
 
             }
         };
-        DFA.State s328 = new DFA.State() {
+        DFA.State s329 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_328 = input.LA(1);
-                if ( LA16_328=='s' ) {return s391;}
+                int LA18_329 = input.LA(1);
+                if ( LA18_329=='d' ) {return s392;}
                 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=='t' ) {return s328;}
+                int LA18_254 = input.LA(1);
+                if ( LA18_254=='n' ) {return s329;}
                 return s51;
 
             }
         };
-        DFA.State s169 = new DFA.State() {
+        DFA.State s170 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_169 = input.LA(1);
-                if ( LA16_169=='s' ) {return s253;}
+                int LA18_170 = input.LA(1);
+                if ( LA18_170=='a' ) {return s254;}
                 return s51;
 
             }
         };
-        DFA.State s497 = new DFA.State() {{alt=37;}};
-        DFA.State s472 = new DFA.State() {
+        DFA.State s498 = new DFA.State() {{alt=37;}};
+        DFA.State s473 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_472 = input.LA(1);
-                if ( (LA16_472>='0' && LA16_472<='9')||(LA16_472>='A' && LA16_472<='Z')||LA16_472=='_'||(LA16_472>='a' && LA16_472<='z')||(LA16_472>='\u00C0' && LA16_472<='\u00FF') ) {return s51;}
-                return s497;
+                int LA18_473 = input.LA(1);
+                if ( (LA18_473>='0' && LA18_473<='9')||(LA18_473>='A' && LA18_473<='Z')||LA18_473=='_'||(LA18_473>='a' && LA18_473<='z')||(LA18_473>='\u00C0' && LA18_473<='\u00FF') ) {return s51;}
+                return s498;
 
             }
         };
-        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=='s' ) {return s472;}
+                int LA18_439 = input.LA(1);
+                if ( LA18_439=='s' ) {return s473;}
                 return s51;
 
             }
         };
-        DFA.State s394 = new DFA.State() {
+        DFA.State s395 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_394 = input.LA(1);
-                if ( LA16_394=='e' ) {return s438;}
+                int LA18_395 = input.LA(1);
+                if ( LA18_395=='e' ) {return s439;}
                 return s51;
 
             }
         };
-        DFA.State s331 = new DFA.State() {
+        DFA.State s332 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_331 = input.LA(1);
-                if ( LA16_331=='d' ) {return s394;}
+                int LA18_332 = input.LA(1);
+                if ( LA18_332=='d' ) {return s395;}
                 return s51;
 
             }
         };
-        DFA.State s256 = new DFA.State() {
+        DFA.State s257 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_256 = input.LA(1);
-                if ( LA16_256=='u' ) {return s331;}
+                int LA18_257 = input.LA(1);
+                if ( LA18_257=='u' ) {return s332;}
                 return s51;
 
             }
         };
-        DFA.State s170 = new DFA.State() {
+        DFA.State s171 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_170 = input.LA(1);
-                if ( LA16_170=='l' ) {return s256;}
+                int LA18_171 = input.LA(1);
+                if ( LA18_171=='l' ) {return s257;}
                 return s51;
 
             }
@@ -3273,41 +3579,41 @@
         DFA.State s62 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 'p':
-                    return s168;
-
                 case 'i':
                     return s169;
 
-                case 'c':
+                case 'p':
                     return s170;
 
+                case 'c':
+                    return s171;
+
                 default:
                     return s51;
         	        }
             }
         };
-        DFA.State s334 = new DFA.State() {{alt=44;}};
-        DFA.State s259 = new DFA.State() {
+        DFA.State s335 = new DFA.State() {{alt=44;}};
+        DFA.State s260 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_259 = input.LA(1);
-                if ( (LA16_259>='0' && LA16_259<='9')||(LA16_259>='A' && LA16_259<='Z')||LA16_259=='_'||(LA16_259>='a' && LA16_259<='z')||(LA16_259>='\u00C0' && LA16_259<='\u00FF') ) {return s51;}
-                return s334;
+                int LA18_260 = input.LA(1);
+                if ( (LA18_260>='0' && LA18_260<='9')||(LA18_260>='A' && LA18_260<='Z')||LA18_260=='_'||(LA18_260>='a' && LA18_260<='z')||(LA18_260>='\u00C0' && LA18_260<='\u00FF') ) {return s51;}
+                return s335;
 
             }
         };
-        DFA.State s173 = new DFA.State() {
+        DFA.State s174 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_173 = input.LA(1);
-                if ( LA16_173=='l' ) {return s259;}
+                int LA18_174 = input.LA(1);
+                if ( LA18_174=='l' ) {return s260;}
                 return s51;
 
             }
         };
         DFA.State s63 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_63 = input.LA(1);
-                if ( LA16_63=='a' ) {return s173;}
+                int LA18_63 = input.LA(1);
+                if ( LA18_63=='a' ) {return s174;}
                 return s51;
 
             }
@@ -3329,141 +3635,141 @@
         	        }
             }
         };
-        DFA.State s441 = new DFA.State() {{alt=7;}};
-        DFA.State s397 = new DFA.State() {
+        DFA.State s442 = new DFA.State() {{alt=7;}};
+        DFA.State s398 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_397 = input.LA(1);
-                if ( (LA16_397>='0' && LA16_397<='9')||(LA16_397>='A' && LA16_397<='Z')||LA16_397=='_'||(LA16_397>='a' && LA16_397<='z')||(LA16_397>='\u00C0' && LA16_397<='\u00FF') ) {return s51;}
-                return s441;
+                int LA18_398 = input.LA(1);
+                if ( (LA18_398>='0' && LA18_398<='9')||(LA18_398>='A' && LA18_398<='Z')||LA18_398=='_'||(LA18_398>='a' && LA18_398<='z')||(LA18_398>='\u00C0' && LA18_398<='\u00FF') ) {return s51;}
+                return s442;
 
             }
         };
-        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=='l' ) {return s397;}
+                int LA18_337 = input.LA(1);
+                if ( LA18_337=='l' ) {return s398;}
                 return s51;
 
             }
         };
-        DFA.State s262 = new DFA.State() {
+        DFA.State s263 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_262 = input.LA(1);
-                if ( LA16_262=='a' ) {return s336;}
+                int LA18_263 = input.LA(1);
+                if ( LA18_263=='a' ) {return s337;}
                 return s51;
 
             }
         };
-        DFA.State s176 = new DFA.State() {
+        DFA.State s177 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_176 = input.LA(1);
-                if ( LA16_176=='b' ) {return s262;}
+                int LA18_177 = input.LA(1);
+                if ( LA18_177=='b' ) {return s263;}
                 return s51;
 
             }
         };
         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 s176;}
+                int LA18_66 = input.LA(1);
+                if ( LA18_66=='o' ) {return s177;}
                 return s51;
 
             }
         };
         DFA.State s6 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_6 = input.LA(1);
-                if ( LA16_6=='l' ) {return s66;}
+                int LA18_6 = input.LA(1);
+                if ( LA18_6=='l' ) {return s66;}
                 return s51;
 
             }
         };
-        DFA.State s499 = new DFA.State() {{alt=8;}};
-        DFA.State s475 = new DFA.State() {
+        DFA.State s500 = new DFA.State() {{alt=8;}};
+        DFA.State s476 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_475 = input.LA(1);
-                if ( (LA16_475>='0' && LA16_475<='9')||(LA16_475>='A' && LA16_475<='Z')||LA16_475=='_'||(LA16_475>='a' && LA16_475<='z')||(LA16_475>='\u00C0' && LA16_475<='\u00FF') ) {return s51;}
-                return s499;
+                int LA18_476 = input.LA(1);
+                if ( (LA18_476>='0' && LA18_476<='9')||(LA18_476>='A' && LA18_476<='Z')||LA18_476=='_'||(LA18_476>='a' && LA18_476<='z')||(LA18_476>='\u00C0' && LA18_476<='\u00FF') ) {return s51;}
+                return s500;
 
             }
         };
-        DFA.State s443 = new DFA.State() {
+        DFA.State s444 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_443 = input.LA(1);
-                if ( LA16_443=='n' ) {return s475;}
+                int LA18_444 = input.LA(1);
+                if ( LA18_444=='n' ) {return s476;}
                 return s51;
 
             }
         };
-        DFA.State s400 = new DFA.State() {
+        DFA.State s401 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_400 = input.LA(1);
-                if ( LA16_400=='o' ) {return s443;}
+                int LA18_401 = input.LA(1);
+                if ( LA18_401=='o' ) {return s444;}
                 return s51;
 
             }
         };
-        DFA.State s339 = new DFA.State() {
+        DFA.State s340 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_339 = input.LA(1);
-                if ( LA16_339=='i' ) {return s400;}
+                int LA18_340 = input.LA(1);
+                if ( LA18_340=='i' ) {return s401;}
                 return s51;
 
             }
         };
-        DFA.State s265 = new DFA.State() {
+        DFA.State s266 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_265 = input.LA(1);
-                if ( LA16_265=='t' ) {return s339;}
+                int LA18_266 = input.LA(1);
+                if ( LA18_266=='t' ) {return s340;}
                 return s51;
 
             }
         };
-        DFA.State s179 = new DFA.State() {
+        DFA.State s180 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_179 = input.LA(1);
-                if ( LA16_179=='c' ) {return s265;}
+                int LA18_180 = input.LA(1);
+                if ( LA18_180=='c' ) {return s266;}
                 return s51;
 
             }
         };
         DFA.State s69 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_69 = input.LA(1);
-                if ( LA16_69=='n' ) {return s179;}
+                int LA18_69 = input.LA(1);
+                if ( LA18_69=='n' ) {return s180;}
                 return s51;
 
             }
         };
-        DFA.State s352 = new DFA.State() {{alt=54;}};
-        DFA.State s342 = new DFA.State() {
+        DFA.State s353 = new DFA.State() {{alt=54;}};
+        DFA.State s343 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_342 = input.LA(1);
-                if ( (LA16_342>='0' && LA16_342<='9')||(LA16_342>='A' && LA16_342<='Z')||LA16_342=='_'||(LA16_342>='a' && LA16_342<='z')||(LA16_342>='\u00C0' && LA16_342<='\u00FF') ) {return s51;}
-                return s352;
+                int LA18_343 = input.LA(1);
+                if ( (LA18_343>='0' && LA18_343<='9')||(LA18_343>='A' && LA18_343<='Z')||LA18_343=='_'||(LA18_343>='a' && LA18_343<='z')||(LA18_343>='\u00C0' && LA18_343<='\u00FF') ) {return s51;}
+                return s353;
 
             }
         };
-        DFA.State s268 = new DFA.State() {
+        DFA.State s269 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_268 = input.LA(1);
-                if ( LA16_268=='e' ) {return s342;}
+                int LA18_269 = input.LA(1);
+                if ( LA18_269=='e' ) {return s343;}
                 return s51;
 
             }
         };
-        DFA.State s182 = new DFA.State() {
+        DFA.State s183 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_182 = input.LA(1);
-                if ( LA16_182=='s' ) {return s268;}
+                int LA18_183 = input.LA(1);
+                if ( LA18_183=='s' ) {return s269;}
                 return s51;
 
             }
         };
         DFA.State s70 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_70 = input.LA(1);
-                if ( LA16_70=='l' ) {return s182;}
+                int LA18_70 = input.LA(1);
+                if ( LA18_70=='l' ) {return s183;}
                 return s51;
 
             }
@@ -3485,7 +3791,7 @@
         DFA.State s73 = new DFA.State() {{alt=9;}};
         DFA.State s8 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_8 = input.LA(1);
+                int LA18_8 = input.LA(1);
                 return s73;
 
             }
@@ -3493,7 +3799,7 @@
         DFA.State s74 = new DFA.State() {{alt=10;}};
         DFA.State s9 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_9 = input.LA(1);
+                int LA18_9 = input.LA(1);
                 return s74;
 
             }
@@ -3501,7 +3807,7 @@
         DFA.State s75 = new DFA.State() {{alt=11;}};
         DFA.State s10 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_10 = input.LA(1);
+                int LA18_10 = input.LA(1);
                 return s75;
 
             }
@@ -3509,7 +3815,7 @@
         DFA.State s76 = new DFA.State() {{alt=12;}};
         DFA.State s11 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_11 = input.LA(1);
+                int LA18_11 = input.LA(1);
                 return s76;
 
             }
@@ -3517,164 +3823,164 @@
         DFA.State s77 = new DFA.State() {{alt=13;}};
         DFA.State s12 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_12 = input.LA(1);
+                int LA18_12 = input.LA(1);
                 return s77;
 
             }
         };
-        DFA.State s405 = new DFA.State() {{alt=14;}};
-        DFA.State s345 = new DFA.State() {
+        DFA.State s406 = new DFA.State() {{alt=14;}};
+        DFA.State s346 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_345 = input.LA(1);
-                if ( (LA16_345>='0' && LA16_345<='9')||(LA16_345>='A' && LA16_345<='Z')||LA16_345=='_'||(LA16_345>='a' && LA16_345<='z')||(LA16_345>='\u00C0' && LA16_345<='\u00FF') ) {return s51;}
-                return s405;
+                int LA18_346 = input.LA(1);
+                if ( (LA18_346>='0' && LA18_346<='9')||(LA18_346>='A' && LA18_346<='Z')||LA18_346=='_'||(LA18_346>='a' && LA18_346<='z')||(LA18_346>='\u00C0' && LA18_346<='\u00FF') ) {return s51;}
+                return s406;
 
             }
         };
-        DFA.State s271 = new DFA.State() {
+        DFA.State s272 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_271 = input.LA(1);
-                if ( LA16_271=='y' ) {return s345;}
+                int LA18_272 = input.LA(1);
+                if ( LA18_272=='y' ) {return s346;}
                 return s51;
 
             }
         };
-        DFA.State s185 = new DFA.State() {
+        DFA.State s186 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_185 = input.LA(1);
-                if ( LA16_185=='r' ) {return s271;}
+                int LA18_186 = input.LA(1);
+                if ( LA18_186=='r' ) {return s272;}
                 return s51;
 
             }
         };
         DFA.State s78 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_78 = input.LA(1);
-                if ( LA16_78=='e' ) {return s185;}
+                int LA18_78 = input.LA(1);
+                if ( LA18_78=='e' ) {return s186;}
                 return s51;
 
             }
         };
         DFA.State s13 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_13 = input.LA(1);
-                if ( LA16_13=='u' ) {return s78;}
+                int LA18_13 = input.LA(1);
+                if ( LA18_13=='u' ) {return s78;}
                 return s51;
 
             }
         };
-        DFA.State s348 = new DFA.State() {{alt=16;}};
-        DFA.State s274 = new DFA.State() {
+        DFA.State s349 = new DFA.State() {{alt=16;}};
+        DFA.State s275 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_274 = input.LA(1);
-                if ( (LA16_274>='0' && LA16_274<='9')||(LA16_274>='A' && LA16_274<='Z')||LA16_274=='_'||(LA16_274>='a' && LA16_274<='z')||(LA16_274>='\u00C0' && LA16_274<='\u00FF') ) {return s51;}
-                return s348;
+                int LA18_275 = input.LA(1);
+                if ( (LA18_275>='0' && LA18_275<='9')||(LA18_275>='A' && LA18_275<='Z')||LA18_275=='_'||(LA18_275>='a' && LA18_275<='z')||(LA18_275>='\u00C0' && LA18_275<='\u00FF') ) {return s51;}
+                return s349;
 
             }
         };
-        DFA.State s188 = new DFA.State() {
+        DFA.State s189 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_188 = input.LA(1);
-                if ( LA16_188=='e' ) {return s274;}
+                int LA18_189 = input.LA(1);
+                if ( LA18_189=='e' ) {return s275;}
                 return s51;
 
             }
         };
         DFA.State s81 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_81 = input.LA(1);
-                if ( LA16_81=='l' ) {return s188;}
+                int LA18_81 = input.LA(1);
+                if ( LA18_81=='l' ) {return s189;}
                 return s51;
 
             }
         };
         DFA.State s14 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_14 = input.LA(1);
-                if ( LA16_14=='u' ) {return s81;}
+                int LA18_14 = input.LA(1);
+                if ( LA18_14=='u' ) {return s81;}
                 return s51;
 
             }
         };
-        DFA.State s350 = new DFA.State() {{alt=17;}};
-        DFA.State s277 = new DFA.State() {
+        DFA.State s351 = new DFA.State() {{alt=17;}};
+        DFA.State s278 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_277 = input.LA(1);
-                if ( (LA16_277>='0' && LA16_277<='9')||(LA16_277>='A' && LA16_277<='Z')||LA16_277=='_'||(LA16_277>='a' && LA16_277<='z')||(LA16_277>='\u00C0' && LA16_277<='\u00FF') ) {return s51;}
-                return s350;
+                int LA18_278 = input.LA(1);
+                if ( (LA18_278>='0' && LA18_278<='9')||(LA18_278>='A' && LA18_278<='Z')||LA18_278=='_'||(LA18_278>='a' && LA18_278<='z')||(LA18_278>='\u00C0' && LA18_278<='\u00FF') ) {return s51;}
+                return s351;
 
             }
         };
-        DFA.State s191 = new DFA.State() {
+        DFA.State s192 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_191 = input.LA(1);
-                if ( LA16_191=='n' ) {return s277;}
+                int LA18_192 = input.LA(1);
+                if ( LA18_192=='n' ) {return s278;}
                 return s51;
 
             }
         };
         DFA.State s84 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_84 = input.LA(1);
-                if ( LA16_84=='e' ) {return s191;}
+                int LA18_84 = input.LA(1);
+                if ( LA18_84=='e' ) {return s192;}
                 return s51;
 
             }
         };
         DFA.State s15 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_15 = input.LA(1);
-                if ( LA16_15=='h' ) {return s84;}
+                int LA18_15 = input.LA(1);
+                if ( LA18_15=='h' ) {return s84;}
                 return s51;
 
             }
         };
         DFA.State s16 = new DFA.State() {{alt=18;}};
-        DFA.State s280 = new DFA.State() {
+        DFA.State s281 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                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 s352;
+                int LA18_281 = input.LA(1);
+                if ( (LA18_281>='0' && LA18_281<='9')||(LA18_281>='A' && LA18_281<='Z')||LA18_281=='_'||(LA18_281>='a' && LA18_281<='z')||(LA18_281>='\u00C0' && LA18_281<='\u00FF') ) {return s51;}
+                return s353;
 
             }
         };
-        DFA.State s194 = new DFA.State() {
+        DFA.State s195 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_194 = input.LA(1);
-                if ( LA16_194=='e' ) {return s280;}
+                int LA18_195 = input.LA(1);
+                if ( LA18_195=='e' ) {return s281;}
                 return s51;
 
             }
         };
         DFA.State s87 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_87 = input.LA(1);
-                if ( LA16_87=='u' ) {return s194;}
+                int LA18_87 = input.LA(1);
+                if ( LA18_87=='u' ) {return s195;}
                 return s51;
 
             }
         };
-        DFA.State s354 = new DFA.State() {{alt=19;}};
-        DFA.State s283 = new DFA.State() {
+        DFA.State s355 = new DFA.State() {{alt=19;}};
+        DFA.State s284 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_283 = input.LA(1);
-                if ( (LA16_283>='0' && LA16_283<='9')||(LA16_283>='A' && LA16_283<='Z')||LA16_283=='_'||(LA16_283>='a' && LA16_283<='z')||(LA16_283>='\u00C0' && LA16_283<='\u00FF') ) {return s51;}
-                return s354;
+                int LA18_284 = input.LA(1);
+                if ( (LA18_284>='0' && LA18_284<='9')||(LA18_284>='A' && LA18_284<='Z')||LA18_284=='_'||(LA18_284>='a' && LA18_284<='z')||(LA18_284>='\u00C0' && LA18_284<='\u00FF') ) {return s51;}
+                return s355;
 
             }
         };
-        DFA.State s197 = new DFA.State() {
+        DFA.State s198 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_197 = input.LA(1);
-                if ( LA16_197=='n' ) {return s283;}
+                int LA18_198 = input.LA(1);
+                if ( LA18_198=='n' ) {return s284;}
                 return s51;
 
             }
         };
         DFA.State s88 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_88 = input.LA(1);
-                if ( LA16_88=='e' ) {return s197;}
+                int LA18_88 = input.LA(1);
+                if ( LA18_88=='e' ) {return s198;}
                 return s51;
 
             }
@@ -3693,231 +3999,231 @@
         	        }
             }
         };
-        DFA.State s519 = new DFA.State() {{alt=20;}};
-        DFA.State s513 = new DFA.State() {
+        DFA.State s520 = new DFA.State() {{alt=24;}};
+        DFA.State s514 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                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 s519;
+                int LA18_514 = input.LA(1);
+                if ( LA18_514=='-' ) {return s520;}
+                return s51;
 
             }
         };
-        DFA.State s501 = new DFA.State() {
+        DFA.State s502 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_501 = input.LA(1);
-                if ( LA16_501=='s' ) {return s513;}
+                int LA18_502 = input.LA(1);
+                if ( LA18_502=='n' ) {return s514;}
                 return s51;
 
             }
         };
-        DFA.State s478 = new DFA.State() {
+        DFA.State s479 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_478 = input.LA(1);
-                if ( LA16_478=='e' ) {return s501;}
+                int LA18_479 = input.LA(1);
+                if ( LA18_479=='o' ) {return s502;}
                 return s51;
 
             }
         };
-        DFA.State s446 = new DFA.State() {
+        DFA.State s447 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_446 = input.LA(1);
-                if ( LA16_446=='t' ) {return s478;}
+                int LA18_447 = input.LA(1);
+                if ( LA18_447=='i' ) {return s479;}
                 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=='u' ) {return s446;}
+                int LA18_408 = input.LA(1);
+                if ( LA18_408=='t' ) {return s447;}
                 return s51;
 
             }
         };
-        DFA.State s356 = new DFA.State() {
+        DFA.State s357 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_356 = input.LA(1);
-                if ( LA16_356=='b' ) {return s407;}
+                int LA18_357 = input.LA(1);
+                if ( LA18_357=='a' ) {return s408;}
                 return s51;
 
             }
         };
-        DFA.State s286 = new DFA.State() {
+        DFA.State s287 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_286 = input.LA(1);
-                if ( LA16_286=='i' ) {return s356;}
+                int LA18_287 = input.LA(1);
+                if ( LA18_287=='v' ) {return s357;}
                 return s51;
 
             }
         };
-        DFA.State s200 = new DFA.State() {
+        DFA.State s201 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_200 = input.LA(1);
-                if ( LA16_200=='r' ) {return s286;}
+                int LA18_201 = input.LA(1);
+                if ( LA18_201=='i' ) {return s287;}
                 return s51;
 
             }
         };
         DFA.State s91 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_91 = input.LA(1);
-                if ( LA16_91=='t' ) {return s200;}
+                int LA18_91 = input.LA(1);
+                if ( LA18_91=='t' ) {return s201;}
                 return s51;
 
             }
         };
-        DFA.State s289 = new DFA.State() {{alt=40;}};
-        DFA.State s203 = new DFA.State() {
+        DFA.State s523 = new DFA.State() {{alt=20;}};
+        DFA.State s517 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_203 = input.LA(1);
-                if ( (LA16_203>='0' && LA16_203<='9')||(LA16_203>='A' && LA16_203<='Z')||LA16_203=='_'||(LA16_203>='a' && LA16_203<='z')||(LA16_203>='\u00C0' && LA16_203<='\u00FF') ) {return s51;}
-                return s289;
+                int LA18_517 = input.LA(1);
+                if ( (LA18_517>='0' && LA18_517<='9')||(LA18_517>='A' && LA18_517<='Z')||LA18_517=='_'||(LA18_517>='a' && LA18_517<='z')||(LA18_517>='\u00C0' && LA18_517<='\u00FF') ) {return s51;}
+                return s523;
 
             }
         };
-        DFA.State s92 = new DFA.State() {
+        DFA.State s505 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_92 = input.LA(1);
-                if ( LA16_92=='d' ) {return s203;}
+                int LA18_505 = input.LA(1);
+                if ( LA18_505=='s' ) {return s517;}
                 return s51;
 
             }
         };
-        DFA.State s521 = new DFA.State() {{alt=24;}};
-        DFA.State s516 = new DFA.State() {
+        DFA.State s482 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_516 = input.LA(1);
-                if ( LA16_516=='-' ) {return s521;}
+                int LA18_482 = input.LA(1);
+                if ( LA18_482=='e' ) {return s505;}
                 return s51;
 
             }
         };
-        DFA.State s504 = new DFA.State() {
+        DFA.State s450 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_504 = input.LA(1);
-                if ( LA16_504=='n' ) {return s516;}
+                int LA18_450 = input.LA(1);
+                if ( LA18_450=='t' ) {return s482;}
                 return s51;
 
             }
         };
-        DFA.State s481 = new DFA.State() {
+        DFA.State s411 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_481 = input.LA(1);
-                if ( LA16_481=='o' ) {return s504;}
+                int LA18_411 = input.LA(1);
+                if ( LA18_411=='u' ) {return s450;}
                 return s51;
 
             }
         };
-        DFA.State s449 = new DFA.State() {
+        DFA.State s360 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_449 = input.LA(1);
-                if ( LA16_449=='i' ) {return s481;}
+                int LA18_360 = input.LA(1);
+                if ( LA18_360=='b' ) {return s411;}
                 return s51;
 
             }
         };
-        DFA.State s410 = new DFA.State() {
+        DFA.State s290 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_410 = input.LA(1);
-                if ( LA16_410=='t' ) {return s449;}
+                int LA18_290 = input.LA(1);
+                if ( LA18_290=='i' ) {return s360;}
                 return s51;
 
             }
         };
-        DFA.State s359 = new DFA.State() {
+        DFA.State s204 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_359 = input.LA(1);
-                if ( LA16_359=='a' ) {return s410;}
+                int LA18_204 = input.LA(1);
+                if ( LA18_204=='r' ) {return s290;}
                 return s51;
 
             }
         };
-        DFA.State s291 = new DFA.State() {
+        DFA.State s92 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_291 = input.LA(1);
-                if ( LA16_291=='v' ) {return s359;}
+                int LA18_92 = input.LA(1);
+                if ( LA18_92=='t' ) {return s204;}
                 return s51;
 
             }
         };
-        DFA.State s206 = new DFA.State() {
+        DFA.State s293 = new DFA.State() {{alt=40;}};
+        DFA.State s207 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_206 = input.LA(1);
-                if ( LA16_206=='i' ) {return s291;}
-                return s51;
+                int LA18_207 = input.LA(1);
+                if ( (LA18_207>='0' && LA18_207<='9')||(LA18_207>='A' && LA18_207<='Z')||LA18_207=='_'||(LA18_207>='a' && LA18_207<='z')||(LA18_207>='\u00C0' && LA18_207<='\u00FF') ) {return s51;}
+                return s293;
 
             }
         };
         DFA.State s93 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_93 = input.LA(1);
-                if ( LA16_93=='t' ) {return s206;}
+                int LA18_93 = input.LA(1);
+                if ( LA18_93=='d' ) {return s207;}
                 return s51;
 
             }
         };
-        DFA.State s452 = new DFA.State() {{alt=25;}};
-        DFA.State s413 = new DFA.State() {
+        DFA.State s453 = new DFA.State() {{alt=25;}};
+        DFA.State s414 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_413 = input.LA(1);
-                if ( LA16_413=='-' ) {return s452;}
+                int LA18_414 = input.LA(1);
+                if ( LA18_414=='-' ) {return s453;}
                 return s51;
 
             }
         };
-        DFA.State s362 = new DFA.State() {
+        DFA.State s363 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_362 = input.LA(1);
-                if ( LA16_362=='a' ) {return s413;}
+                int LA18_363 = input.LA(1);
+                if ( LA18_363=='a' ) {return s414;}
                 return s51;
 
             }
         };
-        DFA.State s294 = new DFA.State() {
+        DFA.State s295 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_294 = input.LA(1);
-                if ( LA16_294=='d' ) {return s362;}
+                int LA18_295 = input.LA(1);
+                if ( LA18_295=='d' ) {return s363;}
                 return s51;
 
             }
         };
-        DFA.State s209 = new DFA.State() {
+        DFA.State s210 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_209 = input.LA(1);
-                if ( LA16_209=='n' ) {return s294;}
+                int LA18_210 = input.LA(1);
+                if ( LA18_210=='n' ) {return s295;}
                 return s51;
 
             }
         };
         DFA.State s94 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_94 = input.LA(1);
-                if ( LA16_94=='e' ) {return s209;}
+                int LA18_94 = input.LA(1);
+                if ( LA18_94=='e' ) {return s210;}
                 return s51;
 
             }
         };
-        DFA.State s365 = new DFA.State() {{alt=23;}};
-        DFA.State s297 = new DFA.State() {
+        DFA.State s366 = new DFA.State() {{alt=23;}};
+        DFA.State s298 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_297 = input.LA(1);
-                if ( LA16_297=='-' ) {return s365;}
+                int LA18_298 = input.LA(1);
+                if ( LA18_298=='-' ) {return s366;}
                 return s51;
 
             }
         };
-        DFA.State s212 = new DFA.State() {
+        DFA.State s213 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_212 = input.LA(1);
-                if ( LA16_212=='o' ) {return s297;}
+                int LA18_213 = input.LA(1);
+                if ( LA18_213=='o' ) {return s298;}
                 return s51;
 
             }
         };
         DFA.State s95 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_95 = input.LA(1);
-                if ( LA16_95=='t' ) {return s212;}
+                int LA18_95 = input.LA(1);
+                if ( LA18_95=='t' ) {return s213;}
                 return s51;
 
             }
@@ -3925,13 +4231,13 @@
         DFA.State s18 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 't':
+                case 'c':
                     return s91;
 
-                case 'n':
+                case 't':
                     return s92;
 
-                case 'c':
+                case 'n':
                     return s93;
 
                 case 'g':
@@ -3945,116 +4251,116 @@
         	        }
             }
         };
-        DFA.State s507 = new DFA.State() {{alt=21;}};
-        DFA.State s484 = new DFA.State() {
+        DFA.State s508 = new DFA.State() {{alt=21;}};
+        DFA.State s485 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_484 = input.LA(1);
-                if ( (LA16_484>='0' && LA16_484<='9')||(LA16_484>='A' && LA16_484<='Z')||LA16_484=='_'||(LA16_484>='a' && LA16_484<='z')||(LA16_484>='\u00C0' && LA16_484<='\u00FF') ) {return s51;}
-                return s507;
+                int LA18_485 = input.LA(1);
+                if ( (LA18_485>='0' && LA18_485<='9')||(LA18_485>='A' && LA18_485<='Z')||LA18_485=='_'||(LA18_485>='a' && LA18_485<='z')||(LA18_485>='\u00C0' && LA18_485<='\u00FF') ) {return s51;}
+                return s508;
 
             }
         };
-        DFA.State s455 = new DFA.State() {
+        DFA.State s456 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_455 = input.LA(1);
-                if ( LA16_455=='e' ) {return s484;}
+                int LA18_456 = input.LA(1);
+                if ( LA18_456=='e' ) {return s485;}
                 return s51;
 
             }
         };
-        DFA.State s416 = new DFA.State() {
+        DFA.State s417 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_416 = input.LA(1);
-                if ( LA16_416=='c' ) {return s455;}
+                int LA18_417 = input.LA(1);
+                if ( LA18_417=='c' ) {return s456;}
                 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=='n' ) {return s416;}
+                int LA18_369 = input.LA(1);
+                if ( LA18_369=='n' ) {return s417;}
                 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=='e' ) {return s368;}
+                int LA18_301 = input.LA(1);
+                if ( LA18_301=='e' ) {return s369;}
                 return s51;
 
             }
         };
-        DFA.State s215 = new DFA.State() {
+        DFA.State s216 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_215 = input.LA(1);
-                if ( LA16_215=='i' ) {return s300;}
+                int LA18_216 = input.LA(1);
+                if ( LA18_216=='i' ) {return s301;}
                 return s51;
 
             }
         };
         DFA.State s98 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_98 = input.LA(1);
-                if ( LA16_98=='l' ) {return s215;}
+                int LA18_98 = input.LA(1);
+                if ( LA18_98=='l' ) {return s216;}
                 return s51;
 
             }
         };
         DFA.State s19 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_19 = input.LA(1);
-                if ( LA16_19=='a' ) {return s98;}
+                int LA18_19 = input.LA(1);
+                if ( LA18_19=='a' ) {return s98;}
                 return s51;
 
             }
         };
-        DFA.State s303 = new DFA.State() {{alt=43;}};
-        DFA.State s218 = new DFA.State() {
+        DFA.State s219 = new DFA.State() {{alt=22;}};
+        DFA.State s304 = new DFA.State() {{alt=43;}};
+        DFA.State s220 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                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 s303;
+                int LA18_220 = input.LA(1);
+                if ( (LA18_220>='0' && LA18_220<='9')||(LA18_220>='A' && LA18_220<='Z')||LA18_220=='_'||(LA18_220>='a' && LA18_220<='z')||(LA18_220>='\u00C0' && LA18_220<='\u00FF') ) {return s51;}
+                return s304;
 
             }
         };
-        DFA.State s219 = new DFA.State() {{alt=22;}};
         DFA.State s101 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 't':
-                    return s218;
-
                 case '-':
                     return s219;
 
+                case 't':
+                    return s220;
+
                 default:
                     return s51;
         	        }
             }
         };
-        DFA.State s371 = new DFA.State() {{alt=38;}};
-        DFA.State s305 = new DFA.State() {
+        DFA.State s372 = new DFA.State() {{alt=38;}};
+        DFA.State s306 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_305 = input.LA(1);
-                if ( (LA16_305>='0' && LA16_305<='9')||(LA16_305>='A' && LA16_305<='Z')||LA16_305=='_'||(LA16_305>='a' && LA16_305<='z')||(LA16_305>='\u00C0' && LA16_305<='\u00FF') ) {return s51;}
-                return s371;
+                int LA18_306 = input.LA(1);
+                if ( (LA18_306>='0' && LA18_306<='9')||(LA18_306>='A' && LA18_306<='Z')||LA18_306=='_'||(LA18_306>='a' && LA18_306<='z')||(LA18_306>='\u00C0' && LA18_306<='\u00FF') ) {return s51;}
+                return s372;
 
             }
         };
-        DFA.State s222 = new DFA.State() {
+        DFA.State s223 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_222 = input.LA(1);
-                if ( LA16_222=='l' ) {return s305;}
+                int LA18_223 = input.LA(1);
+                if ( LA18_223=='l' ) {return s306;}
                 return s51;
 
             }
         };
         DFA.State s102 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_102 = input.LA(1);
-                if ( LA16_102=='l' ) {return s222;}
+                int LA18_102 = input.LA(1);
+                if ( LA18_102=='l' ) {return s223;}
                 return s51;
 
             }
@@ -4073,132 +4379,132 @@
         	        }
             }
         };
-        DFA.State s509 = new DFA.State() {{alt=26;}};
-        DFA.State s487 = new DFA.State() {
+        DFA.State s510 = new DFA.State() {{alt=26;}};
+        DFA.State s488 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_487 = input.LA(1);
-                if ( (LA16_487>='0' && LA16_487<='9')||(LA16_487>='A' && LA16_487<='Z')||LA16_487=='_'||(LA16_487>='a' && LA16_487<='z')||(LA16_487>='\u00C0' && LA16_487<='\u00FF') ) {return s51;}
-                return s509;
+                int LA18_488 = input.LA(1);
+                if ( (LA18_488>='0' && LA18_488<='9')||(LA18_488>='A' && LA18_488<='Z')||LA18_488=='_'||(LA18_488>='a' && LA18_488<='z')||(LA18_488>='\u00C0' && LA18_488<='\u00FF') ) {return s51;}
+                return s510;
 
             }
         };
-        DFA.State s458 = new DFA.State() {
+        DFA.State s459 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_458 = input.LA(1);
-                if ( LA16_458=='n' ) {return s487;}
+                int LA18_459 = input.LA(1);
+                if ( LA18_459=='n' ) {return s488;}
                 return s51;
 
             }
         };
-        DFA.State s419 = new DFA.State() {
+        DFA.State s420 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_419 = input.LA(1);
-                if ( LA16_419=='o' ) {return s458;}
+                int LA18_420 = input.LA(1);
+                if ( LA18_420=='o' ) {return s459;}
                 return s51;
 
             }
         };
-        DFA.State s373 = new DFA.State() {
+        DFA.State s374 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_373 = input.LA(1);
-                if ( LA16_373=='i' ) {return s419;}
+                int LA18_374 = input.LA(1);
+                if ( LA18_374=='i' ) {return s420;}
                 return s51;
 
             }
         };
-        DFA.State s308 = new DFA.State() {
+        DFA.State s309 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_308 = input.LA(1);
-                if ( LA16_308=='t' ) {return s373;}
+                int LA18_309 = input.LA(1);
+                if ( LA18_309=='t' ) {return s374;}
                 return s51;
 
             }
         };
-        DFA.State s225 = new DFA.State() {
+        DFA.State s226 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_225 = input.LA(1);
-                if ( LA16_225=='a' ) {return s308;}
+                int LA18_226 = input.LA(1);
+                if ( LA18_226=='a' ) {return s309;}
                 return s51;
 
             }
         };
         DFA.State s105 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_105 = input.LA(1);
-                if ( LA16_105=='r' ) {return s225;}
+                int LA18_105 = input.LA(1);
+                if ( LA18_105=='r' ) {return s226;}
                 return s51;
 
             }
         };
         DFA.State s21 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_21 = input.LA(1);
-                if ( LA16_21=='u' ) {return s105;}
+                int LA18_21 = input.LA(1);
+                if ( LA18_21=='u' ) {return s105;}
                 return s51;
 
             }
         };
-        DFA.State s228 = new DFA.State() {{alt=27;}};
+        DFA.State s229 = new DFA.State() {{alt=27;}};
         DFA.State s108 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_108 = input.LA(1);
-                if ( (LA16_108>='0' && LA16_108<='9')||(LA16_108>='A' && LA16_108<='Z')||LA16_108=='_'||(LA16_108>='a' && LA16_108<='z')||(LA16_108>='\u00C0' && LA16_108<='\u00FF') ) {return s51;}
-                return s228;
+                int LA18_108 = input.LA(1);
+                if ( (LA18_108>='0' && LA18_108<='9')||(LA18_108>='A' && LA18_108<='Z')||LA18_108=='_'||(LA18_108>='a' && LA18_108<='z')||(LA18_108>='\u00C0' && LA18_108<='\u00FF') ) {return s51;}
+                return s229;
 
             }
         };
         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 s108;}
+                int LA18_22 = input.LA(1);
+                if ( LA18_22=='r' ) {return s108;}
                 return s51;
 
             }
         };
-        DFA.State s230 = new DFA.State() {{alt=28;}};
+        DFA.State s231 = new DFA.State() {{alt=28;}};
         DFA.State s111 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_111 = input.LA(1);
-                return s230;
+                int LA18_111 = input.LA(1);
+                return s231;
 
             }
         };
         DFA.State s35 = new DFA.State() {{alt=48;}};
         DFA.State s23 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_23 = input.LA(1);
-                if ( LA16_23=='|' ) {return s111;}
+                int LA18_23 = input.LA(1);
+                if ( LA18_23=='|' ) {return s111;}
                 return s35;
 
             }
         };
-        DFA.State s231 = new DFA.State() {{alt=29;}};
-        DFA.State s114 = new DFA.State() {
+        DFA.State s232 = new DFA.State() {{alt=29;}};
+        DFA.State s113 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_114 = input.LA(1);
-                return s231;
+                int LA18_113 = input.LA(1);
+                return s232;
 
             }
         };
         DFA.State s24 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_24 = input.LA(1);
-                if ( LA16_24=='=' ) {return s114;}
+                int LA18_24 = input.LA(1);
+                if ( LA18_24=='=' ) {return s113;}
                 return s35;
 
             }
         };
-        DFA.State s120 = new DFA.State() {{alt=31;}};
+        DFA.State s119 = new DFA.State() {{alt=31;}};
         DFA.State s121 = new DFA.State() {{alt=30;}};
         DFA.State s25 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case '=':
+                    return s119;
+
                 case '>':
                     return s35;
 
-                case '=':
-                    return s120;
-
                 default:
                     return s121;
         	        }
@@ -4223,142 +4529,142 @@
         DFA.State s125 = new DFA.State() {{alt=34;}};
         DFA.State s27 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_27 = input.LA(1);
-                if ( LA16_27=='=' ) {return s125;}
+                int LA18_27 = input.LA(1);
+                if ( LA18_27=='=' ) {return s125;}
                 return s35;
 
             }
         };
-        DFA.State s511 = new DFA.State() {{alt=35;}};
-        DFA.State s490 = new DFA.State() {
+        DFA.State s512 = new DFA.State() {{alt=35;}};
+        DFA.State s491 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                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 s511;
+                int LA18_491 = input.LA(1);
+                if ( (LA18_491>='0' && LA18_491<='9')||(LA18_491>='A' && LA18_491<='Z')||LA18_491=='_'||(LA18_491>='a' && LA18_491<='z')||(LA18_491>='\u00C0' && LA18_491<='\u00FF') ) {return s51;}
+                return s512;
 
             }
         };
-        DFA.State s461 = new DFA.State() {
+        DFA.State s462 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_461 = input.LA(1);
-                if ( LA16_461=='s' ) {return s490;}
+                int LA18_462 = input.LA(1);
+                if ( LA18_462=='s' ) {return s491;}
                 return s51;
 
             }
         };
-        DFA.State s422 = new DFA.State() {
+        DFA.State s423 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_422 = input.LA(1);
-                if ( LA16_422=='n' ) {return s461;}
+                int LA18_423 = input.LA(1);
+                if ( LA18_423=='n' ) {return s462;}
                 return s51;
 
             }
         };
-        DFA.State s376 = new DFA.State() {
+        DFA.State s377 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_376 = input.LA(1);
-                if ( LA16_376=='i' ) {return s422;}
+                int LA18_377 = input.LA(1);
+                if ( LA18_377=='i' ) {return s423;}
                 return s51;
 
             }
         };
-        DFA.State s311 = new DFA.State() {
+        DFA.State s312 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_311 = input.LA(1);
-                if ( LA16_311=='a' ) {return s376;}
+                int LA18_312 = input.LA(1);
+                if ( LA18_312=='a' ) {return s377;}
                 return s51;
 
             }
         };
-        DFA.State s232 = new DFA.State() {
+        DFA.State s233 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_232 = input.LA(1);
-                if ( LA16_232=='t' ) {return s311;}
+                int LA18_233 = input.LA(1);
+                if ( LA18_233=='t' ) {return s312;}
                 return s51;
 
             }
         };
         DFA.State s127 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_127 = input.LA(1);
-                if ( LA16_127=='n' ) {return s232;}
+                int LA18_127 = input.LA(1);
+                if ( LA18_127=='n' ) {return s233;}
                 return s51;
 
             }
         };
         DFA.State s28 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_28 = input.LA(1);
-                if ( LA16_28=='o' ) {return s127;}
+                int LA18_28 = input.LA(1);
+                if ( LA18_28=='o' ) {return s127;}
                 return s51;
 
             }
         };
-        DFA.State s493 = new DFA.State() {{alt=36;}};
-        DFA.State s464 = new DFA.State() {
+        DFA.State s494 = new DFA.State() {{alt=36;}};
+        DFA.State s465 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_464 = input.LA(1);
-                if ( (LA16_464>='0' && LA16_464<='9')||(LA16_464>='A' && LA16_464<='Z')||LA16_464=='_'||(LA16_464>='a' && LA16_464<='z')||(LA16_464>='\u00C0' && LA16_464<='\u00FF') ) {return s51;}
-                return s493;
+                int LA18_465 = input.LA(1);
+                if ( (LA18_465>='0' && LA18_465<='9')||(LA18_465>='A' && LA18_465<='Z')||LA18_465=='_'||(LA18_465>='a' && LA18_465<='z')||(LA18_465>='\u00C0' && LA18_465<='\u00FF') ) {return s51;}
+                return s494;
 
             }
         };
-        DFA.State s425 = new DFA.State() {
+        DFA.State s426 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_425 = input.LA(1);
-                if ( LA16_425=='s' ) {return s464;}
+                int LA18_426 = input.LA(1);
+                if ( LA18_426=='s' ) {return s465;}
                 return s51;
 
             }
         };
-        DFA.State s379 = new DFA.State() {
+        DFA.State s380 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_379 = input.LA(1);
-                if ( LA16_379=='e' ) {return s425;}
+                int LA18_380 = input.LA(1);
+                if ( LA18_380=='e' ) {return s426;}
                 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=='h' ) {return s379;}
+                int LA18_315 = input.LA(1);
+                if ( LA18_315=='h' ) {return s380;}
                 return s51;
 
             }
         };
-        DFA.State s235 = new DFA.State() {
+        DFA.State s236 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_235 = input.LA(1);
-                if ( LA16_235=='c' ) {return s314;}
+                int LA18_236 = input.LA(1);
+                if ( LA18_236=='c' ) {return s315;}
                 return s51;
 
             }
         };
         DFA.State s130 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_130 = input.LA(1);
-                if ( LA16_130=='t' ) {return s235;}
+                int LA18_130 = input.LA(1);
+                if ( LA18_130=='t' ) {return s236;}
                 return s51;
 
             }
         };
         DFA.State s29 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_29 = input.LA(1);
-                if ( LA16_29=='a' ) {return s130;}
+                int LA18_29 = input.LA(1);
+                if ( LA18_29=='a' ) {return s130;}
                 return s51;
 
             }
         };
         DFA.State s133 = new DFA.State() {{alt=39;}};
-        DFA.State s156 = new DFA.State() {{alt=52;}};
-        DFA.State s158 = new DFA.State() {{alt=51;}};
+        DFA.State s157 = new DFA.State() {{alt=52;}};
+        DFA.State s159 = new DFA.State() {{alt=51;}};
         DFA.State s49 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case '.':
-                    return s156;
+                    return s157;
 
                 case '0':
                 case '1':
@@ -4373,7 +4679,7 @@
                     return s49;
 
                 default:
-                    return s158;
+                    return s159;
         	        }
             }
         };
@@ -4400,18 +4706,18 @@
         	        }
             }
         };
-        DFA.State s238 = new DFA.State() {{alt=41;}};
+        DFA.State s239 = new DFA.State() {{alt=41;}};
         DFA.State s138 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_138 = input.LA(1);
-                return s238;
+                int LA18_138 = input.LA(1);
+                return s239;
 
             }
         };
         DFA.State s31 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_31 = input.LA(1);
-                if ( LA16_31=='&' ) {return s138;}
+                int LA18_31 = input.LA(1);
+                if ( LA18_31=='&' ) {return s138;}
                 return s35;
 
             }
@@ -4419,7 +4725,7 @@
         DFA.State s140 = new DFA.State() {{alt=45;}};
         DFA.State s32 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_32 = input.LA(1);
+                int LA18_32 = input.LA(1);
                 return s140;
 
             }
@@ -4427,32 +4733,32 @@
         DFA.State s141 = new DFA.State() {{alt=46;}};
         DFA.State s33 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_33 = input.LA(1);
+                int LA18_33 = input.LA(1);
                 return s141;
 
             }
         };
-        DFA.State s317 = new DFA.State() {{alt=47;}};
-        DFA.State s239 = new DFA.State() {
+        DFA.State s318 = new DFA.State() {{alt=47;}};
+        DFA.State s240 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_239 = input.LA(1);
-                if ( (LA16_239>='0' && LA16_239<='9')||(LA16_239>='A' && LA16_239<='Z')||LA16_239=='_'||(LA16_239>='a' && LA16_239<='z')||(LA16_239>='\u00C0' && LA16_239<='\u00FF') ) {return s51;}
-                return s317;
+                int LA18_240 = input.LA(1);
+                if ( (LA18_240>='0' && LA18_240<='9')||(LA18_240>='A' && LA18_240<='Z')||LA18_240=='_'||(LA18_240>='a' && LA18_240<='z')||(LA18_240>='\u00C0' && LA18_240<='\u00FF') ) {return s51;}
+                return s318;
 
             }
         };
         DFA.State s142 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_142 = input.LA(1);
-                if ( LA16_142=='e' ) {return s239;}
+                int LA18_142 = input.LA(1);
+                if ( LA18_142=='e' ) {return s240;}
                 return s51;
 
             }
         };
         DFA.State s34 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA16_34 = input.LA(1);
-                if ( LA16_34=='s' ) {return s142;}
+                int LA18_34 = input.LA(1);
+                if ( LA18_34=='s' ) {return s142;}
                 return s51;
 
             }
@@ -4460,30 +4766,30 @@
         DFA.State s145 = new DFA.State() {{alt=48;}};
         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;}
+                int LA18_36 = input.LA(1);
+                if ( (LA18_36>='0' && LA18_36<='9')||(LA18_36>='A' && LA18_36<='Z')||LA18_36=='_'||(LA18_36>='a' && LA18_36<='z')||(LA18_36>='\u00C0' && LA18_36<='\u00FF') ) {return s51;}
                 return s145;
 
             }
         };
         DFA.State s40 = new DFA.State() {
             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;}
+                int LA18_40 = input.LA(1);
+                if ( (LA18_40>='0' && LA18_40<='9')||(LA18_40>='A' && LA18_40<='Z')||LA18_40=='_'||(LA18_40>='a' && LA18_40<='z')||(LA18_40>='\u00C0' && LA18_40<='\u00FF') ) {return s51;}
                 return s145;
 
             }
         };
-        DFA.State s149 = new DFA.State() {{alt=58;}};
-        DFA.State s150 = new DFA.State() {{alt=57;}};
+        DFA.State s149 = new DFA.State() {{alt=57;}};
+        DFA.State s151 = new DFA.State() {{alt=58;}};
         DFA.State s43 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case '*':
+                case '/':
                     return s149;
 
-                case '/':
-                    return s150;
+                case '*':
+                    return s151;
 
                 default:
                     return s145;
@@ -4493,8 +4799,8 @@
         DFA.State s50 = new DFA.State() {{alt=53;}};
         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;}
+                int LA18_44 = input.LA(1);
+                if ( (LA18_44>='\u0000' && LA18_44<='\uFFFE') ) {return s50;}
                 return s145;
 
             }
@@ -4759,7 +5065,7 @@
                 default:
                     if (backtracking>0) {failed=true; return null;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 16, 0, input);
+                        new NoViableAltException("", 18, 0, input);
 
                     throw nvae;        }
             }

Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g	2007-03-28 23:42:51 UTC (rev 10601)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/main/resources/org/drools/lang/drl.g	2007-03-29 00:49:47 UTC (rev 10602)
@@ -1,1109 +1,1132 @@
-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 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 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;
-	}
-
-	/**
-	 * 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 );
-    		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 ); }
-		|	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 opt_eol
-				{
-					f.addParameter( paramType, paramName );
-				}
-				(	',' opt_eol (paramType=dotted_name)? opt_eol paramName=argument 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
-	;
-
-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; }
-	;
- 	
-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 );
-			} 
-		}
-			opt_eol (	op=(	'=='
-					|	'>'
-					|	'>='
-					|	'<'
-					|	'<='
-					|	'!='
-					|	'contains'
-					|	'matches'
-					|       'excludes'
-					) opt_eol	
-					
-					(	bvc=ID
-						{
-							d = new BoundVariableDescr( f.getText(), op.getText(), bvc.getText() );
-							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-							constraints.add( d );
-						}
-					|
-						lc=enum_constraint 
-						{ 
-							d = new LiteralDescr( f.getText(), op.getText(), lc, true ); 
-							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-							constraints.add( d );
-						}						
-					|
-						lc=literal_constraint 
-						{ 
-							d = new LiteralDescr( f.getText(), op.getText(), lc ); 
-							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-							constraints.add( d );
-						}
-					|	rvc=retval_constraint 
-						{ 
-							d = new ReturnValueDescr( f.getText(), op.getText(), rvc ); 
-							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
-							constraints.add( d );
-						} 
-					)
-				)?					
-		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
-		|	u=lhs_not
-		|	u=lhs_eval
-		|	u=lhs_column
-		|	'(' 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 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);} //str.getText(); word=word.substring( 1, word.length()-1 ); }
-	;
-
-
-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.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 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;
+	}
+
+	/**
+	 * 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 );
+    		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 ); }
+		|	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 opt_eol
+				{
+					f.addParameter( paramType, paramName );
+				}
+				(	',' opt_eol (paramType=dotted_name)? opt_eol paramName=argument 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
+	;
+
+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; }
+	;
+ 	
+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 );
+			} 
+		}
+			opt_eol (	op=(	'=='
+					|	'>'
+					|	'>='
+					|	'<'
+					|	'<='
+					|	'!='
+					|	'contains'
+					|	'matches'
+					|       'excludes'
+					) opt_eol	
+					
+					(	bvc=ID
+						{
+							d = new BoundVariableDescr( f.getText(), op.getText(), bvc.getText() );
+							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+							constraints.add( d );
+						}
+					|
+						lc=enum_constraint 
+						{ 
+							d = new LiteralDescr( f.getText(), op.getText(), lc, true ); 
+							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+							constraints.add( d );
+						}						
+					|
+						lc=literal_constraint 
+						{ 
+							d = new LiteralDescr( f.getText(), op.getText(), lc ); 
+							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+							constraints.add( d );
+						}
+					|	rvc=retval_constraint 
+						{ 
+							d = new ReturnValueDescr( f.getText(), op.getText(), rvc ); 
+							d.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+							constraints.add( d );
+						} 
+					)
+				)?					
+		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
+		|	u=lhs_not
+		|	u=lhs_eval
+		|	u=lhs_column
+		|	'(' 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 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);} //str.getText(); word=word.substring( 1, word.length()-1 ); }
+	;
+
+
+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
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+	
+BOOL
+	:	('true'|'false') 
+	;	
+	
+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; }
+	;




More information about the jboss-svn-commits mailing list