[jboss-svn-commits] JBL Code SVN: r20284 - in labs/jbossrules/branches/mattgeis/drools-compiler/src: main/java/org/drools/lang/dsl and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 4 02:23:53 EDT 2008


Author: mattgeis
Date: 2008-06-04 02:23:53 -0400 (Wed, 04 Jun 2008)
New Revision: 20284

Added:
   labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/ANTLRDSLTest.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/test/resources/org/drools/lang/dsl/test_antlr.dsl
Modified:
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultExpander.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
Log:


Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -94,7 +94,6 @@
      */
     public PackageDescr parse(final String source,
                               final Reader dsl) throws DroolsParserException {
-    	
     	DefaultExpanderResolver resolver = getDefaultResolver(dsl);
     	
         final Expander expander = resolver.get( "*",
@@ -130,7 +129,6 @@
     	final Expander expander = resolver.get( "*",
                                           null );
         final String expanded = expander.expand( source );
-        
         if ( expander.hasErrors() ) {
             String err = "";
             for ( Iterator iter = expander.getErrors().iterator(); iter.hasNext(); ) {

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -17,10 +17,8 @@
 package org.drools.lang.dsl;
 
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -29,7 +27,9 @@
  * @author mattgeis
  */
 public class AntlrDSLMappingEntry extends AbstractDSLMappingEntry implements DSLMappingEntry {
-
+	private boolean headMatchGroupAdded = false;
+	private boolean tailMatchGroupAdded = false;
+	
 	public AntlrDSLMappingEntry() {
 		this(DSLMappingEntry.ANY, DSLMappingEntry.EMPTY_METADATA, null, null);
 	}
@@ -66,6 +66,7 @@
 				// making it start with a space char or a line start
 				buf.append("(\\W|^)").append(key);
 				redistributeVariables();
+				headMatchGroupAdded = true;
 			}
 
 
@@ -75,6 +76,7 @@
 				buf.append("$");
 			} else {
 				buf.append("(\\W|$)");
+				tailMatchGroupAdded = true;
 			}
 
 			// setting the key pattern and making it space insensitive
@@ -110,16 +112,26 @@
 		}
 	}
 
-	
 	/**
 	 * @param value
 	 *            the value to set
 	 */
 	public void setMappingValue(final String value) {
-		this.valuePattern = value;
-		this.value = value;
+		StringBuffer valuePatternBuffer = new StringBuffer();
+		StringBuffer valueBuffer = new StringBuffer();
+		if(headMatchGroupAdded){
+			valuePatternBuffer.append("$1");
+			valueBuffer.append("$1");
+		}
+		valuePatternBuffer.append(value);
+		valueBuffer.append(value);
+		if(tailMatchGroupAdded){
+			Integer tailMatchGroupIndex = (Integer) Collections.max(variables.values()) + 1;//get max in variables, plus 1
+			valuePatternBuffer.append("$" + tailMatchGroupIndex);
+			valueBuffer.append("$" + tailMatchGroupIndex);
+		}
+		this.valuePattern = valuePatternBuffer.toString();
+		this.value = valueBuffer.toString();
+		
 	}
-
-	
-
 }

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-05-22 16:02:42
+// $ANTLR 3.0.1 DSLMap.g 2008-05-27 14:03:45
 
 	package org.drools.lang.dsl;
 
