[jboss-svn-commits] JBL Code SVN: r23523 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/guvnor/server/rules and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 20 16:59:18 EDT 2008


Author: joe.white at recondotech.com
Date: 2008-10-20 16:59:17 -0400 (Mon, 20 Oct 2008)
New Revision: 23523

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/DSLSentence.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/BRMSSuggestionCompletionLoader.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/BRMSPackageBuilderTest.java
Log:
JBRULES-1810 - Updated Guvnor to parse enumerations from DSL in the format <variable>:ENUM:<EnumName> and present them as dropdowns in the guided editor

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/DSLSentence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/DSLSentence.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/DSLSentence.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -18,11 +18,21 @@
      */
     public String toString() {
         final char[] chars = this.sentence.toCharArray();
+        boolean inBracket = false;
+        boolean inBracketAfterColon=false;
+        
         String result = "";
         for ( int i = 0; i < chars.length; i++ ) {
             final char c = chars[i];
-            if ( c != '{' && c != '}' ) {
+            if ( c != '{' && c != '}' && c!=':' && !inBracketAfterColon) {
                 result += c;
+            }else if(c =='{'){
+            	inBracket = true;
+            }else if(c=='}'){
+            	inBracket = false;
+            	inBracketAfterColon = false;
+            }else if(c==':' && inBracket){
+            	inBracketAfterColon = true;
             }
         }
         return result;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -29,9 +29,11 @@
 import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.descr.TypeDeclarationDescr;
 import org.drools.lang.descr.TypeFieldDescr;
+import org.drools.lang.dsl.AbstractDSLMappingEntry;
 import org.drools.lang.dsl.DSLMapping;
 import org.drools.lang.dsl.DSLMappingEntry;
 import org.drools.lang.dsl.DSLMappingFile;
+import org.drools.lang.dsl.DSLTokenizedMappingFile;
 import org.drools.rule.MapBackedClassLoader;
 import org.drools.util.asm.ClassFieldInspector;
 
@@ -227,14 +229,14 @@
         // }
 
         for ( final Iterator it = dsls.iterator(); it.hasNext(); ) {
-            final DSLMappingFile file = (DSLMappingFile) it.next();
+            final DSLTokenizedMappingFile file = (DSLTokenizedMappingFile) it.next();
             final DSLMapping mapping = file.getMapping();
             for ( final Iterator entries = mapping.getEntries().iterator(); entries.hasNext(); ) {
-                final DSLMappingEntry entry = (DSLMappingEntry) entries.next();
+                final AbstractDSLMappingEntry entry = (AbstractDSLMappingEntry) entries.next();
                 if ( entry.getSection() == DSLMappingEntry.CONDITION ) {
-                    this.builder.addDSLConditionSentence( entry.getMappingKey() );
+                    this.builder.addDSLConditionSentence( entry.getSentence() );
                 } else if ( entry.getSection() == DSLMappingEntry.CONSEQUENCE ) {
-                    this.builder.addDSLActionSentence( entry.getMappingKey() );
+                    this.builder.addDSLActionSentence( entry.getSentence() );
                 }
             }
         }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -30,10 +30,12 @@
 	protected MetaData metadata;
 	protected String key;
 	protected String value;
+	protected String sentence;
 	protected Map variables = Collections.EMPTY_MAP;
 	protected Pattern keyPattern;
 	protected String valuePattern;
-
+	
+	
 	public AbstractDSLMappingEntry() {
 		super();
 	}
@@ -109,6 +111,14 @@
 	    return this.section + "[" + this.metadata + "]" + this.key + "=" + this.value;
 	}
 
+	public void setSentence(String sentence){
+    	this.sentence = sentence;
+    }
+	
+	public String getSentence(){
+		return this.sentence;
+	}
+	
 	public int hashCode() {
 	    final int PRIME = 31;
 	    int result = 1;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -36,17 +36,20 @@
         this( DSLMappingEntry.ANY,
               DSLMappingEntry.EMPTY_METADATA,
               null,
-              null );
+              null,
+              null);
     }
 
     public AntlrDSLMappingEntry(final Section section,
                                 final MetaData metadata,
                                 final String key,
-                                final String value) {
+                                final String value,
+                                final String sentence) {
         this.section = section;
         this.metadata = metadata;
         this.setMappingKey( key );
         this.setMappingValue( value );
+        this.sentence = sentence;
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -1,1089 +1,1090 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-06-11 12:09:03
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-20 12:49:42
 
 	package org.drools.lang.dsl;
 	import java.util.List;
 	import java.util.ArrayList;
-	import org.drools.lang.dsl.DSLMappingParseException;
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-public class DSLMapLexer extends Lexer {
-    public static final int COMMA=26;
-    public static final int RIGHT_CURLY=29;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=30;
-    public static final int MISC=34;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=19;
-    public static final int LINE_COMMENT=21;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=32;
-    public static final int EQUALS=22;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_VAR_DEF=15;
-    public static final int VT_ENTRY=6;
-    public static final int VT_PATTERN=18;
-    public static final int LITERAL=25;
-    public static final int EscapeSequence=31;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=20;
-    public static final int LEFT_SQUARE=23;
-    public static final int Tokens=35;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int VT_SCOPE=7;
-    public static final int COLON=27;
-    public static final int VT_KEYWORD=10;
-    public static final int VT_VAR_REF=16;
-    public static final int LEFT_CURLY=28;
-    public static final int POUND=33;
-    public static final int RIGHT_SQUARE=24;
-    public DSLMapLexer() {;} 
-    public DSLMapLexer(CharStream input) {
-        super(input);
-        ruleMemo = new HashMap[17+1];
-     }
-    public String getGrammarFileName() { return "DSLMap.g"; }
-
-    // $ANTLR start WS
-    public final void mWS() throws RecognitionException {
-        try {
-            int _type = WS;
-            // DSLMap.g:267:9: ( ( ' ' | '\\t' | '\\f' )+ )
-            // DSLMap.g:267:17: ( ' ' | '\\t' | '\\f' )+
-            {
-            // DSLMap.g:267:17: ( ' ' | '\\t' | '\\f' )+
-            int cnt1=0;
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
-
-                if ( (LA1_0=='\t'||LA1_0=='\f'||LA1_0==' ') ) {
-                    alt1=1;
-                }
-
-
-                switch (alt1) {
-            	case 1 :
-            	    // DSLMap.g:
-            	    {
-            	    if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
-            	        input.consume();
-            	    failed=false;
-            	    }
-            	    else {
-            	        if (backtracking>0) {failed=true; return ;}
-            	        MismatchedSetException mse =
-            	            new MismatchedSetException(null,input);
-            	        recover(mse);    throw mse;
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt1 >= 1 ) break loop1;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(1, input);
-                        throw eee;
-                }
-                cnt1++;
-            } while (true);
-
-            if ( backtracking==0 ) {
-               channel=HIDDEN;
-            }
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end WS
-
-    // $ANTLR start EOL
-    public final void mEOL() throws RecognitionException {
-        try {
-            int _type = EOL;
-            // DSLMap.g:274:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // DSLMap.g:275:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            {
-            // DSLMap.g:275:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            int alt2=3;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0=='\r') ) {
-                int LA2_1 = input.LA(2);
-
-                if ( (LA2_1=='\n') && (synpred1())) {
-                    alt2=1;
-                }
-                else {
-                    alt2=2;}
-            }
-            else if ( (LA2_0=='\n') ) {
-                alt2=3;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("275:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
-
-                throw nvae;
-            }
-            switch (alt2) {
-                case 1 :
-                    // DSLMap.g:275:14: ( '\\r\\n' )=> '\\r\\n'
-                    {
-                    match("\r\n"); if (failed) return ;
-
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:276:25: '\\r'
-                    {
-                    match('\r'); if (failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // DSLMap.g:277:25: '\\n'
-                    {
-                    match('\n'); if (failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EOL
-
-    // $ANTLR start EscapeSequence
-    public final void mEscapeSequence() throws RecognitionException {
-        try {
-            // DSLMap.g:283:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' ) )
-            // DSLMap.g:283:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' )
-            {
-            match('\\'); if (failed) return ;
-            if ( (input.LA(1)>='\"' && input.LA(1)<='$')||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='0'||input.LA(1)=='='||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='u')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
-                input.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EscapeSequence
-
-    // $ANTLR start LEFT_SQUARE
-    public final void mLEFT_SQUARE() throws RecognitionException {
-        try {
-            int _type = LEFT_SQUARE;
-            // DSLMap.g:290:9: ( '[' )
-            // DSLMap.g:290:11: '['
-            {
-            match('['); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LEFT_SQUARE
-
-    // $ANTLR start RIGHT_SQUARE
-    public final void mRIGHT_SQUARE() throws RecognitionException {
-        try {
-            int _type = RIGHT_SQUARE;
-            // DSLMap.g:294:9: ( ']' )
-            // DSLMap.g:294:11: ']'
-            {
-            match(']'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end RIGHT_SQUARE
-
-    // $ANTLR start LEFT_CURLY
-    public final void mLEFT_CURLY() throws RecognitionException {
-        try {
-            int _type = LEFT_CURLY;
-            // DSLMap.g:298:9: ( '{' )
-            // DSLMap.g:298:11: '{'
-            {
-            match('{'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LEFT_CURLY
-
-    // $ANTLR start RIGHT_CURLY
-    public final void mRIGHT_CURLY() throws RecognitionException {
-        try {
-            int _type = RIGHT_CURLY;
-            // DSLMap.g:302:9: ( '}' )
-            // DSLMap.g:302:11: '}'
-            {
-            match('}'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end RIGHT_CURLY
-
-    // $ANTLR start EQUALS
-    public final void mEQUALS() throws RecognitionException {
-        try {
-            int _type = EQUALS;
-            // DSLMap.g:305:8: ( '=' )
-            // DSLMap.g:305:10: '='
-            {
-            match('='); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end EQUALS
-
-    // $ANTLR start DOT
-    public final void mDOT() throws RecognitionException {
-        try {
-            int _type = DOT;
-            // DSLMap.g:308:5: ( '.' )
-            // DSLMap.g:308:7: '.'
-            {
-            match('.'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end DOT
-
-    // $ANTLR start POUND
-    public final void mPOUND() throws RecognitionException {
-        try {
-            int _type = POUND;
-            // DSLMap.g:311:9: ( '#' )
-            // DSLMap.g:311:11: '#'
-            {
-            match('#'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end POUND
-
-    // $ANTLR start COLON
-    public final void mCOLON() throws RecognitionException {
-        try {
-            int _type = COLON;
-            // DSLMap.g:314:7: ( ':' )
-            // DSLMap.g:314:9: ':'
-            {
-            match(':'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end COLON
-
-    // $ANTLR start COMMA
-    public final void mCOMMA() throws RecognitionException {
-        try {
-            int _type = COMMA;
-            // DSLMap.g:317:7: ( ',' )
-            // DSLMap.g:317:9: ','
-            {
-            match(','); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end COMMA
-
-    // $ANTLR start LINE_COMMENT
-    public final void mLINE_COMMENT() throws RecognitionException {
-        try {
-            int _type = LINE_COMMENT;
-            // DSLMap.g:325:2: ( POUND ( options {greedy=false; } : . )* EOL )
-            // DSLMap.g:325:4: POUND ( options {greedy=false; } : . )* EOL
-            {
-            mPOUND(); if (failed) return ;
-            // DSLMap.g:325:10: ( options {greedy=false; } : . )*
-            loop3:
-            do {
-                int alt3=2;
-                int LA3_0 = input.LA(1);
-
-                if ( (LA3_0=='\r') ) {
-                    alt3=2;
-                }
-                else if ( (LA3_0=='\n') ) {
-                    alt3=2;
-                }
-                else if ( ((LA3_0>='\u0000' && LA3_0<='\t')||(LA3_0>='\u000B' && LA3_0<='\f')||(LA3_0>='\u000E' && LA3_0<='\uFFFE')) ) {
-                    alt3=1;
-                }
-
-
-                switch (alt3) {
-            	case 1 :
-            	    // DSLMap.g:325:37: .
-            	    {
-            	    matchAny(); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop3;
-                }
-            } while (true);
-
-            mEOL(); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LINE_COMMENT
-
-    // $ANTLR start LITERAL
-    public final void mLITERAL() throws RecognitionException {
-        try {
-            int _type = LITERAL;
-            // DSLMap.g:333:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
-            // DSLMap.g:333:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
-            {
-            // DSLMap.g:333:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
-            int cnt4=0;
-            loop4:
-            do {
-                int alt4=9;
-                switch ( input.LA(1) ) {
-                case 'a':
-                case 'b':
-                case 'c':
-                case 'd':
-                case 'e':
-                case 'f':
-                case 'g':
-                case 'h':
-                case 'i':
-                case 'j':
-                case 'k':
-                case 'l':
-                case 'm':
-                case 'n':
-                case 'o':
-                case 'p':
-                case 'q':
-                case 'r':
-                case 's':
-                case 't':
-                case 'u':
-                case 'v':
-                case 'w':
-                case 'x':
-                case 'y':
-                case 'z':
-                    {
-                    alt4=1;
-                    }
-                    break;
-                case 'A':
-                case 'B':
-                case 'C':
-                case 'D':
-                case 'E':
-                case 'F':
-                case 'G':
-                case 'H':
-                case 'I':
-                case 'J':
-                case 'K':
-                case 'L':
-                case 'M':
-                case 'N':
-                case 'O':
-                case 'P':
-                case 'Q':
-                case 'R':
-                case 'S':
-                case 'T':
-                case 'U':
-                case 'V':
-                case 'W':
-                case 'X':
-                case 'Y':
-                case 'Z':
-                    {
-                    alt4=2;
-                    }
-                    break;
-                case '_':
-                    {
-                    alt4=3;
-                    }
-                    break;
-                case '0':
-                case '1':
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                case '8':
-                case '9':
-                    {
-                    alt4=4;
-                    }
-                    break;
-                case '\u00C0':
-                case '\u00C1':
-                case '\u00C2':
-                case '\u00C3':
-                case '\u00C4':
-                case '\u00C5':
-                case '\u00C6':
-                case '\u00C7':
-                case '\u00C8':
-                case '\u00C9':
-                case '\u00CA':
-                case '\u00CB':
-                case '\u00CC':
-                case '\u00CD':
-                case '\u00CE':
-                case '\u00CF':
-                case '\u00D0':
-                case '\u00D1':
-                case '\u00D2':
-                case '\u00D3':
-                case '\u00D4':
-                case '\u00D5':
-                case '\u00D6':
-                case '\u00D7':
-                case '\u00D8':
-                case '\u00D9':
-                case '\u00DA':
-                case '\u00DB':
-                case '\u00DC':
-                case '\u00DD':
-                case '\u00DE':
-                case '\u00DF':
-                case '\u00E0':
-                case '\u00E1':
-                case '\u00E2':
-                case '\u00E3':
-                case '\u00E4':
-                case '\u00E5':
-                case '\u00E6':
-                case '\u00E7':
-                case '\u00E8':
-                case '\u00E9':
-                case '\u00EA':
-                case '\u00EB':
-                case '\u00EC':
-                case '\u00ED':
-                case '\u00EE':
-                case '\u00EF':
-                case '\u00F0':
-                case '\u00F1':
-                case '\u00F2':
-                case '\u00F3':
-                case '\u00F4':
-                case '\u00F5':
-                case '\u00F6':
-                case '\u00F7':
-                case '\u00F8':
-                case '\u00F9':
-                case '\u00FA':
-                case '\u00FB':
-                case '\u00FC':
-                case '\u00FD':
-                case '\u00FE':
-                case '\u00FF':
-                    {
-                    alt4=5;
-                    }
-                    break;
-                case '!':
-                case '\"':
-                case '$':
-                case '%':
-                case '&':
-                case '\'':
-                case '(':
-                case ')':
-                case '*':
-                case '+':
-                case ',':
-                case '-':
-                case '/':
-                case ';':
-                case '<':
-                case '>':
-                case '?':
-                case '@':
-                case '^':
-                case '|':
-                    {
-                    alt4=6;
-                    }
-                    break;
-                case '\\':
-                    {
-                    alt4=7;
-                    }
-                    break;
-                case '.':
-                    {
-                    alt4=8;
-                    }
-                    break;
-
-                }
-
-                switch (alt4) {
-            	case 1 :
-            	    // DSLMap.g:333:5: 'a' .. 'z'
-            	    {
-            	    matchRange('a','z'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // DSLMap.g:333:14: 'A' .. 'Z'
-            	    {
-            	    matchRange('A','Z'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // DSLMap.g:333:23: '_'
-            	    {
-            	    match('_'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 4 :
-            	    // DSLMap.g:333:27: '0' .. '9'
-            	    {
-            	    matchRange('0','9'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 5 :
-            	    // DSLMap.g:333:36: '\\u00c0' .. '\\u00ff'
-            	    {
-            	    matchRange('\u00C0','\u00FF'); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 6 :
-            	    // DSLMap.g:333:55: MISC
-            	    {
-            	    mMISC(); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 7 :
-            	    // DSLMap.g:333:60: EscapeSequence
-            	    {
-            	    mEscapeSequence(); if (failed) return ;
-
-            	    }
-            	    break;
-            	case 8 :
-            	    // DSLMap.g:333:75: DOT
-            	    {
-            	    mDOT(); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt4 >= 1 ) break loop4;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(4, input);
-                        throw eee;
-                }
-                cnt4++;
-            } while (true);
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end LITERAL
-
-    // $ANTLR start MISC
-    public final void mMISC() throws RecognitionException {
-        try {
-            // DSLMap.g:337:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | COMMA | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
-            // DSLMap.g:
-            {
-            if ( (input.LA(1)>='!' && input.LA(1)<='\"')||(input.LA(1)>='$' && input.LA(1)<='-')||input.LA(1)=='/'||(input.LA(1)>=';' && input.LA(1)<='<')||(input.LA(1)>='>' && input.LA(1)<='@')||input.LA(1)=='^'||input.LA(1)=='|' ) {
-                input.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end MISC
-
-    public void mTokens() throws RecognitionException {
-        // DSLMap.g:1:8: ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL )
-        int alt5=13;
-        switch ( input.LA(1) ) {
-        case '\t':
-        case '\f':
-        case ' ':
-            {
-            alt5=1;
-            }
-            break;
-        case '\n':
-        case '\r':
-            {
-            alt5=2;
-            }
-            break;
-        case '[':
-            {
-            alt5=3;
-            }
-            break;
-        case ']':
-            {
-            alt5=4;
-            }
-            break;
-        case '{':
-            {
-            alt5=5;
-            }
-            break;
-        case '}':
-            {
-            alt5=6;
-            }
-            break;
-        case '=':
-            {
-            alt5=7;
-            }
-            break;
-        case '.':
-            {
-            int LA5_8 = input.LA(2);
-
-            if ( ((LA5_8>='!' && LA5_8<='\"')||(LA5_8>='$' && LA5_8<='9')||(LA5_8>=';' && LA5_8<='<')||(LA5_8>='>' && LA5_8<='Z')||LA5_8=='\\'||(LA5_8>='^' && LA5_8<='_')||(LA5_8>='a' && LA5_8<='z')||LA5_8=='|'||(LA5_8>='\u00C0' && LA5_8<='\u00FF')) ) {
-                alt5=13;
-            }
-            else {
-                alt5=8;}
-            }
-            break;
-        case '#':
-            {
-            int LA5_9 = input.LA(2);
-
-            if ( ((LA5_9>='\u0000' && LA5_9<='\uFFFE')) ) {
-                alt5=12;
-            }
-            else {
-                alt5=9;}
-            }
-            break;
-        case ':':
-            {
-            alt5=10;
-            }
-            break;
-        case ',':
-            {
-            int LA5_11 = input.LA(2);
-
-            if ( ((LA5_11>='!' && LA5_11<='\"')||(LA5_11>='$' && LA5_11<='9')||(LA5_11>=';' && LA5_11<='<')||(LA5_11>='>' && LA5_11<='Z')||LA5_11=='\\'||(LA5_11>='^' && LA5_11<='_')||(LA5_11>='a' && LA5_11<='z')||LA5_11=='|'||(LA5_11>='\u00C0' && LA5_11<='\u00FF')) ) {
-                alt5=13;
-            }
-            else {
-                alt5=11;}
-            }
-            break;
-        case '!':
-        case '\"':
-        case '$':
-        case '%':
-        case '&':
-        case '\'':
-        case '(':
-        case ')':
-        case '*':
-        case '+':
-        case '-':
-        case '/':
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
-        case '8':
-        case '9':
-        case ';':
-        case '<':
-        case '>':
-        case '?':
-        case '@':
-        case 'A':
-        case 'B':
-        case 'C':
-        case 'D':
-        case 'E':
-        case 'F':
-        case 'G':
-        case 'H':
-        case 'I':
-        case 'J':
-        case 'K':
-        case 'L':
-        case 'M':
-        case 'N':
-        case 'O':
-        case 'P':
-        case 'Q':
-        case 'R':
-        case 'S':
-        case 'T':
-        case 'U':
-        case 'V':
-        case 'W':
-        case 'X':
-        case 'Y':
-        case 'Z':
-        case '\\':
-        case '^':
-        case '_':
-        case 'a':
-        case 'b':
-        case 'c':
-        case 'd':
-        case 'e':
-        case 'f':
-        case 'g':
-        case 'h':
-        case 'i':
-        case 'j':
-        case 'k':
-        case 'l':
-        case 'm':
-        case 'n':
-        case 'o':
-        case 'p':
-        case 'q':
-        case 'r':
-        case 's':
-        case 't':
-        case 'u':
-        case 'v':
-        case 'w':
-        case 'x':
-        case 'y':
-        case 'z':
-        case '|':
-        case '\u00C0':
-        case '\u00C1':
-        case '\u00C2':
-        case '\u00C3':
-        case '\u00C4':
-        case '\u00C5':
-        case '\u00C6':
-        case '\u00C7':
-        case '\u00C8':
-        case '\u00C9':
-        case '\u00CA':
-        case '\u00CB':
-        case '\u00CC':
-        case '\u00CD':
-        case '\u00CE':
-        case '\u00CF':
-        case '\u00D0':
-        case '\u00D1':
-        case '\u00D2':
-        case '\u00D3':
-        case '\u00D4':
-        case '\u00D5':
-        case '\u00D6':
-        case '\u00D7':
-        case '\u00D8':
-        case '\u00D9':
-        case '\u00DA':
-        case '\u00DB':
-        case '\u00DC':
-        case '\u00DD':
-        case '\u00DE':
-        case '\u00DF':
-        case '\u00E0':
-        case '\u00E1':
-        case '\u00E2':
-        case '\u00E3':
-        case '\u00E4':
-        case '\u00E5':
-        case '\u00E6':
-        case '\u00E7':
-        case '\u00E8':
-        case '\u00E9':
-        case '\u00EA':
-        case '\u00EB':
-        case '\u00EC':
-        case '\u00ED':
-        case '\u00EE':
-        case '\u00EF':
-        case '\u00F0':
-        case '\u00F1':
-        case '\u00F2':
-        case '\u00F3':
-        case '\u00F4':
-        case '\u00F5':
-        case '\u00F6':
-        case '\u00F7':
-        case '\u00F8':
-        case '\u00F9':
-        case '\u00FA':
-        case '\u00FB':
-        case '\u00FC':
-        case '\u00FD':
-        case '\u00FE':
-        case '\u00FF':
-            {
-            alt5=13;
-            }
-            break;
-        default:
-            if (backtracking>0) {failed=true; return ;}
-            NoViableAltException nvae =
-                new NoViableAltException("1:1: Tokens : ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL );", 5, 0, input);
-
-            throw nvae;
-        }
-
-        switch (alt5) {
-            case 1 :
-                // DSLMap.g:1:10: WS
-                {
-                mWS(); if (failed) return ;
-
-                }
-                break;
-            case 2 :
-                // DSLMap.g:1:13: EOL
-                {
-                mEOL(); if (failed) return ;
-
-                }
-                break;
-            case 3 :
-                // DSLMap.g:1:17: LEFT_SQUARE
-                {
-                mLEFT_SQUARE(); if (failed) return ;
-
-                }
-                break;
-            case 4 :
-                // DSLMap.g:1:29: RIGHT_SQUARE
-                {
-                mRIGHT_SQUARE(); if (failed) return ;
-
-                }
-                break;
-            case 5 :
-                // DSLMap.g:1:42: LEFT_CURLY
-                {
-                mLEFT_CURLY(); if (failed) return ;
-
-                }
-                break;
-            case 6 :
-                // DSLMap.g:1:53: RIGHT_CURLY
-                {
-                mRIGHT_CURLY(); if (failed) return ;
-
-                }
-                break;
-            case 7 :
-                // DSLMap.g:1:65: EQUALS
-                {
-                mEQUALS(); if (failed) return ;
-
-                }
-                break;
-            case 8 :
-                // DSLMap.g:1:72: DOT
-                {
-                mDOT(); if (failed) return ;
-
-                }
-                break;
-            case 9 :
-                // DSLMap.g:1:76: POUND
-                {
-                mPOUND(); if (failed) return ;
-
-                }
-                break;
-            case 10 :
-                // DSLMap.g:1:82: COLON
-                {
-                mCOLON(); if (failed) return ;
-
-                }
-                break;
-            case 11 :
-                // DSLMap.g:1:88: COMMA
-                {
-                mCOMMA(); if (failed) return ;
-
-                }
-                break;
-            case 12 :
-                // DSLMap.g:1:94: LINE_COMMENT
-                {
-                mLINE_COMMENT(); if (failed) return ;
-
-                }
-                break;
-            case 13 :
-                // DSLMap.g:1:107: LITERAL
-                {
-                mLITERAL(); if (failed) return ;
-
-                }
-                break;
-
-        }
-
-    }
-
-    // $ANTLR start synpred1
-    public final void synpred1_fragment() throws RecognitionException {   
-        // DSLMap.g:275:14: ( '\\r\\n' )
-        // DSLMap.g:275:16: '\\r\\n'
-        {
-        match("\r\n"); if (failed) return ;
-
-
-        }
-    }
-    // $ANTLR end synpred1
-
-    public final boolean synpred1() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred1_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-
-
- 
-
+//	import org.drools.lang.dsl.DSLMappingParseException;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+public class DSLMapLexer extends Lexer {
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_VAR_DEF=15;
+    public static final int VT_ENTRY=6;
+    public static final int VT_PATTERN=18;
+    public static final int LITERAL=26;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int Tokens=36;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int VT_SCOPE=7;
+    public static final int COLON=28;
+    public static final int VT_KEYWORD=10;
+    public static final int VT_QUAL=19;
+    public static final int VT_VAR_REF=16;
+    public static final int LEFT_CURLY=29;
+    public static final int POUND=34;
+    public static final int RIGHT_SQUARE=25;
+    public DSLMapLexer() {;} 
+    public DSLMapLexer(CharStream input) {
+        super(input);
+        ruleMemo = new HashMap[17+1];
+     }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
+
+    // $ANTLR start WS
+    public final void mWS() throws RecognitionException {
+        try {
+            int _type = WS;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:9: ( ( ' ' | '\\t' | '\\f' )+ )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:269:17: ( ' ' | '\\t' | '\\f' )+
+            int cnt1=0;
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0=='\t'||LA1_0=='\f'||LA1_0==' ') ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:
+            	    {
+            	    if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
+            	        input.consume();
+            	    failed=false;
+            	    }
+            	    else {
+            	        if (backtracking>0) {failed=true; return ;}
+            	        MismatchedSetException mse =
+            	            new MismatchedSetException(null,input);
+            	        recover(mse);    throw mse;
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt1 >= 1 ) break loop1;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(1, input);
+                        throw eee;
+                }
+                cnt1++;
+            } while (true);
+
+            if ( backtracking==0 ) {
+               channel=HIDDEN;
+            }
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end WS
+
+    // $ANTLR start EOL
+    public final void mEOL() throws RecognitionException {
+        try {
+            int _type = EOL;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:276:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            int alt2=3;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0=='\r') ) {
+                int LA2_1 = input.LA(2);
+
+                if ( (LA2_1=='\n') && (synpred1())) {
+                    alt2=1;
+                }
+                else {
+                    alt2=2;}
+            }
+            else if ( (LA2_0=='\n') ) {
+                alt2=3;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("277:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )=> '\\r\\n'
+                    {
+                    match("\r\n"); if (failed) return ;
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:278:25: '\\r'
+                    {
+                    match('\r'); if (failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:279:25: '\\n'
+                    {
+                    match('\n'); if (failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end EOL
+
+    // $ANTLR start EscapeSequence
+    public final void mEscapeSequence() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:285:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:285:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' | '=' | 'u' | '0' | '#' )
+            {
+            match('\\'); if (failed) return ;
+            if ( (input.LA(1)>='\"' && input.LA(1)<='$')||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='0'||input.LA(1)=='='||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='u')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
+                input.consume();
+            failed=false;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end EscapeSequence
+
+    // $ANTLR start LEFT_SQUARE
+    public final void mLEFT_SQUARE() throws RecognitionException {
+        try {
+            int _type = LEFT_SQUARE;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:292:9: ( '[' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:292:11: '['
+            {
+            match('['); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LEFT_SQUARE
+
+    // $ANTLR start RIGHT_SQUARE
+    public final void mRIGHT_SQUARE() throws RecognitionException {
+        try {
+            int _type = RIGHT_SQUARE;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:296:9: ( ']' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:296:11: ']'
+            {
+            match(']'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end RIGHT_SQUARE
+
+    // $ANTLR start LEFT_CURLY
+    public final void mLEFT_CURLY() throws RecognitionException {
+        try {
+            int _type = LEFT_CURLY;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:300:9: ( '{' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:300:11: '{'
+            {
+            match('{'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LEFT_CURLY
+
+    // $ANTLR start RIGHT_CURLY
+    public final void mRIGHT_CURLY() throws RecognitionException {
+        try {
+            int _type = RIGHT_CURLY;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:304:9: ( '}' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:304:11: '}'
+            {
+            match('}'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end RIGHT_CURLY
+
+    // $ANTLR start EQUALS
+    public final void mEQUALS() throws RecognitionException {
+        try {
+            int _type = EQUALS;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:307:8: ( '=' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:307:10: '='
+            {
+            match('='); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end EQUALS
+
+    // $ANTLR start DOT
+    public final void mDOT() throws RecognitionException {
+        try {
+            int _type = DOT;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:310:5: ( '.' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:310:7: '.'
+            {
+            match('.'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end DOT
+
+    // $ANTLR start POUND
+    public final void mPOUND() throws RecognitionException {
+        try {
+            int _type = POUND;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:313:9: ( '#' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:313:11: '#'
+            {
+            match('#'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end POUND
+
+    // $ANTLR start COLON
+    public final void mCOLON() throws RecognitionException {
+        try {
+            int _type = COLON;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:316:7: ( ':' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:316:9: ':'
+            {
+            match(':'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end COLON
+
+    // $ANTLR start COMMA
+    public final void mCOMMA() throws RecognitionException {
+        try {
+            int _type = COMMA;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:319:7: ( ',' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:319:9: ','
+            {
+            match(','); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end COMMA
+
+    // $ANTLR start LINE_COMMENT
+    public final void mLINE_COMMENT() throws RecognitionException {
+        try {
+            int _type = LINE_COMMENT;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:2: ( POUND ( options {greedy=false; } : . )* EOL )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:4: POUND ( options {greedy=false; } : . )* EOL
+            {
+            mPOUND(); if (failed) return ;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:10: ( options {greedy=false; } : . )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0=='\r') ) {
+                    alt3=2;
+                }
+                else if ( (LA3_0=='\n') ) {
+                    alt3=2;
+                }
+                else if ( ((LA3_0>='\u0000' && LA3_0<='\t')||(LA3_0>='\u000B' && LA3_0<='\f')||(LA3_0>='\u000E' && LA3_0<='\uFFFE')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:327:37: .
+            	    {
+            	    matchAny(); if (failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+            mEOL(); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LINE_COMMENT
+
+    // $ANTLR start LITERAL
+    public final void mLITERAL() throws RecognitionException {
+        try {
+            int _type = LITERAL;
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=9;
+                switch ( input.LA(1) ) {
+                case 'a':
+                case 'b':
+                case 'c':
+                case 'd':
+                case 'e':
+                case 'f':
+                case 'g':
+                case 'h':
+                case 'i':
+                case 'j':
+                case 'k':
+                case 'l':
+                case 'm':
+                case 'n':
+                case 'o':
+                case 'p':
+                case 'q':
+                case 'r':
+                case 's':
+                case 't':
+                case 'u':
+                case 'v':
+                case 'w':
+                case 'x':
+                case 'y':
+                case 'z':
+                    {
+                    alt4=1;
+                    }
+                    break;
+                case 'A':
+                case 'B':
+                case 'C':
+                case 'D':
+                case 'E':
+                case 'F':
+                case 'G':
+                case 'H':
+                case 'I':
+                case 'J':
+                case 'K':
+                case 'L':
+                case 'M':
+                case 'N':
+                case 'O':
+                case 'P':
+                case 'Q':
+                case 'R':
+                case 'S':
+                case 'T':
+                case 'U':
+                case 'V':
+                case 'W':
+                case 'X':
+                case 'Y':
+                case 'Z':
+                    {
+                    alt4=2;
+                    }
+                    break;
+                case '_':
+                    {
+                    alt4=3;
+                    }
+                    break;
+                case '0':
+                case '1':
+                case '2':
+                case '3':
+                case '4':
+                case '5':
+                case '6':
+                case '7':
+                case '8':
+                case '9':
+                    {
+                    alt4=4;
+                    }
+                    break;
+                case '\u00C0':
+                case '\u00C1':
+                case '\u00C2':
+                case '\u00C3':
+                case '\u00C4':
+                case '\u00C5':
+                case '\u00C6':
+                case '\u00C7':
+                case '\u00C8':
+                case '\u00C9':
+                case '\u00CA':
+                case '\u00CB':
+                case '\u00CC':
+                case '\u00CD':
+                case '\u00CE':
+                case '\u00CF':
+                case '\u00D0':
+                case '\u00D1':
+                case '\u00D2':
+                case '\u00D3':
+                case '\u00D4':
+                case '\u00D5':
+                case '\u00D6':
+                case '\u00D7':
+                case '\u00D8':
+                case '\u00D9':
+                case '\u00DA':
+                case '\u00DB':
+                case '\u00DC':
+                case '\u00DD':
+                case '\u00DE':
+                case '\u00DF':
+                case '\u00E0':
+                case '\u00E1':
+                case '\u00E2':
+                case '\u00E3':
+                case '\u00E4':
+                case '\u00E5':
+                case '\u00E6':
+                case '\u00E7':
+                case '\u00E8':
+                case '\u00E9':
+                case '\u00EA':
+                case '\u00EB':
+                case '\u00EC':
+                case '\u00ED':
+                case '\u00EE':
+                case '\u00EF':
+                case '\u00F0':
+                case '\u00F1':
+                case '\u00F2':
+                case '\u00F3':
+                case '\u00F4':
+                case '\u00F5':
+                case '\u00F6':
+                case '\u00F7':
+                case '\u00F8':
+                case '\u00F9':
+                case '\u00FA':
+                case '\u00FB':
+                case '\u00FC':
+                case '\u00FD':
+                case '\u00FE':
+                case '\u00FF':
+                    {
+                    alt4=5;
+                    }
+                    break;
+                case '!':
+                case '\"':
+                case '$':
+                case '%':
+                case '&':
+                case '\'':
+                case '(':
+                case ')':
+                case '*':
+                case '+':
+                case ',':
+                case '-':
+                case '/':
+                case ';':
+                case '<':
+                case '>':
+                case '?':
+                case '@':
+                case '^':
+                case '|':
+                    {
+                    alt4=6;
+                    }
+                    break;
+                case '\\':
+                    {
+                    alt4=7;
+                    }
+                    break;
+                case '.':
+                    {
+                    alt4=8;
+                    }
+                    break;
+
+                }
+
+                switch (alt4) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:5: 'a' .. 'z'
+            	    {
+            	    matchRange('a','z'); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:14: 'A' .. 'Z'
+            	    {
+            	    matchRange('A','Z'); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:23: '_'
+            	    {
+            	    match('_'); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 4 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:27: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 5 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:36: '\\u00c0' .. '\\u00ff'
+            	    {
+            	    matchRange('\u00C0','\u00FF'); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 6 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:55: MISC
+            	    {
+            	    mMISC(); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 7 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:60: EscapeSequence
+            	    {
+            	    mEscapeSequence(); if (failed) return ;
+
+            	    }
+            	    break;
+            	case 8 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:335:75: DOT
+            	    {
+            	    mDOT(); if (failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LITERAL
+
+    // $ANTLR start MISC
+    public final void mMISC() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:339:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | COMMA | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:
+            {
+            if ( (input.LA(1)>='!' && input.LA(1)<='\"')||(input.LA(1)>='$' && input.LA(1)<='-')||input.LA(1)=='/'||(input.LA(1)>=';' && input.LA(1)<='<')||(input.LA(1)>='>' && input.LA(1)<='@')||input.LA(1)=='^'||input.LA(1)=='|' ) {
+                input.consume();
+            failed=false;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end MISC
+
+    public void mTokens() throws RecognitionException {
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:8: ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL )
+        int alt5=13;
+        switch ( input.LA(1) ) {
+        case '\t':
+        case '\f':
+        case ' ':
+            {
+            alt5=1;
+            }
+            break;
+        case '\n':
+        case '\r':
+            {
+            alt5=2;
+            }
+            break;
+        case '[':
+            {
+            alt5=3;
+            }
+            break;
+        case ']':
+            {
+            alt5=4;
+            }
+            break;
+        case '{':
+            {
+            alt5=5;
+            }
+            break;
+        case '}':
+            {
+            alt5=6;
+            }
+            break;
+        case '=':
+            {
+            alt5=7;
+            }
+            break;
+        case '.':
+            {
+            int LA5_8 = input.LA(2);
+
+            if ( ((LA5_8>='!' && LA5_8<='\"')||(LA5_8>='$' && LA5_8<='9')||(LA5_8>=';' && LA5_8<='<')||(LA5_8>='>' && LA5_8<='Z')||LA5_8=='\\'||(LA5_8>='^' && LA5_8<='_')||(LA5_8>='a' && LA5_8<='z')||LA5_8=='|'||(LA5_8>='\u00C0' && LA5_8<='\u00FF')) ) {
+                alt5=13;
+            }
+            else {
+                alt5=8;}
+            }
+            break;
+        case '#':
+            {
+            int LA5_9 = input.LA(2);
+
+            if ( ((LA5_9>='\u0000' && LA5_9<='\uFFFE')) ) {
+                alt5=12;
+            }
+            else {
+                alt5=9;}
+            }
+            break;
+        case ':':
+            {
+            alt5=10;
+            }
+            break;
+        case ',':
+            {
+            int LA5_11 = input.LA(2);
+
+            if ( ((LA5_11>='!' && LA5_11<='\"')||(LA5_11>='$' && LA5_11<='9')||(LA5_11>=';' && LA5_11<='<')||(LA5_11>='>' && LA5_11<='Z')||LA5_11=='\\'||(LA5_11>='^' && LA5_11<='_')||(LA5_11>='a' && LA5_11<='z')||LA5_11=='|'||(LA5_11>='\u00C0' && LA5_11<='\u00FF')) ) {
+                alt5=13;
+            }
+            else {
+                alt5=11;}
+            }
+            break;
+        case '!':
+        case '\"':
+        case '$':
+        case '%':
+        case '&':
+        case '\'':
+        case '(':
+        case ')':
+        case '*':
+        case '+':
+        case '-':
+        case '/':
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        case ';':
+        case '<':
+        case '>':
+        case '?':
+        case '@':
+        case 'A':
+        case 'B':
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+        case 'I':
+        case 'J':
+        case 'K':
+        case 'L':
+        case 'M':
+        case 'N':
+        case 'O':
+        case 'P':
+        case 'Q':
+        case 'R':
+        case 'S':
+        case 'T':
+        case 'U':
+        case 'V':
+        case 'W':
+        case 'X':
+        case 'Y':
+        case 'Z':
+        case '\\':
+        case '^':
+        case '_':
+        case 'a':
+        case 'b':
+        case 'c':
+        case 'd':
+        case 'e':
+        case 'f':
+        case 'g':
+        case 'h':
+        case 'i':
+        case 'j':
+        case 'k':
+        case 'l':
+        case 'm':
+        case 'n':
+        case 'o':
+        case 'p':
+        case 'q':
+        case 'r':
+        case 's':
+        case 't':
+        case 'u':
+        case 'v':
+        case 'w':
+        case 'x':
+        case 'y':
+        case 'z':
+        case '|':
+        case '\u00C0':
+        case '\u00C1':
+        case '\u00C2':
+        case '\u00C3':
+        case '\u00C4':
+        case '\u00C5':
+        case '\u00C6':
+        case '\u00C7':
+        case '\u00C8':
+        case '\u00C9':
+        case '\u00CA':
+        case '\u00CB':
+        case '\u00CC':
+        case '\u00CD':
+        case '\u00CE':
+        case '\u00CF':
+        case '\u00D0':
+        case '\u00D1':
+        case '\u00D2':
+        case '\u00D3':
+        case '\u00D4':
+        case '\u00D5':
+        case '\u00D6':
+        case '\u00D7':
+        case '\u00D8':
+        case '\u00D9':
+        case '\u00DA':
+        case '\u00DB':
+        case '\u00DC':
+        case '\u00DD':
+        case '\u00DE':
+        case '\u00DF':
+        case '\u00E0':
+        case '\u00E1':
+        case '\u00E2':
+        case '\u00E3':
+        case '\u00E4':
+        case '\u00E5':
+        case '\u00E6':
+        case '\u00E7':
+        case '\u00E8':
+        case '\u00E9':
+        case '\u00EA':
+        case '\u00EB':
+        case '\u00EC':
+        case '\u00ED':
+        case '\u00EE':
+        case '\u00EF':
+        case '\u00F0':
+        case '\u00F1':
+        case '\u00F2':
+        case '\u00F3':
+        case '\u00F4':
+        case '\u00F5':
+        case '\u00F6':
+        case '\u00F7':
+        case '\u00F8':
+        case '\u00F9':
+        case '\u00FA':
+        case '\u00FB':
+        case '\u00FC':
+        case '\u00FD':
+        case '\u00FE':
+        case '\u00FF':
+            {
+            alt5=13;
+            }
+            break;
+        default:
+            if (backtracking>0) {failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("1:1: Tokens : ( WS | EOL | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | EQUALS | DOT | POUND | COLON | COMMA | LINE_COMMENT | LITERAL );", 5, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt5) {
+            case 1 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:10: WS
+                {
+                mWS(); if (failed) return ;
+
+                }
+                break;
+            case 2 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:13: EOL
+                {
+                mEOL(); if (failed) return ;
+
+                }
+                break;
+            case 3 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:17: LEFT_SQUARE
+                {
+                mLEFT_SQUARE(); if (failed) return ;
+
+                }
+                break;
+            case 4 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:29: RIGHT_SQUARE
+                {
+                mRIGHT_SQUARE(); if (failed) return ;
+
+                }
+                break;
+            case 5 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:42: LEFT_CURLY
+                {
+                mLEFT_CURLY(); if (failed) return ;
+
+                }
+                break;
+            case 6 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:53: RIGHT_CURLY
+                {
+                mRIGHT_CURLY(); if (failed) return ;
+
+                }
+                break;
+            case 7 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:65: EQUALS
+                {
+                mEQUALS(); if (failed) return ;
+
+                }
+                break;
+            case 8 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:72: DOT
+                {
+                mDOT(); if (failed) return ;
+
+                }
+                break;
+            case 9 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:76: POUND
+                {
+                mPOUND(); if (failed) return ;
+
+                }
+                break;
+            case 10 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:82: COLON
+                {
+                mCOLON(); if (failed) return ;
+
+                }
+                break;
+            case 11 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:88: COMMA
+                {
+                mCOMMA(); if (failed) return ;
+
+                }
+                break;
+            case 12 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:94: LINE_COMMENT
+                {
+                mLINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 13 :
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:1:107: LITERAL
+                {
+                mLITERAL(); if (failed) return ;
+
+                }
+                break;
+
+        }
+
+    }
+
+    // $ANTLR start synpred1
+    public final void synpred1_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:14: ( '\\r\\n' )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:277:16: '\\r\\n'
+        {
+        match("\r\n"); if (failed) return ;
+
+
+        }
+    }
+    // $ANTLR end synpred1
+
+    public final boolean synpred1() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+
+
+ 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -1,75 +1,76 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-06-11 12:09:03
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2008-10-20 12:49:42
 
 	package org.drools.lang.dsl;
 	import java.util.List;
 	import java.util.ArrayList;
-	import org.drools.lang.dsl.DSLMappingParseException;
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-
-import org.antlr.runtime.tree.*;
-
-public class DSLMapParser extends Parser {
-    public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
-    };
-    public static final int COMMA=26;
-    public static final int RIGHT_CURLY=29;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=30;
-    public static final int MISC=34;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=19;
-    public static final int LINE_COMMENT=21;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=32;
-    public static final int EQUALS=22;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_ENTRY=6;
-    public static final int VT_VAR_DEF=15;
-    public static final int LITERAL=25;
-    public static final int VT_PATTERN=18;
-    public static final int EscapeSequence=31;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=20;
-    public static final int LEFT_SQUARE=23;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int COLON=27;
-    public static final int VT_SCOPE=7;
-    public static final int VT_KEYWORD=10;
-    public static final int POUND=33;
-    public static final int LEFT_CURLY=28;
-    public static final int VT_VAR_REF=16;
-    public static final int RIGHT_SQUARE=24;
-
-        public DSLMapParser(TokenStream input) {
-            super(input);
-            ruleMemo = new HashMap[47+1];
-         }
-        
-    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
-
-    public void setTreeAdaptor(TreeAdaptor adaptor) {
-        this.adaptor = adaptor;
-    }
-    public TreeAdaptor getTreeAdaptor() {
-        return adaptor;
-    }
-
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "DSLMap.g"; }
-
-    
+//	import org.drools.lang.dsl.DSLMappingParseException;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.tree.*;
+
+public class DSLMapParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
+    };
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_ENTRY=6;
+    public static final int VT_VAR_DEF=15;
+    public static final int LITERAL=26;
+    public static final int VT_PATTERN=18;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int COLON=28;
+    public static final int VT_SCOPE=7;
+    public static final int VT_KEYWORD=10;
+    public static final int POUND=34;
+    public static final int LEFT_CURLY=29;
+    public static final int VT_VAR_REF=16;
+    public static final int VT_QUAL=19;
+    public static final int RIGHT_SQUARE=25;
+
+        public DSLMapParser(TokenStream input) {
+            super(input);
+            ruleMemo = new HashMap[48+1];
+         }
+        
+    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
+
+    public void setTreeAdaptor(TreeAdaptor adaptor) {
+        this.adaptor = adaptor;
+    }
+    public TreeAdaptor getTreeAdaptor() {
+        return adaptor;
+    }
+
+    public String[] getTokenNames() { return tokenNames; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMap.g"; }
+
+
     //we may not need the check on [], as the LITERAL token being examined 
     //should not have them.
     	
@@ -77,7 +78,7 @@
     	public List getErrorList(){
     		return errorList;
     	}
-    
+
     	private boolean validateLT(int LTNumber, String text){
     		if (null == input) return false;
     		if (null == input.LT(LTNumber)) return false;
@@ -87,2949 +88,3147 @@
     		if (text2Validate.startsWith("[") && text2Validate.endsWith("]")){
     			text2Validate = text2Validate.substring(1, text2Validate.length() - 1); 
     		}
-    
+
     		return text2Validate.equalsIgnoreCase(text);
     	}
-    
+
     	private boolean validateIdentifierKey(String text){
     		return validateLT(1, text);
     	}
     	
-    	public void reportError(RecognitionException re) {
+    	//public void reportError(RecognitionException re) {
     		// 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;
+    	//	if (errorRecovery) {
+    	//		return;
+    	//	}
+    	//	errorRecovery = true;
+    	//
+    	//	String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
+    	//	DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
+    	//	errorList.add(exception);
+    	//}
     	
-    		String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
-    		DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
-    		errorList.add(exception);
-    	}
-    	
-
-
-    public static class mapping_file_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start mapping_file
-    // DSLMap.g:84:1: mapping_file : ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) ;
-    public final mapping_file_return mapping_file() throws RecognitionException {
-        mapping_file_return retval = new mapping_file_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        statement_return statement1 = null;
-
-
-        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
-        try {
-            // DSLMap.g:85:2: ( ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) )
-            // DSLMap.g:85:4: ( statement )*
-            {
-            // DSLMap.g:85:4: ( statement )*
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
-
-                if ( ((LA1_0>=EOL && LA1_0<=LINE_COMMENT)||LA1_0==LEFT_SQUARE) ) {
-                    alt1=1;
-                }
-
-
-                switch (alt1) {
-            	case 1 :
-            	    // DSLMap.g:0:0: statement
-            	    {
-            	    pushFollow(FOLLOW_statement_in_mapping_file255);
-            	    statement1=statement();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_statement.add(statement1.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop1;
-                }
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: statement
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 86:2: -> ^( VT_DSL_GRAMMAR ( statement )* )
-            {
-                // DSLMap.g:86:5: ^( VT_DSL_GRAMMAR ( statement )* )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_DSL_GRAMMAR, "VT_DSL_GRAMMAR"), root_1);
-
-                // DSLMap.g:86:22: ( statement )*
-                while ( stream_statement.hasNext() ) {
-                    adaptor.addChild(root_1, stream_statement.next());
-
-                }
-                stream_statement.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end mapping_file
-
-    public static class statement_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start statement
-    // DSLMap.g:89:1: statement : ( entry | comment | EOL );
-    public final statement_return statement() throws RecognitionException {
-        statement_return retval = new statement_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EOL4=null;
-        entry_return entry2 = null;
-
-        comment_return comment3 = null;
-
-
-        Object EOL4_tree=null;
-
-        try {
-            // DSLMap.g:90:2: ( entry | comment | EOL )
-            int alt2=3;
-            switch ( input.LA(1) ) {
-            case LEFT_SQUARE:
-                {
-                alt2=1;
-                }
-                break;
-            case LINE_COMMENT:
-                {
-                alt2=2;
-                }
-                break;
-            case EOL:
-                {
-                alt2=3;
-                }
-                break;
-            default:
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("89:1: statement : ( entry | comment | EOL );", 2, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt2) {
-                case 1 :
-                    // DSLMap.g:90:4: entry
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_entry_in_statement278);
-                    entry2=entry();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, entry2.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:91:4: comment
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_comment_in_statement285);
-                    comment3=comment();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, comment3.getTree());
-
-                    }
-                    break;
-                case 3 :
-                    // DSLMap.g:92:4: EOL
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    EOL4=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_statement291); if (failed) return retval;
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end statement
-
-    public static class comment_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start comment
-    // DSLMap.g:97:1: comment : LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) ;
-    public final comment_return comment() throws RecognitionException {
-        comment_return retval = new comment_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LINE_COMMENT5=null;
-
-        Object LINE_COMMENT5_tree=null;
-        RewriteRuleTokenStream stream_LINE_COMMENT=new RewriteRuleTokenStream(adaptor,"token LINE_COMMENT");
-
-        try {
-            // DSLMap.g:97:9: ( LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) )
-            // DSLMap.g:97:11: LINE_COMMENT
-            {
-            LINE_COMMENT5=(Token)input.LT(1);
-            match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_comment307); if (failed) return retval;
-            if ( backtracking==0 ) stream_LINE_COMMENT.add(LINE_COMMENT5);
-
-
-            // AST REWRITE
-            // elements: LINE_COMMENT
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 98:2: -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
-            {
-                // DSLMap.g:98:5: ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_COMMENT, LINE_COMMENT5,  "COMMENT"), root_1);
-
-                adaptor.addChild(root_1, stream_LINE_COMMENT.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end comment
-
-    public static class entry_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start entry
-    // DSLMap.g:102:1: entry : scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
-    public final entry_return entry() throws RecognitionException {
-        entry_return retval = new entry_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EQUALS9=null;
-        Token EOL11=null;
-        Token EOF12=null;
-        scope_section_return scope_section6 = null;
-
-        meta_section_return meta_section7 = null;
-
-        key_section_return key_section8 = null;
-
-        value_section_return value_section10 = null;
-
-
-        Object EQUALS9_tree=null;
-        Object EOL11_tree=null;
-        Object EOF12_tree=null;
-        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
-        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
-        RewriteRuleTokenStream stream_EOL=new RewriteRuleTokenStream(adaptor,"token EOL");
-        RewriteRuleSubtreeStream stream_key_section=new RewriteRuleSubtreeStream(adaptor,"rule key_section");
-        RewriteRuleSubtreeStream stream_value_section=new RewriteRuleSubtreeStream(adaptor,"rule value_section");
-        RewriteRuleSubtreeStream stream_scope_section=new RewriteRuleSubtreeStream(adaptor,"rule scope_section");
-        RewriteRuleSubtreeStream stream_meta_section=new RewriteRuleSubtreeStream(adaptor,"rule meta_section");
-        try {
-            // DSLMap.g:102:8: ( scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
-            // DSLMap.g:102:10: scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF )
-            {
-            pushFollow(FOLLOW_scope_section_in_entry332);
-            scope_section6=scope_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_scope_section.add(scope_section6.getTree());
-            // DSLMap.g:102:24: ( meta_section )?
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-
-            if ( (LA3_0==LEFT_SQUARE) ) {
-                int LA3_1 = input.LA(2);
-
-                if ( (LA3_1==LITERAL) ) {
-                    int LA3_3 = input.LA(3);
-
-                    if ( (LA3_3==RIGHT_SQUARE) ) {
-                        int LA3_4 = input.LA(4);
-
-                        if ( (synpred4()) ) {
-                            alt3=1;
-                        }
-                    }
-                }
-                else if ( (LA3_1==RIGHT_SQUARE) ) {
-                    int LA3_4 = input.LA(3);
-
-                    if ( (synpred4()) ) {
-                        alt3=1;
-                    }
-                }
-            }
-            switch (alt3) {
-                case 1 :
-                    // DSLMap.g:0:0: meta_section
-                    {
-                    pushFollow(FOLLOW_meta_section_in_entry334);
-                    meta_section7=meta_section();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_meta_section.add(meta_section7.getTree());
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_key_section_in_entry337);
-            key_section8=key_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_key_section.add(key_section8.getTree());
-            EQUALS9=(Token)input.LT(1);
-            match(input,EQUALS,FOLLOW_EQUALS_in_entry339); if (failed) return retval;
-            if ( backtracking==0 ) stream_EQUALS.add(EQUALS9);
-
-            pushFollow(FOLLOW_value_section_in_entry341);
-            value_section10=value_section();
-            _fsp--;
-            if (failed) return retval;
-            if ( backtracking==0 ) stream_value_section.add(value_section10.getTree());
-            // DSLMap.g:102:71: ( EOL | EOF )
-            int alt4=2;
-            int LA4_0 = input.LA(1);
-
-            if ( (LA4_0==EOL) ) {
-                alt4=1;
-            }
-            else if ( (LA4_0==EOF) ) {
-                alt4=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("102:71: ( EOL | EOF )", 4, 0, input);
-
-                throw nvae;
-            }
-            switch (alt4) {
-                case 1 :
-                    // DSLMap.g:102:72: EOL
-                    {
-                    EOL11=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_entry344); if (failed) return retval;
-                    if ( backtracking==0 ) stream_EOL.add(EOL11);
-
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:102:76: EOF
-                    {
-                    EOF12=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_entry346); if (failed) return retval;
-                    if ( backtracking==0 ) stream_EOF.add(EOF12);
-
-
-                    }
-                    break;
-
-            }
-
-
-            // AST REWRITE
-            // elements: key_section, value_section, scope_section, meta_section
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 103:2: -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-            {
-                // DSLMap.g:103:5: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY, "VT_ENTRY"), root_1);
-
-                adaptor.addChild(root_1, stream_scope_section.next());
-                // DSLMap.g:103:30: ( meta_section )?
-                if ( stream_meta_section.hasNext() ) {
-                    adaptor.addChild(root_1, stream_meta_section.next());
-
-                }
-                stream_meta_section.reset();
-                adaptor.addChild(root_1, stream_key_section.next());
-                adaptor.addChild(root_1, stream_value_section.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch ( RecognitionException e ) {
-            
+
+
+    public static class mapping_file_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start mapping_file
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:86:1: mapping_file : ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) ;
+    public final mapping_file_return mapping_file() throws RecognitionException {
+        mapping_file_return retval = new mapping_file_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        statement_return statement1 = null;
+
+
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:2: ( ( statement )* -> ^( VT_DSL_GRAMMAR ( statement )* ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:87:4: ( statement )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>=EOL && LA1_0<=LINE_COMMENT)||LA1_0==LEFT_SQUARE) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: statement
+            	    {
+            	    pushFollow(FOLLOW_statement_in_mapping_file273);
+            	    statement1=statement();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) stream_statement.add(statement1.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            // AST REWRITE
+            // elements: statement
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 88:2: -> ^( VT_DSL_GRAMMAR ( statement )* )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:88:5: ^( VT_DSL_GRAMMAR ( statement )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_DSL_GRAMMAR, "VT_DSL_GRAMMAR"), root_1);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:88:22: ( statement )*
+                while ( stream_statement.hasNext() ) {
+                    adaptor.addChild(root_1, stream_statement.next());
+
+                }
+                stream_statement.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end mapping_file
+
+    public static class statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start statement
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:91:1: statement : ( entry | comment | EOL );
+    public final statement_return statement() throws RecognitionException {
+        statement_return retval = new statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EOL4=null;
+        entry_return entry2 = null;
+
+        comment_return comment3 = null;
+
+
+        Object EOL4_tree=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:92:2: ( entry | comment | EOL )
+            int alt2=3;
+            switch ( input.LA(1) ) {
+            case LEFT_SQUARE:
+                {
+                alt2=1;
+                }
+                break;
+            case LINE_COMMENT:
+                {
+                alt2=2;
+                }
+                break;
+            case EOL:
+                {
+                alt2=3;
+                }
+                break;
+            default:
+                if (backtracking>0) {failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("91:1: statement : ( entry | comment | EOL );", 2, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt2) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:92:4: entry
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_entry_in_statement296);
+                    entry2=entry();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, entry2.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:93:4: comment
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_comment_in_statement303);
+                    comment3=comment();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, comment3.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:94:4: EOL
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    EOL4=(Token)input.LT(1);
+                    match(input,EOL,FOLLOW_EOL_in_statement309); if (failed) return retval;
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end statement
+
+    public static class comment_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start comment
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:1: comment : LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) ;
+    public final comment_return comment() throws RecognitionException {
+        comment_return retval = new comment_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LINE_COMMENT5=null;
+
+        Object LINE_COMMENT5_tree=null;
+        RewriteRuleTokenStream stream_LINE_COMMENT=new RewriteRuleTokenStream(adaptor,"token LINE_COMMENT");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:9: ( LINE_COMMENT -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:99:11: LINE_COMMENT
+            {
+            LINE_COMMENT5=(Token)input.LT(1);
+            match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_comment325); if (failed) return retval;
+            if ( backtracking==0 ) stream_LINE_COMMENT.add(LINE_COMMENT5);
+
+
+            // AST REWRITE
+            // elements: LINE_COMMENT
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 100:2: -> ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:100:5: ^( VT_COMMENT[$LINE_COMMENT, \"COMMENT\"] LINE_COMMENT )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_COMMENT, LINE_COMMENT5,  "COMMENT"), root_1);
+
+                adaptor.addChild(root_1, stream_LINE_COMMENT.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end comment
+
+    public static class entry_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start entry
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:1: entry : scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
+    public final entry_return entry() throws RecognitionException {
+        entry_return retval = new entry_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUALS9=null;
+        Token EOL11=null;
+        Token EOF12=null;
+        scope_section_return scope_section6 = null;
+
+        meta_section_return meta_section7 = null;
+
+        key_section_return key_section8 = null;
+
+        value_section_return value_section10 = null;
+
+
+        Object EQUALS9_tree=null;
+        Object EOL11_tree=null;
+        Object EOF12_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
+        RewriteRuleTokenStream stream_EOL=new RewriteRuleTokenStream(adaptor,"token EOL");
+        RewriteRuleSubtreeStream stream_key_section=new RewriteRuleSubtreeStream(adaptor,"rule key_section");
+        RewriteRuleSubtreeStream stream_value_section=new RewriteRuleSubtreeStream(adaptor,"rule value_section");
+        RewriteRuleSubtreeStream stream_scope_section=new RewriteRuleSubtreeStream(adaptor,"rule scope_section");
+        RewriteRuleSubtreeStream stream_meta_section=new RewriteRuleSubtreeStream(adaptor,"rule meta_section");
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:8: ( scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF ) -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:10: scope_section ( meta_section )? key_section EQUALS value_section ( EOL | EOF )
+            {
+            pushFollow(FOLLOW_scope_section_in_entry350);
+            scope_section6=scope_section();
+            _fsp--;
+            if (failed) return retval;
+            if ( backtracking==0 ) stream_scope_section.add(scope_section6.getTree());
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==LEFT_SQUARE) ) {
+                int LA3_1 = input.LA(2);
+
+                if ( (LA3_1==LITERAL) ) {
+                    int LA3_3 = input.LA(3);
+
+                    if ( (LA3_3==RIGHT_SQUARE) ) {
+                        int LA3_4 = input.LA(4);
+
+                        if ( (synpred4()) ) {
+                            alt3=1;
+                        }
+                    }
+                }
+                else if ( (LA3_1==RIGHT_SQUARE) ) {
+                    int LA3_4 = input.LA(3);
+
+                    if ( (synpred4()) ) {
+                        alt3=1;
+                    }
+                }
+            }
+            switch (alt3) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: meta_section
+                    {
+                    pushFollow(FOLLOW_meta_section_in_entry352);
+                    meta_section7=meta_section();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_meta_section.add(meta_section7.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_key_section_in_entry355);
+            key_section8=key_section();
+            _fsp--;
+            if (failed) return retval;
+            if ( backtracking==0 ) stream_key_section.add(key_section8.getTree());
+            EQUALS9=(Token)input.LT(1);
+            match(input,EQUALS,FOLLOW_EQUALS_in_entry357); if (failed) return retval;
+            if ( backtracking==0 ) stream_EQUALS.add(EQUALS9);
+
+            pushFollow(FOLLOW_value_section_in_entry359);
+            value_section10=value_section();
+            _fsp--;
+            if (failed) return retval;
+            if ( backtracking==0 ) stream_value_section.add(value_section10.getTree());
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:71: ( EOL | EOF )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==EOL) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==EOF) ) {
+                alt4=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("104:71: ( EOL | EOF )", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:72: EOL
+                    {
+                    EOL11=(Token)input.LT(1);
+                    match(input,EOL,FOLLOW_EOL_in_entry362); if (failed) return retval;
+                    if ( backtracking==0 ) stream_EOL.add(EOL11);
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:76: EOF
+                    {
+                    EOF12=(Token)input.LT(1);
+                    match(input,EOF,FOLLOW_EOF_in_entry364); if (failed) return retval;
+                    if ( backtracking==0 ) stream_EOF.add(EOF12);
+
+
+                    }
+                    break;
+
+            }
+
+
+            // AST REWRITE
+            // elements: key_section, value_section, meta_section, scope_section
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 105:2: -> ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:105:5: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY, "VT_ENTRY"), root_1);
+
+                adaptor.addChild(root_1, stream_scope_section.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:105:30: ( meta_section )?
+                if ( stream_meta_section.hasNext() ) {
+                    adaptor.addChild(root_1, stream_meta_section.next());
+
+                }
+                stream_meta_section.reset();
+                adaptor.addChild(root_1, stream_key_section.next());
+                adaptor.addChild(root_1, stream_value_section.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException e ) {
+
             		reportError( e );
-            	
-        }
-        catch ( RewriteEmptyStreamException e ) {
-            
-            	
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end entry
-
-    public static class scope_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start scope_section
-    // DSLMap.g:113:1: scope_section : LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) ;
-    public final scope_section_return scope_section() throws RecognitionException {
-        scope_section_return retval = new scope_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_SQUARE13=null;
-        Token RIGHT_SQUARE14=null;
-        condition_key_return value1 = null;
-
-        consequence_key_return value2 = null;
-
-        keyword_key_return value3 = null;
-
-        any_key_return value4 = null;
-
-
-        Object LEFT_SQUARE13_tree=null;
-        Object RIGHT_SQUARE14_tree=null;
-        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
-        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
-        RewriteRuleSubtreeStream stream_condition_key=new RewriteRuleSubtreeStream(adaptor,"rule condition_key");
-        RewriteRuleSubtreeStream stream_any_key=new RewriteRuleSubtreeStream(adaptor,"rule any_key");
-        RewriteRuleSubtreeStream stream_keyword_key=new RewriteRuleSubtreeStream(adaptor,"rule keyword_key");
-        RewriteRuleSubtreeStream stream_consequence_key=new RewriteRuleSubtreeStream(adaptor,"rule consequence_key");
-        try {
-            // DSLMap.g:114:2: ( LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) )
-            // DSLMap.g:114:4: LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE
-            {
-            LEFT_SQUARE13=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_scope_section392); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE13);
-
-            // DSLMap.g:115:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )
-            int alt5=4;
-            int LA5_0 = input.LA(1);
-
-            if ( (LA5_0==LITERAL) ) {
-                int LA5_1 = input.LA(2);
-
-                if ( ((synpred6()&&validateIdentifierKey("condition")||validateIdentifierKey("when"))) ) {
-                    alt5=1;
-                }
-                else if ( ((synpred7()&&validateIdentifierKey("consequence")||validateIdentifierKey("then"))) ) {
-                    alt5=2;
-                }
-                else if ( ((synpred8()&&validateIdentifierKey("keyword"))) ) {
-                    alt5=3;
-                }
-                else if ( (validateIdentifierKey("*")) ) {
-                    alt5=4;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("115:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("115:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 0, input);
-
-                throw nvae;
-            }
-            switch (alt5) {
-                case 1 :
-                    // DSLMap.g:115:4: value1= condition_key
-                    {
-                    pushFollow(FOLLOW_condition_key_in_scope_section400);
-                    value1=condition_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_condition_key.add(value1.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:116:5: value2= consequence_key
-                    {
-                    pushFollow(FOLLOW_consequence_key_in_scope_section409);
-                    value2=consequence_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_consequence_key.add(value2.getTree());
-
-                    }
-                    break;
-                case 3 :
-                    // DSLMap.g:117:5: value3= keyword_key
-                    {
-                    pushFollow(FOLLOW_keyword_key_in_scope_section417);
-                    value3=keyword_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_keyword_key.add(value3.getTree());
-
-                    }
-                    break;
-                case 4 :
-                    // DSLMap.g:118:5: value4= any_key
-                    {
-                    pushFollow(FOLLOW_any_key_in_scope_section425);
-                    value4=any_key();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_any_key.add(value4.getTree());
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_SQUARE14=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_scope_section433); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE14);
-
-
-            // AST REWRITE
-            // elements: value1, value2, value4, value3
-            // token labels: 
-            // rule labels: value1, value4, value2, retval, value3
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_value1=new RewriteRuleSubtreeStream(adaptor,"token value1",value1!=null?value1.tree:null);
-            RewriteRuleSubtreeStream stream_value4=new RewriteRuleSubtreeStream(adaptor,"token value4",value4!=null?value4.tree:null);
-            RewriteRuleSubtreeStream stream_value2=new RewriteRuleSubtreeStream(adaptor,"token value2",value2!=null?value2.tree:null);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-            RewriteRuleSubtreeStream stream_value3=new RewriteRuleSubtreeStream(adaptor,"token value3",value3!=null?value3.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 121:2: -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
-            {
-                // DSLMap.g:121:5: ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_SCOPE, LEFT_SQUARE13,  "SCOPE SECTION"), root_1);
-
-                // DSLMap.g:121:47: ( $value1)?
-                if ( stream_value1.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value1.next());
-
-                }
-                stream_value1.reset();
-                // DSLMap.g:121:56: ( $value2)?
-                if ( stream_value2.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value2.next());
-
-                }
-                stream_value2.reset();
-                // DSLMap.g:121:65: ( $value3)?
-                if ( stream_value3.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value3.next());
-
-                }
-                stream_value3.reset();
-                // DSLMap.g:121:74: ( $value4)?
-                if ( stream_value4.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value4.next());
-
-                }
-                stream_value4.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end scope_section
-
-    public static class meta_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start meta_section
-    // DSLMap.g:127:1: meta_section : LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) ;
-    public final meta_section_return meta_section() throws RecognitionException {
-        meta_section_return retval = new meta_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_SQUARE15=null;
-        Token LITERAL16=null;
-        Token RIGHT_SQUARE17=null;
-
-        Object LEFT_SQUARE15_tree=null;
-        Object LITERAL16_tree=null;
-        Object RIGHT_SQUARE17_tree=null;
-        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
-
-        try {
-            // DSLMap.g:128:2: ( LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) )
-            // DSLMap.g:128:4: LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE
-            {
-            LEFT_SQUARE15=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_meta_section473); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE15);
-
-            // DSLMap.g:128:16: ( LITERAL )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
-
-            if ( (LA6_0==LITERAL) ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // DSLMap.g:0:0: LITERAL
-                    {
-                    LITERAL16=(Token)input.LT(1);
-                    match(input,LITERAL,FOLLOW_LITERAL_in_meta_section475); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LITERAL.add(LITERAL16);
-
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_SQUARE17=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_meta_section478); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE17);
-
-
-            // AST REWRITE
-            // elements: LITERAL
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 129:2: -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
-            {
-                // DSLMap.g:129:5: ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_META, LEFT_SQUARE15,  "META SECTION"), root_1);
-
-                // DSLMap.g:129:45: ( LITERAL )?
-                if ( stream_LITERAL.hasNext() ) {
-                    adaptor.addChild(root_1, stream_LITERAL.next());
-
-                }
-                stream_LITERAL.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end meta_section
-
-    public static class key_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_section
-    // DSLMap.g:132:1: key_section : (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
-    public final key_section_return key_section() throws RecognitionException {
-        key_section_return retval = new key_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        key_sentence_return ks = null;
-
-
-        RewriteRuleSubtreeStream stream_key_sentence=new RewriteRuleSubtreeStream(adaptor,"rule key_sentence");
-        try {
-            // DSLMap.g:133:2: ( (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
-            // DSLMap.g:133:4: (ks= key_sentence )+
-            {
-            // DSLMap.g:133:6: (ks= key_sentence )+
-            int cnt7=0;
-            loop7:
-            do {
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-
-                if ( ((LA7_0>=LEFT_SQUARE && LA7_0<=LITERAL)||(LA7_0>=COLON && LA7_0<=LEFT_CURLY)) ) {
-                    alt7=1;
-                }
-
-
-                switch (alt7) {
-            	case 1 :
-            	    // DSLMap.g:0:0: ks= key_sentence
-            	    {
-            	    pushFollow(FOLLOW_key_sentence_in_key_section502);
-            	    ks=key_sentence();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_key_sentence.add(ks.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt7 >= 1 ) break loop7;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(7, input);
-                        throw eee;
-                }
-                cnt7++;
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: key_sentence
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 134:2: -> ^( VT_ENTRY_KEY ( key_sentence )+ )
-            {
-                // DSLMap.g:134:5: ^( VT_ENTRY_KEY ( key_sentence )+ )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_KEY, "VT_ENTRY_KEY"), root_1);
-
-                if ( !(stream_key_sentence.hasNext()) ) {
-                    throw new RewriteEarlyExitException();
-                }
-                while ( stream_key_sentence.hasNext() ) {
-                    adaptor.addChild(root_1, stream_key_sentence.next());
-
-                }
-                stream_key_sentence.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_section
-
-    public static class key_sentence_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_sentence
-    // DSLMap.g:137:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );
-    public final key_sentence_return key_sentence() throws RecognitionException {
-        key_sentence_return retval = new key_sentence_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        key_chunk_return cb = null;
-
-        variable_definition_return variable_definition18 = null;
-
-
-        RewriteRuleSubtreeStream stream_key_chunk=new RewriteRuleSubtreeStream(adaptor,"rule key_chunk");
-        
+            	
+        }
+        catch ( RewriteEmptyStreamException e ) {
+
+            	
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end entry
+
+    public static class scope_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start scope_section
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:115:1: scope_section : LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) ;
+    public final scope_section_return scope_section() throws RecognitionException {
+        scope_section_return retval = new scope_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_SQUARE13=null;
+        Token RIGHT_SQUARE14=null;
+        condition_key_return value1 = null;
+
+        consequence_key_return value2 = null;
+
+        keyword_key_return value3 = null;
+
+        any_key_return value4 = null;
+
+
+        Object LEFT_SQUARE13_tree=null;
+        Object RIGHT_SQUARE14_tree=null;
+        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
+        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
+        RewriteRuleSubtreeStream stream_condition_key=new RewriteRuleSubtreeStream(adaptor,"rule condition_key");
+        RewriteRuleSubtreeStream stream_any_key=new RewriteRuleSubtreeStream(adaptor,"rule any_key");
+        RewriteRuleSubtreeStream stream_keyword_key=new RewriteRuleSubtreeStream(adaptor,"rule keyword_key");
+        RewriteRuleSubtreeStream stream_consequence_key=new RewriteRuleSubtreeStream(adaptor,"rule consequence_key");
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:116:2: ( LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:116:4: LEFT_SQUARE (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key ) RIGHT_SQUARE
+            {
+            LEFT_SQUARE13=(Token)input.LT(1);
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_scope_section410); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE13);
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )
+            int alt5=4;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==LITERAL) ) {
+                int LA5_1 = input.LA(2);
+
+                if ( ((synpred6()&&validateIdentifierKey("condition")||validateIdentifierKey("when"))) ) {
+                    alt5=1;
+                }
+                else if ( ((synpred7()&&validateIdentifierKey("consequence")||validateIdentifierKey("then"))) ) {
+                    alt5=2;
+                }
+                else if ( ((synpred8()&&validateIdentifierKey("keyword"))) ) {
+                    alt5=3;
+                }
+                else if ( (validateIdentifierKey("*")) ) {
+                    alt5=4;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (backtracking>0) {failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("117:3: (value1= condition_key | value2= consequence_key | value3= keyword_key | value4= any_key )", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: value1= condition_key
+                    {
+                    pushFollow(FOLLOW_condition_key_in_scope_section418);
+                    value1=condition_key();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_condition_key.add(value1.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: value2= consequence_key
+                    {
+                    pushFollow(FOLLOW_consequence_key_in_scope_section427);
+                    value2=consequence_key();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_consequence_key.add(value2.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: value3= keyword_key
+                    {
+                    pushFollow(FOLLOW_keyword_key_in_scope_section435);
+                    value3=keyword_key();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_keyword_key.add(value3.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:120:5: value4= any_key
+                    {
+                    pushFollow(FOLLOW_any_key_in_scope_section443);
+                    value4=any_key();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_any_key.add(value4.getTree());
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_SQUARE14=(Token)input.LT(1);
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_scope_section451); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE14);
+
+
+            // AST REWRITE
+            // elements: value2, value3, value1, value4
+            // token labels: 
+            // rule labels: value1, value4, value2, retval, value3
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_value1=new RewriteRuleSubtreeStream(adaptor,"token value1",value1!=null?value1.tree:null);
+            RewriteRuleSubtreeStream stream_value4=new RewriteRuleSubtreeStream(adaptor,"token value4",value4!=null?value4.tree:null);
+            RewriteRuleSubtreeStream stream_value2=new RewriteRuleSubtreeStream(adaptor,"token value2",value2!=null?value2.tree:null);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_value3=new RewriteRuleSubtreeStream(adaptor,"token value3",value3!=null?value3.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 123:2: -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:5: ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_SCOPE, LEFT_SQUARE13,  "SCOPE SECTION"), root_1);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:47: ( $value1)?
+                if ( stream_value1.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value1.next());
+
+                }
+                stream_value1.reset();
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:56: ( $value2)?
+                if ( stream_value2.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value2.next());
+
+                }
+                stream_value2.reset();
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:65: ( $value3)?
+                if ( stream_value3.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value3.next());
+
+                }
+                stream_value3.reset();
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:123:74: ( $value4)?
+                if ( stream_value4.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value4.next());
+
+                }
+                stream_value4.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end scope_section
+
+    public static class meta_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start meta_section
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:129:1: meta_section : LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) ;
+    public final meta_section_return meta_section() throws RecognitionException {
+        meta_section_return retval = new meta_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_SQUARE15=null;
+        Token LITERAL16=null;
+        Token RIGHT_SQUARE17=null;
+
+        Object LEFT_SQUARE15_tree=null;
+        Object LITERAL16_tree=null;
+        Object RIGHT_SQUARE17_tree=null;
+        RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:2: ( LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:4: LEFT_SQUARE ( LITERAL )? RIGHT_SQUARE
+            {
+            LEFT_SQUARE15=(Token)input.LT(1);
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_meta_section491); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE15);
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:130:16: ( LITERAL )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==LITERAL) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: LITERAL
+                    {
+                    LITERAL16=(Token)input.LT(1);
+                    match(input,LITERAL,FOLLOW_LITERAL_in_meta_section493); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LITERAL.add(LITERAL16);
+
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_SQUARE17=(Token)input.LT(1);
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_meta_section496); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE17);
+
+
+            // AST REWRITE
+            // elements: LITERAL
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 131:2: -> ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:131:5: ^( VT_META[$LEFT_SQUARE, \"META SECTION\"] ( LITERAL )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_META, LEFT_SQUARE15,  "META SECTION"), root_1);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:131:45: ( LITERAL )?
+                if ( stream_LITERAL.hasNext() ) {
+                    adaptor.addChild(root_1, stream_LITERAL.next());
+
+                }
+                stream_LITERAL.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end meta_section
+
+    public static class key_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start key_section
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:134:1: key_section : (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
+    public final key_section_return key_section() throws RecognitionException {
+        key_section_return retval = new key_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        key_sentence_return ks = null;
+
+
+        RewriteRuleSubtreeStream stream_key_sentence=new RewriteRuleSubtreeStream(adaptor,"rule key_sentence");
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:2: ( (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:4: (ks= key_sentence )+
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:135:6: (ks= key_sentence )+
+            int cnt7=0;
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( ((LA7_0>=LEFT_SQUARE && LA7_0<=LITERAL)||(LA7_0>=COLON && LA7_0<=LEFT_CURLY)) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: ks= key_sentence
+            	    {
+            	    pushFollow(FOLLOW_key_sentence_in_key_section520);
+            	    ks=key_sentence();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) stream_key_sentence.add(ks.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt7 >= 1 ) break loop7;
+            	    if (backtracking>0) {failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(7, input);
+                        throw eee;
+                }
+                cnt7++;
+            } while (true);
+
+
+            // AST REWRITE
+            // elements: key_sentence
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 136:2: -> ^( VT_ENTRY_KEY ( key_sentence )+ )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:136:5: ^( VT_ENTRY_KEY ( key_sentence )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_KEY, "VT_ENTRY_KEY"), root_1);
+
+                if ( !(stream_key_sentence.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_key_sentence.hasNext() ) {
+                    adaptor.addChild(root_1, stream_key_sentence.next());
+
+                }
+                stream_key_sentence.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end key_section
+
+    public static class key_sentence_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start key_sentence
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:139:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );
+    public final key_sentence_return key_sentence() throws RecognitionException {
+        key_sentence_return retval = new key_sentence_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        key_chunk_return cb = null;
+
+        variable_definition_return variable_definition18 = null;
+
+
+        RewriteRuleSubtreeStream stream_key_chunk=new RewriteRuleSubtreeStream(adaptor,"rule key_chunk");
+
                 String text = "";
-
-        try {
-            // DSLMap.g:141:2: ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] )
-            int alt8=2;
-            int LA8_0 = input.LA(1);
-
-            if ( (LA8_0==LEFT_CURLY) ) {
-                alt8=1;
-            }
-            else if ( ((LA8_0>=LEFT_SQUARE && LA8_0<=LITERAL)||LA8_0==COLON) ) {
-                alt8=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("137:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );", 8, 0, input);
-
-                throw nvae;
-            }
-            switch (alt8) {
-                case 1 :
-                    // DSLMap.g:141:4: variable_definition
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_variable_definition_in_key_sentence533);
-                    variable_definition18=variable_definition();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_definition18.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:142:4: cb= key_chunk
-                    {
-                    pushFollow(FOLLOW_key_chunk_in_key_sentence540);
-                    cb=key_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_key_chunk.add(cb.getTree());
-                    if ( backtracking==0 ) {
-                       text = input.toString(cb.start,cb.stop);
-                    }
-
-                    // AST REWRITE
-                    // elements: 
-                    // token labels: 
-                    // rule labels: retval
-                    // token list labels: 
-                    // rule list labels: 
-                    if ( backtracking==0 ) {
-                    retval.tree = root_0;
-                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-                    root_0 = (Object)adaptor.nil();
-                    // 143:2: -> VT_LITERAL[$cb.start, text]
-                    {
-                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)cb.start),  text));
-
-                    }
-
-                    }
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_sentence
-
-    public static class key_chunk_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start key_chunk
-    // DSLMap.g:146:1: key_chunk : ( literal )+ ;
-    public final key_chunk_return key_chunk() throws RecognitionException {
-        key_chunk_return retval = new key_chunk_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        literal_return literal19 = null;
-
-
-
-        try {
-            // DSLMap.g:147:2: ( ( literal )+ )
-            // DSLMap.g:147:4: ( literal )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // DSLMap.g:147:4: ( literal )+
-            int cnt9=0;
-            loop9:
-            do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-
-                if ( ((LA9_0>=LEFT_SQUARE && LA9_0<=LITERAL)||LA9_0==COLON) ) {
-                    int LA9_2 = input.LA(2);
-
-                    if ( (synpred12()) ) {
-                        alt9=1;
-                    }
-
-
-                }
-
-
-                switch (alt9) {
-            	case 1 :
-            	    // DSLMap.g:0:0: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_key_chunk561);
-            	    literal19=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal19.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt9 >= 1 ) break loop9;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(9, input);
-                        throw eee;
-                }
-                cnt9++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end key_chunk
-
-    public static class value_section_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_section
-    // DSLMap.g:150:1: value_section : ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
-    public final value_section_return value_section() throws RecognitionException {
-        value_section_return retval = new value_section_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        value_sentence_return value_sentence20 = null;
-
-
-        RewriteRuleSubtreeStream stream_value_sentence=new RewriteRuleSubtreeStream(adaptor,"rule value_sentence");
-        try {
-            // DSLMap.g:151:2: ( ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) )
-            // DSLMap.g:151:4: ( value_sentence )+
-            {
-            // DSLMap.g:151:4: ( value_sentence )+
-            int cnt10=0;
-            loop10:
-            do {
-                int alt10=2;
-                int LA10_0 = input.LA(1);
-
-                if ( ((LA10_0>=EQUALS && LA10_0<=LEFT_CURLY)) ) {
-                    alt10=1;
-                }
-
-
-                switch (alt10) {
-            	case 1 :
-            	    // DSLMap.g:0:0: value_sentence
-            	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section576);
-            	    value_sentence20=value_sentence();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_value_sentence.add(value_sentence20.getTree());
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt10 >= 1 ) break loop10;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(10, input);
-                        throw eee;
-                }
-                cnt10++;
-            } while (true);
-
-
-            // AST REWRITE
-            // elements: value_sentence
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 152:2: -> ^( VT_ENTRY_VAL ( value_sentence )+ )
-            {
-                // DSLMap.g:152:5: ^( VT_ENTRY_VAL ( value_sentence )+ )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_VAL, "VT_ENTRY_VAL"), root_1);
-
-                if ( !(stream_value_sentence.hasNext()) ) {
-                    throw new RewriteEarlyExitException();
-                }
-                while ( stream_value_sentence.hasNext() ) {
-                    adaptor.addChild(root_1, stream_value_sentence.next());
-
-                }
-                stream_value_sentence.reset();
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_section
-
-    public static class value_sentence_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_sentence
-    // DSLMap.g:155:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );
-    public final value_sentence_return value_sentence() throws RecognitionException {
-        value_sentence_return retval = new value_sentence_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        value_chunk_return vc = null;
-
-        variable_reference_return variable_reference21 = null;
-
-
-        RewriteRuleSubtreeStream stream_value_chunk=new RewriteRuleSubtreeStream(adaptor,"rule value_chunk");
-        
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:143:2: ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] )
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==LEFT_CURLY) ) {
+                alt8=1;
+            }
+            else if ( ((LA8_0>=LEFT_SQUARE && LA8_0<=LITERAL)||LA8_0==COLON) ) {
+                alt8=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("139:1: key_sentence : ( variable_definition | cb= key_chunk -> VT_LITERAL[$cb.start, text] );", 8, 0, input);
+
+                throw nvae;
+            }
+            switch (alt8) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:143:4: variable_definition
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_variable_definition_in_key_sentence551);
+                    variable_definition18=variable_definition();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_definition18.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:144:4: cb= key_chunk
+                    {
+                    pushFollow(FOLLOW_key_chunk_in_key_sentence558);
+                    cb=key_chunk();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_key_chunk.add(cb.getTree());
+                    if ( backtracking==0 ) {
+                       text = input.toString(cb.start,cb.stop);
+                    }
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 145:2: -> VT_LITERAL[$cb.start, text]
+                    {
+                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)cb.start),  text));
+
+                    }
+
+                    }
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end key_sentence
+
+    public static class key_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start key_chunk
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:148:1: key_chunk : ( literal )+ ;
+    public final key_chunk_return key_chunk() throws RecognitionException {
+        key_chunk_return retval = new key_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        literal_return literal19 = null;
+
+
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:2: ( ( literal )+ )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )+
+            int cnt9=0;
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( ((LA9_0>=LEFT_SQUARE && LA9_0<=LITERAL)||LA9_0==COLON) ) {
+                    int LA9_2 = input.LA(2);
+
+                    if ( (synpred12()) ) {
+                        alt9=1;
+                    }
+
+
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_key_chunk579);
+            	    literal19=literal();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal19.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt9 >= 1 ) break loop9;
+            	    if (backtracking>0) {failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(9, input);
+                        throw eee;
+                }
+                cnt9++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end key_chunk
+
+    public static class value_section_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start value_section
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:152:1: value_section : ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
+    public final value_section_return value_section() throws RecognitionException {
+        value_section_return retval = new value_section_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        value_sentence_return value_sentence20 = null;
+
+
+        RewriteRuleSubtreeStream stream_value_sentence=new RewriteRuleSubtreeStream(adaptor,"rule value_sentence");
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:2: ( ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
+            {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:153:4: ( value_sentence )+
+            int cnt10=0;
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( ((LA10_0>=EQUALS && LA10_0<=LEFT_CURLY)) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:0:0: value_sentence
+            	    {
+            	    pushFollow(FOLLOW_value_sentence_in_value_section594);
+            	    value_sentence20=value_sentence();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) stream_value_sentence.add(value_sentence20.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt10 >= 1 ) break loop10;
+            	    if (backtracking>0) {failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(10, input);
+                        throw eee;
+                }
+                cnt10++;
+            } while (true);
+
+
+            // AST REWRITE
+            // elements: value_sentence
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 154:2: -> ^( VT_ENTRY_VAL ( value_sentence )+ )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:154:5: ^( VT_ENTRY_VAL ( value_sentence )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ENTRY_VAL, "VT_ENTRY_VAL"), root_1);
+
+                if ( !(stream_value_sentence.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_value_sentence.hasNext() ) {
+                    adaptor.addChild(root_1, stream_value_sentence.next());
+
+                }
+                stream_value_sentence.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end value_section
+
+    public static class value_sentence_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start value_sentence
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:157:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );
+    public final value_sentence_return value_sentence() throws RecognitionException {
+        value_sentence_return retval = new value_sentence_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        value_chunk_return vc = null;
+
+        variable_reference_return variable_reference21 = null;
+
+
+        RewriteRuleSubtreeStream stream_value_chunk=new RewriteRuleSubtreeStream(adaptor,"rule value_chunk");
+
                 String text = "";
-
-        try {
-            // DSLMap.g:159:2: ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
-
-            if ( (LA11_0==LEFT_CURLY) ) {
-                alt11=1;
-            }
-            else if ( ((LA11_0>=EQUALS && LA11_0<=COLON)) ) {
-                alt11=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("155:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );", 11, 0, input);
-
-                throw nvae;
-            }
-            switch (alt11) {
-                case 1 :
-                    // DSLMap.g:159:4: variable_reference
-                    {
-                    root_0 = (Object)adaptor.nil();
-
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence607);
-                    variable_reference21=variable_reference();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_reference21.getTree());
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMap.g:160:4: vc= value_chunk
-                    {
-                    pushFollow(FOLLOW_value_chunk_in_value_sentence614);
-                    vc=value_chunk();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_value_chunk.add(vc.getTree());
-                    if ( backtracking==0 ) {
-                       text = input.toString(vc.start,vc.stop); 
-                    }
-
-                    // AST REWRITE
-                    // elements: 
-                    // token labels: 
-                    // rule labels: retval
-                    // token list labels: 
-                    // rule list labels: 
-                    if ( backtracking==0 ) {
-                    retval.tree = root_0;
-                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-                    root_0 = (Object)adaptor.nil();
-                    // 161:2: -> VT_LITERAL[$vc.start, text]
-                    {
-                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)vc.start),  text));
-
-                    }
-
-                    }
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_sentence
-
-    public static class value_chunk_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start value_chunk
-    // DSLMap.g:164:1: value_chunk : ( literal | EQUALS | COMMA )+ ;
-    public final value_chunk_return value_chunk() throws RecognitionException {
-        value_chunk_return retval = new value_chunk_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token EQUALS23=null;
-        Token COMMA24=null;
-        literal_return literal22 = null;
-
-
-        Object EQUALS23_tree=null;
-        Object COMMA24_tree=null;
-
-        try {
-            // DSLMap.g:165:2: ( ( literal | EQUALS | COMMA )+ )
-            // DSLMap.g:165:4: ( literal | EQUALS | COMMA )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // DSLMap.g:165:4: ( literal | EQUALS | COMMA )+
-            int cnt12=0;
-            loop12:
-            do {
-                int alt12=4;
-                switch ( input.LA(1) ) {
-                case LEFT_SQUARE:
-                case RIGHT_SQUARE:
-                case LITERAL:
-                case COLON:
-                    {
-                    int LA12_2 = input.LA(2);
-
-                    if ( (synpred15()) ) {
-                        alt12=1;
-                    }
-
-
-                    }
-                    break;
-                case EQUALS:
-                    {
-                    int LA12_3 = input.LA(2);
-
-                    if ( (synpred16()) ) {
-                        alt12=2;
-                    }
-
-
-                    }
-                    break;
-                case COMMA:
-                    {
-                    int LA12_4 = input.LA(2);
-
-                    if ( (synpred17()) ) {
-                        alt12=3;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt12) {
-            	case 1 :
-            	    // DSLMap.g:165:5: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_value_chunk636);
-            	    literal22=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal22.getTree());
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // DSLMap.g:165:13: EQUALS
-            	    {
-            	    EQUALS23=(Token)input.LT(1);
-            	    match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk638); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    EQUALS23_tree = (Object)adaptor.create(EQUALS23);
-            	    adaptor.addChild(root_0, EQUALS23_tree);
-            	    }
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // DSLMap.g:165:20: COMMA
-            	    {
-            	    COMMA24=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_value_chunk640); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    COMMA24_tree = (Object)adaptor.create(COMMA24);
-            	    adaptor.addChild(root_0, COMMA24_tree);
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt12 >= 1 ) break loop12;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(12, input);
-                        throw eee;
-                }
-                cnt12++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end value_chunk
-
-    public static class literal_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start literal
-    // DSLMap.g:168:1: literal : ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) ;
-    public final literal_return literal() throws RecognitionException {
-        literal_return retval = new literal_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token set25=null;
-
-        Object set25_tree=null;
-
-        try {
-            // DSLMap.g:169:2: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
-            // DSLMap.g:169:4: ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE )
-            {
-            root_0 = (Object)adaptor.nil();
-
-            set25=(Token)input.LT(1);
-            if ( (input.LA(1)>=LEFT_SQUARE && input.LA(1)<=LITERAL)||input.LA(1)==COLON ) {
-                input.consume();
-                if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set25));
-                errorRecovery=false;failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return retval;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_literal656);    throw mse;
-            }
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end literal
-
-    public static class variable_definition_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_definition
-    // DSLMap.g:173:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE -> ^( VT_VAR_DEF $name) ;
-    public final variable_definition_return variable_definition() throws RecognitionException {
-        variable_definition_return retval = new variable_definition_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token lc=null;
-        Token name=null;
-        Token rc=null;
-        Token COLON26=null;
-        pattern_return pat = null;
-
-
-        Object lc_tree=null;
-        Object name_tree=null;
-        Object rc_tree=null;
-        Object COLON26_tree=null;
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
-        
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:161:2: ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==LEFT_CURLY) ) {
+                alt11=1;
+            }
+            else if ( ((LA11_0>=EQUALS && LA11_0<=COLON)) ) {
+                alt11=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("157:1: value_sentence : ( variable_reference | vc= value_chunk -> VT_LITERAL[$vc.start, text] );", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:161:4: variable_reference
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence625);
+                    variable_reference21=variable_reference();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_reference21.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:162:4: vc= value_chunk
+                    {
+                    pushFollow(FOLLOW_value_chunk_in_value_sentence632);
+                    vc=value_chunk();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_value_chunk.add(vc.getTree());
+                    if ( backtracking==0 ) {
+                       text = input.toString(vc.start,vc.stop); 
+                    }
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 163:2: -> VT_LITERAL[$vc.start, text]
+                    {
+                        adaptor.addChild(root_0, adaptor.create(VT_LITERAL, ((Token)vc.start),  text));
+
+                    }
+
+                    }
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end value_sentence
+
+    public static class value_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start value_chunk
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:166:1: value_chunk : ( literal | EQUALS | COMMA )+ ;
+    public final value_chunk_return value_chunk() throws RecognitionException {
+        value_chunk_return retval = new value_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUALS23=null;
+        Token COMMA24=null;
+        literal_return literal22 = null;
+
+
+        Object EQUALS23_tree=null;
+        Object COMMA24_tree=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:2: ( ( literal | EQUALS | COMMA )+ )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:4: ( literal | EQUALS | COMMA )+
+            int cnt12=0;
+            loop12:
+            do {
+                int alt12=4;
+                switch ( input.LA(1) ) {
+                case LEFT_SQUARE:
+                case RIGHT_SQUARE:
+                case LITERAL:
+                case COLON:
+                    {
+                    int LA12_2 = input.LA(2);
+
+                    if ( (synpred15()) ) {
+                        alt12=1;
+                    }
+
+
+                    }
+                    break;
+                case EQUALS:
+                    {
+                    int LA12_3 = input.LA(2);
+
+                    if ( (synpred16()) ) {
+                        alt12=2;
+                    }
+
+
+                    }
+                    break;
+                case COMMA:
+                    {
+                    int LA12_4 = input.LA(2);
+
+                    if ( (synpred17()) ) {
+                        alt12=3;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt12) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_value_chunk654);
+            	    literal22=literal();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal22.getTree());
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
+            	    {
+            	    EQUALS23=(Token)input.LT(1);
+            	    match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk656); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    EQUALS23_tree = (Object)adaptor.create(EQUALS23);
+            	    adaptor.addChild(root_0, EQUALS23_tree);
+            	    }
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
+            	    {
+            	    COMMA24=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_value_chunk658); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    COMMA24_tree = (Object)adaptor.create(COMMA24);
+            	    adaptor.addChild(root_0, COMMA24_tree);
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt12 >= 1 ) break loop12;
+            	    if (backtracking>0) {failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(12, input);
+                        throw eee;
+                }
+                cnt12++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end value_chunk
+
+    public static class literal_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start literal
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:170:1: literal : ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) ;
+    public final literal_return literal() throws RecognitionException {
+        literal_return retval = new literal_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token set25=null;
+
+        Object set25_tree=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:171:2: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:171:4: ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            set25=(Token)input.LT(1);
+            if ( (input.LA(1)>=LEFT_SQUARE && input.LA(1)<=LITERAL)||input.LA(1)==COLON ) {
+                input.consume();
+                if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set25));
+                errorRecovery=false;failed=false;
+            }
+            else {
+                if (backtracking>0) {failed=true; return retval;}
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_literal674);    throw mse;
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end literal
+
+    public static class variable_definition_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start variable_definition
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:175:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL!
  ( $q)? ) ) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) ;
+    public final variable_definition_return variable_definition() throws RecognitionException {
+        variable_definition_return retval = new variable_definition_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lc=null;
+        Token name=null;
+        Token q=null;
+        Token rc=null;
+        Token COLON26=null;
+        Token COLON27=null;
+        pattern_return pat = null;
+
+
+        Object lc_tree=null;
+        Object name_tree=null;
+        Object q_tree=null;
+        Object rc_tree=null;
+        Object COLON26_tree=null;
+        Object COLON27_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
+
                 String text = "";
                 boolean hasSpaceBefore = false;
                 boolean hasSpaceAfter = false;
-
-        try {
-            // DSLMap.g:179:2: (lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE -> ^( VT_VAR_DEF $name) )
-            // DSLMap.g:179:4: lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? rc= RIGHT_CURLY
-            {
-            lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition692); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
-
-            if ( backtracking==0 ) {
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:181:2: (lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) V!
 T_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:181:4: lc= LEFT_CURLY name= LITERAL ( ( COLON q= LITERAL )? COLON pat= pattern )? rc= RIGHT_CURLY
+            {
+            lc=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition710); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
+
+            if ( backtracking==0 ) {
                
               		CommonToken back2 =  (CommonToken)input.LT(-2);
               		if( back2!=null && back2.getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
-              		
-            }
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition703); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            // DSLMap.g:184:15: ( COLON pat= pattern )?
-            int alt13=2;
-            int LA13_0 = input.LA(1);
-
-            if ( (LA13_0==COLON) ) {
-                alt13=1;
-            }
-            switch (alt13) {
-                case 1 :
-                    // DSLMap.g:184:17: COLON pat= pattern
-                    {
-                    COLON26=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition707); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON26);
-
-                    pushFollow(FOLLOW_pattern_in_variable_definition711);
-                    pat=pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
-                    if ( backtracking==0 ) {
-                      text = input.toString(pat.start,pat.stop);
-                    }
-
-                    }
-                    break;
-
-            }
-
-            rc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition720); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
-
-            if ( backtracking==0 ) {
-              
+              		
+            }
+            name=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition721); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(name);
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:15: ( ( COLON q= LITERAL )? COLON pat= pattern )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==COLON) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )? COLON pat= pattern
+                    {
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:17: ( COLON q= LITERAL )?
+                    int alt13=2;
+                    int LA13_0 = input.LA(1);
+
+                    if ( (LA13_0==COLON) ) {
+                        int LA13_1 = input.LA(2);
+
+                        if ( (LA13_1==LITERAL) ) {
+                            int LA13_2 = input.LA(3);
+
+                            if ( (LA13_2==COLON) ) {
+                                int LA13_4 = input.LA(4);
+
+                                if ( (synpred21()) ) {
+                                    alt13=1;
+                                }
+                            }
+                        }
+                    }
+                    switch (alt13) {
+                        case 1 :
+                            // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON q= LITERAL
+                            {
+                            COLON26=(Token)input.LT(1);
+                            match(input,COLON,FOLLOW_COLON_in_variable_definition726); if (failed) return retval;
+                            if ( backtracking==0 ) stream_COLON.add(COLON26);
+
+                            q=(Token)input.LT(1);
+                            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition730); if (failed) return retval;
+                            if ( backtracking==0 ) stream_LITERAL.add(q);
+
+
+                            }
+                            break;
+
+                    }
+
+                    COLON27=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_variable_definition734); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON27);
+
+                    pushFollow(FOLLOW_pattern_in_variable_definition738);
+                    pat=pattern();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
+                    if ( backtracking==0 ) {
+                      text = input.toString(pat.start,pat.stop);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            rc=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition747); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
+
+            if ( backtracking==0 ) {
+
               	CommonToken rc1 = (CommonToken)input.LT(1);
               	if(!"=".equals(rc1.getText()) && ((CommonToken)rc).getStopIndex() < rc1.getStartIndex() - 1) hasSpaceAfter = true;
-              	
-            }
-
-            // AST REWRITE
-            // elements: name, name, name, name, name, name, name, name, name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 189:2: -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (hasSpaceBefore && !"".equals(text) && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:189:70: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 190:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
-                // DSLMap.g:190:63: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 191:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name)
-            if (hasSpaceBefore  && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:191:51: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 192:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name)
-            if (!hasSpaceBefore  && !hasSpaceAfter) {
-                // DSLMap.g:192:44: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 194:2: -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
-            if (hasSpaceBefore && !"".equals(text) && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:194:69: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 195:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
-            if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
-                // DSLMap.g:195:62: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 196:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE
-            if (hasSpaceBefore  && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:196:50: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 197:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE
-            if (!hasSpaceBefore  && hasSpaceAfter) {
-                // DSLMap.g:197:43: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 198:2: -> ^( VT_VAR_DEF $name)
-            {
-                // DSLMap.g:198:5: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_definition
-
-    public static class variable_definition2_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_definition2
-    // DSLMap.g:201:1: variable_definition2 : LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) ;
-    public final variable_definition2_return variable_definition2() throws RecognitionException {
-        variable_definition2_return retval = new variable_definition2_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token name=null;
-        Token LEFT_CURLY27=null;
-        Token COLON28=null;
-        Token RIGHT_CURLY29=null;
-        pattern_return pat = null;
-
-
-        Object name_tree=null;
-        Object LEFT_CURLY27_tree=null;
-        Object COLON28_tree=null;
-        Object RIGHT_CURLY29_tree=null;
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
-        
+              	
+            }
+
+            // AST REWRITE
+            // elements: name, q, q, q, q, q, name, q, name, name, name, q, name, name, name, q, q, name
+            // token labels: q, name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_q=new RewriteRuleTokenStream(adaptor,"token q",q);
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 191:2: -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+            if (hasSpaceBefore && !"".equals(text) && !hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:70: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:89: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:191:99: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 192:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+            if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:63: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:82: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:192:92: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 193:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            if (hasSpaceBefore  && !hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:51: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:70: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:193:80: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 194:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            if (!hasSpaceBefore  && !hasSpaceAfter) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:44: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:63: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:194:73: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 196:2: -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
+            if (hasSpaceBefore && !"".equals(text) && hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:69: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:88: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:196:98: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 197:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] ) VT_SPACE
+            if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:62: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:81: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:197:91: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 198:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
+            if (hasSpaceBefore  && hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:50: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:69: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:198:79: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 199:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) ) VT_SPACE
+            if (!hasSpaceBefore  && hasSpaceAfter) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:43: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:62: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:199:72: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 200:2: -> ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:5: ^( VT_VAR_DEF $name ^( VT_QUAL ( $q)? ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:24: ^( VT_QUAL ( $q)? )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_QUAL, "VT_QUAL"), root_2);
+
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:200:34: ( $q)?
+                if ( stream_q.hasNext() ) {
+                    adaptor.addChild(root_2, stream_q.next());
+
+                }
+                stream_q.reset();
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end variable_definition
+
+    public static class variable_definition2_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start variable_definition2
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:203:1: variable_definition2 : LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) ;
+    public final variable_definition2_return variable_definition2() throws RecognitionException {
+        variable_definition2_return retval = new variable_definition2_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token name=null;
+        Token LEFT_CURLY28=null;
+        Token COLON29=null;
+        Token RIGHT_CURLY30=null;
+        pattern_return pat = null;
+
+
+        Object name_tree=null;
+        Object LEFT_CURLY28_tree=null;
+        Object COLON29_tree=null;
+        Object RIGHT_CURLY30_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+        RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
+
                 String text = "";
-
-        try {
-            // DSLMap.g:205:2: ( LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) )
-            // DSLMap.g:205:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
-            {
-            LEFT_CURLY27=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition2896); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY27);
-
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2900); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            // DSLMap.g:205:28: ( COLON pat= pattern )?
-            int alt14=2;
-            int LA14_0 = input.LA(1);
-
-            if ( (LA14_0==COLON) ) {
-                alt14=1;
-            }
-            switch (alt14) {
-                case 1 :
-                    // DSLMap.g:205:30: COLON pat= pattern
-                    {
-                    COLON28=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition2904); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON28);
-
-                    pushFollow(FOLLOW_pattern_in_variable_definition2908);
-                    pat=pattern();
-                    _fsp--;
-                    if (failed) return retval;
-                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
-                    if ( backtracking==0 ) {
-                      text = input.toString(pat.start,pat.stop);
-                    }
-
-                    }
-                    break;
-
-            }
-
-            RIGHT_CURLY29=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition2915); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY29);
-
-
-            // AST REWRITE
-            // elements: name, name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 206:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (!"".equals(text)) {
-                // DSLMap.g:206:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 207:2: -> ^( VT_VAR_DEF $name)
-            {
-                // DSLMap.g:207:5: ^( VT_VAR_DEF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_definition2
-
-    public static class pattern_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start pattern
-    // DSLMap.g:211:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
-    public final pattern_return pattern() throws RecognitionException {
-        pattern_return retval = new pattern_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token LEFT_CURLY31=null;
-        Token RIGHT_CURLY33=null;
-        Token LEFT_SQUARE34=null;
-        Token RIGHT_SQUARE36=null;
-        literal_return literal30 = null;
-
-        literal_return literal32 = null;
-
-        pattern_return pattern35 = null;
-
-
-        Object LEFT_CURLY31_tree=null;
-        Object RIGHT_CURLY33_tree=null;
-        Object LEFT_SQUARE34_tree=null;
-        Object RIGHT_SQUARE36_tree=null;
-
-        try {
-            // DSLMap.g:212:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
-            // DSLMap.g:212:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
-            {
-            root_0 = (Object)adaptor.nil();
-
-            // DSLMap.g:212:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
-            int cnt15=0;
-            loop15:
-            do {
-                int alt15=4;
-                switch ( input.LA(1) ) {
-                case RIGHT_SQUARE:
-                    {
-                    int LA15_2 = input.LA(2);
-
-                    if ( (synpred23()) ) {
-                        alt15=1;
-                    }
-
-
-                    }
-                    break;
-                case LEFT_SQUARE:
-                    {
-                    int LA15_3 = input.LA(2);
-
-                    if ( (synpred23()) ) {
-                        alt15=1;
-                    }
-                    else if ( (synpred25()) ) {
-                        alt15=3;
-                    }
-
-
-                    }
-                    break;
-                case LEFT_CURLY:
-                    {
-                    alt15=2;
-                    }
-                    break;
-                case LITERAL:
-                case COLON:
-                    {
-                    alt15=1;
-                    }
-                    break;
-
-                }
-
-                switch (alt15) {
-            	case 1 :
-            	    // DSLMap.g:212:13: literal
-            	    {
-            	    pushFollow(FOLLOW_literal_in_pattern966);
-            	    literal30=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal30.getTree());
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // DSLMap.g:213:13: LEFT_CURLY literal RIGHT_CURLY
-            	    {
-            	    LEFT_CURLY31=(Token)input.LT(1);
-            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern980); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    LEFT_CURLY31_tree = (Object)adaptor.create(LEFT_CURLY31);
-            	    adaptor.addChild(root_0, LEFT_CURLY31_tree);
-            	    }
-            	    pushFollow(FOLLOW_literal_in_pattern982);
-            	    literal32=literal();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal32.getTree());
-            	    RIGHT_CURLY33=(Token)input.LT(1);
-            	    match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_pattern984); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    RIGHT_CURLY33_tree = (Object)adaptor.create(RIGHT_CURLY33);
-            	    adaptor.addChild(root_0, RIGHT_CURLY33_tree);
-            	    }
-
-            	    }
-            	    break;
-            	case 3 :
-            	    // DSLMap.g:214:13: LEFT_SQUARE pattern RIGHT_SQUARE
-            	    {
-            	    LEFT_SQUARE34=(Token)input.LT(1);
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern998); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    LEFT_SQUARE34_tree = (Object)adaptor.create(LEFT_SQUARE34);
-            	    adaptor.addChild(root_0, LEFT_SQUARE34_tree);
-            	    }
-            	    pushFollow(FOLLOW_pattern_in_pattern1000);
-            	    pattern35=pattern();
-            	    _fsp--;
-            	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, pattern35.getTree());
-            	    RIGHT_SQUARE36=(Token)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern1002); if (failed) return retval;
-            	    if ( backtracking==0 ) {
-            	    RIGHT_SQUARE36_tree = (Object)adaptor.create(RIGHT_SQUARE36);
-            	    adaptor.addChild(root_0, RIGHT_SQUARE36_tree);
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt15 >= 1 ) break loop15;
-            	    if (backtracking>0) {failed=true; return retval;}
-                        EarlyExitException eee =
-                            new EarlyExitException(15, input);
-                        throw eee;
-                }
-                cnt15++;
-            } while (true);
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end pattern
-
-    public static class variable_reference_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_reference
-    // DSLMap.g:219:1: variable_reference : lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) ;
-    public final variable_reference_return variable_reference() throws RecognitionException {
-        variable_reference_return retval = new variable_reference_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token lc=null;
-        Token name=null;
-        Token rc=null;
-
-        Object lc_tree=null;
-        Object name_tree=null;
-        Object rc_tree=null;
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-
-        
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:2: ( LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> ^( VT_VAR_DEF $name) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
+            {
+            LEFT_CURLY28=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition2990); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY28);
+
+            name=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2994); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(name);
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:28: ( COLON pat= pattern )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==COLON) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMap.g:207:30: COLON pat= pattern
+                    {
+                    COLON29=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_variable_definition2998); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON29);
+
+                    pushFollow(FOLLOW_pattern_in_variable_definition21002);
+                    pat=pattern();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) stream_pattern.add(pat.getTree());
+                    if ( backtracking==0 ) {
+                      text = input.toString(pat.start,pat.stop);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_CURLY30=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition21009); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY30);
+
+
+            // AST REWRITE
+            // elements: name, name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 208:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            if (!"".equals(text)) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:208:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 209:2: -> ^( VT_VAR_DEF $name)
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:209:5: ^( VT_VAR_DEF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end variable_definition2
+
+    public static class pattern_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start pattern
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:213:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
+    public final pattern_return pattern() throws RecognitionException {
+        pattern_return retval = new pattern_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_CURLY32=null;
+        Token RIGHT_CURLY34=null;
+        Token LEFT_SQUARE35=null;
+        Token RIGHT_SQUARE37=null;
+        literal_return literal31 = null;
+
+        literal_return literal33 = null;
+
+        pattern_return pattern36 = null;
+
+
+        Object LEFT_CURLY32_tree=null;
+        Object RIGHT_CURLY34_tree=null;
+        Object LEFT_SQUARE35_tree=null;
+        Object RIGHT_SQUARE37_tree=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            int cnt16=0;
+            loop16:
+            do {
+                int alt16=4;
+                switch ( input.LA(1) ) {
+                case RIGHT_SQUARE:
+                    {
+                    int LA16_2 = input.LA(2);
+
+                    if ( (synpred24()) ) {
+                        alt16=1;
+                    }
+
+
+                    }
+                    break;
+                case LEFT_SQUARE:
+                    {
+                    int LA16_3 = input.LA(2);
+
+                    if ( (synpred24()) ) {
+                        alt16=1;
+                    }
+                    else if ( (synpred26()) ) {
+                        alt16=3;
+                    }
+
+
+                    }
+                    break;
+                case LEFT_CURLY:
+                    {
+                    alt16=2;
+                    }
+                    break;
+                case LITERAL:
+                case COLON:
+                    {
+                    alt16=1;
+                    }
+                    break;
+
+                }
+
+                switch (alt16) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
+            	    {
+            	    pushFollow(FOLLOW_literal_in_pattern1060);
+            	    literal31=literal();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal31.getTree());
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:215:13: LEFT_CURLY literal RIGHT_CURLY
+            	    {
+            	    LEFT_CURLY32=(Token)input.LT(1);
+            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern1074); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    LEFT_CURLY32_tree = (Object)adaptor.create(LEFT_CURLY32);
+            	    adaptor.addChild(root_0, LEFT_CURLY32_tree);
+            	    }
+            	    pushFollow(FOLLOW_literal_in_pattern1076);
+            	    literal33=literal();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal33.getTree());
+            	    RIGHT_CURLY34=(Token)input.LT(1);
+            	    match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_pattern1078); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    RIGHT_CURLY34_tree = (Object)adaptor.create(RIGHT_CURLY34);
+            	    adaptor.addChild(root_0, RIGHT_CURLY34_tree);
+            	    }
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
+            	    {
+            	    LEFT_SQUARE35=(Token)input.LT(1);
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern1092); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    LEFT_SQUARE35_tree = (Object)adaptor.create(LEFT_SQUARE35);
+            	    adaptor.addChild(root_0, LEFT_SQUARE35_tree);
+            	    }
+            	    pushFollow(FOLLOW_pattern_in_pattern1094);
+            	    pattern36=pattern();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, pattern36.getTree());
+            	    RIGHT_SQUARE37=(Token)input.LT(1);
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern1096); if (failed) return retval;
+            	    if ( backtracking==0 ) {
+            	    RIGHT_SQUARE37_tree = (Object)adaptor.create(RIGHT_SQUARE37);
+            	    adaptor.addChild(root_0, RIGHT_SQUARE37_tree);
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt16 >= 1 ) break loop16;
+            	    if (backtracking>0) {failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(16, input);
+                        throw eee;
+                }
+                cnt16++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end pattern
+
+    public static class variable_reference_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start variable_reference
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:221:1: variable_reference : lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) ;
+    public final variable_reference_return variable_reference() throws RecognitionException {
+        variable_reference_return retval = new variable_reference_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lc=null;
+        Token name=null;
+        Token rc=null;
+
+        Object lc_tree=null;
+        Object name_tree=null;
+        Object rc_tree=null;
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+
+
                 boolean hasSpaceBefore = false;
                 boolean hasSpaceAfter = false;
-
-        try {
-            // DSLMap.g:224:2: (lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) )
-            // DSLMap.g:224:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
-            {
-            lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1037); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
-
-            if ( backtracking==0 ) {
-              
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:226:2: (lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE -> ^( VT_VAR_REF $name) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:226:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
+            {
+            lc=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1131); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
+
+            if ( backtracking==0 ) {
+
               		CommonToken back2 =  (CommonToken)input.LT(-2);
               		if( back2!=null && back2.getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
-              		
-            }
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1048); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            rc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1052); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
-
-            if ( backtracking==0 ) {
-              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
-            }
-
-            // AST REWRITE
-            // elements: name, name, name, name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 231:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE
-            if (hasSpaceBefore && hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:231:49: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 232:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
-            if (hasSpaceBefore && !hasSpaceAfter) {
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:232:50: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-            else // 233:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
-            if (!hasSpaceBefore && hasSpaceAfter) {
-                // DSLMap.g:233:42: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-
-            }
-            else // 234:2: -> ^( VT_VAR_REF $name)
-            {
-                // DSLMap.g:234:6: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_reference
-
-    public static class variable_reference2_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start variable_reference2
-    // DSLMap.g:238:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
-    public final variable_reference2_return variable_reference2() throws RecognitionException {
-        variable_reference2_return retval = new variable_reference2_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token name=null;
-        Token LEFT_CURLY37=null;
-        Token RIGHT_CURLY38=null;
-
-        Object name_tree=null;
-        Object LEFT_CURLY37_tree=null;
-        Object RIGHT_CURLY38_tree=null;
-        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
-
-        try {
-            // DSLMap.g:239:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
-            // DSLMap.g:239:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
-            {
-            LEFT_CURLY37=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21130); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY37);
-
-            name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21134); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(name);
-
-            RIGHT_CURLY38=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21136); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY38);
-
-
-            // AST REWRITE
-            // elements: name
-            // token labels: name
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 240:2: -> ^( VT_VAR_REF $name)
-            {
-                // DSLMap.g:240:5: ^( VT_VAR_REF $name)
-                {
-                Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
-
-                adaptor.addChild(root_1, stream_name.next());
-
-                adaptor.addChild(root_0, root_1);
-                }
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end variable_reference2
-
-    public static class condition_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start condition_key
-    // DSLMap.g:244:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
-    public final condition_key_return condition_key() throws RecognitionException {
-        condition_key_return retval = new condition_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // DSLMap.g:245:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
-            // DSLMap.g:245:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("condition")||validateIdentifierKey("when")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "condition_key", "validateIdentifierKey(\"condition\")||validateIdentifierKey(\"when\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1165); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 246:2: -> VT_CONDITION[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_CONDITION, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end condition_key
-
-    public static class consequence_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start consequence_key
-    // DSLMap.g:249:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
-    public final consequence_key_return consequence_key() throws RecognitionException {
-        consequence_key_return retval = new consequence_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // DSLMap.g:250:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
-            // DSLMap.g:250:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("consequence")||validateIdentifierKey("then")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "consequence_key", "validateIdentifierKey(\"consequence\")||validateIdentifierKey(\"then\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1188); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 251:2: -> VT_CONSEQUENCE[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_CONSEQUENCE, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end consequence_key
-
-    public static class keyword_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start keyword_key
-    // DSLMap.g:254:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
-    public final keyword_key_return keyword_key() throws RecognitionException {
-        keyword_key_return retval = new keyword_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // DSLMap.g:255:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
-            // DSLMap.g:255:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("keyword")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "keyword_key", "validateIdentifierKey(\"keyword\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1211); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 256:2: -> VT_KEYWORD[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_KEYWORD, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end keyword_key
-
-    public static class any_key_return extends ParserRuleReturnScope {
-        Object tree;
-        public Object getTree() { return tree; }
-    };
-
-    // $ANTLR start any_key
-    // DSLMap.g:259:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
-    public final any_key_return any_key() throws RecognitionException {
-        any_key_return retval = new any_key_return();
-        retval.start = input.LT(1);
-
-        Object root_0 = null;
-
-        Token value=null;
-
-        Object value_tree=null;
-        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
-
-        try {
-            // DSLMap.g:260:2: ({...}?value= LITERAL -> VT_ANY[$value] )
-            // DSLMap.g:260:4: {...}?value= LITERAL
-            {
-            if ( !(validateIdentifierKey("*")) ) {
-                if (backtracking>0) {failed=true; return retval;}
-                throw new FailedPredicateException(input, "any_key", "validateIdentifierKey(\"*\")");
-            }
-            value=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_any_key1234); if (failed) return retval;
-            if ( backtracking==0 ) stream_LITERAL.add(value);
-
-
-            // AST REWRITE
-            // elements: 
-            // token labels: 
-            // rule labels: retval
-            // token list labels: 
-            // rule list labels: 
-            if ( backtracking==0 ) {
-            retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
-            root_0 = (Object)adaptor.nil();
-            // 261:2: -> VT_ANY[$value]
-            {
-                adaptor.addChild(root_0, adaptor.create(VT_ANY, value));
-
-            }
-
-            }
-
-            }
-
-            retval.stop = input.LT(-1);
-
-            if ( backtracking==0 ) {
-                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
-                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return retval;
-    }
-    // $ANTLR end any_key
-
-    // $ANTLR start synpred4
-    public final void synpred4_fragment() throws RecognitionException {   
-        // DSLMap.g:102:24: ( meta_section )
-        // DSLMap.g:102:24: meta_section
-        {
-        pushFollow(FOLLOW_meta_section_in_synpred4334);
-        meta_section();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred4
-
-    // $ANTLR start synpred6
-    public final void synpred6_fragment() throws RecognitionException {   
-        // DSLMap.g:115:4: ( condition_key )
-        // DSLMap.g:115:4: condition_key
-        {
-        pushFollow(FOLLOW_condition_key_in_synpred6400);
-        condition_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred6
-
-    // $ANTLR start synpred7
-    public final void synpred7_fragment() throws RecognitionException {   
-        // DSLMap.g:116:5: ( consequence_key )
-        // DSLMap.g:116:5: consequence_key
-        {
-        pushFollow(FOLLOW_consequence_key_in_synpred7409);
-        consequence_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred7
-
-    // $ANTLR start synpred8
-    public final void synpred8_fragment() throws RecognitionException {   
-        // DSLMap.g:117:5: ( keyword_key )
-        // DSLMap.g:117:5: keyword_key
-        {
-        pushFollow(FOLLOW_keyword_key_in_synpred8417);
-        keyword_key();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred8
-
-    // $ANTLR start synpred12
-    public final void synpred12_fragment() throws RecognitionException {   
-        // DSLMap.g:147:4: ( literal )
-        // DSLMap.g:147:4: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred12561);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred12
-
-    // $ANTLR start synpred15
-    public final void synpred15_fragment() throws RecognitionException {   
-        // DSLMap.g:165:5: ( literal )
-        // DSLMap.g:165:5: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred15636);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred15
-
-    // $ANTLR start synpred16
-    public final void synpred16_fragment() throws RecognitionException {   
-        // DSLMap.g:165:13: ( EQUALS )
-        // DSLMap.g:165:13: EQUALS
-        {
-        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16638); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred16
-
-    // $ANTLR start synpred17
-    public final void synpred17_fragment() throws RecognitionException {   
-        // DSLMap.g:165:20: ( COMMA )
-        // DSLMap.g:165:20: COMMA
-        {
-        match(input,COMMA,FOLLOW_COMMA_in_synpred17640); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred17
-
-    // $ANTLR start synpred23
-    public final void synpred23_fragment() throws RecognitionException {   
-        // DSLMap.g:212:13: ( literal )
-        // DSLMap.g:212:13: literal
-        {
-        pushFollow(FOLLOW_literal_in_synpred23966);
-        literal();
-        _fsp--;
-        if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred23
-
-    // $ANTLR start synpred25
-    public final void synpred25_fragment() throws RecognitionException {   
-        // DSLMap.g:214:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
-        // DSLMap.g:214:13: LEFT_SQUARE pattern RIGHT_SQUARE
-        {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred25998); if (failed) return ;
-        pushFollow(FOLLOW_pattern_in_synpred251000);
-        pattern();
-        _fsp--;
-        if (failed) return ;
-        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred251002); if (failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred25
-
-    public final boolean synpred12() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred12_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred4() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred4_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred25() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred25_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred23() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred23_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred16() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred16_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred7() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred7_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred17() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred17_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred6() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred6_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred15() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred15_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-    public final boolean synpred8() {
-        backtracking++;
-        int start = input.mark();
-        try {
-            synpred8_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !failed;
-        input.rewind(start);
-        backtracking--;
-        failed=false;
-        return success;
-    }
-
-
- 
-
-    public static final BitSet FOLLOW_statement_in_mapping_file255 = new BitSet(new long[]{0x0000000000B00002L});
-    public static final BitSet FOLLOW_entry_in_statement278 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_comment_in_statement285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_statement291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LINE_COMMENT_in_comment307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_scope_section_in_entry332 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_meta_section_in_entry334 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_key_section_in_entry337 = new BitSet(new long[]{0x0000000000400000L});
-    public static final BitSet FOLLOW_EQUALS_in_entry339 = new BitSet(new long[]{0x000000001FC00000L});
-    public static final BitSet FOLLOW_value_section_in_entry341 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_EOL_in_entry344 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_entry346 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_scope_section392 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_condition_key_in_scope_section400 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_consequence_key_in_scope_section409 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_keyword_key_in_scope_section417 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_any_key_in_scope_section425 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_scope_section433 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_meta_section473 = new BitSet(new long[]{0x0000000003000000L});
-    public static final BitSet FOLLOW_LITERAL_in_meta_section475 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_meta_section478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_sentence_in_key_section502 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_variable_definition_in_key_sentence533 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_chunk_in_key_sentence540 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_key_chunk561 = new BitSet(new long[]{0x000000000B800002L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section576 = new BitSet(new long[]{0x000000001FC00002L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence607 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_value_chunk_in_value_sentence614 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_value_chunk636 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_EQUALS_in_value_chunk638 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_COMMA_in_value_chunk640 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_set_in_literal656 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition692 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition703 = new BitSet(new long[]{0x0000000028000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition707 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition711 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition720 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2896 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition2900 = new BitSet(new long[]{0x0000000028000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition2904 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition2908 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition2915 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_pattern966 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern980 = new BitSet(new long[]{0x000000000B800000L});
-    public static final BitSet FOLLOW_literal_in_pattern982 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern984 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern998 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_pattern1000 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern1002 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1037 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference1048 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1052 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21130 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference21134 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_condition_key1165 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_consequence_key1188 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_keyword_key1211 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_any_key1234 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_meta_section_in_synpred4334 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_condition_key_in_synpred6400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_consequence_key_in_synpred7409 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_key_in_synpred8417 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred12561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred15636 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUALS_in_synpred16638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_synpred17640 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred23966 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred25998 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_synpred251000 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred251002 = new BitSet(new long[]{0x0000000000000002L});
-
+              		
+            }
+            name=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1142); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(name);
+
+            rc=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1146); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
+
+            if ( backtracking==0 ) {
+              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
+            }
+
+            // AST REWRITE
+            // elements: name, name, name, name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 233:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE
+            if (hasSpaceBefore && hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:233:49: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 234:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
+            if (hasSpaceBefore && !hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:234:50: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 235:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
+            if (!hasSpaceBefore && hasSpaceAfter) {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:235:42: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 236:2: -> ^( VT_VAR_REF $name)
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:236:6: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end variable_reference
+
+    public static class variable_reference2_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start variable_reference2
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:240:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
+    public final variable_reference2_return variable_reference2() throws RecognitionException {
+        variable_reference2_return retval = new variable_reference2_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token name=null;
+        Token LEFT_CURLY38=null;
+        Token RIGHT_CURLY39=null;
+
+        Object name_tree=null;
+        Object LEFT_CURLY38_tree=null;
+        Object RIGHT_CURLY39_tree=null;
+        RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+        RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:241:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:241:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
+            {
+            LEFT_CURLY38=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21224); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY38);
+
+            name=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21228); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(name);
+
+            RIGHT_CURLY39=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21230); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY39);
+
+
+            // AST REWRITE
+            // elements: name
+            // token labels: name
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_name=new RewriteRuleTokenStream(adaptor,"token name",name);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 242:2: -> ^( VT_VAR_REF $name)
+            {
+                // src/main/resources/org/drools/lang/dsl/DSLMap.g:242:5: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end variable_reference2
+
+    public static class condition_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start condition_key
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:246:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
+    public final condition_key_return condition_key() throws RecognitionException {
+        condition_key_return retval = new condition_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:247:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:247:4: {...}?value= LITERAL
+            {
+            if ( !(validateIdentifierKey("condition")||validateIdentifierKey("when")) ) {
+                if (backtracking>0) {failed=true; return retval;}
+                throw new FailedPredicateException(input, "condition_key", "validateIdentifierKey(\"condition\")||validateIdentifierKey(\"when\")");
+            }
+            value=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1259); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(value);
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 248:2: -> VT_CONDITION[$value]
+            {
+                adaptor.addChild(root_0, adaptor.create(VT_CONDITION, value));
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end condition_key
+
+    public static class consequence_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start consequence_key
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:251:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
+    public final consequence_key_return consequence_key() throws RecognitionException {
+        consequence_key_return retval = new consequence_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:252:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:252:4: {...}?value= LITERAL
+            {
+            if ( !(validateIdentifierKey("consequence")||validateIdentifierKey("then")) ) {
+                if (backtracking>0) {failed=true; return retval;}
+                throw new FailedPredicateException(input, "consequence_key", "validateIdentifierKey(\"consequence\")||validateIdentifierKey(\"then\")");
+            }
+            value=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1282); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(value);
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 253:2: -> VT_CONSEQUENCE[$value]
+            {
+                adaptor.addChild(root_0, adaptor.create(VT_CONSEQUENCE, value));
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end consequence_key
+
+    public static class keyword_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start keyword_key
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:256:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
+    public final keyword_key_return keyword_key() throws RecognitionException {
+        keyword_key_return retval = new keyword_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:257:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:257:4: {...}?value= LITERAL
+            {
+            if ( !(validateIdentifierKey("keyword")) ) {
+                if (backtracking>0) {failed=true; return retval;}
+                throw new FailedPredicateException(input, "keyword_key", "validateIdentifierKey(\"keyword\")");
+            }
+            value=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1305); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(value);
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 258:2: -> VT_KEYWORD[$value]
+            {
+                adaptor.addChild(root_0, adaptor.create(VT_KEYWORD, value));
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end keyword_key
+
+    public static class any_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start any_key
+    // src/main/resources/org/drools/lang/dsl/DSLMap.g:261:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
+    public final any_key_return any_key() throws RecognitionException {
+        any_key_return retval = new any_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:262:2: ({...}?value= LITERAL -> VT_ANY[$value] )
+            // src/main/resources/org/drools/lang/dsl/DSLMap.g:262:4: {...}?value= LITERAL
+            {
+            if ( !(validateIdentifierKey("*")) ) {
+                if (backtracking>0) {failed=true; return retval;}
+                throw new FailedPredicateException(input, "any_key", "validateIdentifierKey(\"*\")");
+            }
+            value=(Token)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_any_key1328); if (failed) return retval;
+            if ( backtracking==0 ) stream_LITERAL.add(value);
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 263:2: -> VT_ANY[$value]
+            {
+                adaptor.addChild(root_0, adaptor.create(VT_ANY, value));
+
+            }
+
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( backtracking==0 ) {
+                retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end any_key
+
+    // $ANTLR start synpred4
+    public final void synpred4_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: ( meta_section )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:104:24: meta_section
+        {
+        pushFollow(FOLLOW_meta_section_in_synpred4352);
+        meta_section();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred4
+
+    // $ANTLR start synpred6
+    public final void synpred6_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: ( condition_key )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:117:4: condition_key
+        {
+        pushFollow(FOLLOW_condition_key_in_synpred6418);
+        condition_key();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred6
+
+    // $ANTLR start synpred7
+    public final void synpred7_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: ( consequence_key )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:118:5: consequence_key
+        {
+        pushFollow(FOLLOW_consequence_key_in_synpred7427);
+        consequence_key();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred7
+
+    // $ANTLR start synpred8
+    public final void synpred8_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: ( keyword_key )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:119:5: keyword_key
+        {
+        pushFollow(FOLLOW_keyword_key_in_synpred8435);
+        keyword_key();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred8
+
+    // $ANTLR start synpred12
+    public final void synpred12_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: ( literal )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:149:4: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred12579);
+        literal();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred12
+
+    // $ANTLR start synpred15
+    public final void synpred15_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: ( literal )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:5: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred15654);
+        literal();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred15
+
+    // $ANTLR start synpred16
+    public final void synpred16_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: ( EQUALS )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:13: EQUALS
+        {
+        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16656); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred16
+
+    // $ANTLR start synpred17
+    public final void synpred17_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: ( COMMA )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:167:20: COMMA
+        {
+        match(input,COMMA,FOLLOW_COMMA_in_synpred17658); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred17
+
+    // $ANTLR start synpred21
+    public final void synpred21_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: ( COLON LITERAL )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:186:18: COLON LITERAL
+        {
+        match(input,COLON,FOLLOW_COLON_in_synpred21726); if (failed) return ;
+        match(input,LITERAL,FOLLOW_LITERAL_in_synpred21730); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred21
+
+    // $ANTLR start synpred24
+    public final void synpred24_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: ( literal )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:214:13: literal
+        {
+        pushFollow(FOLLOW_literal_in_synpred241060);
+        literal();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred24
+
+    // $ANTLR start synpred26
+    public final void synpred26_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
+        // src/main/resources/org/drools/lang/dsl/DSLMap.g:216:13: LEFT_SQUARE pattern RIGHT_SQUARE
+        {
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred261092); if (failed) return ;
+        pushFollow(FOLLOW_pattern_in_synpred261094);
+        pattern();
+        _fsp--;
+        if (failed) return ;
+        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred261096); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred26
+
+    public final boolean synpred12() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred4() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred4_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred16() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred7() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred24() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred26() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred17() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred6() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred15() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred8() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public final boolean synpred21() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+
+
+ 
+
+    public static final BitSet FOLLOW_statement_in_mapping_file273 = new BitSet(new long[]{0x0000000001600002L});
+    public static final BitSet FOLLOW_entry_in_statement296 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_comment_in_statement303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOL_in_statement309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LINE_COMMENT_in_comment325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_scope_section_in_entry350 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_meta_section_in_entry352 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_key_section_in_entry355 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_EQUALS_in_entry357 = new BitSet(new long[]{0x000000003F800000L});
+    public static final BitSet FOLLOW_value_section_in_entry359 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_EOL_in_entry362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOF_in_entry364 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_scope_section410 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_condition_key_in_scope_section418 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_consequence_key_in_scope_section427 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_keyword_key_in_scope_section435 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_any_key_in_scope_section443 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_scope_section451 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_meta_section491 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_LITERAL_in_meta_section493 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_meta_section496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_sentence_in_key_section520 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_variable_definition_in_key_sentence551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_chunk_in_key_sentence558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_key_chunk579 = new BitSet(new long[]{0x0000000017000002L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section594 = new BitSet(new long[]{0x000000003F800002L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence625 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_value_chunk_in_value_sentence632 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_value_chunk654 = new BitSet(new long[]{0x000000001F800002L});
+    public static final BitSet FOLLOW_EQUALS_in_value_chunk656 = new BitSet(new long[]{0x000000001F800002L});
+    public static final BitSet FOLLOW_COMMA_in_value_chunk658 = new BitSet(new long[]{0x000000001F800002L});
+    public static final BitSet FOLLOW_set_in_literal674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition710 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition721 = new BitSet(new long[]{0x0000000050000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition726 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition730 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition734 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition738 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2990 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition2994 = new BitSet(new long[]{0x0000000050000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition2998 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition21002 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition21009 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_pattern1060 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern1074 = new BitSet(new long[]{0x0000000017000000L});
+    public static final BitSet FOLLOW_literal_in_pattern1076 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern1078 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern1092 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_pattern1094 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern1096 = new BitSet(new long[]{0x0000000037000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1131 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference1142 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1146 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21224 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference21228 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21230 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_condition_key1259 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_consequence_key1282 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_keyword_key1305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_any_key1328 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_meta_section_in_synpred4352 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_condition_key_in_synpred6418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_consequence_key_in_synpred7427 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_keyword_key_in_synpred8435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred12579 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred15654 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUALS_in_synpred16656 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COMMA_in_synpred17658 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLON_in_synpred21726 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_LITERAL_in_synpred21730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred241060 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred261092 = new BitSet(new long[]{0x0000000037000000L});
+    public static final BitSet FOLLOW_pattern_in_synpred261094 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred261096 = new BitSet(new long[]{0x0000000000000002L});
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -1,988 +1,1037 @@
-// $ANTLR 3.0.1 DSLMapWalker.g 2008-06-11 12:09:04
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2008-10-20 12:49:42
 
 	package org.drools.lang.dsl;
 	
 	import java.util.Map;
 	import java.util.HashMap;
 	
-
-
-import org.antlr.runtime.*;
-import org.antlr.runtime.tree.*;import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
-public class DSLMapWalker extends TreeParser {
-    public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
-    };
-    public static final int RIGHT_CURLY=28;
-    public static final int VT_ENTRY_VAL=14;
-    public static final int WS=29;
-    public static final int MISC=33;
-    public static final int VT_META=12;
-    public static final int VT_CONSEQUENCE=9;
-    public static final int VT_SPACE=19;
-    public static final int LINE_COMMENT=21;
-    public static final int VT_ANY=11;
-    public static final int VT_LITERAL=17;
-    public static final int DOT=31;
-    public static final int EQUALS=22;
-    public static final int VT_DSL_GRAMMAR=4;
-    public static final int VT_CONDITION=8;
-    public static final int VT_ENTRY=6;
-    public static final int VT_VAR_DEF=15;
-    public static final int VT_PATTERN=18;
-    public static final int LITERAL=25;
-    public static final int EscapeSequence=30;
-    public static final int VT_COMMENT=5;
-    public static final int EOF=-1;
-    public static final int EOL=20;
-    public static final int LEFT_SQUARE=23;
-    public static final int VT_ENTRY_KEY=13;
-    public static final int VT_SCOPE=7;
-    public static final int COLON=26;
-    public static final int VT_KEYWORD=10;
-    public static final int VT_VAR_REF=16;
-    public static final int LEFT_CURLY=27;
-    public static final int POUND=32;
-    public static final int RIGHT_SQUARE=24;
-
-        public DSLMapWalker(TreeNodeStream input) {
-            super(input);
-        }
-        
-
-    public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "DSLMapWalker.g"; }
-
-
-    protected static class mapping_file_scope {
-        DSLMapping retval;
-    }
-    protected Stack mapping_file_stack = new Stack();
-
-
-    // $ANTLR start mapping_file
-    // DSLMapWalker.g:17:1: mapping_file returns [DSLMapping mapping] : ^( VT_DSL_GRAMMAR ( valid_entry )* ) ;
-    public final DSLMapping mapping_file() throws RecognitionException {
-        mapping_file_stack.push(new mapping_file_scope());
-        DSLMapping mapping = null;
-
+
+
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class DSLMapWalker extends TreeParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_DSL_GRAMMAR", "VT_COMMENT", "VT_ENTRY", "VT_SCOPE", "VT_CONDITION", "VT_CONSEQUENCE", "VT_KEYWORD", "VT_ANY", "VT_META", "VT_ENTRY_KEY", "VT_ENTRY_VAL", "VT_VAR_DEF", "VT_VAR_REF", "VT_LITERAL", "VT_PATTERN", "VT_QUAL", "VT_SPACE", "EOL", "LINE_COMMENT", "EQUALS", "LEFT_SQUARE", "RIGHT_SQUARE", "LITERAL", "COMMA", "COLON", "LEFT_CURLY", "RIGHT_CURLY", "WS", "EscapeSequence", "DOT", "POUND", "MISC"
+    };
+    public static final int COMMA=27;
+    public static final int RIGHT_CURLY=30;
+    public static final int VT_ENTRY_VAL=14;
+    public static final int WS=31;
+    public static final int MISC=35;
+    public static final int VT_META=12;
+    public static final int VT_CONSEQUENCE=9;
+    public static final int VT_SPACE=20;
+    public static final int LINE_COMMENT=22;
+    public static final int VT_ANY=11;
+    public static final int VT_LITERAL=17;
+    public static final int DOT=33;
+    public static final int EQUALS=23;
+    public static final int VT_DSL_GRAMMAR=4;
+    public static final int VT_CONDITION=8;
+    public static final int VT_VAR_DEF=15;
+    public static final int VT_ENTRY=6;
+    public static final int VT_PATTERN=18;
+    public static final int LITERAL=26;
+    public static final int EscapeSequence=32;
+    public static final int VT_COMMENT=5;
+    public static final int EOF=-1;
+    public static final int EOL=21;
+    public static final int LEFT_SQUARE=24;
+    public static final int VT_ENTRY_KEY=13;
+    public static final int VT_SCOPE=7;
+    public static final int COLON=28;
+    public static final int VT_KEYWORD=10;
+    public static final int VT_QUAL=19;
+    public static final int VT_VAR_REF=16;
+    public static final int LEFT_CURLY=29;
+    public static final int POUND=34;
+    public static final int RIGHT_SQUARE=25;
+
+        public DSLMapWalker(TreeNodeStream input) {
+            super(input);
+        }
         
+
+    public String[] getTokenNames() { return tokenNames; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/dsl/DSLMapWalker.g"; }
+
+
+    protected static class mapping_file_scope {
+        DSLMapping retval;
+    }
+    protected Stack mapping_file_stack = new Stack();
+
+
+    // $ANTLR start mapping_file
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:17:1: mapping_file returns [DSLMapping mapping] : ^( VT_DSL_GRAMMAR ( valid_entry )* ) ;
+    public final DSLMapping mapping_file() throws RecognitionException {
+        mapping_file_stack.push(new mapping_file_scope());
+        DSLMapping mapping = null;
+
+
         	((mapping_file_scope)mapping_file_stack.peek()).retval = new DefaultDSLMapping() ;
-
-        try {
-            // DSLMapWalker.g:24:2: ( ^( VT_DSL_GRAMMAR ( valid_entry )* ) )
-            // DSLMapWalker.g:24:4: ^( VT_DSL_GRAMMAR ( valid_entry )* )
-            {
-            match(input,VT_DSL_GRAMMAR,FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // DSLMapWalker.g:24:21: ( valid_entry )*
-                loop1:
-                do {
-                    int alt1=2;
-                    int LA1_0 = input.LA(1);
-
-                    if ( ((LA1_0>=VT_COMMENT && LA1_0<=VT_ENTRY)) ) {
-                        alt1=1;
-                    }
-
-
-                    switch (alt1) {
-                	case 1 :
-                	    // DSLMapWalker.g:24:21: valid_entry
-                	    {
-                	    pushFollow(FOLLOW_valid_entry_in_mapping_file56);
-                	    valid_entry();
-                	    _fsp--;
-
-
-                	    }
-                	    break;
-
-                	default :
-                	    break loop1;
-                    }
-                } while (true);
-
-
-                match(input, Token.UP, null); 
-            }
-            
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:2: ( ^( VT_DSL_GRAMMAR ( valid_entry )* ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:4: ^( VT_DSL_GRAMMAR ( valid_entry )* )
+            {
+            match(input,VT_DSL_GRAMMAR,FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: ( valid_entry )*
+                loop1:
+                do {
+                    int alt1=2;
+                    int LA1_0 = input.LA(1);
+
+                    if ( ((LA1_0>=VT_COMMENT && LA1_0<=VT_ENTRY)) ) {
+                        alt1=1;
+                    }
+
+
+                    switch (alt1) {
+                	case 1 :
+                	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:24:21: valid_entry
+                	    {
+                	    pushFollow(FOLLOW_valid_entry_in_mapping_file56);
+                	    valid_entry();
+                	    _fsp--;
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop1;
+                    }
+                } while (true);
+
+
+                match(input, Token.UP, null); 
+            }
+
             		mapping = ((mapping_file_scope)mapping_file_stack.peek()).retval;
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            mapping_file_stack.pop();
-        }
-        return mapping;
-    }
-    // $ANTLR end mapping_file
-
-
-    // $ANTLR start valid_entry
-    // DSLMapWalker.g:30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );
-    public final DSLMappingEntry valid_entry() throws RecognitionException {
-        DSLMappingEntry mappingEntry = null;
-
-        CommonTree lc=null;
-        DSLMappingEntry ent = null;
-
-
-        try {
-            // DSLMapWalker.g:31:2: (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) )
-            int alt2=2;
-            int LA2_0 = input.LA(1);
-
-            if ( (LA2_0==VT_ENTRY) ) {
-                alt2=1;
-            }
-            else if ( (LA2_0==VT_COMMENT) ) {
-                alt2=2;
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );", 2, 0, input);
-
-                throw nvae;
-            }
-            switch (alt2) {
-                case 1 :
-                    // DSLMapWalker.g:31:4: ent= entry
-                    {
-                    pushFollow(FOLLOW_entry_in_valid_entry78);
-                    ent=entry();
-                    _fsp--;
-
-                    mappingEntry = ent; 
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMapWalker.g:32:4: ^( VT_COMMENT lc= LINE_COMMENT )
-                    {
-                    match(input,VT_COMMENT,FOLLOW_VT_COMMENT_in_valid_entry86); 
-
-                    match(input, Token.DOWN, null); 
-                    lc=(CommonTree)input.LT(1);
-                    match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_valid_entry90); 
-
-                    match(input, Token.UP, null); 
-                    mappingEntry = null;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return mappingEntry;
-    }
-    // $ANTLR end valid_entry
-
-    protected static class entry_scope {
-        Map variables;
-        AntlrDSLMappingEntry retval;
-        int counter;
-        StringBuffer keybuffer;
-        StringBuffer valuebuffer;
-    }
-    protected Stack entry_stack = new Stack();
-
-
-    // $ANTLR start entry
-    // DSLMapWalker.g:36:1: entry returns [DSLMappingEntry mappingEntry] : ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
-    public final DSLMappingEntry entry() throws RecognitionException {
-        entry_stack.push(new entry_scope());
-        DSLMappingEntry mappingEntry = null;
-
-        
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            mapping_file_stack.pop();
+        }
+        return mapping;
+    }
+    // $ANTLR end mapping_file
+
+
+    // $ANTLR start valid_entry
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );
+    public final DSLMappingEntry valid_entry() throws RecognitionException {
+        DSLMappingEntry mappingEntry = null;
+
+        CommonTree lc=null;
+        DSLMappingEntry ent = null;
+
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:2: (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==VT_ENTRY) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==VT_COMMENT) ) {
+                alt2=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("30:1: valid_entry returns [DSLMappingEntry mappingEntry] : (ent= entry | ^( VT_COMMENT lc= LINE_COMMENT ) );", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:31:4: ent= entry
+                    {
+                    pushFollow(FOLLOW_entry_in_valid_entry78);
+                    ent=entry();
+                    _fsp--;
+
+                    mappingEntry = ent; 
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:32:4: ^( VT_COMMENT lc= LINE_COMMENT )
+                    {
+                    match(input,VT_COMMENT,FOLLOW_VT_COMMENT_in_valid_entry86); 
+
+                    match(input, Token.DOWN, null); 
+                    lc=(CommonTree)input.LT(1);
+                    match(input,LINE_COMMENT,FOLLOW_LINE_COMMENT_in_valid_entry90); 
+
+                    match(input, Token.UP, null); 
+                    mappingEntry = null;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return mappingEntry;
+    }
+    // $ANTLR end valid_entry
+
+    protected static class entry_scope {
+        Map variables;
+        AntlrDSLMappingEntry retval;
+        int counter;
+        StringBuffer keybuffer;
+        StringBuffer valuebuffer;
+        StringBuffer sentencebuffer;
+    }
+    protected Stack entry_stack = new Stack();
+
+
+    // $ANTLR start entry
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:36:1: entry returns [DSLMappingEntry mappingEntry] : ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) ;
+    public final DSLMappingEntry entry() throws RecognitionException {
+        entry_stack.push(new entry_scope());
+        DSLMappingEntry mappingEntry = null;
+
+
         	((entry_scope)entry_stack.peek()).retval = new AntlrDSLMappingEntry() ;
         	((entry_scope)entry_stack.peek()).variables = new HashMap();
         	((entry_scope)entry_stack.peek()).keybuffer = new StringBuffer();
         	((entry_scope)entry_stack.peek()).valuebuffer = new StringBuffer();
-
-        try {
-            // DSLMapWalker.g:50:2: ( ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
-            // DSLMapWalker.g:50:4: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
-            {
-            match(input,VT_ENTRY,FOLLOW_VT_ENTRY_in_entry119); 
-
-            match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_scope_section_in_entry121);
-            scope_section();
-            _fsp--;
-
-            // DSLMapWalker.g:50:29: ( meta_section )?
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-
-            if ( (LA3_0==VT_META) ) {
-                alt3=1;
-            }
-            switch (alt3) {
-                case 1 :
-                    // DSLMapWalker.g:50:29: meta_section
-                    {
-                    pushFollow(FOLLOW_meta_section_in_entry123);
-                    meta_section();
-                    _fsp--;
-
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_key_section_in_entry126);
-            key_section();
-            _fsp--;
-
-            ((entry_scope)entry_stack.peek()).retval.variables = ((entry_scope)entry_stack.peek()).variables; ((entry_scope)entry_stack.peek()).retval.setMappingKey(((entry_scope)entry_stack.peek()).keybuffer.toString());
-            pushFollow(FOLLOW_value_section_in_entry132);
-            value_section();
-            _fsp--;
-
-
-            match(input, Token.UP, null); 
-            
+        	((entry_scope)entry_stack.peek()).sentencebuffer = new StringBuffer();
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:2: ( ^( VT_ENTRY scope_section ( meta_section )? key_section value_section ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:4: ^( VT_ENTRY scope_section ( meta_section )? key_section value_section )
+            {
+            match(input,VT_ENTRY,FOLLOW_VT_ENTRY_in_entry119); 
+
+            match(input, Token.DOWN, null); 
+            pushFollow(FOLLOW_scope_section_in_entry121);
+            scope_section();
+            _fsp--;
+
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: ( meta_section )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==VT_META) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:52:29: meta_section
+                    {
+                    pushFollow(FOLLOW_meta_section_in_entry123);
+                    meta_section();
+                    _fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_key_section_in_entry126);
+            key_section();
+            _fsp--;
+
+            ((entry_scope)entry_stack.peek()).retval.variables = ((entry_scope)entry_stack.peek()).variables; ((entry_scope)entry_stack.peek()).retval.setMappingKey(((entry_scope)entry_stack.peek()).keybuffer.toString());((entry_scope)entry_stack.peek()).retval.setSentence(((entry_scope)entry_stack.peek()).sentencebuffer.toString());
+            pushFollow(FOLLOW_value_section_in_entry132);
+            value_section();
+            _fsp--;
+
+
+            match(input, Token.UP, null); 
+
             		((entry_scope)entry_stack.peek()).retval.setMappingValue(((entry_scope)entry_stack.peek()).valuebuffer.toString());
             		mappingEntry = ((entry_scope)entry_stack.peek()).retval;
             		((mapping_file_scope)mapping_file_stack.peek()).retval.addEntry(mappingEntry);
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            entry_stack.pop();
-        }
-        return mappingEntry;
-    }
-    // $ANTLR end entry
-
-
-    // $ANTLR start scope_section
-    // DSLMapWalker.g:60:1: scope_section : ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) ;
-    public final void scope_section() throws RecognitionException {
-        CommonTree thescope=null;
-
-        try {
-            // DSLMapWalker.g:61:2: ( ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) )
-            // DSLMapWalker.g:61:4: ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? )
-            {
-            thescope=(CommonTree)input.LT(1);
-            match(input,VT_SCOPE,FOLLOW_VT_SCOPE_in_scope_section152); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // DSLMapWalker.g:61:24: ( condition_key )?
-                int alt4=2;
-                int LA4_0 = input.LA(1);
-
-                if ( (LA4_0==VT_CONDITION) ) {
-                    alt4=1;
-                }
-                switch (alt4) {
-                    case 1 :
-                        // DSLMapWalker.g:61:24: condition_key
-                        {
-                        pushFollow(FOLLOW_condition_key_in_scope_section154);
-                        condition_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // DSLMapWalker.g:61:39: ( consequence_key )?
-                int alt5=2;
-                int LA5_0 = input.LA(1);
-
-                if ( (LA5_0==VT_CONSEQUENCE) ) {
-                    alt5=1;
-                }
-                switch (alt5) {
-                    case 1 :
-                        // DSLMapWalker.g:61:39: consequence_key
-                        {
-                        pushFollow(FOLLOW_consequence_key_in_scope_section157);
-                        consequence_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // DSLMapWalker.g:61:56: ( keyword_key )?
-                int alt6=2;
-                int LA6_0 = input.LA(1);
-
-                if ( (LA6_0==VT_KEYWORD) ) {
-                    alt6=1;
-                }
-                switch (alt6) {
-                    case 1 :
-                        // DSLMapWalker.g:61:56: keyword_key
-                        {
-                        pushFollow(FOLLOW_keyword_key_in_scope_section160);
-                        keyword_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-                // DSLMapWalker.g:61:69: ( any_key )?
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-
-                if ( (LA7_0==VT_ANY) ) {
-                    alt7=1;
-                }
-                switch (alt7) {
-                    case 1 :
-                        // DSLMapWalker.g:61:69: any_key
-                        {
-                        pushFollow(FOLLOW_any_key_in_scope_section163);
-                        any_key();
-                        _fsp--;
-
-
-                        }
-                        break;
-
-                }
-
-
-                match(input, Token.UP, null); 
-            }
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end scope_section
-
-
-    // $ANTLR start meta_section
-    // DSLMapWalker.g:66:1: meta_section : ^( VT_META (metalit= LITERAL )? ) ;
-    public final void meta_section() throws RecognitionException {
-        CommonTree metalit=null;
-
-        try {
-            // DSLMapWalker.g:67:2: ( ^( VT_META (metalit= LITERAL )? ) )
-            // DSLMapWalker.g:67:4: ^( VT_META (metalit= LITERAL )? )
-            {
-            match(input,VT_META,FOLLOW_VT_META_in_meta_section180); 
-
-            if ( input.LA(1)==Token.DOWN ) {
-                match(input, Token.DOWN, null); 
-                // DSLMapWalker.g:67:21: (metalit= LITERAL )?
-                int alt8=2;
-                int LA8_0 = input.LA(1);
-
-                if ( (LA8_0==LITERAL) ) {
-                    alt8=1;
-                }
-                switch (alt8) {
-                    case 1 :
-                        // DSLMapWalker.g:67:21: metalit= LITERAL
-                        {
-                        metalit=(CommonTree)input.LT(1);
-                        match(input,LITERAL,FOLLOW_LITERAL_in_meta_section184); 
-
-                        }
-                        break;
-
-                }
-
-
-                match(input, Token.UP, null); 
-            }
-            
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            entry_stack.pop();
+        }
+        return mappingEntry;
+    }
+    // $ANTLR end entry
+
+
+    // $ANTLR start scope_section
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:62:1: scope_section : ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) ;
+    public final void scope_section() throws RecognitionException {
+        CommonTree thescope=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:2: ( ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:4: ^(thescope= VT_SCOPE ( condition_key )? ( consequence_key )? ( keyword_key )? ( any_key )? )
+            {
+            thescope=(CommonTree)input.LT(1);
+            match(input,VT_SCOPE,FOLLOW_VT_SCOPE_in_scope_section152); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: ( condition_key )?
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( (LA4_0==VT_CONDITION) ) {
+                    alt4=1;
+                }
+                switch (alt4) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:24: condition_key
+                        {
+                        pushFollow(FOLLOW_condition_key_in_scope_section154);
+                        condition_key();
+                        _fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: ( consequence_key )?
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0==VT_CONSEQUENCE) ) {
+                    alt5=1;
+                }
+                switch (alt5) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:39: consequence_key
+                        {
+                        pushFollow(FOLLOW_consequence_key_in_scope_section157);
+                        consequence_key();
+                        _fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: ( keyword_key )?
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==VT_KEYWORD) ) {
+                    alt6=1;
+                }
+                switch (alt6) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:56: keyword_key
+                        {
+                        pushFollow(FOLLOW_keyword_key_in_scope_section160);
+                        keyword_key();
+                        _fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: ( any_key )?
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==VT_ANY) ) {
+                    alt7=1;
+                }
+                switch (alt7) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:63:69: any_key
+                        {
+                        pushFollow(FOLLOW_any_key_in_scope_section163);
+                        any_key();
+                        _fsp--;
+
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end scope_section
+
+
+    // $ANTLR start meta_section
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:68:1: meta_section : ^( VT_META (metalit= LITERAL )? ) ;
+    public final void meta_section() throws RecognitionException {
+        CommonTree metalit=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:2: ( ^( VT_META (metalit= LITERAL )? ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:4: ^( VT_META (metalit= LITERAL )? )
+            {
+            match(input,VT_META,FOLLOW_VT_META_in_meta_section180); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: (metalit= LITERAL )?
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( (LA8_0==LITERAL) ) {
+                    alt8=1;
+                }
+                switch (alt8) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:69:21: metalit= LITERAL
+                        {
+                        metalit=(CommonTree)input.LT(1);
+                        match(input,LITERAL,FOLLOW_LITERAL_in_meta_section184); 
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+
             		if ( metalit == null || metalit.getText() == null || metalit.getText().length() == 0 ) {
             			((entry_scope)entry_stack.peek()).retval.setMetaData(DSLMappingEntry.EMPTY_METADATA);
             		} else {
                     		((entry_scope)entry_stack.peek()).retval.setMetaData(new DSLMappingEntry.DefaultDSLEntryMetaData( metalit.getText() ));
             	        }
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end meta_section
-
-
-    // $ANTLR start key_section
-    // DSLMapWalker.g:77:1: key_section : ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
-    public final void key_section() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:78:2: ( ^( VT_ENTRY_KEY ( key_sentence )+ ) )
-            // DSLMapWalker.g:78:4: ^( VT_ENTRY_KEY ( key_sentence )+ )
-            {
-            match(input,VT_ENTRY_KEY,FOLLOW_VT_ENTRY_KEY_in_key_section201); 
-
-            match(input, Token.DOWN, null); 
-            // DSLMapWalker.g:78:19: ( key_sentence )+
-            int cnt9=0;
-            loop9:
-            do {
-                int alt9=2;
-                int LA9_0 = input.LA(1);
-
-                if ( (LA9_0==VT_VAR_DEF||LA9_0==VT_LITERAL||LA9_0==VT_SPACE) ) {
-                    alt9=1;
-                }
-
-
-                switch (alt9) {
-            	case 1 :
-            	    // DSLMapWalker.g:78:19: key_sentence
-            	    {
-            	    pushFollow(FOLLOW_key_sentence_in_key_section203);
-            	    key_sentence();
-            	    _fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt9 >= 1 ) break loop9;
-                        EarlyExitException eee =
-                            new EarlyExitException(9, input);
-                        throw eee;
-                }
-                cnt9++;
-            } while (true);
-
-
-            match(input, Token.UP, null); 
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end key_section
-
-
-    // $ANTLR start key_sentence
-    // DSLMapWalker.g:81:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );
-    public final void key_sentence() throws RecognitionException {
-        CommonTree vtl=null;
-
-        try {
-            // DSLMapWalker.g:82:2: ( variable_definition | vtl= VT_LITERAL | VT_SPACE )
-            int alt10=3;
-            switch ( input.LA(1) ) {
-            case VT_VAR_DEF:
-                {
-                alt10=1;
-                }
-                break;
-            case VT_LITERAL:
-                {
-                alt10=2;
-                }
-                break;
-            case VT_SPACE:
-                {
-                alt10=3;
-                }
-                break;
-            default:
-                NoViableAltException nvae =
-                    new NoViableAltException("81:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );", 10, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt10) {
-                case 1 :
-                    // DSLMapWalker.g:82:4: variable_definition
-                    {
-                    pushFollow(FOLLOW_variable_definition_in_key_sentence218);
-                    variable_definition();
-                    _fsp--;
-
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMapWalker.g:83:4: vtl= VT_LITERAL
-                    {
-                    vtl=(CommonTree)input.LT(1);
-                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_key_sentence225); 
-                    
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end meta_section
+
+
+    // $ANTLR start key_section
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:79:1: key_section : ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
+    public final void key_section() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:2: ( ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:4: ^( VT_ENTRY_KEY ( key_sentence )+ )
+            {
+            match(input,VT_ENTRY_KEY,FOLLOW_VT_ENTRY_KEY_in_key_section201); 
+
+            match(input, Token.DOWN, null); 
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: ( key_sentence )+
+            int cnt9=0;
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( (LA9_0==VT_VAR_DEF||LA9_0==VT_LITERAL||LA9_0==VT_SPACE) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:80:19: key_sentence
+            	    {
+            	    pushFollow(FOLLOW_key_sentence_in_key_section203);
+            	    key_sentence();
+            	    _fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt9 >= 1 ) break loop9;
+                        EarlyExitException eee =
+                            new EarlyExitException(9, input);
+                        throw eee;
+                }
+                cnt9++;
+            } while (true);
+
+
+            match(input, Token.UP, null); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end key_section
+
+
+    // $ANTLR start key_sentence
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:83:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );
+    public final void key_sentence() throws RecognitionException {
+        CommonTree vtl=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:2: ( variable_definition | vtl= VT_LITERAL | VT_SPACE )
+            int alt10=3;
+            switch ( input.LA(1) ) {
+            case VT_VAR_DEF:
+                {
+                alt10=1;
+                }
+                break;
+            case VT_LITERAL:
+                {
+                alt10=2;
+                }
+                break;
+            case VT_SPACE:
+                {
+                alt10=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("83:1: key_sentence : ( variable_definition | vtl= VT_LITERAL | VT_SPACE );", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:84:4: variable_definition
+                    {
+                    pushFollow(FOLLOW_variable_definition_in_key_sentence218);
+                    variable_definition();
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:85:4: vtl= VT_LITERAL
+                    {
+                    vtl=(CommonTree)input.LT(1);
+                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_key_sentence225); 
+
                     		((entry_scope)entry_stack.peek()).keybuffer.append(vtl.getText());
-                    	
-
-                    }
-                    break;
-                case 3 :
-                    // DSLMapWalker.g:87:4: VT_SPACE
-                    {
-                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_key_sentence234); 
-                    
+                    		((entry_scope)entry_stack.peek()).sentencebuffer.append(vtl.getText());
+                    	
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:90:4: VT_SPACE
+                    {
+                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_key_sentence234); 
+
                     		((entry_scope)entry_stack.peek()).keybuffer.append("\\s+");
-                    	
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end key_sentence
-
-
-    // $ANTLR start value_section
-    // DSLMapWalker.g:93:1: value_section : ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
-    public final void value_section() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:97:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
-            // DSLMapWalker.g:97:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
-            {
-            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section255); 
-
-            match(input, Token.DOWN, null); 
-            // DSLMapWalker.g:97:19: ( value_sentence )+
-            int cnt11=0;
-            loop11:
-            do {
-                int alt11=2;
-                int LA11_0 = input.LA(1);
-
-                if ( ((LA11_0>=VT_VAR_REF && LA11_0<=VT_LITERAL)||LA11_0==VT_SPACE) ) {
-                    alt11=1;
-                }
-
-
-                switch (alt11) {
-            	case 1 :
-            	    // DSLMapWalker.g:97:19: value_sentence
-            	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section257);
-            	    value_sentence();
-            	    _fsp--;
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt11 >= 1 ) break loop11;
-                        EarlyExitException eee =
-                            new EarlyExitException(11, input);
-                        throw eee;
-                }
-                cnt11++;
-            } while (true);
-
-
-            match(input, Token.UP, null); 
-
-            }
-
-            
+                    		((entry_scope)entry_stack.peek()).sentencebuffer.append(" ");
+                    	
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end key_sentence
+
+
+    // $ANTLR start value_section
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:97:1: value_section : ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
+    public final void value_section() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
+            {
+            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section255); 
+
+            match(input, Token.DOWN, null); 
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: ( value_sentence )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>=VT_VAR_REF && LA11_0<=VT_LITERAL)||LA11_0==VT_SPACE) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:101:19: value_sentence
+            	    {
+            	    pushFollow(FOLLOW_value_sentence_in_value_section257);
+            	    value_sentence();
+            	    _fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            match(input, Token.UP, null); 
+
+            }
+
+
             	((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end value_section
-
-
-    // $ANTLR start value_sentence
-    // DSLMapWalker.g:100:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
-    public final void value_sentence() throws RecognitionException {
-        CommonTree vtl=null;
-
-        try {
-            // DSLMapWalker.g:101:2: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
-            int alt12=3;
-            switch ( input.LA(1) ) {
-            case VT_VAR_REF:
-                {
-                alt12=1;
-                }
-                break;
-            case VT_LITERAL:
-                {
-                alt12=2;
-                }
-                break;
-            case VT_SPACE:
-                {
-                alt12=3;
-                }
-                break;
-            default:
-                NoViableAltException nvae =
-                    new NoViableAltException("100:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );", 12, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt12) {
-                case 1 :
-                    // DSLMapWalker.g:101:4: variable_reference
-                    {
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence274);
-                    variable_reference();
-                    _fsp--;
-
-
-                    }
-                    break;
-                case 2 :
-                    // DSLMapWalker.g:102:4: vtl= VT_LITERAL
-                    {
-                    vtl=(CommonTree)input.LT(1);
-                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence281); 
-                    
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end value_section
+
+
+    // $ANTLR start value_sentence
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:104:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
+    public final void value_sentence() throws RecognitionException {
+        CommonTree vtl=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:2: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
+            int alt12=3;
+            switch ( input.LA(1) ) {
+            case VT_VAR_REF:
+                {
+                alt12=1;
+                }
+                break;
+            case VT_LITERAL:
+                {
+                alt12=2;
+                }
+                break;
+            case VT_SPACE:
+                {
+                alt12=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("104:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:105:4: variable_reference
+                    {
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence274);
+                    variable_reference();
+                    _fsp--;
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:106:4: vtl= VT_LITERAL
+                    {
+                    vtl=(CommonTree)input.LT(1);
+                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence281); 
+
                     		((entry_scope)entry_stack.peek()).valuebuffer.append(vtl.getText().replaceAll("\\$", "\\\\\\$"));
-                    	
-
-                    }
-                    break;
-                case 3 :
-                    // DSLMapWalker.g:106:4: VT_SPACE
-                    {
-                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence289); 
-                    
+                    	
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:110:4: VT_SPACE
+                    {
+                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence289); 
+
                     		((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
-                    	
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end value_sentence
-
-
-    // $ANTLR start literal
-    // DSLMapWalker.g:112:1: literal : theliteral= VT_LITERAL ;
-    public final void literal() throws RecognitionException {
-        CommonTree theliteral=null;
-
-        try {
-            // DSLMapWalker.g:113:2: (theliteral= VT_LITERAL )
-            // DSLMapWalker.g:113:4: theliteral= VT_LITERAL
-            {
-            theliteral=(CommonTree)input.LT(1);
-            match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal307); 
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end literal
-
-
-    // $ANTLR start variable_definition
-    // DSLMapWalker.g:116:1: variable_definition : ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? ) ;
-    public final void variable_definition() throws RecognitionException {
-        CommonTree varname=null;
-        CommonTree pattern=null;
-
-        try {
-            // DSLMapWalker.g:117:2: ( ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? ) )
-            // DSLMapWalker.g:117:6: ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? )
-            {
-            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition323); 
-
-            match(input, Token.DOWN, null); 
-            varname=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition327); 
-            // DSLMapWalker.g:117:42: (pattern= VT_PATTERN )?
-            int alt13=2;
-            int LA13_0 = input.LA(1);
-
-            if ( (LA13_0==VT_PATTERN) ) {
-                alt13=1;
-            }
-            switch (alt13) {
-                case 1 :
-                    // DSLMapWalker.g:117:42: pattern= VT_PATTERN
-                    {
-                    pattern=(CommonTree)input.LT(1);
-                    match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition331); 
-
-                    }
-                    break;
-
-            }
-
-
-            match(input, Token.UP, null); 
-            
+                    	
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end value_sentence
+
+
+    // $ANTLR start literal
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:116:1: literal : theliteral= VT_LITERAL ;
+    public final void literal() throws RecognitionException {
+        CommonTree theliteral=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:2: (theliteral= VT_LITERAL )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:117:4: theliteral= VT_LITERAL
+            {
+            theliteral=(CommonTree)input.LT(1);
+            match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal307); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end literal
+
+
+    // $ANTLR start variable_definition
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:120:1: variable_definition : ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) ;
+    public final void variable_definition() throws RecognitionException {
+        CommonTree varname=null;
+        CommonTree q=null;
+        CommonTree pattern=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:2: ( ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:6: ^( VT_VAR_DEF varname= LITERAL ^( VT_QUAL (q= LITERAL )? ) (pattern= VT_PATTERN )? )
+            {
+            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition323); 
+
+            match(input, Token.DOWN, null); 
+            varname=(CommonTree)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition327); 
+            match(input,VT_QUAL,FOLLOW_VT_QUAL_in_variable_definition331); 
+
+            if ( input.LA(1)==Token.DOWN ) {
+                match(input, Token.DOWN, null); 
+                // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: (q= LITERAL )?
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( (LA13_0==LITERAL) ) {
+                    alt13=1;
+                }
+                switch (alt13) {
+                    case 1 :
+                        // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:47: q= LITERAL
+                        {
+                        q=(CommonTree)input.LT(1);
+                        match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition335); 
+
+                        }
+                        break;
+
+                }
+
+
+                match(input, Token.UP, null); 
+            }
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: (pattern= VT_PATTERN )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==VT_PATTERN) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:121:65: pattern= VT_PATTERN
+                    {
+                    pattern=(CommonTree)input.LT(1);
+                    match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition341); 
+
+                    }
+                    break;
+
+            }
+
+
+            match(input, Token.UP, null); 
+
             		((entry_scope)entry_stack.peek()).counter++;
             		((entry_scope)entry_stack.peek()).variables.put(varname.getText(), new Integer(((entry_scope)entry_stack.peek()).counter));
-            		((entry_scope)entry_stack.peek()).keybuffer.append(pattern != null? "(" + pattern.getText() + ")" : "(.*?)");
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end variable_definition
-
-
-    // $ANTLR start variable_reference
-    // DSLMapWalker.g:126:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
-    public final void variable_reference() throws RecognitionException {
-        CommonTree varref=null;
-        CommonTree lit=null;
-
-        try {
-            // DSLMapWalker.g:127:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
-            // DSLMapWalker.g:127:4: ^(varref= VT_VAR_REF lit= LITERAL )
-            {
-            varref=(CommonTree)input.LT(1);
-            match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference353); 
-
-            match(input, Token.DOWN, null); 
-            lit=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference357); 
-
-            match(input, Token.UP, null); 
-            
+            		
+            		if(q!=null && pattern!=null){
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+":"+q.getText()+":"+pattern.getText()+"}");
+            		}else if(q==null && pattern!=null){
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+":"+pattern.getText()+"}");
+            		}else{
+            			((entry_scope)entry_stack.peek()).sentencebuffer.append("{"+varname.getText()+"}");
+            		}
+            		
+            		if(q == null || !q.getText().equals("ENUM")){
+            			((entry_scope)entry_stack.peek()).keybuffer.append(pattern != null? "(" + pattern.getText() + ")" : "(.*?)");
+            		}else{
+            			((entry_scope)entry_stack.peek()).keybuffer.append("(.*?)");
+            			
+            		}
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end variable_definition
+
+
+    // $ANTLR start variable_reference
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:144:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
+    public final void variable_reference() throws RecognitionException {
+        CommonTree varref=null;
+        CommonTree lit=null;
+
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:145:4: ^(varref= VT_VAR_REF lit= LITERAL )
+            {
+            varref=(CommonTree)input.LT(1);
+            match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference363); 
+
+            match(input, Token.DOWN, null); 
+            lit=(CommonTree)input.LT(1);
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference367); 
+
+            match(input, Token.UP, null); 
+
             		((entry_scope)entry_stack.peek()).valuebuffer.append("$" + ((entry_scope)entry_stack.peek()).variables.get(lit.getText()));
-            	
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end variable_reference
-
-
-    // $ANTLR start condition_key
-    // DSLMapWalker.g:133:1: condition_key : VT_CONDITION ;
-    public final void condition_key() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:134:2: ( VT_CONDITION )
-            // DSLMapWalker.g:134:4: VT_CONDITION
-            {
-            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key375); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end condition_key
-
-
-    // $ANTLR start consequence_key
-    // DSLMapWalker.g:138:1: consequence_key : VT_CONSEQUENCE ;
-    public final void consequence_key() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:139:2: ( VT_CONSEQUENCE )
-            // DSLMapWalker.g:139:4: VT_CONSEQUENCE
-            {
-            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key390); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end consequence_key
-
-
-    // $ANTLR start keyword_key
-    // DSLMapWalker.g:143:1: keyword_key : VT_KEYWORD ;
-    public final void keyword_key() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:144:2: ( VT_KEYWORD )
-            // DSLMapWalker.g:144:4: VT_KEYWORD
-            {
-            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key405); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end keyword_key
-
-
-    // $ANTLR start any_key
-    // DSLMapWalker.g:148:1: any_key : VT_ANY ;
-    public final void any_key() throws RecognitionException {
-        try {
-            // DSLMapWalker.g:149:2: ( VT_ANY )
-            // DSLMapWalker.g:149:4: VT_ANY
-            {
-            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key420); 
-            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-        }
-        return ;
-    }
-    // $ANTLR end any_key
-
-
- 
-
-    public static final BitSet FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_valid_entry_in_mapping_file56 = new BitSet(new long[]{0x0000000000000068L});
-    public static final BitSet FOLLOW_entry_in_valid_entry78 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_COMMENT_in_valid_entry86 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LINE_COMMENT_in_valid_entry90 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ENTRY_in_entry119 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_scope_section_in_entry121 = new BitSet(new long[]{0x0000000000003000L});
-    public static final BitSet FOLLOW_meta_section_in_entry123 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_key_section_in_entry126 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_value_section_in_entry132 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_SCOPE_in_scope_section152 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_condition_key_in_scope_section154 = new BitSet(new long[]{0x0000000000000E08L});
-    public static final BitSet FOLLOW_consequence_key_in_scope_section157 = new BitSet(new long[]{0x0000000000000C08L});
-    public static final BitSet FOLLOW_keyword_key_in_scope_section160 = new BitSet(new long[]{0x0000000000000808L});
-    public static final BitSet FOLLOW_any_key_in_scope_section163 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_META_in_meta_section180 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_meta_section184 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ENTRY_KEY_in_key_section201 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_key_sentence_in_key_section203 = new BitSet(new long[]{0x00000000000A8008L});
-    public static final BitSet FOLLOW_variable_definition_in_key_sentence218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_key_sentence225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_SPACE_in_key_sentence234 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section255 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section257 = new BitSet(new long[]{0x00000000000B0008L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence274 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence281 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence289 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_literal307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition323 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition327 = new BitSet(new long[]{0x0000000000040008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition331 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference353 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference357 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key375 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key390 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key405 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ANY_in_any_key420 = new BitSet(new long[]{0x0000000000000002L});
-
+            	
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end variable_reference
+
+
+    // $ANTLR start condition_key
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:151:1: condition_key : VT_CONDITION ;
+    public final void condition_key() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:2: ( VT_CONDITION )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:152:4: VT_CONDITION
+            {
+            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key385); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end condition_key
+
+
+    // $ANTLR start consequence_key
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:156:1: consequence_key : VT_CONSEQUENCE ;
+    public final void consequence_key() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:2: ( VT_CONSEQUENCE )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:4: VT_CONSEQUENCE
+            {
+            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key400); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end consequence_key
+
+
+    // $ANTLR start keyword_key
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:161:1: keyword_key : VT_KEYWORD ;
+    public final void keyword_key() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:2: ( VT_KEYWORD )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:4: VT_KEYWORD
+            {
+            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key415); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end keyword_key
+
+
+    // $ANTLR start any_key
+    // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:166:1: any_key : VT_ANY ;
+    public final void any_key() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:2: ( VT_ANY )
+            // src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:4: VT_ANY
+            {
+            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key430); 
+            ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end any_key
+
+
+ 
+
+    public static final BitSet FOLLOW_VT_DSL_GRAMMAR_in_mapping_file54 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_valid_entry_in_mapping_file56 = new BitSet(new long[]{0x0000000000000068L});
+    public static final BitSet FOLLOW_entry_in_valid_entry78 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_COMMENT_in_valid_entry86 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LINE_COMMENT_in_valid_entry90 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ENTRY_in_entry119 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_scope_section_in_entry121 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_meta_section_in_entry123 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_key_section_in_entry126 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_value_section_in_entry132 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_SCOPE_in_scope_section152 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_condition_key_in_scope_section154 = new BitSet(new long[]{0x0000000000000E08L});
+    public static final BitSet FOLLOW_consequence_key_in_scope_section157 = new BitSet(new long[]{0x0000000000000C08L});
+    public static final BitSet FOLLOW_keyword_key_in_scope_section160 = new BitSet(new long[]{0x0000000000000808L});
+    public static final BitSet FOLLOW_any_key_in_scope_section163 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_META_in_meta_section180 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_meta_section184 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ENTRY_KEY_in_key_section201 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_key_sentence_in_key_section203 = new BitSet(new long[]{0x0000000000128008L});
+    public static final BitSet FOLLOW_variable_definition_in_key_sentence218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_key_sentence225 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_SPACE_in_key_sentence234 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section255 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section257 = new BitSet(new long[]{0x0000000000130008L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence274 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence281 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence289 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_literal307 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition323 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition327 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_VT_QUAL_in_variable_definition331 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition335 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition341 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference363 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference367 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ANY_in_any_key430 = new BitSet(new long[]{0x0000000000000002L});
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -26,6 +26,7 @@
         	final DSLMappingParseException exception = 
         		new DSLMappingParseException( error, -1 );
         	this.errors.add( exception );
+        	
 		}
 		return this.errors.isEmpty();
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMap.g	2008-10-20 20:59:17 UTC (rev 23523)
@@ -21,22 +21,24 @@
        VT_VAR_REF;
        VT_LITERAL;
        VT_PATTERN;
+       VT_QUAL;
        
        VT_SPACE;
+       
 }
 
 @parser::header {
 	package org.drools.lang.dsl;
 	import java.util.List;
 	import java.util.ArrayList;
-	import org.drools.lang.dsl.DSLMappingParseException;
+//	import org.drools.lang.dsl.DSLMappingParseException;
 }
 
 @lexer::header {
 	package org.drools.lang.dsl;
 	import java.util.List;
 	import java.util.ArrayList;
-	import org.drools.lang.dsl.DSLMappingParseException;
+//	import org.drools.lang.dsl.DSLMappingParseException;
 }
 
 @parser::members {
@@ -65,19 +67,19 @@
 		return validateLT(1, text);
 	}
 	
-	public void reportError(RecognitionException re) {
+	//public void reportError(RecognitionException re) {
 		// 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;
+	//	if (errorRecovery) {
+	//		return;
+	//	}
+	//	errorRecovery = true;
+	//
+	//	String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
+	//	DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
+	//	errorList.add(exception);
+	//}
 	
-		String error = "Error parsing mapping entry: " + getErrorMessage(re, tokenNames);
-		DSLMappingParseException exception = new DSLMappingParseException (error, re.line);
-		errorList.add(exception);
-	}
-	
 }
 
 // PARSER RULES
@@ -181,21 +183,21 @@
 		CommonToken back2 =  (CommonToken)input.LT(-2);
 		if( back2!=null && back2.getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
 		} 
-	name=LITERAL ( COLON pat=pattern {text = $pat.text;} )? rc=RIGHT_CURLY
+	name=LITERAL ( (COLON q=LITERAL)? COLON pat=pattern {text = $pat.text;} )? rc=RIGHT_CURLY
 	{
 	CommonToken rc1 = (CommonToken)input.LT(1);
 	if(!"=".equals(rc1.getText()) && ((CommonToken)rc).getStopIndex() < rc1.getStartIndex() - 1) hasSpaceAfter = true;
 	}
-	-> {hasSpaceBefore && !"".equals(text) && !hasSpaceAfter}? VT_SPACE ^(VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )  //pat can be null if there's no pattern here
-	-> {!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter}? ^(VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) //pat can be null if there's no pattern here
-	-> {hasSpaceBefore  && !hasSpaceAfter}?	VT_SPACE ^(VT_VAR_DEF $name ) 
-	-> {!hasSpaceBefore  && !hasSpaceAfter}?	 ^(VT_VAR_DEF $name ) 
+	-> {hasSpaceBefore && !"".equals(text) && !hasSpaceAfter}? VT_SPACE ^(VT_VAR_DEF $name ^(VT_QUAL $q?) VT_PATTERN[$pat.start, text] )  //pat can be null if there's no pattern here
+	-> {!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter}? ^(VT_VAR_DEF $name ^(VT_QUAL $q?) VT_PATTERN[$pat.start, text] ) //pat can be null if there's no pattern here
+	-> {hasSpaceBefore  && !hasSpaceAfter}?	VT_SPACE ^(VT_VAR_DEF $name ^(VT_QUAL $q?)) 
+	-> {!hasSpaceBefore  && !hasSpaceAfter}?	 ^(VT_VAR_DEF $name ^(VT_QUAL $q?)) 
 	
-	-> {hasSpaceBefore && !"".equals(text) && hasSpaceAfter}? VT_SPACE ^(VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE //pat can be null if there's no pattern here
-	-> {!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter}? ^(VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE //pat can be null if there's no pattern here
-	-> {hasSpaceBefore  && hasSpaceAfter}?	VT_SPACE ^(VT_VAR_DEF $name ) VT_SPACE
-	-> {!hasSpaceBefore  && hasSpaceAfter}?	 ^(VT_VAR_DEF $name ) VT_SPACE
-	-> ^(VT_VAR_DEF $name ) 
+	-> {hasSpaceBefore && !"".equals(text) && hasSpaceAfter}? VT_SPACE ^(VT_VAR_DEF $name ^(VT_QUAL $q?) VT_PATTERN[$pat.start, text] ) VT_SPACE //pat can be null if there's no pattern here
+	-> {!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter}? ^(VT_VAR_DEF $name ^(VT_QUAL $q?) VT_PATTERN[$pat.start, text] ) VT_SPACE //pat can be null if there's no pattern here
+	-> {hasSpaceBefore  && hasSpaceAfter}?	VT_SPACE ^(VT_VAR_DEF $name ^(VT_QUAL $q?)) VT_SPACE
+	-> {!hasSpaceBefore  && hasSpaceAfter}?	 ^(VT_VAR_DEF $name ^(VT_QUAL $q?)) VT_SPACE
+	-> ^(VT_VAR_DEF $name ^(VT_QUAL $q?)) 
 	;
 	
 variable_definition2

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/dsl/DSLMapWalker.g	2008-10-20 20:59:17 UTC (rev 23523)
@@ -40,14 +40,16 @@
 	int counter;
 	StringBuffer keybuffer;
 	StringBuffer valuebuffer;
+	StringBuffer sentencebuffer;
 }
 @init {
 	$entry::retval = new AntlrDSLMappingEntry() ;
 	$entry::variables = new HashMap();
 	$entry::keybuffer = new StringBuffer();
 	$entry::valuebuffer = new StringBuffer();
+	$entry::sentencebuffer = new StringBuffer();
 }
-	: ^(VT_ENTRY scope_section meta_section? key_section {$entry::retval.variables = $entry::variables; $entry::retval.setMappingKey($entry::keybuffer.toString());}
+	: ^(VT_ENTRY scope_section meta_section? key_section {$entry::retval.variables = $entry::variables; $entry::retval.setMappingKey($entry::keybuffer.toString());$entry::retval.setSentence($entry::sentencebuffer.toString());}
 		value_section)
 	{
 		$entry::retval.setMappingValue($entry::valuebuffer.toString());
@@ -83,10 +85,12 @@
 	| vtl=VT_LITERAL 
 	{
 		$entry::keybuffer.append($vtl.text);
+		$entry::sentencebuffer.append($vtl.text);
 	}
 	| VT_SPACE
 	{
 		$entry::keybuffer.append("\\s+");
+		$entry::sentencebuffer.append(" ");
 	}
 	;		
 
@@ -114,11 +118,25 @@
 	;	
 
 variable_definition
-	:   ^(VT_VAR_DEF varname=LITERAL pattern=VT_PATTERN? )
+	:   ^(VT_VAR_DEF varname=LITERAL  ^(VT_QUAL q=LITERAL?) pattern=VT_PATTERN? )
 	{
 		$entry::counter++;
 		$entry::variables.put($varname.text, new Integer($entry::counter));
-		$entry::keybuffer.append($pattern != null? "(" + $pattern.text + ")" : "(.*?)");
+		
+		if($q!=null && $pattern!=null){
+			$entry::sentencebuffer.append("{"+$varname.text+":"+$q.text+":"+$pattern.text+"}");
+		}else if($q==null && $pattern!=null){
+			$entry::sentencebuffer.append("{"+$varname.text+":"+$pattern.text+"}");
+		}else{
+			$entry::sentencebuffer.append("{"+$varname.text+"}");
+		}
+		
+		if($q == null || !$q.getText().equals("ENUM")){
+			$entry::keybuffer.append($pattern != null? "(" + $pattern.text + ")" : "(.*?)");
+		}else{
+			$entry::keybuffer.append("(.*?)");
+			
+		}
 	}
 	;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -20,7 +20,7 @@
         String pkg = "package org.test\n import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngineTest.NestedClass";
 
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
-        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() );
+        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList());
 
         assertEquals( "String", engine.getFieldType( "SuggestionCompletionEngineTest$NestedClass", "name" ) );
     }
@@ -29,7 +29,7 @@
         String pkg = "package org.test\n import org.drools.guvnor.client.modeldriven.Alert";
 
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
-        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() );
+        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(),new ArrayList() );
 
         assertEquals( SuggestionCompletionEngine.TYPE_STRING, engine.getFieldType( "Alert", "message" ) );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -174,4 +174,41 @@
         }
 
     }
+    
+    public void testEnum() {
+        String file = "[when][]ATTRIBUTE {attr:ENUM:Attribute.value} in {list}=Attribute( {attr} in ({list}) )";
+        try {
+            final Reader reader = new StringReader( file );
+            this.file = new DSLMappingFile();
+
+            final boolean parsingResult = this.file.parseAndLoad( reader );
+            reader.close();
+
+            assertTrue( this.file.getErrors().toString(),
+                        parsingResult );
+            assertTrue( this.file.getErrors().isEmpty() );
+
+            assertEquals( 1,
+                          this.file.getMapping().getEntries().size() );
+
+            DSLMappingEntry entry = (DSLMappingEntry) this.file.getMapping().getEntries().get( 0 );
+
+            assertEquals( DSLMappingEntry.CONDITION,
+                          entry.getSection() );
+            assertEquals( DSLMappingEntry.EMPTY_METADATA,
+                          entry.getMetaData() );
+            System.out.println(entry.getValuePattern());
+            System.out.println(entry.getVariables());
+            assertEquals( "ATTRIBUTE {attr:ENUM:Attribute.value} in {list}",
+                          entry.getMappingKey() );
+            assertEquals( "Attribute( {attr} in ({list}) )",entry.getMappingValue() );
+            
+            assertEquals("(\\W|^)ATTRIBUTE\\s+(.*?)\\s+in\\s+(.*?)$",entry.getKeyPattern().toString());
+
+        } catch ( final IOException e ) {
+            e.printStackTrace();
+            fail( "Should not raise exception " );
+        }
+
+    }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -217,6 +217,39 @@
 
     }
     
+    public void testANTLREnumExpand() throws Exception {
+        DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+        String dsl = "[when]When the credit rating is {rating:ENUM:Applicant.creditRating} = applicant:Applicant(credit=={rating})";
+        file.parseAndLoad( new StringReader( dsl ) );
+        assertEquals( 0,file.getErrors().size() );
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        String source = "rule \"TestNewDslSetup\"\ndialect \"mvel\"\nwhen\nWhen the credit rating is AA\nthen \nend";
+        
+//        String source="rule \"TestNewDslSetup\"\n"+
+//    					"dialect \"mvel\"\n"+
+//						"when\n"+
+//							"When the credit rating is OK\n"+
+//						"then\n"+
+//						"end\n";
+    
+        String drl = ex.expand(source);
+        
+        String expected = "rule \"TestNewDslSetup\"\n"+
+        "dialect \"mvel\"\n"+
+        "when\n"+
+        "applicant:Applicant(credit==AA) \n"+ 
+        "then end\n";
+        
+        assertFalse(ex.getErrors().toString(),ex.hasErrors());
+        assertEquals( expected, drl );
+        
+        
+
+
+        //System.err.println(ex.expand( "rule 'x' \n when \n foo \n then \n end" ));
+    }
+    
     private boolean equalsIgnoreWhiteSpace( String expected, String actual ) {
         String patternStr = expected.replaceAll( "\\s+", "(\\\\s|\\\\n|\\\\r)*" );//.replaceAll( "\\n", "\\s*\\$" );
         Pattern pattern = Pattern.compile( patternStr, Pattern.DOTALL );

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -24,13 +24,16 @@
 import org.drools.guvnor.client.common.DirtyableComposite;
 import org.drools.guvnor.client.common.DirtyableHorizontalPane;
 import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.modeldriven.DropDownData;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.guvnor.client.modeldriven.brl.DSLSentence;
+import org.drools.guvnor.client.modeldriven.brl.FactPattern;
 
 import com.google.gwt.user.client.ui.ChangeListener;
-import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.Widget;
 
@@ -43,10 +46,12 @@
     private final DirtyableHorizontalPane horiz;
     private final List  widgets;
     private final DSLSentence sentence;
-    public DSLSentenceWidget(DSLSentence sentence) {
+    private SuggestionCompletionEngine completions;
+    public DSLSentenceWidget(DSLSentence sentence, SuggestionCompletionEngine completions) {
         horiz = new DirtyableHorizontalPane();
         widgets = new ArrayList();
         this.sentence = sentence;
+        this.completions = completions;
         init(  );
     }
 
@@ -65,32 +70,109 @@
         char[] chars = dslLine.toCharArray();
         FieldEditor currentBox = null;
         Label currentLabel = null;
-        for ( int i = 0; i < chars.length; i++ ) {
-            char c = chars[i];
-            if (c == '{') {
-                currentLabel = null;
-                currentBox = new FieldEditor();
-                addWidget( currentBox );
+        
+        int startVariable = dslLine.indexOf("{");
+        List<Widget> lineWidgets = new ArrayList<Widget>();
+        
+        String startLabel = "";
+        if(startVariable>0){
+        	startLabel = dslLine.substring(0,startVariable);
+        	
+        }else{
+        	startLabel = dslLine;
+        }
+        
+        Widget label = getLabel(startLabel);
+    	lineWidgets.add(label);
+        	
+        while(startVariable>0){
+        	int endVariable = dslLine.indexOf("}",startVariable);
+        	String currVariable = dslLine.substring(startVariable+1, endVariable);
+        	
+        	//For now assume If it has a colon then it is a dropdown. Else a textbox
+        	if(currVariable.indexOf(":")>0){
+        		Widget dropDown = getEnumDropdown(currVariable);
+        		lineWidgets.add(dropDown);
+        	}
+        	else{
+        		Widget box = getBox(currVariable);
+        		lineWidgets.add(box);
+        	}        
+        	
+        	//Parse out the next label between variables
+        	startVariable = dslLine.indexOf("{",endVariable);
+        	if(startVariable>0){
+	        	String nextLabel = dslLine.substring(endVariable+1,startVariable);
+	        	Widget currLabel = getLabel(nextLabel);
+	        	lineWidgets.add(currLabel);
+        	}else{
+        		String lastLabel = dslLine.substring(endVariable+1, dslLine.length());
+        		Widget currLabel = getLabel(lastLabel);
+        		lineWidgets.add(currLabel);
+        	}
+        }
+        
+        for(Widget widg : lineWidgets){
+        	addWidget(widg);
+        }
+        updateSentence();
+    }
 
-            } else if (c == '}') {
-                currentBox.setVisibleLength( currentBox.getText().length() + 1);
-                currentBox = null;
-            } else {
-                if (currentBox == null && currentLabel == null) {
-                    currentLabel = new SmallLabel();
-                    addWidget( currentLabel );
+    public Widget getEnumDropdown(String variableDef){
+    	Widget resultWidget = null;
+    	
+    	int firstIndex = variableDef.indexOf(":");
+    	int lastIndex  = variableDef.lastIndexOf(":");
+    	
+    	//If the variable doesn't have two colons then just put in a text box
+    	if(firstIndex<0 || lastIndex<0){
+    		resultWidget =  getBox(variableDef);
+    	}else{
+    		
+    		String varName = variableDef.substring(0,firstIndex);
+    		String enumVal = variableDef.substring(firstIndex+1,lastIndex);
+    		String typeAndField = variableDef.substring(lastIndex+1, variableDef.length());
+    		
+    		int dotIndex = typeAndField.indexOf(".");
+    		String type = typeAndField.substring(0,dotIndex);
+    		String field= typeAndField.substring(dotIndex+1,typeAndField.length());
+    		
+			String[] data = this.completions.getEnumValues(type, field);
+	    	ListBox list = new ListBox();
+	    	
+	    	for(String item : data){
+	    		list.addItem(item);
+	    	}
+	    	
+	    	list.addChangeListener( new ChangeListener() {
+                public void onChange(Widget w) {
+                    updateSentence();
+                    makeDirty();
                 }
-                if (currentLabel != null) {
-                    currentLabel.setText( currentLabel.getText() + c );
-                } else if (currentBox != null) {
-                    currentBox.setText( currentBox.getText() + c );
-                }
-
-            }
-        }
-
+            });
+	    	
+	    	resultWidget = list;
+	    	
+    	}
+    	
+    	return resultWidget;
     }
-
+    
+    public Widget getBox(String variableDef){
+    	FieldEditor currentBox = new FieldEditor();
+    	currentBox.setVisibleLength(variableDef.length()+1);
+    	currentBox.setText(variableDef);
+    	
+    	return currentBox;
+    }
+    
+    public Widget getLabel(String labelDef){
+    	Label label = new SmallLabel();
+    	label.setText(labelDef+" ");
+    	
+    	return label;
+    }
+    
     private void addWidget(Widget currentBox) {
         this.horiz.add( currentBox );
         widgets.add( currentBox );
@@ -108,6 +190,9 @@
                 newSentence = newSentence + ((Label) wid).getText();
             } else if (wid instanceof FieldEditor) {
                 newSentence = newSentence + " {" + ((FieldEditor) wid).getText() + "} ";
+            }else if (wid instanceof ListBox){
+            	ListBox box = (ListBox)wid;
+            	newSentence = newSentence + "{"+box.getItemText(box.getSelectedIndex())+ "}";
             }
         }
         this.sentence.sentence = newSentence.trim();

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -242,7 +242,7 @@
             } else if (action instanceof ActionRetractFact) {
                 w = new ActionRetractFactWidget(this.completions, (ActionRetractFact) action );
             } else if (action instanceof DSLSentence) {
-                w = new DSLSentenceWidget((DSLSentence) action);
+                w = new DSLSentenceWidget((DSLSentence) action,this.completions);
                 w.setStyleName( "model-builderInner-Background" );
             } else if (action instanceof FreeFormLine) {
             	final TextBox tb = new TextBox();
@@ -630,7 +630,7 @@
             Widget w = null;
 
             if (pattern instanceof DSLSentence) {
-                w = new DSLSentenceWidget((DSLSentence) pattern);
+                w = new DSLSentenceWidget((DSLSentence) pattern,completions);
 
                 dsls.add( wrapLHSWidget( model, i, w ) );
                 dsls.setStyleName( "model-builderInner-Background" );

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -35,6 +35,7 @@
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.lang.dsl.DSLMappingFile;
 import org.drools.lang.dsl.DSLMappingParseException;
+import org.drools.lang.dsl.DSLTokenizedMappingFile;
 import org.drools.lang.dsl.DefaultExpander;
 import org.drools.repository.AssetItem;
 import org.drools.repository.AssetItemIterator;
@@ -53,7 +54,7 @@
  */
 public class BRMSPackageBuilder extends PackageBuilder {
 
-    private List<DSLMappingFile> dslFiles;
+    private List<DSLTokenizedMappingFile> dslFiles;
     private DefaultExpander expander;
     
     /**
@@ -156,24 +157,24 @@
         super.resetErrors();
     }
 
-    public void setDSLFiles(List<DSLMappingFile> files) {
+    public void setDSLFiles(List<DSLTokenizedMappingFile> files) {
         this.dslFiles = files;
     }
 
-    public List<DSLMappingFile> getDSLMappingFiles() {
+    public List<DSLTokenizedMappingFile> getDSLMappingFiles() {
         return Collections.unmodifiableList( this.dslFiles );
     }
 
     /**
      * Load up all the DSL mappping files for the given package.
      */
-    public static List<DSLMappingFile> getDSLMappingFiles(PackageItem pkg, DSLErrorEvent err) {
-        List<DSLMappingFile> result = new ArrayList<DSLMappingFile>();
+    public static List<DSLTokenizedMappingFile> getDSLMappingFiles(PackageItem pkg, DSLErrorEvent err) {
+        List<DSLTokenizedMappingFile> result = new ArrayList<DSLTokenizedMappingFile>();
         AssetItemIterator it = pkg.listAssetsByFormat( new String[]{AssetFormats.DSL} );
         while ( it.hasNext() ) {
             AssetItem item = (AssetItem) it.next();
             String dslData = item.getContent();
-            DSLMappingFile file = new DSLMappingFile();
+            DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
             try {
                 if ( file.parseAndLoad( new StringReader( dslData ) ) ) {
                     result.add( file );

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/BRMSSuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/BRMSSuggestionCompletionLoader.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/BRMSSuggestionCompletionLoader.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -20,6 +20,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.jar.JarInputStream;
 
 import org.drools.guvnor.client.common.AssetFormats;
@@ -27,7 +28,7 @@
 import org.drools.guvnor.server.ServiceImplementation;
 import org.drools.guvnor.server.builder.BRMSPackageBuilder;
 import org.drools.guvnor.server.rules.SuggestionCompletionLoader;
-import org.drools.lang.dsl.DSLMappingFile;
+import org.drools.lang.dsl.DSLTokenizedMappingFile;
 import org.drools.repository.AssetItem;
 import org.drools.repository.AssetItemIterator;
 import org.drools.repository.PackageItem;
@@ -66,7 +67,7 @@
         return list;
     }
 
-    private List<DSLMappingFile> getDSLMappingFiles(PackageItem pkg) {
+    private List<DSLTokenizedMappingFile> getDSLMappingFiles(PackageItem pkg) {
         return BRMSPackageBuilder.getDSLMappingFiles( pkg, new BRMSPackageBuilder.DSLErrorEvent() {
             public void recordError(AssetItem asset, String message) {
                 errors.add( asset.getName() + " : " + message );

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/BRMSPackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/BRMSPackageBuilderTest.java	2008-10-20 12:42:49 UTC (rev 23522)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/BRMSPackageBuilderTest.java	2008-10-20 20:59:17 UTC (rev 23523)
@@ -24,10 +24,8 @@
 
 import junit.framework.TestCase;
 
-import org.drools.compiler.PackageBuilderConfiguration;
-import org.drools.guvnor.server.builder.BRMSPackageBuilder;
 import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.dsl.DSLMappingFile;
+import org.drools.lang.dsl.DSLTokenizedMappingFile;
 import org.drools.rule.Package;
 import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 
@@ -145,8 +143,8 @@
 
     public void testGetExpander() {
         BRMSPackageBuilder builder = new BRMSPackageBuilder(null);
-        List<DSLMappingFile> files = new ArrayList<DSLMappingFile>();
-        files.add( new DSLMappingFile() );
+        List<DSLTokenizedMappingFile> files = new ArrayList<DSLTokenizedMappingFile>();
+        files.add( new DSLTokenizedMappingFile() );
         builder.setDSLFiles( files );
         assertTrue(builder.hasDSL());
         assertNotNull(builder.getDSLExpander());




More information about the jboss-svn-commits mailing list