[jboss-svn-commits] JBL Code SVN: r20087 - in labs/jbossrules/branches/mattgeis/drools-compiler/src: test/java/org/drools/lang/dsl and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue May 20 21:05:57 EDT 2008


Author: mattgeis
Date: 2008-05-20 21:05:57 -0400 (Tue, 20 May 2008)
New Revision: 20087

Added:
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java
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/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/DefaultDSLMappingEntry.java
   labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java
Log:
mid-development checkin, just so code is not lost

Added: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java	                        (rev 0)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AbstractDSLMappingEntry.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -0,0 +1,169 @@
+package org.drools.lang.dsl;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.drools.lang.dsl.DSLMappingEntry.MetaData;
+import org.drools.lang.dsl.DSLMappingEntry.Section;
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+public abstract class AbstractDSLMappingEntry {
+
+	protected Section section;
+	protected MetaData metadata;
+	protected String key;
+	protected String value;
+	protected Map variables = Collections.EMPTY_MAP;
+	protected Pattern keyPattern;
+	protected String valuePattern;
+
+	public AbstractDSLMappingEntry() {
+		super();
+	}
+
+	/**
+	 * @inheritDoc
+	 */
+	public Section getSection() {
+	    return this.section;
+	}
+
+	/**
+	 * @inheritDoc
+	 */
+	public DSLMappingEntry.MetaData getMetaData() {
+	    return this.metadata;
+	}
+
+	/**
+	 * @inheritDoc
+	 */
+	public String getMappingKey() {
+	    return this.key;
+	}
+
+	/**
+	 * @inheritDoc
+	 */
+	public String getMappingValue() {
+	    return this.value;
+	}
+
+	/**
+	 * @param section the section to set
+	 */
+	public void setSection(final Section section) {
+	    this.section = section;
+	}
+
+	/**
+	 * @param metadata the metadata to set
+	 */
+	public void setMetaData(final MetaData metadata) {
+	    this.metadata = metadata;
+	}
+
+	/**
+	 * @return the keyPattern
+	 */
+	public Pattern getKeyPattern() {
+	    return this.keyPattern;
+	}
+
+	/**
+	 * @return the valuePattern
+	 */
+	public String getValuePattern() {
+	    return this.valuePattern;
+	}
+
+	/**
+	 * @return the variables
+	 */
+	public Map getVariables() {
+	    return this.variables;
+	}
+
+	public String toPatternString() {
+	    return this.section + "[" + this.metadata + "]" + this.keyPattern.pattern() + "=" + this.valuePattern;
+	}
+
+	public String toString() {
+	    return this.section + "[" + this.metadata + "]" + this.key + "=" + this.value;
+	}
+
+	public int hashCode() {
+	    final int PRIME = 31;
+	    int result = 1;
+	    result = PRIME * result + ((this.key == null) ? 0 : this.key.hashCode());
+	    result = PRIME * result + ((this.metadata == null) ? 0 : this.metadata.hashCode());
+	    result = PRIME * result + ((this.section == null) ? 0 : this.section.hashCode());
+	    result = PRIME * result + ((this.value == null) ? 0 : this.value.hashCode());
+	    return result;
+	}
+
+	public boolean equals(final Object obj) {
+	    if ( this == obj ) {
+	        return true;
+	    }
+	    if ( obj == null ) {
+	        return false;
+	    }
+	    if ( getClass() != obj.getClass() ) {
+	        return false;
+	    }
+	    final AbstractDSLMappingEntry other = (AbstractDSLMappingEntry) obj;
+	    if ( this.key == null ) {
+	        if ( other.key != null ) {
+	            return false;
+	        }
+	    } else if ( !this.key.equals( other.key ) ) {
+	        return false;
+	    }
+	    if ( this.metadata == null ) {
+	        if ( other.metadata != null ) {
+	            return false;
+	        }
+	    } else if ( !this.metadata.equals( other.metadata ) ) {
+	        return false;
+	    }
+	    if ( this.section == null ) {
+	        if ( other.section != null ) {
+	            return false;
+	        }
+	    } else if ( !this.section.equals( other.section ) ) {
+	        return false;
+	    }
+	    if ( this.value == null ) {
+	        if ( other.value != null ) {
+	            return false;
+	        }
+	    } else if ( !this.value.equals( other.value ) ) {
+	        return false;
+	    }
+	    return true;
+	}
+
+	public List getErrors() {
+	    // TODO Need to implement validation here
+	    return Collections.EMPTY_LIST;
+	}
+
+}
\ No newline at end of file


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

Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/AntlrDSLMappingEntry.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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;
+
+/**
+ * An ANTLR-driven implementation for the DSL Mapping Entry interface
+ * 
+ * @author mattgeis
+ */
+public class AntlrDSLMappingEntry extends AbstractDSLMappingEntry implements DSLMappingEntry {
+
+	public AntlrDSLMappingEntry() {
+		this(DSLMappingEntry.ANY, DSLMappingEntry.EMPTY_METADATA, null, null);
+	}
+
+	public AntlrDSLMappingEntry(final Section section, final MetaData metadata,
+			final String key, final String value) {
+		this.section = section;
+		this.metadata = metadata;
+		this.setMappingKey(key);
+		this.setMappingValue(value);
+	}
+
+	
+	/**
+	 * @param key
+	 *            the key to set
+	 */
+	public void setMappingKey(String key) {
+		//the "key" in this case is already mostly formed into 
+		//a pattern by ANTLR, and just requires a bit of post-processing.
+		if (key != null) {
+			key = key.trim();
+		}
+		this.key = key;
+
+		if (key != null) {
+			int substr = 0;
+			// escape '$' to avoid errors
+			//final String escapedKey = key.replaceAll("\\$", "\\\\\\$");
+			// retrieving variables list and creating key pattern
+			final StringBuffer buf = new StringBuffer();
+
+			if (!key.startsWith("^")) {
+				// making it start with a space char or a line start
+				buf.append("(\\W|^)").append(key);
+			}
+
+
+			// if pattern ends with a pure variable whose pattern could create
+			// a greedy match, append a line end to avoid multiple line matching
+			if (buf.toString().endsWith("(.*?)")) {
+				buf.append("$");
+			} else {
+				buf.append("(\\W|$)");
+			}
+
+			// setting the key pattern and making it space insensitive
+			String pat = buf.toString();
+			//first, look to see if it's 
+			if (pat.substring(substr).trim().startsWith("-")
+					&& (!pat.substring(substr).trim().startsWith("-\\s*"))) {
+				pat = pat.substring(0, pat.indexOf('-') + 1) + "\\s*"
+						+ pat.substring(pat.indexOf('-') + 1).trim();
+			}
+			//may not need to do this at all
+			//pat = pat.replaceAll("\\s+", "\\\\s+");
+			this.keyPattern = Pattern.compile(pat, Pattern.DOTALL
+					| Pattern.MULTILINE);
+
+		} else {
+			this.keyPattern = null;
+		}
+		// update value mapping
+		this.setMappingValue(this.value);
+	}
+
+	
+	/**
+	 * @param value
+	 *            the value to set
+	 */
+	public void setMappingValue(final String value) {
+		this.valuePattern = value;
+		this.value = value;
+		if (value != null) {
+//			this.valuePattern = this.valuePattern.replaceAll("\\\\n", "\n")
+//					.replaceAll("\\$", "\\\\\\$");
+			for (final Iterator it = this.variables.entrySet().iterator(); it
+					.hasNext();) {
+				final Map.Entry entry = (Map.Entry) it.next();
+				final String var = (String) entry.getKey();
+				final int pos = ((Integer) entry.getValue()).intValue();
+
+				this.valuePattern = this.valuePattern.replaceAll("\\{" + var
+						+ "\\}", "\\$" + pos);
+			}
+		}
+	}
+
+	
+
+}


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

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-05-20 20:45:04 UTC (rev 20086)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-05-19 16:06:17
+// $ANTLR 3.0.1 DSLMap.g 2008-05-20 17:54:40
 
 	package org.drools.lang.dsl;
 