@@ -54,10 +54,10 @@
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // DSLMap.g:260:9: ( ( ' ' | '\\t' | '\\f' )+ )
-            // DSLMap.g:260:17: ( ' ' | '\\t' | '\\f' )+
+            // DSLMap.g:254:9: ( ( ' ' | '\\t' | '\\f' )+ )
+            // DSLMap.g:254:17: ( ' ' | '\\t' | '\\f' )+
             {
-            // DSLMap.g:260:17: ( ' ' | '\\t' | '\\f' )+
+            // DSLMap.g:254:17: ( ' ' | '\\t' | '\\f' )+
             int cnt1=0;
             loop1:
             do {
@@ -115,10 +115,10 @@
     public final void mEOL() throws RecognitionException {
         try {
             int _type = EOL;
-            // DSLMap.g:267:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // DSLMap.g:268:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // DSLMap.g:261:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // DSLMap.g:262:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // DSLMap.g:268:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // DSLMap.g:262:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -137,13 +137,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("268:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("262:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // DSLMap.g:268:14: ( '\\r\\n' )=> '\\r\\n'
+                    // DSLMap.g:262:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -151,14 +151,14 @@
                     }
                     break;
                 case 2 :
-                    // DSLMap.g:269:25: '\\r'
+                    // DSLMap.g:263:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // DSLMap.g:270:25: '\\n'
+                    // DSLMap.g:264:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -180,8 +180,8 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // DSLMap.g:276: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:276: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' | '#' )
+            // DSLMap.g:270: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:270: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)<='}') ) {
@@ -208,8 +208,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // DSLMap.g:283:9: ( '[' )
-            // DSLMap.g:283:11: '['
+            // DSLMap.g:277:9: ( '[' )
+            // DSLMap.g:277:11: '['
             {
             match('['); if (failed) return ;
 
@@ -226,8 +226,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // DSLMap.g:287:9: ( ']' )
-            // DSLMap.g:287:11: ']'
+            // DSLMap.g:281:9: ( ']' )
+            // DSLMap.g:281:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -244,8 +244,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // DSLMap.g:291:9: ( '{' )
-            // DSLMap.g:291:11: '{'
+            // DSLMap.g:285:9: ( '{' )
+            // DSLMap.g:285:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -262,8 +262,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // DSLMap.g:295:9: ( '}' )
-            // DSLMap.g:295:11: '}'
+            // DSLMap.g:289:9: ( '}' )
+            // DSLMap.g:289:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -280,8 +280,8 @@
     public final void mEQUALS() throws RecognitionException {
         try {
             int _type = EQUALS;
-            // DSLMap.g:298:8: ( '=' )
-            // DSLMap.g:298:10: '='
+            // DSLMap.g:292:8: ( '=' )
+            // DSLMap.g:292:10: '='
             {
             match('='); if (failed) return ;
 
@@ -298,8 +298,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // DSLMap.g:301:5: ( '.' )
-            // DSLMap.g:301:7: '.'
+            // DSLMap.g:295:5: ( '.' )
+            // DSLMap.g:295:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -316,8 +316,8 @@
     public final void mPOUND() throws RecognitionException {
         try {
             int _type = POUND;
-            // DSLMap.g:304:9: ( '#' )
-            // DSLMap.g:304:11: '#'
+            // DSLMap.g:298:9: ( '#' )
+            // DSLMap.g:298:11: '#'
             {
             match('#'); if (failed) return ;
 
@@ -334,8 +334,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // DSLMap.g:307:7: ( ':' )
-            // DSLMap.g:307:9: ':'
+            // DSLMap.g:301:7: ( ':' )
+            // DSLMap.g:301:9: ':'
             {
             match(':'); if (failed) return ;
 
@@ -352,8 +352,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // DSLMap.g:310:7: ( ',' )
-            // DSLMap.g:310:9: ','
+            // DSLMap.g:304:7: ( ',' )
+            // DSLMap.g:304:9: ','
             {
             match(','); if (failed) return ;
 
@@ -370,11 +370,11 @@
     public final void mLINE_COMMENT() throws RecognitionException {
         try {
             int _type = LINE_COMMENT;
-            // DSLMap.g:318:2: ( POUND ( options {greedy=false; } : . )* EOL )
-            // DSLMap.g:318:4: POUND ( options {greedy=false; } : . )* EOL
+            // DSLMap.g:312:2: ( POUND ( options {greedy=false; } : . )* EOL )
+            // DSLMap.g:312:4: POUND ( options {greedy=false; } : . )* EOL
             {
             mPOUND(); if (failed) return ;
-            // DSLMap.g:318:10: ( options {greedy=false; } : . )*
+            // DSLMap.g:312:10: ( options {greedy=false; } : . )*
             loop3:
             do {
                 int alt3=2;
@@ -393,7 +393,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // DSLMap.g:318:37: .
+            	    // DSLMap.g:312:37: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -420,10 +420,10 @@
     public final void mLITERAL() throws RecognitionException {
         try {
             int _type = LITERAL;
-            // DSLMap.g:326:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
-            // DSLMap.g:326:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            // DSLMap.g:320:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
+            // DSLMap.g:320:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
             {
-            // DSLMap.g:326:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            // DSLMap.g:320:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
             int cnt4=0;
             loop4:
             do {
@@ -614,56 +614,56 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // DSLMap.g:326:5: 'a' .. 'z'
+            	    // DSLMap.g:320:5: 'a' .. 'z'
             	    {
             	    matchRange('a','z'); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // DSLMap.g:326:14: 'A' .. 'Z'
+            	    // DSLMap.g:320:14: 'A' .. 'Z'
             	    {
             	    matchRange('A','Z'); if (failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // DSLMap.g:326:23: '_'
+            	    // DSLMap.g:320:23: '_'
             	    {
             	    match('_'); if (failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // DSLMap.g:326:27: '0' .. '9'
+            	    // DSLMap.g:320:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
             	    }
             	    break;
             	case 5 :
-            	    // DSLMap.g:326:36: '\\u00c0' .. '\\u00ff'
+            	    // DSLMap.g:320:36: '\\u00c0' .. '\\u00ff'
             	    {
             	    matchRange('\u00C0','\u00FF'); if (failed) return ;
 
             	    }
             	    break;
             	case 6 :
-            	    // DSLMap.g:326:55: MISC
+            	    // DSLMap.g:320:55: MISC
             	    {
             	    mMISC(); if (failed) return ;
 
             	    }
             	    break;
             	case 7 :
-            	    // DSLMap.g:326:60: EscapeSequence
+            	    // DSLMap.g:320:60: EscapeSequence
             	    {
             	    mEscapeSequence(); if (failed) return ;
 
             	    }
             	    break;
             	case 8 :
-            	    // DSLMap.g:326:75: DOT
+            	    // DSLMap.g:320:75: DOT
             	    {
             	    mDOT(); if (failed) return ;
 
@@ -693,7 +693,7 @@
     // $ANTLR start MISC
     public final void mMISC() throws RecognitionException {
         try {
-            // DSLMap.g:330:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
+            // DSLMap.g:324:7: ( '>' | '<' | '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
             // 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.LA(1)=='|' ) {
@@ -1048,8 +1048,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // DSLMap.g:268:14: ( '\\r\\n' )
-        // DSLMap.g:268:16: '\\r\\n'
+        // DSLMap.g:262:14: ( '\\r\\n' )
+        // DSLMap.g:262:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-05-22 16:02:41
+// $ANTLR 3.0.1 DSLMap.g 2008-05-27 14:03:44
 
 	package org.drools.lang.dsl;
 
@@ -887,22 +887,22 @@
     };
 
     // $ANTLR start key_section
-    // DSLMap.g:118:1: key_section : ( key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) ;
+    // DSLMap.g:118: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 key_sentence18 = null;
+        key_sentence_return ks = null;
 
 
         RewriteRuleSubtreeStream stream_key_sentence=new RewriteRuleSubtreeStream(adaptor,"rule key_sentence");
         try {
-            // DSLMap.g:119:2: ( ( key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
-            // DSLMap.g:119:4: ( key_sentence )+
+            // DSLMap.g:119:2: ( (ks= key_sentence )+ -> ^( VT_ENTRY_KEY ( key_sentence )+ ) )
+            // DSLMap.g:119:4: (ks= key_sentence )+
             {
-            // DSLMap.g:119:4: ( key_sentence )+
+            // DSLMap.g:119:6: (ks= key_sentence )+
             int cnt7=0;
             loop7:
             do {
@@ -916,13 +916,13 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // DSLMap.g:0:0: key_sentence
+            	    // DSLMap.g:0:0: ks= key_sentence
             	    {
-            	    pushFollow(FOLLOW_key_sentence_in_key_section490);
-            	    key_sentence18=key_sentence();
+            	    pushFollow(FOLLOW_key_sentence_in_key_section492);
+            	    ks=key_sentence();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_key_sentence.add(key_sentence18.getTree());
+            	    if ( backtracking==0 ) stream_key_sentence.add(ks.getTree());
 
             	    }
             	    break;
@@ -1006,7 +1006,7 @@
 
         key_chunk_return cb = null;
 
-        variable_definition_return variable_definition19 = null;
+        variable_definition_return variable_definition18 = null;
 
 
         RewriteRuleSubtreeStream stream_key_chunk=new RewriteRuleSubtreeStream(adaptor,"rule key_chunk");
@@ -1037,18 +1037,18 @@
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variable_definition_in_key_sentence521);
-                    variable_definition19=variable_definition();
+                    pushFollow(FOLLOW_variable_definition_in_key_sentence523);
+                    variable_definition18=variable_definition();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_definition19.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_definition18.getTree());
 
                     }
                     break;
                 case 2 :
                     // DSLMap.g:128:4: cb= key_chunk
                     {
-                    pushFollow(FOLLOW_key_chunk_in_key_sentence528);
+                    pushFollow(FOLLOW_key_chunk_in_key_sentence530);
                     cb=key_chunk();
                     _fsp--;
                     if (failed) return retval;
@@ -1110,7 +1110,7 @@
 
         Object root_0 = null;
 
-        literal_return literal20 = null;
+        literal_return literal19 = null;
 
 
 
@@ -1142,11 +1142,11 @@
             	case 1 :
             	    // DSLMap.g:0:0: literal
             	    {
-            	    pushFollow(FOLLOW_literal_in_key_chunk549);
-            	    literal20=literal();
+            	    pushFollow(FOLLOW_literal_in_key_chunk551);
+            	    literal19=literal();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal20.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal19.getTree());
 
             	    }
             	    break;
@@ -1194,7 +1194,7 @@
 
         Object root_0 = null;
 
-        value_sentence_return value_sentence21 = null;
+        value_sentence_return value_sentence20 = null;
 
 
         RewriteRuleSubtreeStream stream_value_sentence=new RewriteRuleSubtreeStream(adaptor,"rule value_sentence");
@@ -1218,11 +1218,11 @@
             	case 1 :
             	    // DSLMap.g:0:0: value_sentence
             	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section564);
-            	    value_sentence21=value_sentence();
+            	    pushFollow(FOLLOW_value_sentence_in_value_section566);
+            	    value_sentence20=value_sentence();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_value_sentence.add(value_sentence21.getTree());
+            	    if ( backtracking==0 ) stream_value_sentence.add(value_sentence20.getTree());
 
             	    }
             	    break;
@@ -1306,7 +1306,7 @@
 
         value_chunk_return vc = null;
 
-        variable_reference_return variable_reference22 = null;
+        variable_reference_return variable_reference21 = null;
 
 
         RewriteRuleSubtreeStream stream_value_chunk=new RewriteRuleSubtreeStream(adaptor,"rule value_chunk");
@@ -1337,18 +1337,18 @@
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence595);
-                    variable_reference22=variable_reference();
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence597);
+                    variable_reference21=variable_reference();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_reference22.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, variable_reference21.getTree());
 
                     }
                     break;
                 case 2 :
                     // DSLMap.g:146:4: vc= value_chunk
                     {
-                    pushFollow(FOLLOW_value_chunk_in_value_sentence602);
+                    pushFollow(FOLLOW_value_chunk_in_value_sentence604);
                     vc=value_chunk();
                     _fsp--;
                     if (failed) return retval;
@@ -1410,13 +1410,13 @@
 
         Object root_0 = null;
 
-        Token EQUALS24=null;
-        Token COMMA25=null;
-        literal_return literal23 = null;
+        Token EQUALS23=null;
+        Token COMMA24=null;
+        literal_return literal22 = null;
 
 
-        Object EQUALS24_tree=null;
-        Object COMMA25_tree=null;
+        Object EQUALS23_tree=null;
+        Object COMMA24_tree=null;
 
         try {
             // DSLMap.g:151:2: ( ( literal | EQUALS | COMMA )+ )
@@ -1473,22 +1473,22 @@
             	case 1 :
             	    // DSLMap.g:151:5: literal
             	    {
-            	    pushFollow(FOLLOW_literal_in_value_chunk624);
-            	    literal23=literal();
+            	    pushFollow(FOLLOW_literal_in_value_chunk626);
+            	    literal22=literal();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal23.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal22.getTree());
 
             	    }
             	    break;
             	case 2 :
             	    // DSLMap.g:151:13: EQUALS
             	    {
-            	    EQUALS24=(Token)input.LT(1);
-            	    match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk626); if (failed) return retval;
+            	    EQUALS23=(Token)input.LT(1);
+            	    match(input,EQUALS,FOLLOW_EQUALS_in_value_chunk628); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    EQUALS24_tree = (Object)adaptor.create(EQUALS24);
-            	    adaptor.addChild(root_0, EQUALS24_tree);
+            	    EQUALS23_tree = (Object)adaptor.create(EQUALS23);
+            	    adaptor.addChild(root_0, EQUALS23_tree);
             	    }
 
             	    }
@@ -1496,11 +1496,11 @@
             	case 3 :
             	    // DSLMap.g:151:20: COMMA
             	    {
-            	    COMMA25=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_value_chunk628); if (failed) return retval;
+            	    COMMA24=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_value_chunk630); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    COMMA25_tree = (Object)adaptor.create(COMMA25);
-            	    adaptor.addChild(root_0, COMMA25_tree);
+            	    COMMA24_tree = (Object)adaptor.create(COMMA24);
+            	    adaptor.addChild(root_0, COMMA24_tree);
             	    }
 
             	    }
@@ -1549,9 +1549,9 @@
 
         Object root_0 = null;
 
-        Token set26=null;
+        Token set25=null;
 
-        Object set26_tree=null;
+        Object set25_tree=null;
 
         try {
             // DSLMap.g:156:2: ( ( LITERAL | COLON | LEFT_SQUARE | RIGHT_SQUARE ) )
@@ -1559,17 +1559,17 @@
             {
             root_0 = (Object)adaptor.nil();
 
-            set26=(Token)input.LT(1);
+            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(set26));
+                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_literal646);    throw mse;
+                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_literal648);    throw mse;
             }
 
 
@@ -1608,14 +1608,14 @@
         Token lc=null;
         Token name=null;
         Token rc=null;
-        Token COLON27=null;
+        Token COLON26=null;
         pattern_return pat = null;
 
 
         Object lc_tree=null;
         Object name_tree=null;
         Object rc_tree=null;
-        Object COLON27_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");
@@ -1631,7 +1631,7 @@
             // DSLMap.g:166: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_definition682); if (failed) return retval;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition684); if (failed) return retval;
             if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
 
             if ( backtracking==0 ) {
@@ -1641,7 +1641,7 @@
               		
             }
             name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition693); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition695); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
             // DSLMap.g:171:15: ( COLON pat= pattern )?
@@ -1655,11 +1655,11 @@
                 case 1 :
                     // DSLMap.g:171:17: COLON pat= pattern
                     {
-                    COLON27=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition697); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON27);
+                    COLON26=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_variable_definition699); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON26);
 
-                    pushFollow(FOLLOW_pattern_in_variable_definition701);
+                    pushFollow(FOLLOW_pattern_in_variable_definition703);
                     pat=pattern();
                     _fsp--;
                     if (failed) return retval;
@@ -1674,13 +1674,12 @@
             }
 
             rc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition710); if (failed) return retval;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition712); if (failed) return retval;
             if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
 
             if ( backtracking==0 ) {
               
               	CommonToken rc1 = (CommonToken)input.LT(1);
-              	//System.out.println("lt1 from rc: " + rc1.getText());
               	if(!"=".equals(rc1.getText()) && ((CommonToken)rc).getStopIndex() < rc1.getStartIndex() - 1) hasSpaceAfter = true;
               	
             }
@@ -1697,10 +1696,10 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 177:2: -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            // 176: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:177:70: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:176: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);
@@ -1712,9 +1711,9 @@
                 }
 
             }
-            else // 178:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            else // 177:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
             if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
-                // DSLMap.g:178:63: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:177: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);
@@ -1726,10 +1725,10 @@
                 }
 
             }
-            else // 179:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name)
+            else // 178:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name)
             if (hasSpaceBefore  && !hasSpaceAfter) {
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:179:51: ^( VT_VAR_DEF $name)
+                // DSLMap.g:178: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);
@@ -1740,9 +1739,9 @@
                 }
 
             }
-            else // 180:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name)
+            else // 179:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name)
             if (!hasSpaceBefore  && !hasSpaceAfter) {
-                // DSLMap.g:180:44: ^( VT_VAR_DEF $name)
+                // DSLMap.g:179: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);
@@ -1753,10 +1752,10 @@
                 }
 
             }
-            else // 182:2: -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
+            else // 181: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:182:69: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:181: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);
@@ -1769,9 +1768,9 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 183:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
+            else // 182:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
             if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
-                // DSLMap.g:183:62: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:182: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);
@@ -1784,10 +1783,10 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 184:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE
+            else // 183: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:184:50: ^( VT_VAR_DEF $name)
+                // DSLMap.g:183: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);
@@ -1799,9 +1798,9 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 185:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE
+            else // 184:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE
             if (!hasSpaceBefore  && hasSpaceAfter) {
-                // DSLMap.g:185:43: ^( VT_VAR_DEF $name)
+                // DSLMap.g:184: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);
@@ -1813,9 +1812,9 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 186:2: -> ^( VT_VAR_DEF $name)
+            else // 185:2: -> ^( VT_VAR_DEF $name)
             {
-                // DSLMap.g:186:5: ^( VT_VAR_DEF $name)
+                // DSLMap.g:185: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);
@@ -1854,7 +1853,7 @@
     };
 
     // $ANTLR start variable_definition2
-    // DSLMap.g:189: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) ;
+    // DSLMap.g:188: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);
@@ -1862,16 +1861,16 @@
         Object root_0 = null;
 
         Token name=null;
-        Token LEFT_CURLY28=null;
-        Token COLON29=null;
-        Token RIGHT_CURLY30=null;
+        Token LEFT_CURLY27=null;
+        Token COLON28=null;
+        Token RIGHT_CURLY29=null;
         pattern_return pat = null;
 
 
         Object name_tree=null;
-        Object LEFT_CURLY28_tree=null;
-        Object COLON29_tree=null;
-        Object RIGHT_CURLY30_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");
@@ -1881,18 +1880,18 @@
                 String text = "";
 
         try {
-            // DSLMap.g:193: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:193:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
+            // DSLMap.g:192: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:192: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_definition2886); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY28);
+            LEFT_CURLY27=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_definition2888); 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_definition2890); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2892); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
-            // DSLMap.g:193:28: ( COLON pat= pattern )?
+            // DSLMap.g:192:28: ( COLON pat= pattern )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -1901,13 +1900,13 @@
             }
             switch (alt14) {
                 case 1 :
-                    // DSLMap.g:193:30: COLON pat= pattern
+                    // DSLMap.g:192:30: COLON pat= pattern
                     {
-                    COLON29=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition2894); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON29);
+                    COLON28=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_variable_definition2896); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON28);
 
-                    pushFollow(FOLLOW_pattern_in_variable_definition2898);
+                    pushFollow(FOLLOW_pattern_in_variable_definition2900);
                     pat=pattern();
                     _fsp--;
                     if (failed) return retval;
@@ -1921,9 +1920,9 @@
 
             }
 
-            RIGHT_CURLY30=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition2905); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY30);
+            RIGHT_CURLY29=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition2907); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY29);
 
 
             // AST REWRITE
@@ -1938,9 +1937,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 194:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            // 193:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
             if (!"".equals(text)) {
-                // DSLMap.g:194:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:193: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);
@@ -1952,9 +1951,9 @@
                 }
 
             }
-            else // 195:2: -> ^( VT_VAR_DEF $name)
+            else // 194:2: -> ^( VT_VAR_DEF $name)
             {
-                // DSLMap.g:195:5: ^( VT_VAR_DEF $name)
+                // DSLMap.g:194: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);
@@ -1993,36 +1992,36 @@
     };
 
     // $ANTLR start pattern
-    // DSLMap.g:199:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
+    // DSLMap.g:198: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;
+        Token LEFT_CURLY31=null;
+        Token RIGHT_CURLY33=null;
+        Token LEFT_SQUARE34=null;
+        Token RIGHT_SQUARE36=null;
+        literal_return literal30 = null;
 
-        literal_return literal33 = null;
+        literal_return literal32 = null;
 