@@ -53,10 +53,10 @@
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // DSLMap.g:231:9: ( ( ' ' | '\\t' | '\\f' )+ )
-            // DSLMap.g:231:17: ( ' ' | '\\t' | '\\f' )+
+            // DSLMap.g:243:9: ( ( ' ' | '\\t' | '\\f' )+ )
+            // DSLMap.g:243:17: ( ' ' | '\\t' | '\\f' )+
             {
-            // DSLMap.g:231:17: ( ' ' | '\\t' | '\\f' )+
+            // DSLMap.g:243:17: ( ' ' | '\\t' | '\\f' )+
             int cnt1=0;
             loop1:
             do {
@@ -114,10 +114,10 @@
     public final void mEOL() throws RecognitionException {
         try {
             int _type = EOL;
-            // DSLMap.g:238:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // DSLMap.g:239:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // DSLMap.g:250:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // DSLMap.g:251:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // DSLMap.g:239:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // DSLMap.g:251:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -136,13 +136,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("239:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("251:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // DSLMap.g:239:14: ( '\\r\\n' )=> '\\r\\n'
+                    // DSLMap.g:251:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -150,14 +150,14 @@
                     }
                     break;
                 case 2 :
-                    // DSLMap.g:240:25: '\\r'
+                    // DSLMap.g:252:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // DSLMap.g:241:25: '\\n'
+                    // DSLMap.g:253:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -179,8 +179,8 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // DSLMap.g:247: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:247: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:259: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:259: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)<='}') ) {
@@ -207,8 +207,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // DSLMap.g:254:9: ( '[' )
-            // DSLMap.g:254:11: '['
+            // DSLMap.g:266:9: ( '[' )
+            // DSLMap.g:266:11: '['
             {
             match('['); if (failed) return ;
 
@@ -225,8 +225,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // DSLMap.g:258:9: ( ']' )
-            // DSLMap.g:258:11: ']'
+            // DSLMap.g:270:9: ( ']' )
+            // DSLMap.g:270:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -243,8 +243,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // DSLMap.g:262:9: ( '{' )
-            // DSLMap.g:262:11: '{'
+            // DSLMap.g:274:9: ( '{' )
+            // DSLMap.g:274:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -261,8 +261,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // DSLMap.g:266:9: ( '}' )
-            // DSLMap.g:266:11: '}'
+            // DSLMap.g:278:9: ( '}' )
+            // DSLMap.g:278:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -279,8 +279,8 @@
     public final void mEQUALS() throws RecognitionException {
         try {
             int _type = EQUALS;
-            // DSLMap.g:269:8: ( '=' )
-            // DSLMap.g:269:10: '='
+            // DSLMap.g:281:8: ( '=' )
+            // DSLMap.g:281:10: '='
             {
             match('='); if (failed) return ;
 
@@ -297,8 +297,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // DSLMap.g:272:5: ( '.' )
-            // DSLMap.g:272:7: '.'
+            // DSLMap.g:284:5: ( '.' )
+            // DSLMap.g:284:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -315,8 +315,8 @@
     public final void mPOUND() throws RecognitionException {
         try {
             int _type = POUND;
-            // DSLMap.g:275:9: ( '#' )
-            // DSLMap.g:275:11: '#'
+            // DSLMap.g:287:9: ( '#' )
+            // DSLMap.g:287:11: '#'
             {
             match('#'); if (failed) return ;
 
@@ -333,8 +333,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // DSLMap.g:278:7: ( ':' )
-            // DSLMap.g:278:9: ':'
+            // DSLMap.g:290:7: ( ':' )
+            // DSLMap.g:290:9: ':'
             {
             match(':'); if (failed) return ;
 
@@ -351,11 +351,11 @@
     public final void mLINE_COMMENT() throws RecognitionException {
         try {
             int _type = LINE_COMMENT;
-            // DSLMap.g:286:2: ( POUND ( options {greedy=false; } : . )* EOL )
-            // DSLMap.g:286:4: POUND ( options {greedy=false; } : . )* EOL
+            // DSLMap.g:298:2: ( POUND ( options {greedy=false; } : . )* EOL )
+            // DSLMap.g:298:4: POUND ( options {greedy=false; } : . )* EOL
             {
             mPOUND(); if (failed) return ;
-            // DSLMap.g:286:10: ( options {greedy=false; } : . )*
+            // DSLMap.g:298:10: ( options {greedy=false; } : . )*
             loop3:
             do {
                 int alt3=2;
@@ -374,7 +374,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // DSLMap.g:286:37: .
+            	    // DSLMap.g:298:37: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -401,10 +401,10 @@
     public final void mLITERAL() throws RecognitionException {
         try {
             int _type = LITERAL;
-            // DSLMap.g:294:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
-            // DSLMap.g:294:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            // DSLMap.g:306:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+ )
+            // DSLMap.g:306:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
             {
-            // DSLMap.g:294:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
+            // DSLMap.g:306:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' | MISC | EscapeSequence | DOT )+
             int cnt4=0;
             loop4:
             do {
@@ -593,56 +593,56 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // DSLMap.g:294:5: 'a' .. 'z'
+            	    // DSLMap.g:306:5: 'a' .. 'z'
             	    {
             	    matchRange('a','z'); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // DSLMap.g:294:14: 'A' .. 'Z'
+            	    // DSLMap.g:306:14: 'A' .. 'Z'
             	    {
             	    matchRange('A','Z'); if (failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // DSLMap.g:294:23: '_'
+            	    // DSLMap.g:306:23: '_'
             	    {
             	    match('_'); if (failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // DSLMap.g:294:27: '0' .. '9'
+            	    // DSLMap.g:306:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
             	    }
             	    break;
             	case 5 :
-            	    // DSLMap.g:294:36: '\\u00c0' .. '\\u00ff'
+            	    // DSLMap.g:306:36: '\\u00c0' .. '\\u00ff'
             	    {
             	    matchRange('\u00C0','\u00FF'); if (failed) return ;
 
             	    }
             	    break;
             	case 6 :
-            	    // DSLMap.g:294:55: MISC
+            	    // DSLMap.g:306:55: MISC
             	    {
             	    mMISC(); if (failed) return ;
 
             	    }
             	    break;
             	case 7 :
-            	    // DSLMap.g:294:60: EscapeSequence
+            	    // DSLMap.g:306:60: EscapeSequence
             	    {
             	    mEscapeSequence(); if (failed) return ;
 
             	    }
             	    break;
             	case 8 :
-            	    // DSLMap.g:294:75: DOT
+            	    // DSLMap.g:306:75: DOT
             	    {
             	    mDOT(); if (failed) return ;
 
@@ -672,7 +672,7 @@
     // $ANTLR start MISC
     public final void mMISC() throws RecognitionException {
         try {
-            // DSLMap.g:298:7: ( '!' | '@' | '$' | '%' | '^' | '*' | '-' | '+' | '?' | '/' | '\\'' | '\"' | '|' | '&' | '(' | ')' | ';' )
+            // DSLMap.g:310: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)=='|' ) {
@@ -1013,8 +1013,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // DSLMap.g:239:14: ( '\\r\\n' )
-        // DSLMap.g:239:16: '\\r\\n'
+        // DSLMap.g:251:14: ( '\\r\\n' )
+        // DSLMap.g:251: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-05-20 20:45:04 UTC (rev 20086)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMap.g 2008-05-19 16:06:17
+// $ANTLR 3.0.1 DSLMap.g 2008-05-20 17:54:39
 
 	package org.drools.lang.dsl;
 
@@ -1524,7 +1524,7 @@
     };
 
     // $ANTLR start variable_definition
-    // DSLMap.g:160:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {hasSpace && !\"\".equals(text)}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpace && !\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpace}? VT_SPACE ^( VT_VAR_DEF $name) -> ^( VT_VAR_DEF $name) ;
+    // DSLMap.g:160:1: variable_definition : lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE -> ^( VT_VAR_DEF $name) ;
     public final variable_definition_return variable_definition() throws RecognitionException {
         variable_definition_return retval = new variable_definition_return();
         retval.start = input.LT(1);
@@ -1533,15 +1533,15 @@
 
         Token lc=null;
         Token name=null;
+        Token rc=null;
         Token COLON26=null;
-        Token RIGHT_CURLY27=null;
         pattern_return pat = null;
 
 
         Object lc_tree=null;
         Object name_tree=null;
+        Object rc_tree=null;
         Object COLON26_tree=null;
-        Object RIGHT_CURLY27_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");
@@ -1549,24 +1549,25 @@
         RewriteRuleSubtreeStream stream_pattern=new RewriteRuleSubtreeStream(adaptor,"rule pattern");
         
                 String text = "";
-                boolean hasSpace = false;
+                boolean hasSpaceBefore = false;
+                boolean hasSpaceAfter = false;
 
         try {
-            // DSLMap.g:165:2: (lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY -> {hasSpace && !\"\".equals(text)}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpace && !\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpace}? VT_SPACE ^( VT_VAR_DEF $name) -> ^( VT_VAR_DEF $name) )
-            // DSLMap.g:165:4: lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
+            // DSLMap.g:166:2: (lc= LEFT_CURLY name= LITERAL ( COLON pat= pattern )? rc= RIGHT_CURLY -> {hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name) -> {hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE -> {hasSpaceBefore && hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name) VT_SPACE -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE -> ^( VT_VAR_DEF $name) )
+            // DSLMap.g: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_definition678); if (failed) return retval;
             if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
 
             if ( backtracking==0 ) {
-               if( ((CommonToken)input.LT(-2)).getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpace = true; 
+               if( ((CommonToken)input.LT(-2)).getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
             }
             name=(Token)input.LT(1);
             match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition686); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
-            // DSLMap.g:166:15: ( COLON pat= pattern )?
+            // DSLMap.g:167:15: ( COLON pat= pattern )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -1575,7 +1576,7 @@
             }
             switch (alt12) {
                 case 1 :
-                    // DSLMap.g:166:17: COLON pat= pattern
+                    // DSLMap.g:167:17: COLON pat= pattern
                     {
                     COLON26=(Token)input.LT(1);
                     match(input,COLON,FOLLOW_COLON_in_variable_definition690); if (failed) return retval;
@@ -1595,13 +1596,16 @@
 
             }
 
-            RIGHT_CURLY27=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition701); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY27);
+            rc=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition703); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
 
+            if ( backtracking==0 ) {
+              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
+            }
 
             // AST REWRITE
-            // elements: name, name, name, name
+            // elements: name, name, name, name, name, name, name, name, name
             // token labels: name
             // rule labels: retval
             // token list labels: 
@@ -1612,10 +1616,10 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 167:2: -> {hasSpace && !\"\".equals(text)}? VT_SPACE ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (hasSpace && !"".equals(text)) {
+            // 169: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:167:46: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:169: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);
@@ -1627,9 +1631,9 @@
                 }
 
             }
-            else // 168:2: -> {!hasSpace && !\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
-            if (!hasSpace && !"".equals(text)) {
-                // DSLMap.g:168:38: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            else // 170:2: -> {!hasSpaceBefore && !\"\".equals(text) && !hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            if (!hasSpaceBefore && !"".equals(text)  && !hasSpaceAfter) {
+                // DSLMap.g:170: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);
@@ -1641,10 +1645,10 @@
                 }
 
             }
-            else // 169:2: -> {hasSpace}? VT_SPACE ^( VT_VAR_DEF $name)
-            if (hasSpace) {
+            else // 171:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_DEF $name)
+            if (hasSpaceBefore  && !hasSpaceAfter) {
                 adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
-                // DSLMap.g:169:26: ^( VT_VAR_DEF $name)
+                // DSLMap.g:171: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);
@@ -1655,9 +1659,82 @@
                 }
 
             }
-            else // 170:2: -> ^( VT_VAR_DEF $name)
+            else // 172:2: -> {!hasSpaceBefore && !hasSpaceAfter}? ^( VT_VAR_DEF $name)
+            if (!hasSpaceBefore  && !hasSpaceAfter) {
+                // DSLMap.g:172:44: ^( VT_VAR_DEF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 174: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:174:69: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 175:2: -> {!hasSpaceBefore && !\"\".equals(text) && hasSpaceAfter}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] ) VT_SPACE
+            if (!hasSpaceBefore && !"".equals(text)  && hasSpaceAfter) {
+                // DSLMap.g:175:62: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                adaptor.addChild(root_1, adaptor.create(VT_PATTERN, ((Token)pat.start),  text));
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 176: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:176:50: ^( VT_VAR_DEF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 177:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_DEF $name) VT_SPACE
+            if (!hasSpaceBefore  && hasSpaceAfter) {
+                // DSLMap.g:177:43: ^( VT_VAR_DEF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_DEF, "VT_VAR_DEF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 178:2: -> ^( VT_VAR_DEF $name)
             {
-                // DSLMap.g:170:5: ^( VT_VAR_DEF $name)
+                // DSLMap.g:178: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);
@@ -1696,7 +1773,7 @@
     };
 
     // $ANTLR start variable_definition2
-    // DSLMap.g:173: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:181: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);
@@ -1704,16 +1781,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");
@@ -1723,18 +1800,18 @@
                 String text = "";
 
         try {
-            // DSLMap.g:177: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:177:4: LEFT_CURLY name= LITERAL ( COLON pat= pattern )? RIGHT_CURLY
+            // DSLMap.g:185: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:185: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_definition2783); 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_definition2879); 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_definition2787); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_definition2883); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
-            // DSLMap.g:177:28: ( COLON pat= pattern )?
+            // DSLMap.g:185:28: ( COLON pat= pattern )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1743,13 +1820,13 @@
             }
             switch (alt13) {
                 case 1 :
-                    // DSLMap.g:177:30: COLON pat= pattern
+                    // DSLMap.g:185:30: COLON pat= pattern
                     {
-                    COLON29=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_variable_definition2791); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON29);
+                    COLON28=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_variable_definition2887); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON28);
 
-                    pushFollow(FOLLOW_pattern_in_variable_definition2795);
+                    pushFollow(FOLLOW_pattern_in_variable_definition2891);
                     pat=pattern();
                     _fsp--;
                     if (failed) return retval;
@@ -1763,9 +1840,9 @@
 
             }
 
-            RIGHT_CURLY30=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_definition2802); 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_definition2898); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY29);
 
 
             // AST REWRITE
@@ -1780,9 +1857,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 178:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+            // 186:2: -> {!\"\".equals(text)}? ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
             if (!"".equals(text)) {
-                // DSLMap.g:178:25: ^( VT_VAR_DEF $name VT_PATTERN[$pat.start, text] )
+                // DSLMap.g:186: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);
@@ -1794,9 +1871,9 @@
                 }
 
             }
-            else // 179:2: -> ^( VT_VAR_DEF $name)
+            else // 187:2: -> ^( VT_VAR_DEF $name)
             {
-                // DSLMap.g:179:5: ^( VT_VAR_DEF $name)
+                // DSLMap.g:187: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);
@@ -1835,36 +1912,36 @@
     };
 
     // $ANTLR start pattern
-    // DSLMap.g:183:1: pattern : ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
+    // DSLMap.g:191: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:184:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
-            // DSLMap.g:184:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            // DSLMap.g:192:9: ( ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
+            // DSLMap.g:192:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
             {
             root_0 = (Object)adaptor.nil();
 
-            // DSLMap.g:184:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
+            // DSLMap.g:192:11: ( literal | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
             int cnt14=0;
             loop14:
             do {
@@ -1911,58 +1988,58 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // DSLMap.g:184:13: literal
+            	    // DSLMap.g:192:13: literal
             	    {
-            	    pushFollow(FOLLOW_literal_in_pattern853);
-            	    literal31=literal();
+            	    pushFollow(FOLLOW_literal_in_pattern949);
+            	    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:185:13: LEFT_CURLY literal RIGHT_CURLY
+            	    // DSLMap.g:193:13: LEFT_CURLY literal RIGHT_CURLY
             	    {
-            	    LEFT_CURLY32=(Token)input.LT(1);
-            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern867); if (failed) return retval;
+            	    LEFT_CURLY31=(Token)input.LT(1);
+            	    match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_pattern963); 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_pattern869);
-            	    literal33=literal();
+            	    pushFollow(FOLLOW_literal_in_pattern965);
+            	    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_pattern871); 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_pattern967); 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:186:13: LEFT_SQUARE pattern RIGHT_SQUARE
+            	    // DSLMap.g:194:13: LEFT_SQUARE pattern RIGHT_SQUARE
             	    {
-            	    LEFT_SQUARE35=(Token)input.LT(1);
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern885); if (failed) return retval;
+            	    LEFT_SQUARE34=(Token)input.LT(1);
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern981); 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_pattern887);
-            	    pattern36=pattern();
+            	    pushFollow(FOLLOW_pattern_in_pattern983);
+            	    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_pattern889); 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_pattern985); 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);
             	    }
 
             	    }
@@ -2004,7 +2081,7 @@
     };
 
     // $ANTLR start variable_reference
-    // DSLMap.g:191:1: variable_reference : lc= LEFT_CURLY name= LITERAL RIGHT_CURLY -> {hasSpace}? VT_SPACE ^( VT_VAR_REF $name) -> ^( VT_VAR_REF $name) ;
+    // DSLMap.g:199: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);
@@ -2013,40 +2090,44 @@
 
         Token lc=null;
         Token name=null;
-        Token RIGHT_CURLY38=null;
+        Token rc=null;
 
         Object lc_tree=null;
         Object name_tree=null;
-        Object RIGHT_CURLY38_tree=null;
+        Object rc_tree=null;
         RewriteRuleTokenStream stream_RIGHT_CURLY=new RewriteRuleTokenStream(adaptor,"token RIGHT_CURLY");
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
         RewriteRuleTokenStream stream_LEFT_CURLY=new RewriteRuleTokenStream(adaptor,"token LEFT_CURLY");
 
         
-                boolean hasSpace = false;
+                boolean hasSpaceBefore = false;
+                boolean hasSpaceAfter = false;
 
         try {
-            // DSLMap.g:195:2: (lc= LEFT_CURLY name= LITERAL RIGHT_CURLY -> {hasSpace}? VT_SPACE ^( VT_VAR_REF $name) -> ^( VT_VAR_REF $name) )
-            // DSLMap.g:195:4: lc= LEFT_CURLY name= LITERAL RIGHT_CURLY
+            // DSLMap.g:204: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:204:4: lc= LEFT_CURLY name= LITERAL rc= RIGHT_CURLY
             {
             lc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference924); if (failed) return retval;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference1020); if (failed) return retval;
             if ( backtracking==0 ) stream_LEFT_CURLY.add(lc);
 
             if ( backtracking==0 ) {
-               if( ((CommonToken)input.LT(-2)).getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpace = true; 
+               if( ((CommonToken)input.LT(-2)).getStopIndex() < ((CommonToken)lc).getStartIndex() -1 ) hasSpaceBefore = true; 
             }
             name=(Token)input.LT(1);
-            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference932); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference1028); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
-            RIGHT_CURLY38=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference934); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY38);
+            rc=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference1032); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(rc);
 
+            if ( backtracking==0 ) {
+              if(((CommonToken)rc).getStopIndex() < ((CommonToken)input.LT(1)).getStartIndex() - 1) hasSpaceAfter = true;
+            }
 
             // AST REWRITE
-            // elements: name, name
+            // elements: name, name, name, name
             // token labels: name
             // rule labels: retval
             // token list labels: 
@@ -2057,10 +2138,10 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 197:2: -> {hasSpace}? VT_SPACE ^( VT_VAR_REF $name)
-            if (hasSpace) {
+            // 207: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:197:26: ^( VT_VAR_REF $name)
+                // DSLMap.g:207: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);
@@ -2069,11 +2150,40 @@
 
                 adaptor.addChild(root_0, root_1);
                 }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
 
             }
-            else // 198:2: -> ^( VT_VAR_REF $name)
+            else // 208:2: -> {hasSpaceBefore && !hasSpaceAfter}? VT_SPACE ^( VT_VAR_REF $name)
+            if (hasSpaceBefore && !hasSpaceAfter) {
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+                // DSLMap.g:208:50: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+            else // 209:2: -> {!hasSpaceBefore && hasSpaceAfter}? ^( VT_VAR_REF $name) VT_SPACE
+            if (!hasSpaceBefore && hasSpaceAfter) {
+                // DSLMap.g:209:42: ^( VT_VAR_REF $name)
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_VAR_REF, "VT_VAR_REF"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+                adaptor.addChild(root_0, adaptor.create(VT_SPACE, "VT_SPACE"));
+
+            }
+            else // 210:2: -> ^( VT_VAR_REF $name)
             {
-                // DSLMap.g:198:6: ^( VT_VAR_REF $name)
+                // DSLMap.g:210: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);
@@ -2112,7 +2222,7 @@
     };
 
     // $ANTLR start variable_reference2
-    // DSLMap.g:202:1: variable_reference2 : LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) ;
+    // DSLMap.g:214: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);
@@ -2120,31 +2230,31 @@
         Object root_0 = null;
 
         Token name=null;
-        Token LEFT_CURLY39=null;
-        Token RIGHT_CURLY40=null;
+        Token LEFT_CURLY37=null;
+        Token RIGHT_CURLY38=null;
 
         Object name_tree=null;
-        Object LEFT_CURLY39_tree=null;
-        Object RIGHT_CURLY40_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:203:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
-            // DSLMap.g:203:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
+            // DSLMap.g:215:2: ( LEFT_CURLY name= LITERAL RIGHT_CURLY -> ^( VT_VAR_REF $name) )
+            // DSLMap.g:215:4: LEFT_CURLY name= LITERAL RIGHT_CURLY
             {
-            LEFT_CURLY39=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference2975); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_CURLY.add(LEFT_CURLY39);
+            LEFT_CURLY37=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_variable_reference21110); 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_reference2979); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_variable_reference21114); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(name);
 
-            RIGHT_CURLY40=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference2981); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY40);
+            RIGHT_CURLY38=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_variable_reference21116); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_CURLY.add(RIGHT_CURLY38);
 
 
             // AST REWRITE