-        pattern_return pattern36 = null;
+        pattern_return pattern35 = null;
 
 
-        Object LEFT_CURLY32_tree=null;
-        Object RIGHT_CURLY34_tree=null;
-        Object LEFT_SQUARE35_tree=null;
-        Object RIGHT_SQUARE37_tree=null;
+        Object LEFT_CURLY31_tree=null;
+        Object RIGHT_CURLY33_tree=null;
+        Object LEFT_SQUARE34_tree=null;
+        Object RIGHT_SQUARE36_tree=null;
 
         try {
-            // DSLMap.g:200:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
-            // DSLMap.g:200:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            // DSLMap.g:199:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
+            // DSLMap.g:199:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
             {
             root_0 = (Object)adaptor.nil();
 
-            // DSLMap.g:200:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            // DSLMap.g:199:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
             int cnt15=0;
             loop15:
             do {
@@ -2069,58 +2068,58 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // DSLMap.g:200:13: literal
+            	    // DSLMap.g:199:13: literal
             	    {
-            	    pushFollow(FOLLOW_literal_in_pattern956);
-            	    literal31=literal();
+            	    pushFollow(FOLLOW_literal_in_pattern958);
+            	    literal30=literal();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal31.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, literal30.getTree());
 
             	    }
             	    break;
             	case 2 :
-            	    // DSLMap.g:201:13: LEFT_CURLY literal RIGHT_CURLY
+            	    // DSLMap.g:200:13: LEFT_CURLY literal RIGHT_CURLY
             	    {
-            	    LEFT_CURLY32=(Token)input.LT(1);
-            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern970); if (failed) return retval;
+            	    LEFT_CURLY31=(Token)input.LT(1);
+            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern972); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    LEFT_CURLY32_tree = (Object)adaptor.create(LEFT_CURLY32);
-            	    adaptor.addChild(root_0, LEFT_CURLY32_tree);
+            	    LEFT_CURLY31_tree = (Object)adaptor.create(LEFT_CURLY31);
+            	    adaptor.addChild(root_0, LEFT_CURLY31_tree);
             	    }
-            	    pushFollow(FOLLOW_literal_in_pattern972);
-            	    literal33=literal();
+            	    pushFollow(FOLLOW_literal_in_pattern974);
+            	    literal32=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_pattern974); 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_pattern976); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    RIGHT_CURLY34_tree = (Object)adaptor.create(RIGHT_CURLY34);
-            	    adaptor.addChild(root_0, RIGHT_CURLY34_tree);
+            	    RIGHT_CURLY33_tree = (Object)adaptor.create(RIGHT_CURLY33);
+            	    adaptor.addChild(root_0, RIGHT_CURLY33_tree);
             	    }
 
             	    }
             	    break;
             	case 3 :
-            	    // DSLMap.g:202:13: LEFT_SQUARE pattern RIGHT_SQUARE
+            	    // DSLMap.g:201:13: LEFT_SQUARE pattern RIGHT_SQUARE
             	    {
-            	    LEFT_SQUARE35=(Token)input.LT(1);
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern988); if (failed) return retval;
+            	    LEFT_SQUARE34=(Token)input.LT(1);
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern990); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    LEFT_SQUARE35_tree = (Object)adaptor.create(LEFT_SQUARE35);
-            	    adaptor.addChild(root_0, LEFT_SQUARE35_tree);
+            	    LEFT_SQUARE34_tree = (Object)adaptor.create(LEFT_SQUARE34);
+            	    adaptor.addChild(root_0, LEFT_SQUARE34_tree);
             	    }
-            	    pushFollow(FOLLOW_pattern_in_pattern990);
-            	    pattern36=pattern();
+            	    pushFollow(FOLLOW_pattern_in_pattern992);
+            	    pattern35=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_pattern992); 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_pattern994); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    RIGHT_SQUARE37_tree = (Object)adaptor.create(RIGHT_SQUARE37);
-            	    adaptor.addChild(root_0, RIGHT_SQUARE37_tree);
+            	    RIGHT_SQUARE36_tree = (Object)adaptor.create(RIGHT_SQUARE36);
+            	    adaptor.addChild(root_0, RIGHT_SQUARE36_tree);
             	    }
 
             	    }
@@ -2162,7 +2161,7 @@
     };
 
     // $ANTLR start variable_reference
-    // DSLMap.g:207: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) ;
+    // DSLMap.g:206: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);
@@ -2185,30 +2184,25 @@
                 boolean hasSpaceAfter = false;
 
         try {
-            // DSLMap.g:212: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:212:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
+            // DSLMap.g:211: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:211:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
             {
             lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1027); if (failed) return retval;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1029); if (failed) return retval;
             if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
 
             if ( backtracking==0 ) {
               //try too figure out how to get " {name} " to realize there's a space infron of the { char
-              		//System.out.println("input is a " + input.getClass().getName());
-              		//System.out.println("input is: " + input.toString());
-              		//System.out.println("input LA[1]: " + input.LA(1));
-              		
-              		//System.out.println("lc start is: " + ((CommonToken)lc).getStartIndex() );
               		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_reference1038); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1040); 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_reference1042); if (failed) return retval;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1044); if (failed) return retval;
             if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
 
             if ( backtracking==0 ) {
@@ -2227,10 +2221,10 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 224:2: -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name) VT_SPACE
+            // 218: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:224:49: ^( VT_VAR_REF $name)
+                // DSLMap.g:218: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);
@@ -2242,10 +2236,10 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 225:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
+            else // 219:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
             if (hasSpaceBefore && !hasSpaceAfter) {
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:225:50: ^( VT_VAR_REF $name)
+                // DSLMap.g:219: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);
@@ -2256,9 +2250,9 @@
                 }
 
             }
-            else // 226:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
+            else // 220:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
             if (!hasSpaceBefore && hasSpaceAfter) {
-                // DSLMap.g:226:42: ^( VT_VAR_REF $name)
+                // DSLMap.g:220: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);
@@ -2270,9 +2264,9 @@
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 227:2: -> ^( VT_VAR_REF $name)
+            else // 221:2: -> ^( VT_VAR_REF $name)
             {
-                // DSLMap.g:227:6: ^( VT_VAR_REF $name)
+                // DSLMap.g:221: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);
@@ -2311,7 +2305,7 @@
     };
 
     // $ANTLR start variable_reference2
-    // DSLMap.g:231:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
+    // DSLMap.g:225: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);
@@ -2319,31 +2313,31 @@
         Object root_0 = null;
 
         Token name=null;
-        Token LEFT_CURLY38=null;
-        Token RIGHT_CURLY39=null;
+        Token LEFT_CURLY37=null;
+        Token RIGHT_CURLY38=null;
 
         Object name_tree=null;
-        Object LEFT_CURLY38_tree=null;
-        Object RIGHT_CURLY39_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:232:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
-            // DSLMap.g:232:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
+            // DSLMap.g:226:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
+            // DSLMap.g:226:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
             {
-            LEFT_CURLY38=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21120); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY38);
+            LEFT_CURLY37=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21122); 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_reference21124); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21126); 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_reference21126); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY39);
+            RIGHT_CURLY38=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21128); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY38);
 
 
             // AST REWRITE
@@ -2358,9 +2352,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 233:2: -> ^( VT_VAR_REF $name)
+            // 227:2: -> ^( VT_VAR_REF $name)
             {
-                // DSLMap.g:233:5: ^( VT_VAR_REF $name)
+                // DSLMap.g:227: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);
@@ -2399,7 +2393,7 @@
     };
 
     // $ANTLR start condition_key
-    // DSLMap.g:237:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
+    // DSLMap.g:231: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);
@@ -2412,15 +2406,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:238:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
-            // DSLMap.g:238:4: {...}?value= LITERAL
+            // DSLMap.g:232:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
+            // DSLMap.g:232: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_key1155); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1157); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2435,7 +2429,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 239:2: -> VT_CONDITION[$value]
+            // 233:2: -> VT_CONDITION[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_CONDITION, value));
 
@@ -2468,7 +2462,7 @@
     };
 
     // $ANTLR start consequence_key
-    // DSLMap.g:242:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
+    // DSLMap.g:236: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);
@@ -2481,15 +2475,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:243:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
-            // DSLMap.g:243:4: {...}?value= LITERAL
+            // DSLMap.g:237:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
+            // DSLMap.g:237: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_key1178); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1180); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2504,7 +2498,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 244:2: -> VT_CONSEQUENCE[$value]
+            // 238:2: -> VT_CONSEQUENCE[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_CONSEQUENCE, value));
 