@@ -2159,9 +2269,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 204:2: -> ^( VT_VAR_REF $name)
+            // 216:2: -> ^( VT_VAR_REF $name)
             {
-                // DSLMap.g:204:5: ^( VT_VAR_REF $name)
+                // DSLMap.g:216: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);
@@ -2200,7 +2310,7 @@
     };
 
     // $ANTLR start condition_key
-    // DSLMap.g:208:1: condition_key : {...}?value= LITERAL -> VT_CONDITION[$value] ;
+    // DSLMap.g:220: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);
@@ -2213,15 +2323,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:209:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
-            // DSLMap.g:209:4: {...}?value= LITERAL
+            // DSLMap.g:221:2: ({...}?value= LITERAL -> VT_CONDITION[$value] )
+            // DSLMap.g:221: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_key1010); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_condition_key1145); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2236,7 +2346,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 210:2: -> VT_CONDITION[$value]
+            // 222:2: -> VT_CONDITION[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_CONDITION, value));
 
@@ -2269,7 +2379,7 @@
     };
 
     // $ANTLR start consequence_key
-    // DSLMap.g:213:1: consequence_key : {...}?value= LITERAL -> VT_CONSEQUENCE[$value] ;
+    // DSLMap.g:225: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);
@@ -2282,15 +2392,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:214:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
-            // DSLMap.g:214:4: {...}?value= LITERAL
+            // DSLMap.g:226:2: ({...}?value= LITERAL -> VT_CONSEQUENCE[$value] )
+            // DSLMap.g:226: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_key1033); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_consequence_key1168); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2305,7 +2415,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 215:2: -> VT_CONSEQUENCE[$value]
+            // 227:2: -> VT_CONSEQUENCE[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_CONSEQUENCE, value));
 