@@ -2537,7 +2531,7 @@
     };
 
     // $ANTLR start keyword_key
-    // DSLMap.g:247:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
+    // DSLMap.g:241: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);
@@ -2550,15 +2544,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:248:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
-            // DSLMap.g:248:4: {...}?value= LITERAL
+            // DSLMap.g:242:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
+            // DSLMap.g:242: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_key1201); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1203); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2573,7 +2567,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 249:2: -> VT_KEYWORD[$value]
+            // 243:2: -> VT_KEYWORD[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_KEYWORD, value));
 
@@ -2606,7 +2600,7 @@
     };
 
     // $ANTLR start any_key
-    // DSLMap.g:252:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
+    // DSLMap.g:246: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);
@@ -2619,15 +2613,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:253:2: ({...}?value= LITERAL -> VT_ANY[$value] )
-            // DSLMap.g:253:4: {...}?value= LITERAL
+            // DSLMap.g:247:2: ({...}?value= LITERAL -> VT_ANY[$value] )
+            // DSLMap.g:247: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_key1224); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_any_key1226); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2642,7 +2636,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 254:2: -> VT_ANY[$value]
+            // 248:2: -> VT_ANY[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_ANY, value));
 
@@ -2730,7 +2724,7 @@
         // DSLMap.g:133:4: ( literal )
         // DSLMap.g:133:4: literal
         {
-        pushFollow(FOLLOW_literal_in_synpred12549);
+        pushFollow(FOLLOW_literal_in_synpred12551);
         literal();
         _fsp--;
         if (failed) return ;
@@ -2744,7 +2738,7 @@
         // DSLMap.g:151:5: ( literal )
         // DSLMap.g:151:5: literal
         {
-        pushFollow(FOLLOW_literal_in_synpred15624);
+        pushFollow(FOLLOW_literal_in_synpred15626);
         literal();
         _fsp--;
         if (failed) return ;
@@ -2758,7 +2752,7 @@
         // DSLMap.g:151:13: ( EQUALS )
         // DSLMap.g:151:13: EQUALS
         {
-        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16626); if (failed) return ;
+        match(input,EQUALS,FOLLOW_EQUALS_in_synpred16628); if (failed) return ;
 
         }
     }
@@ -2769,7 +2763,7 @@
         // DSLMap.g:151:20: ( COMMA )
         // DSLMap.g:151:20: COMMA
         {
-        match(input,COMMA,FOLLOW_COMMA_in_synpred17628); if (failed) return ;
+        match(input,COMMA,FOLLOW_COMMA_in_synpred17630); if (failed) return ;
 
         }
     }
@@ -2777,10 +2771,10 @@
 
     // $ANTLR start synpred23
     public final void synpred23_fragment() throws RecognitionException {   
-        // DSLMap.g:200:13: ( literal )
-        // DSLMap.g:200:13: literal
+        // DSLMap.g:199:13: ( literal )
+        // DSLMap.g:199:13: literal
         {
-        pushFollow(FOLLOW_literal_in_synpred23956);
+        pushFollow(FOLLOW_literal_in_synpred23958);
         literal();
         _fsp--;
         if (failed) return ;
@@ -2791,15 +2785,15 @@
 
     // $ANTLR start synpred25
     public final void synpred25_fragment() throws RecognitionException {   
-        // DSLMap.g:202:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
-        // DSLMap.g:202:13: LEFT_SQUARE pattern RIGHT_SQUARE
+        // DSLMap.g:201:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
+        // DSLMap.g:201:13: LEFT_SQUARE pattern RIGHT_SQUARE
         {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred25988); if (failed) return ;
-        pushFollow(FOLLOW_pattern_in_synpred25990);
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred25990); if (failed) return ;
+        pushFollow(FOLLOW_pattern_in_synpred25992);
         pattern();
         _fsp--;
         if (failed) return ;
-        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred25992); if (failed) return ;
+        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred25994); if (failed) return ;
 
         }
     }
@@ -2970,55 +2964,55 @@
     public static final BitSet FOLLOW_LEFT_SQUARE_in_meta_section463 = new BitSet(new long[]{0x0000000003000000L});
     public static final BitSet FOLLOW_LITERAL_in_meta_section465 = new BitSet(new long[]{0x0000000001000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_meta_section468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_sentence_in_key_section490 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_variable_definition_in_key_sentence521 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_key_chunk_in_key_sentence528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_key_chunk549 = new BitSet(new long[]{0x000000000B800002L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section564 = new BitSet(new long[]{0x000000001FC00002L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence595 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_value_chunk_in_value_sentence602 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_value_chunk624 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_EQUALS_in_value_chunk626 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_COMMA_in_value_chunk628 = new BitSet(new long[]{0x000000000FC00002L});
-    public static final BitSet FOLLOW_set_in_literal646 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition682 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition693 = new BitSet(new long[]{0x0000000028000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition697 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition701 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition710 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2886 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition2890 = new BitSet(new long[]{0x0000000028000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition2894 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition2898 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition2905 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_pattern956 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern970 = new BitSet(new long[]{0x000000000B800000L});
-    public static final BitSet FOLLOW_literal_in_pattern972 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern974 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern988 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_pattern990 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern992 = new BitSet(new long[]{0x000000001B800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1027 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference1038 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1042 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21120 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference21124 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21126 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_condition_key1155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_consequence_key1178 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_keyword_key1201 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_any_key1224 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_sentence_in_key_section492 = new BitSet(new long[]{0x000000001B800002L});
+    public static final BitSet FOLLOW_variable_definition_in_key_sentence523 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_key_chunk_in_key_sentence530 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_key_chunk551 = new BitSet(new long[]{0x000000000B800002L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section566 = new BitSet(new long[]{0x000000001FC00002L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence597 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_value_chunk_in_value_sentence604 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_value_chunk626 = new BitSet(new long[]{0x000000000FC00002L});
+    public static final BitSet FOLLOW_EQUALS_in_value_chunk628 = new BitSet(new long[]{0x000000000FC00002L});
+    public static final BitSet FOLLOW_COMMA_in_value_chunk630 = new BitSet(new long[]{0x000000000FC00002L});
+    public static final BitSet FOLLOW_set_in_literal648 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition684 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition695 = new BitSet(new long[]{0x0000000028000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition699 = new BitSet(new long[]{0x000000001B800000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition703 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition712 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2888 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition2892 = new BitSet(new long[]{0x0000000028000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition2896 = new BitSet(new long[]{0x000000001B800000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition2900 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition2907 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_pattern958 = new BitSet(new long[]{0x000000001B800002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern972 = new BitSet(new long[]{0x000000000B800000L});
+    public static final BitSet FOLLOW_literal_in_pattern974 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern976 = new BitSet(new long[]{0x000000001B800002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern990 = new BitSet(new long[]{0x000000001B800000L});
+    public static final BitSet FOLLOW_pattern_in_pattern992 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern994 = new BitSet(new long[]{0x000000001B800002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1029 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference1040 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1044 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21122 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference21126 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_condition_key1157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_consequence_key1180 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_keyword_key1203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_any_key1226 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_meta_section_in_synpred4341 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_condition_key_in_synpred6392 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_consequence_key_in_synpred7401 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_keyword_key_in_synpred8409 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred12549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred15624 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUALS_in_synpred16626 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_synpred17628 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred23956 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred25988 = new BitSet(new long[]{0x000000001B800000L});
-    public static final BitSet FOLLOW_pattern_in_synpred25990 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred25992 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred12551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred15626 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUALS_in_synpred16628 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COMMA_in_synpred17630 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred23958 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred25990 = new BitSet(new long[]{0x000000001B800000L});
+    public static final BitSet FOLLOW_pattern_in_synpred25992 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred25994 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMapWalker.g 2008-05-22 16:02:42
+// $ANTLR 3.0.1 DSLMapWalker.g 2008-05-27 14:03:46
 
 	package org.drools.lang.dsl;
 	
@@ -640,13 +640,13 @@
     // DSLMapWalker.g:124:1: value_section : ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
     public final void value_section() throws RecognitionException {
         try {
-            // DSLMapWalker.g:125:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
-            // DSLMapWalker.g:125:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
+            // DSLMapWalker.g:128:2: ( ^( VT_ENTRY_VAL ( value_sentence )+ ) )
+            // DSLMapWalker.g:128:4: ^( VT_ENTRY_VAL ( value_sentence )+ )
             {
-            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section269); 
+            match(input,VT_ENTRY_VAL,FOLLOW_VT_ENTRY_VAL_in_value_section273); 
 
             match(input, Token.DOWN, null); 
-            // DSLMapWalker.g:125:19: ( value_sentence )+
+            // DSLMapWalker.g:128:19: ( value_sentence )+
             int cnt11=0;
             loop11:
             do {
@@ -660,9 +660,9 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // DSLMapWalker.g:125:19: value_sentence
+            	    // DSLMapWalker.g:128:19: value_sentence
             	    {
-            	    pushFollow(FOLLOW_value_sentence_in_value_section271);
+            	    pushFollow(FOLLOW_value_sentence_in_value_section275);
             	    value_sentence();
             	    _fsp--;
 
@@ -687,6 +687,9 @@
 
             }
 
+            
+            	((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
+
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -700,12 +703,12 @@
 
 
     // $ANTLR start value_sentence
-    // DSLMapWalker.g:131:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
+    // DSLMapWalker.g:134:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );
     public final void value_sentence() throws RecognitionException {
         CommonTree vtl=null;
 
         try {
-            // DSLMapWalker.g:132:2: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
+            // DSLMapWalker.g:135:2: ( variable_reference | vtl= VT_LITERAL | VT_SPACE )
             int alt12=3;
             switch ( input.LA(1) ) {
             case VT_VAR_REF:
@@ -725,16 +728,16 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("131:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );", 12, 0, input);
+                    new NoViableAltException("134:1: value_sentence : ( variable_reference | vtl= VT_LITERAL | VT_SPACE );", 12, 0, input);
 
                 throw nvae;
             }
 
             switch (alt12) {
                 case 1 :
-                    // DSLMapWalker.g:132:4: variable_reference
+                    // DSLMapWalker.g:135:4: variable_reference
                     {
-                    pushFollow(FOLLOW_variable_reference_in_value_sentence291);
+                    pushFollow(FOLLOW_variable_reference_in_value_sentence295);
                     variable_reference();
                     _fsp--;
 
@@ -742,10 +745,10 @@
                     }
                     break;
                 case 2 :
-                    // DSLMapWalker.g:133:4: vtl= VT_LITERAL
+                    // DSLMapWalker.g:136:4: vtl= VT_LITERAL
                     {
                     vtl=(CommonTree)input.LT(1);
-                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence298); 
+                    match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_value_sentence302); 
                     
                     		//System.out.println("in value_sentence, literal is " + vtl.getText());
                     		((entry_scope)entry_stack.peek()).valuebuffer.append(vtl.getText());
@@ -754,9 +757,9 @@
                     }
                     break;
                 case 3 :
-                    // DSLMapWalker.g:138:4: VT_SPACE
+                    // DSLMapWalker.g:141:4: VT_SPACE
                     {
-                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence306); 
+                    match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence310); 
                     
                     		((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
                     	
@@ -778,17 +781,19 @@
 
 
     // $ANTLR start literal
-    // DSLMapWalker.g:148:1: literal : theliteral= VT_LITERAL ;
+    // DSLMapWalker.g:151:1: literal : theliteral= VT_LITERAL ;
     public final void literal() throws RecognitionException {
         CommonTree theliteral=null;
 
         try {
-            // DSLMapWalker.g:149:2: (theliteral= VT_LITERAL )
-            // DSLMapWalker.g:149:4: theliteral= VT_LITERAL
+            // DSLMapWalker.g:152:2: (theliteral= VT_LITERAL )
+            // DSLMapWalker.g:152:4: theliteral= VT_LITERAL
             {
             theliteral=(CommonTree)input.LT(1);
-            match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal326); 
-            //System.out.println("theliteral is " + theliteral.getText());
+            match(input,VT_LITERAL,FOLLOW_VT_LITERAL_in_literal330); 
+            
+            	//System.out.println("theliteral is " + theliteral.getText());
+            	
 
             }
 
@@ -805,21 +810,21 @@
 
 
     // $ANTLR start variable_definition
-    // DSLMapWalker.g:153:1: variable_definition : ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? ) ;
+    // DSLMapWalker.g:159: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:155:2: ( ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? ) )
-            // DSLMapWalker.g:155:6: ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? )
+            // DSLMapWalker.g:161:2: ( ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? ) )
+            // DSLMapWalker.g:161:6: ^( VT_VAR_DEF varname= LITERAL (pattern= VT_PATTERN )? )
             {
-            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition345); 
+            match(input,VT_VAR_DEF,FOLLOW_VT_VAR_DEF_in_variable_definition351); 
 
             match(input, Token.DOWN, null); 
             varname=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition349); 
-            // DSLMapWalker.g:155:42: (pattern= VT_PATTERN )?
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition355); 
+            // DSLMapWalker.g:161:42: (pattern= VT_PATTERN )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -828,10 +833,10 @@
             }
             switch (alt13) {
                 case 1 :
-                    // DSLMapWalker.g:155:42: pattern= VT_PATTERN
+                    // DSLMapWalker.g:161:42: pattern= VT_PATTERN
                     {
                     pattern=(CommonTree)input.LT(1);
-                    match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition353); 
+                    match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_variable_definition359); 
 
                     }
                     break;
@@ -862,21 +867,21 @@
 
 
     // $ANTLR start variable_reference
-    // DSLMapWalker.g:165:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
+    // DSLMapWalker.g:171: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:166:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
-            // DSLMapWalker.g:166:4: ^(varref= VT_VAR_REF lit= LITERAL )
+            // DSLMapWalker.g:172:2: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
+            // DSLMapWalker.g:172:4: ^(varref= VT_VAR_REF lit= LITERAL )
             {
             varref=(CommonTree)input.LT(1);
-            match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference375); 
+            match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference381); 
 
             match(input, Token.DOWN, null); 
             lit=(CommonTree)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference379); 
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference385); 
 
             match(input, Token.UP, null); 
             
@@ -899,13 +904,13 @@
 
 
     // $ANTLR start condition_key
-    // DSLMapWalker.g:173:1: condition_key : VT_CONDITION ;
+    // DSLMapWalker.g:179:1: condition_key : VT_CONDITION ;
     public final void condition_key() throws RecognitionException {
         try {
-            // DSLMapWalker.g:174:2: ( VT_CONDITION )
-            // DSLMapWalker.g:174:4: VT_CONDITION
+            // DSLMapWalker.g:180:2: ( VT_CONDITION )
+            // DSLMapWalker.g:180:4: VT_CONDITION
             {
-            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key397); 
+            match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key403); 
             ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
 
             }
@@ -923,13 +928,13 @@
 
 
     // $ANTLR start consequence_key
-    // DSLMapWalker.g:178:1: consequence_key : VT_CONSEQUENCE ;
+    // DSLMapWalker.g:184:1: consequence_key : VT_CONSEQUENCE ;
     public final void consequence_key() throws RecognitionException {
         try {
-            // DSLMapWalker.g:179:2: ( VT_CONSEQUENCE )
-            // DSLMapWalker.g:179:4: VT_CONSEQUENCE
+            // DSLMapWalker.g:185:2: ( VT_CONSEQUENCE )
+            // DSLMapWalker.g:185:4: VT_CONSEQUENCE
             {
-            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key412); 
+            match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key418); 
             ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
 
             }
@@ -947,13 +952,13 @@
 
 
     // $ANTLR start keyword_key
-    // DSLMapWalker.g:183:1: keyword_key : VT_KEYWORD ;
+    // DSLMapWalker.g:189:1: keyword_key : VT_KEYWORD ;
     public final void keyword_key() throws RecognitionException {
         try {
-            // DSLMapWalker.g:184:2: ( VT_KEYWORD )
-            // DSLMapWalker.g:184:4: VT_KEYWORD
+            // DSLMapWalker.g:190:2: ( VT_KEYWORD )
+            // DSLMapWalker.g:190:4: VT_KEYWORD
             {
-            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key427); 
+            match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key433); 
             ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
 
             }
@@ -971,13 +976,13 @@
 
 
     // $ANTLR start any_key
-    // DSLMapWalker.g:188:1: any_key : VT_ANY ;
+    // DSLMapWalker.g:194:1: any_key : VT_ANY ;
     public final void any_key() throws RecognitionException {
         try {
-            // DSLMapWalker.g:189:2: ( VT_ANY )
-            // DSLMapWalker.g:189:4: VT_ANY
+            // DSLMapWalker.g:195:2: ( VT_ANY )
+            // DSLMapWalker.g:195:4: VT_ANY
             {
-            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key442); 
+            match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key448); 
             ((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
 
             }
@@ -1018,20 +1023,20 @@
     public static final BitSet FOLLOW_variable_definition_in_key_sentence234 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_LITERAL_in_key_sentence241 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_SPACE_in_key_sentence250 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section269 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_value_sentence_in_value_section271 = new BitSet(new long[]{0x00000000000B0008L});
-    public static final BitSet FOLLOW_variable_reference_in_value_sentence291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence298 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence306 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_LITERAL_in_literal326 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition345 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition349 = new BitSet(new long[]{0x0000000000040008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition353 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference375 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference379 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key397 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key412 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ANY_in_any_key442 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ENTRY_VAL_in_value_section273 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_value_sentence_in_value_section275 = new BitSet(new long[]{0x00000000000B0008L});
+    public static final BitSet FOLLOW_variable_reference_in_value_sentence295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_value_sentence302 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_SPACE_in_value_sentence310 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_LITERAL_in_literal330 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_VAR_DEF_in_variable_definition351 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition355 = new BitSet(new long[]{0x0000000000040008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_variable_definition359 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_VAR_REF_in_variable_reference381 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference385 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CONDITION_in_condition_key403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_CONSEQUENCE_in_consequence_key418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_KEYWORD_in_keyword_key433 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ANY_in_any_key448 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -56,7 +56,7 @@
 		DSLMapParser parser = new DSLMapParser(tokens);
 		DSLMapParser.statement_return example = parser.statement();
 		CommonTree tree = (CommonTree) example.getTree();
-		System.out.println(tree.toStringTree());
+		//System.out.println(tree.toStringTree());
 		
 		CommonTreeNodeStream nodes = new CommonTreeNodeStream(tree);
 		DSLMapWalker walker = new DSLMapWalker(nodes);

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultExpander.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultExpander.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultExpander.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -228,11 +228,11 @@
                 // expand the expression
                 for ( final Iterator it = this.condition.iterator(); it.hasNext(); ) {
                     final DSLMappingEntry entry = (DSLMappingEntry) it.next();
-                    System.out.println("toExpand, st: " + expanded[lastExpanded] + "|");
-                    System.out.println("kp: " + entry.getKeyPattern());
-                    System.out.println("vp: " + entry.getValuePattern());
-                    System.out.println("matches?: " + entry.getKeyPattern().matcher(expanded[lastExpanded]).matches());
-                    expanded[lastExpanded] = entry.getKeyPattern().matcher( expanded[lastExpanded] ).replaceAll( entry.getValuePattern() );
+                    String vp = entry.getValuePattern();
+//                    System.out.println("toExpand, st: " + expanded[lastExpanded] + "|");
+//                    System.out.println("kp: " + entry.getKeyPattern());
+//                    System.out.println("vp: " + vp);
+                    expanded[lastExpanded] = entry.getKeyPattern().matcher(expanded[lastExpanded]).replaceAll(vp);
                 }
 
                 // do we need to report errors for that?

Added: labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/ANTLRDSLTest.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/ANTLRDSLTest.java	                        (rev 0)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/ANTLRDSLTest.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -0,0 +1,49 @@
+package org.drools.lang.dsl;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+public class ANTLRDSLTest extends TestCase {
+
+	public ANTLRDSLTest(String name) {
+		super(name);
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+	
+	public void testMe() throws Exception{
+		DSLTokenizedMappingFile tokenizedFile = null;
+	    final String filename = "test_antlr.dsl";
+        final Reader reader = new InputStreamReader( this.getClass().getResourceAsStream( filename ) );
+        tokenizedFile = new DSLTokenizedMappingFile();
+        tokenizedFile.parseAndLoad( reader );
+        reader.close();
+        for (Iterator it = tokenizedFile.getMapping().getEntries().iterator(); it.hasNext();) {
+			DSLMappingEntry entry = (DSLMappingEntry) it.next();
+//			System.out.println("ENTRY: " + entry.getKeyPattern() + "   :::::   " + entry.getValuePattern());
+		}
+        
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( tokenizedFile.getMapping() );
+        
+        System.err.println(ex.expand( "rule 'x' \n when \n address is present where name is \"foo\" and age is \"32\" \n then \n end" ));
+	}
+	
+	public void testSimple() throws Exception{
+		String input = "u : User() and exists (a: Address( where name is \"foo\" and age is \"32\" ) from u.addresses)";
+		String pattern = "(\\W|^)where\\s+([\\S]+)\\s+is \"(.*?)\"(\\W|$)";
+		java.util.regex.Pattern p = java.util.regex.Pattern.compile(pattern);
+		java.util.regex.Matcher m = p.matcher(input);
+		System.out.println("SIMPLE MATCHER matches: " + m.matches());
+	}
+
+}


Property changes on: labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/ANTLRDSLTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -65,7 +65,7 @@
             assertEquals( "(\\W|^)ATTRIBUTE \"(.*?)\" IS IN [(.*?)](\\W|$)",
                           entry.getKeyPattern().toString() );
             //Attribute( {attr} in ({list}) )
-            assertEquals( "Attribute( $2 in ($3) )",
+            assertEquals( "Attribute( $2 in ($3) ) ",
                           entry.getValuePattern() );
 
         } catch ( final IOException e ) {
@@ -100,7 +100,7 @@
             assertEquals( "(\\W|^)ATTRIBUTE \"(.*?)\" IS IN \\[(.*?)\\](\\W|$)",
                           entry.getKeyPattern().toString() );
             //Attribute( {attr} in ({list}) )
-            assertEquals( "Attribute( $2 in ($3) )",
+            assertEquals( "Attribute( $2 in ($3) ) ",
                           entry.getValuePattern() );
 
         } catch ( final IOException e ) {
@@ -133,7 +133,7 @@
                     
             final String ruleAfterExpansion = de.expand(rule);
             
-            final String expected = "rule \"x\"\nwhen\nAAAA( cd1 == 1041, cd2 != ( 1034 + 1035 ))\nthen\nSystem.out.println(\"DO_SOMETHING\");\nend\n";
+            final String expected = "rule \"x\"\nwhen\nAAAA( cd1 == 1041, cd2 != ( 1034 + 1035 )) \nthen\nSystem.out.println(\"DO_SOMETHING\"); \nend\n";
             
             assertEquals( expected, ruleAfterExpansion );
             
@@ -168,7 +168,7 @@
                           entry.getMetaData() );
             assertEquals( "(\\W|^)something:\\=(.*?)$",
                           entry.getKeyPattern().toString() );
-            assertEquals( "Attribute( something == \"$2\" )",
+            assertEquals( "Attribute( something == \"$2\" ) ",
                           entry.getMappingValue() );
 
         } catch ( final IOException e ) {

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2008-06-04 03:54:14 UTC (rev 20283)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2008-06-04 06:23:53 UTC (rev 20284)
@@ -12,15 +12,21 @@
 
 public class DefaultExpanderTest extends TestCase {
     private DSLMappingFile  file     = null;
+    private DSLTokenizedMappingFile tokenizedFile = null;
     private DefaultExpander expander = null;
 
     protected void setUp() throws Exception {
         final String filename = "test_metainfo.dsl";
         final Reader reader = new InputStreamReader( this.getClass().getResourceAsStream( filename ) );
         this.file = new DSLMappingFile();
+        this.tokenizedFile = new DSLTokenizedMappingFile();
         this.file.parseAndLoad( reader );
         reader.close();
-
+        
+        final Reader reader2 = new InputStreamReader( this.getClass().getResourceAsStream( filename ) );
+        this.tokenizedFile.parseAndLoad(reader2);
+        reader2.close();
+        
         this.expander = new DefaultExpander();
 
         super.setUp();
@@ -34,12 +40,23 @@
         this.expander.addDSLMapping( this.file.getMapping() );
         // should not raise any exception
     }
+    
+    public void testANTLRAddDSLMapping() {
+        this.expander.addDSLMapping( this.tokenizedFile.getMapping() );
+        // should not raise any exception
+    }
 
     public void testRegexp() throws Exception {
         this.expander.addDSLMapping( this.file.getMapping() );
         final Reader rules = new InputStreamReader( this.getClass().getResourceAsStream( "test_expansion.dslr" ) );
         final String result = this.expander.expand( rules );
     }
+    
+    public void testANTLRRegexp() throws Exception {
+        this.expander.addDSLMapping( this.tokenizedFile.getMapping() );
+        final Reader rules = new InputStreamReader( this.getClass().getResourceAsStream( "test_expansion.dslr" ) );
+        final String result = this.expander.expand( rules );
+    }
 
     
     public void testExpandParts() throws Exception {
@@ -54,6 +71,18 @@
         System.err.println(ex.expand( "rule 'x' \n when \n foo \n then \n end" ));
     }
     
+    public void testANTLRExpandParts() throws Exception {
+        DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+        String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
+        file.parseAndLoad( new StringReader( dsl ) );
+        assertEquals( 0,
+                      file.getErrors().size() );
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        
+        System.err.println(ex.expand( "rule 'x' \n when \n foo \n then \n end" ));
+    }
+    
     public void testExpandFailure() throws Exception {
 
         DSLMappingFile file = new DSLMappingFile();
@@ -79,7 +108,33 @@
                       ex.getErrors().size() );
         //System.err.println(( (ExpanderException) ex.getErrors().get( 0 )).getMessage());
     }
+    
+    public void testANTLRExpandFailure() throws Exception {
 
+        DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+        String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
+        file.parseAndLoad( new StringReader( dsl ) );
+        assertEquals( 0,
+                      file.getErrors().size() );
+
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        String source = "rule 'q'\nagenda-group 'x'\nwhen\n    foo  \nthen\n    bar 42\nend";
+        String drl = ex.expand( source );
+        assertFalse( ex.hasErrors() );
+
+        ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+
+        source = "rule 'q' agenda-group 'x'\nwhen\n    foos \nthen\n    bar 42\n end";
+        drl = ex.expand( source );
+        //System.out.println( drl );
+        assertTrue( ex.hasErrors() );
+        assertEquals( 1,
+                      ex.getErrors().size() );
+        //System.err.println(( (ExpanderException) ex.getErrors().get( 0 )).getMessage());
+    }
+
     public void testExpandWithKeywordClashes() throws Exception {
 
         DSLMappingFile file = new DSLMappingFile();
@@ -99,8 +154,28 @@
         assertEquals( expected, drl );
 
     }
+    
+    public void testANTLRExpandWithKeywordClashes() throws Exception {
 
+        DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+        String dsl = "[when]Invoke rule executor=ruleExec: RuleExecutor()\n" + "[then]Execute rule \"{id}\"=ruleExec.ExecuteSubRule( new Long({id}));";
+        file.parseAndLoad( new StringReader( dsl ) );
+        assertEquals( 0,
+                      file.getErrors().size() );
 
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        String source = "package something;\n\nrule \"1\"\nwhen\n    Invoke rule executor\nthen\n    Execute rule \"5\"\nend";
+        String expected = "package something;\n\nrule \"1\"\nwhen\n   ruleExec: RuleExecutor() \nthen\n   ruleExec.ExecuteSubRule( new Long(5)); \nend\n";
+        String drl = ex.expand( source );
+//        System.out.println("["+drl+"]" );
+//        System.out.println("["+expected+"]" );
+        assertFalse( ex.hasErrors() );
+        assertEquals( expected, drl );
+
+    }
+
+
     public void testLineNumberError() throws Exception {
         DSLMappingFile file = new DSLMappingFile();
         String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
@@ -122,6 +197,27 @@
 
     }
     
+    public void testANTLRLineNumberError() throws Exception {
+        DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+        String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
+        file.parseAndLoad( new StringReader( dsl ) );
+
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        String source = "rule 'q'\nagenda-group 'x'\nwhen\n    __  \nthen\n    bar 42\n\tgoober\nend";
+        ex.expand( source );
+        assertTrue( ex.hasErrors() );
+        assertEquals( 2,
+                      ex.getErrors().size() );
+        ExpanderException err = (ExpanderException) ex.getErrors().get( 0 );
+        assertEquals( 4,
+                      err.getLine() );
+        err = (ExpanderException) ex.getErrors().get( 1 );
+        assertEquals( 7,
+                      err.getLine() );
+
+    }
+    
     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 );

Added: labs/jbossrules/branches/mattgeis/drools-compiler/src/test/resources/org/drools/lang/dsl/test_antlr.dsl
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/test/resources/org/drools/lang/dsl/test_antlr.dsl	                        (rev 0)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/test/resources/org/drools/lang/dsl/test_antlr.dsl	2008-06-04 06:23:53 UTC (rev 20284)
@@ -0,0 +1,37 @@
+#This is a sample DSL for a ficticous E-Commerce website that is building a recommendation engine
+
+
+[condition][]address is present where {constraints}=u : User() and exists (a: Address( where {constraints}) from u.addresses)
+[condition][]where {attr:[A-Za-z0-9]+} is "{value}"= {attr} == "{value}" 
+[condition][]and {attr:[A-Za-z0-9]+} is "{value}"= , {attr} == "{value}"
+#[keyword][*]regra {atributos} faça {rhs} se {lhs} fim=rule {atributos} \\n when\\n    {lhs}\\n then\\n    {rhs}\\n end
+#[keyword][*]consulta=query
+#[keyword][]fim=end
+#[when][woolfel.ecommerce.model.Customer]the Customer=cust : Customer()
+#[when][woolfel.ecommerce.model.Customer]- has an email=emailAddress != null
+#[when][woolfel.ecommerce.model.Customer]- first name is "{first}"=first == "{first}"
+#[when][woolfel.ecommerce.model.Customer]- last name is "{surname}"=sname: surname == "{surname}"
+#[when][woolfel.ecommerce.model.CustomerProfile]a User profile=userprof : CustomerProfile(prfid : profileId)
+#[when][woolfel.ecommerce.model.Response]the Response=resp : Response()
+#[when][woolfel.ecommerce.model.Response]- is empty=userId == usrid, recommendation == null
+#[when][woolfel.ecommerce.model.Response]- is not empty=userId == usrid, recommendation != null
+#[when][woolfel.ecommerce.model.Response]- matches the user=userId == userid
+#[when][woolfel.ecommerce.model.Aggregate]an aggregate=aggr : Aggregate()
+#[when][woolfel.ecommerce.model.Recommendation]the recommendation where=recm : Recommendation()
+#[when][woolfel.ecommerce.model.Recommendation]- the profile is found=profileId == prfid
+#[when][woolfel.ecommerce.model.Product]the Product=prod : Product()
+#[when][woolfel.ecommerce.model.Product]- store is "{store}"=storeCategory == "{store}"
+#[when][woolfel.ecommerce.model.Product]- shop category is "{shopcat}"=shopCategory == "{shopcat}"
+#[when][woolfel.ecommerce.model.Product]- category is "{prodcat}"=productCategory == "{prodcat}"
+#[when][woolfel.ecommerce.model.Product]- subcategory is "{subcat}"=subProductCategory == "{subcat}"
+#[when][woolfel.ecommerce.model.Product]- manufacturer is "{manufac}"=manufacturer == "{manufac}"
+#[when][woolfel.ecommerce.model.Product]- SKU is equal to "{sku}"=SKU == "{sku}"
+#[when][woolfel.ecommerce.model.Order]the Order where=ordr : Order()
+#[when][woolfel.ecommerce.model.Order]- shipping method is "{shipmethod}"=shippingMethod == "{shipmethod}"
+#[when][woolfel.ecommerce.model.Order]- has more than {items}=cartItems > {items}
+#[when][woolfel.ecommerce.model.Order]- has coupons=coupons != null
+#[then][woolfel.ecommerce.model.Recommendation]return the recommendation=resp.setRecommendation(recm);
+#[then][]Log "{msg}"=System.out.println("{msg}");
+#[when][]but not=not
+#[when][woolfel.ecommerce.model.Customer]- last name is not "{surname}"=surname != "{surname}"
+#[then][*]Show last name=System.out.println(cust.getSurname());




More information about the jboss-svn-commits mailing list