@@ -2338,7 +2448,7 @@
     };
 
     // $ANTLR start keyword_key
-    // DSLMap.g:218:1: keyword_key : {...}?value= LITERAL -> VT_KEYWORD[$value] ;
+    // DSLMap.g:230: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);
@@ -2351,15 +2461,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:219:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
-            // DSLMap.g:219:4: {...}?value= LITERAL
+            // DSLMap.g:231:2: ({...}?value= LITERAL -> VT_KEYWORD[$value] )
+            // DSLMap.g:231: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_key1056); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_keyword_key1191); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2374,7 +2484,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 220:2: -> VT_KEYWORD[$value]
+            // 232:2: -> VT_KEYWORD[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_KEYWORD, value));
 
@@ -2407,7 +2517,7 @@
     };
 
     // $ANTLR start any_key
-    // DSLMap.g:223:1: any_key : {...}?value= LITERAL -> VT_ANY[$value] ;
+    // DSLMap.g:235: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);
@@ -2420,15 +2530,15 @@
         RewriteRuleTokenStream stream_LITERAL=new RewriteRuleTokenStream(adaptor,"token LITERAL");
 
         try {
-            // DSLMap.g:224:2: ({...}?value= LITERAL -> VT_ANY[$value] )
-            // DSLMap.g:224:4: {...}?value= LITERAL
+            // DSLMap.g:236:2: ({...}?value= LITERAL -> VT_ANY[$value] )
+            // DSLMap.g:236: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_key1079); if (failed) return retval;
+            match(input,LITERAL,FOLLOW_LITERAL_in_any_key1214); if (failed) return retval;
             if ( backtracking==0 ) stream_LITERAL.add(value);
 
 
@@ -2443,7 +2553,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 225:2: -> VT_ANY[$value]
+            // 237:2: -> VT_ANY[$value]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_ANY, value));
 
@@ -2553,10 +2663,10 @@
 
     // $ANTLR start synpred21
     public final void synpred21_fragment() throws RecognitionException {   
-        // DSLMap.g:184:13: ( literal )
-        // DSLMap.g:184:13: literal
+        // DSLMap.g:192:13: ( literal )
+        // DSLMap.g:192:13: literal
         {
-        pushFollow(FOLLOW_literal_in_synpred21853);
+        pushFollow(FOLLOW_literal_in_synpred21949);
         literal();
         _fsp--;
         if (failed) return ;
@@ -2567,15 +2677,15 @@
 
     // $ANTLR start synpred23
     public final void synpred23_fragment() throws RecognitionException {   
-        // DSLMap.g:186:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
-        // DSLMap.g:186:13: LEFT_SQUARE pattern RIGHT_SQUARE
+        // DSLMap.g:194:13: ( LEFT_SQUARE pattern RIGHT_SQUARE )
+        // DSLMap.g:194:13: LEFT_SQUARE pattern RIGHT_SQUARE
         {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred23885); if (failed) return ;
-        pushFollow(FOLLOW_pattern_in_synpred23887);
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred23981); if (failed) return ;
+        pushFollow(FOLLOW_pattern_in_synpred23983);
         pattern();
         _fsp--;
         if (failed) return ;
-        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred23889); if (failed) return ;
+        match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_synpred23985); if (failed) return ;
 
         }
     }
@@ -2732,38 +2842,38 @@
     public static final BitSet FOLLOW_LITERAL_in_variable_definition686 = new BitSet(new long[]{0x0000000014000000L});
     public static final BitSet FOLLOW_COLON_in_variable_definition690 = new BitSet(new long[]{0x000000000F800000L});
     public static final BitSet FOLLOW_pattern_in_variable_definition694 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition701 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2783 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_definition2787 = new BitSet(new long[]{0x0000000014000000L});
-    public static final BitSet FOLLOW_COLON_in_variable_definition2791 = new BitSet(new long[]{0x000000000F800000L});
-    public static final BitSet FOLLOW_pattern_in_variable_definition2795 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition2802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_pattern853 = new BitSet(new long[]{0x000000000F800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern867 = new BitSet(new long[]{0x0000000007800000L});
-    public static final BitSet FOLLOW_literal_in_pattern869 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern871 = new BitSet(new long[]{0x000000000F800002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern885 = new BitSet(new long[]{0x000000000F800000L});
-    public static final BitSet FOLLOW_pattern_in_pattern887 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern889 = new BitSet(new long[]{0x000000000F800002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference924 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference932 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference934 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference2975 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_LITERAL_in_variable_reference2979 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference2981 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_condition_key1010 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_consequence_key1033 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_keyword_key1056 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LITERAL_in_any_key1079 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_definition2879 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_definition2883 = new BitSet(new long[]{0x0000000014000000L});
+    public static final BitSet FOLLOW_COLON_in_variable_definition2887 = new BitSet(new long[]{0x000000000F800000L});
+    public static final BitSet FOLLOW_pattern_in_variable_definition2891 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_definition2898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_pattern949 = new BitSet(new long[]{0x000000000F800002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_pattern963 = new BitSet(new long[]{0x0000000007800000L});
+    public static final BitSet FOLLOW_literal_in_pattern965 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_pattern967 = new BitSet(new long[]{0x000000000F800002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern981 = new BitSet(new long[]{0x000000000F800000L});
+    public static final BitSet FOLLOW_pattern_in_pattern983 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern985 = new BitSet(new long[]{0x000000000F800002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference1020 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference1028 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference1032 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_variable_reference21110 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_LITERAL_in_variable_reference21114 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_variable_reference21116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_condition_key1145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_consequence_key1168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_keyword_key1191 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LITERAL_in_any_key1214 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_condition_key_in_synpred5390 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_consequence_key_in_synpred6399 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_keyword_key_in_synpred7407 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_literal_in_synpred11547 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_literal_in_synpred14622 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_EQUALS_in_synpred15624 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_synpred21853 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred23885 = new BitSet(new long[]{0x000000000F800000L});
-    public static final BitSet FOLLOW_pattern_in_synpred23887 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred23889 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_synpred21949 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred23981 = new BitSet(new long[]{0x000000000F800000L});
+    public static final BitSet FOLLOW_pattern_in_synpred23983 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_synpred23985 = 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-05-20 20:45:04 UTC (rev 20086)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 DSLMapWalker.g 2008-05-19 16:06:18
+// $ANTLR 3.0.1 DSLMapWalker.g 2008-05-20 17:54:41
 
 	package org.drools.lang.dsl;
 	
@@ -228,7 +228,7 @@
 
     protected static class entry_scope {
         Map variables;
-        DefaultDSLMappingEntry retval;
+        AntlrDSLMappingEntry retval;
         int counter;
         StringBuffer keybuffer;
         StringBuffer valuebuffer;
@@ -243,7 +243,7 @@
         DSLMappingEntry mappingEntry = null;
 
         
-        	((entry_scope)entry_stack.peek()).retval = new DefaultDSLMappingEntry() ;
+        	((entry_scope)entry_stack.peek()).retval = new AntlrDSLMappingEntry() ;
         	((entry_scope)entry_stack.peek()).variables = new HashMap();
         	((entry_scope)entry_stack.peek()).keybuffer = new StringBuffer();
         	((entry_scope)entry_stack.peek()).valuebuffer = new StringBuffer();
@@ -734,7 +734,7 @@
                     {
                     match(input,VT_SPACE,FOLLOW_VT_SPACE_in_value_sentence301); 
                     
-                    		((entry_scope)entry_stack.peek()).valuebuffer.append("\\s+");
+                    		((entry_scope)entry_stack.peek()).valuebuffer.append(" ");
                     	
 
                     }
@@ -857,7 +857,7 @@
             match(input, Token.UP, null); 
             
             		System.out.println("varref is " + varref.getText() + " and points to " + lit.getText());
-            		((entry_scope)entry_stack.peek()).valuebuffer.append("\\$" + ((entry_scope)entry_stack.peek()).variables.get(lit.getText()));
+            		((entry_scope)entry_stack.peek()).valuebuffer.append("$" + ((entry_scope)entry_stack.peek()).variables.get(lit.getText()));
             	
 
             }

Modified: labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java
===================================================================
--- labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java	2008-05-20 20:45:04 UTC (rev 20086)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -19,7 +19,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -29,20 +28,10 @@
  * 
  * @author etirelli
  */
-public class DefaultDSLMappingEntry
+public class DefaultDSLMappingEntry extends AbstractDSLMappingEntry
     implements
     DSLMappingEntry {
 
-    private Section      section;
-    private MetaData     metadata;
-    private String       key;
-    private String       value;
-
-    private Map          variables = Collections.EMPTY_MAP;
-
-    private Pattern      keyPattern;
-    private String       valuePattern;
-
     // following pattern is used to extract all variables names and positions from a mapping.
     // Example: for the following String:
     //
@@ -51,7 +40,7 @@
     // it will return variables:
     // This, pattern, easy, say
     //
-    static final Pattern VAR_FINDER = Pattern.compile( "(^|[^\\\\])\\{([(\\\\\\{)|[^\\{]]*?)\\}",
+    private static final Pattern VAR_FINDER = Pattern.compile( "(^|[^\\\\])\\{([(\\\\\\{)|[^\\{]]*?)\\}",
                                                       Pattern.MULTILINE | Pattern.DOTALL );
     
     // following pattern is used to find all the non-escaped parenthesis in the input key
@@ -76,34 +65,6 @@
     }
 
     /**
-     * @inheritDoc
-     */
-    public Section getSection() {
-        return this.section;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public DSLMappingEntry.MetaData getMetaData() {
-        return this.metadata;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public String getMappingKey() {
-        return this.key;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public String getMappingValue() {
-        return this.value;
-    }
-
-    /**
      * @param key the key to set
      */
     public void setMappingKey(String key) {
@@ -177,13 +138,6 @@
     }
 
     /**
-     * @param section the section to set
-     */
-    public void setSection(final Section section) {
-        this.section = section;
-    }
-
-    /**
      * @param value the value to set
      */
     public void setMappingValue(final String value) {
@@ -204,103 +158,4 @@
         }
     }
 
-    /**
-     * @param metadata the metadata to set
-     */
-    public void setMetaData(final MetaData metadata) {
-        this.metadata = metadata;
-    }
-
-    /**
-     * @return the keyPattern
-     */
-    public Pattern getKeyPattern() {
-        return this.keyPattern;
-    }
-
-    /**
-     * @return the valuePattern
-     */
-    public String getValuePattern() {
-        return this.valuePattern;
-    }
-
-    /**
-     * @return the variables
-     */
-    public Map getVariables() {
-        return this.variables;
-    }
-
-    public String toPatternString() {
-        return this.section + "[" + this.metadata + "]" + this.keyPattern.pattern() + "=" + this.valuePattern;
-    }
-
-    public String toString() {
-        return this.section + "[" + this.metadata + "]" + this.key + "=" + this.value;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        final int PRIME = 31;
-        int result = 1;
-        result = PRIME * result + ((this.key == null) ? 0 : this.key.hashCode());
-        result = PRIME * result + ((this.metadata == null) ? 0 : this.metadata.hashCode());
-        result = PRIME * result + ((this.section == null) ? 0 : this.section.hashCode());
-        result = PRIME * result + ((this.value == null) ? 0 : this.value.hashCode());
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(final Object obj) {
-        if ( this == obj ) {
-            return true;
-        }
-        if ( obj == null ) {
-            return false;
-        }
-        if ( getClass() != obj.getClass() ) {
-            return false;
-        }
-        final DefaultDSLMappingEntry other = (DefaultDSLMappingEntry) obj;
-        if ( this.key == null ) {
-            if ( other.key != null ) {
-                return false;
-            }
-        } else if ( !this.key.equals( other.key ) ) {
-            return false;
-        }
-        if ( this.metadata == null ) {
-            if ( other.metadata != null ) {
-                return false;
-            }
-        } else if ( !this.metadata.equals( other.metadata ) ) {
-            return false;
-        }
-        if ( this.section == null ) {
-            if ( other.section != null ) {
-                return false;
-            }
-        } else if ( !this.section.equals( other.section ) ) {
-            return false;
-        }
-        if ( this.value == null ) {
-            if ( other.value != null ) {
-                return false;
-            }
-        } else if ( !this.value.equals( other.value ) ) {
-            return false;
-        }
-        return true;
-    }
-
-    public List getErrors() {
-        // TODO Need to implement validation here
-        return Collections.EMPTY_LIST;
-    }
-
 }

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-05-20 20:45:04 UTC (rev 20086)
+++ labs/jbossrules/branches/mattgeis/drools-compiler/src/test/java/org/drools/lang/dsl/DSLTokenizedMappingFileTest.java	2008-05-21 01:05:57 UTC (rev 20087)
@@ -62,10 +62,11 @@
                           entry.getSection() );
             assertEquals( DSLMappingEntry.EMPTY_METADATA,
                           entry.getMetaData() );
-            assertEquals( "ATTRIBUTE \"{attr}\" IS IN [{list}]",
-                          entry.getMappingKey() );
-            assertEquals( "Attribute( {attr} in ({list}) )",
-                          entry.getMappingValue() );
+            assertEquals( "(\\W|^)ATTRIBUTE \"(.*?)\" IS IN [(.*?)](\\W|$)",
+                          entry.getKeyPattern().toString() );
+            //Attribute( {attr} in ({list}) )
+            assertEquals( "Attribute(\\s+\\$1\\s+in (\\$2) )",
+                          entry.getValuePattern() );
 
         } catch ( final IOException e ) {
             e.printStackTrace();
@@ -95,10 +96,12 @@
                           entry.getSection() );
             assertEquals( DSLMappingEntry.EMPTY_METADATA,
                           entry.getMetaData() );
-            assertEquals( "ATTRIBUTE \"{attr}\" IS IN \\[{list}\\]",
-                          entry.getMappingKey() );
-            assertEquals( "Attribute( {attr} in ({list}) )",
-                          entry.getMappingValue() );
+            
+            assertEquals( "(\\W|^)ATTRIBUTE \"(.*?)\" IS IN \\[(.*?)\\](\\W|$)",
+                          entry.getKeyPattern().toString() );
+            //Attribute( {attr} in ({list}) )
+            assertEquals( "Attribute(\\s+\\$1\\s+in (\\$2) )",
+                          entry.getValuePattern() );
 
         } catch ( final IOException e ) {
             e.printStackTrace();
@@ -108,9 +111,9 @@
     }
 
     public void testParseFileWithEscapes() {
-        String file = "[then]TEST=System.out.println(\"DO_SOMETHING\");\n" + 
-                      "[when]code {code1} occurs and sum of all digit not equal \\( {code2} \\+ {code3} \\)=AAAA( cd1 == {code1}, cd2 != ( {code2} + {code3} ))\n" + 
-                      "[when]code {code1} occurs=BBBB\n";
+        String file = "[then][]TEST=System.out.println(\"DO_SOMETHING\");\n" + 
+                      "[when][]code {code1} occurs and sum of all digit not equal \\( {code2} \\+ {code3} \\)=AAAA( cd1 == {code1}, cd2 != ( {code2} + {code3} ))\n" + 
+                      "[when][]code {code1} occurs=BBBB\n";
         try {
             final Reader reader = new StringReader( file );
             this.file = new DSLTokenizedMappingFile();




More information about the jboss-svn-commits mailing list