[jboss-svn-commits] JBL Code SVN: r20276 - in labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main: java/org/drools/xml/rules and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 3 17:42:26 EDT 2008


Author: porcelli
Date: 2008-06-03 17:42:25 -0400 (Tue, 03 Jun 2008)
New Revision: 20276

Modified:
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/xml/rules/ExpressionHandler.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
Log:
Now xml parser expression has dataSource information.

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-06-03 21:40:03 UTC (rev 20275)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-06-03 21:42:25 UTC (rev 20276)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-05-19 18:05:21
+// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-06-03 17:01:56
 
 	package org.drools.lang;
 
@@ -2238,7 +2238,7 @@
 
         AccumulateDescr ret = null;
 
-        FromDescr fs = null;
+        from_source_clause_return fs = null;
 
 
         try {
@@ -2334,7 +2334,7 @@
                     fs=from_source_clause();
                     _fsp--;
 
-                    	retval.patternSourceDescr = fs;	
+                    	retval.patternSourceDescr = fs.fromDescr;	
 
                     }
                     break;
@@ -2587,12 +2587,17 @@
     }
     protected Stack from_source_clause_stack = new Stack();
 
+    public static class from_source_clause_return extends TreeRuleReturnScope {
+        public FromDescr fromDescr;
+        public AccessorDescr retAccessorDescr;
+    };
 
     // $ANTLR start from_source_clause
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:1: from_source_clause returns [FromDescr fromDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
-    public final FromDescr from_source_clause() throws RecognitionException {
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    public final from_source_clause_return from_source_clause() throws RecognitionException {
         from_source_clause_stack.push(new from_source_clause_scope());
-        FromDescr fromDescr = null;
+        from_source_clause_return retval = new from_source_clause_return();
+        retval.start = input.LT(1);
 
         DroolsTree id=null;
         DroolsTree pc=null;
@@ -2626,7 +2631,8 @@
             }
 
             	((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr = factory.createAccessor(id, pc);	
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:259:3: ( expression_chain )?
+            		retval.retAccessorDescr = ((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr;	
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:260:3: ( expression_chain )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -2635,7 +2641,7 @@
             }
             switch (alt31) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:259:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:260:3: expression_chain
                     {
                     pushFollow(FOLLOW_expression_chain_in_from_source_clause1328);
                     expression_chain();
@@ -2649,7 +2655,7 @@
 
 
             match(input, Token.UP, null); 
-            	fromDescr = factory.createFromSource(factory.setupAccessorOffset(((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr)); 
+            	retval.fromDescr = factory.createFromSource(factory.setupAccessorOffset(((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr)); 
 
             }
 
@@ -2661,7 +2667,7 @@
         finally {
             from_source_clause_stack.pop();
         }
-        return fromDescr;
+        return retval;
     }
     // $ANTLR end from_source_clause
 
@@ -2669,7 +2675,7 @@
     };
 
     // $ANTLR start expression_chain
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:263:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final expression_chain_return expression_chain() throws RecognitionException {
         expression_chain_return retval = new expression_chain_return();
         retval.start = input.LT(1);
@@ -2680,8 +2686,8 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
             start=(DroolsTree)input.LT(1);
             match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1347); 
@@ -2689,7 +2695,7 @@
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
             match(input,ID,FOLLOW_ID_in_expression_chain1351); 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:40: (sc= VT_SQUARE_CHUNK )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:40: (sc= VT_SQUARE_CHUNK )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -2698,7 +2704,7 @@
             }
             switch (alt32) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:40: sc= VT_SQUARE_CHUNK
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:40: sc= VT_SQUARE_CHUNK
                     {
                     sc=(DroolsTree)input.LT(1);
                     match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1355); 
@@ -2708,7 +2714,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:60: (pc= VT_PAREN_CHUNK )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:60: (pc= VT_PAREN_CHUNK )?
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -2717,7 +2723,7 @@
             }
             switch (alt33) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:264:60: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:60: pc= VT_PAREN_CHUNK
                     {
                     pc=(DroolsTree)input.LT(1);
                     match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1360); 
@@ -2729,7 +2735,7 @@
 
             	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain(start, id, sc, pc);	
             		((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr.addInvoker(declarativeInvokerResult);	
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:267:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:268:3: ( expression_chain )?
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -2738,7 +2744,7 @@
             }
             switch (alt34) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:267:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:268:3: expression_chain
                     {
                     pushFollow(FOLLOW_expression_chain_in_expression_chain1368);
                     expression_chain();
@@ -2768,7 +2774,7 @@
 
 
     // $ANTLR start lhs_pattern
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:270:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:271:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) ;
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr baseDescr = null;
 
@@ -2776,8 +2782,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:271:2: ( ^( VT_PATTERN fe= fact_expression ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:271:4: ^( VT_PATTERN fe= fact_expression )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:272:2: ( ^( VT_PATTERN fe= fact_expression ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:272:4: ^( VT_PATTERN fe= fact_expression )
             {
             match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1386); 
 
@@ -2808,7 +2814,7 @@
     };
 
     // $ANTLR start fact_expression
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:275:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBERO!
 F (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBERO!
 F (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
     public final fact_expression_return fact_expression() throws RecognitionException {
         fact_expression_return retval = new fact_expression_return();
         retval.start = input.LT(1);
@@ -2843,7 +2849,7 @@
         	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:278:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expressio!
 n ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expressio!
 n ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
             int alt47=28;
             switch ( input.LA(1) ) {
             case VT_FACT:
@@ -2988,14 +2994,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("275:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (!
 param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );", 47, 0, input);
+                    new NoViableAltException("276:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (!
 param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );", 47, 0, input);
 
                 throw nvae;
             }
 
             switch (alt47) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:278:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
                     {
                     match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression1413); 
 
@@ -3004,7 +3010,7 @@
                     pt=pattern_type();
                     _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:278:31: (fe= fact_expression )*
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:31: (fe= fact_expression )*
                     loop35:
                     do {
                         int alt35=2;
@@ -3017,7 +3023,7 @@
 
                         switch (alt35) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:278:32: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:32: fe= fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression1422);
                     	    fe=fact_expression();
@@ -3040,7 +3046,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:280:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
                     {
                     match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression1436); 
 
@@ -3058,7 +3064,7 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:282:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:283:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
                     {
                     start=(DroolsTree)input.LT(1);
                     match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1456); 
@@ -3079,7 +3085,7 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:286:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
                     {
                     match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1475); 
 
@@ -3088,7 +3094,7 @@
                     field=field_element();
                     _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:37: (fe= fact_expression )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:286:37: (fe= fact_expression )?
                     int alt36=2;
                     int LA36_0 = input.LA(1);
 
@@ -3097,7 +3103,7 @@
                     }
                     switch (alt36) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:37: fe= fact_expression
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:286:37: fe= fact_expression
                             {
                             pushFollow(FOLLOW_fact_expression_in_fact_expression1483);
                             fe=fact_expression();
@@ -3120,7 +3126,7 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:291:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:292:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
                     {
                     match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1494); 
 
@@ -3138,7 +3144,7 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:294:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
                     {
                     match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression1513); 
 
@@ -3152,7 +3158,7 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:297:4: ^(op= EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:298:4: ^(op= EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1530); 
@@ -3169,7 +3175,7 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:299:4: ^(op= NOT_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:4: ^(op= NOT_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1546); 
@@ -3186,7 +3192,7 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:301:4: ^(op= GREATER fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:4: ^(op= GREATER fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,GREATER,FOLLOW_GREATER_in_fact_expression1562); 
@@ -3203,7 +3209,7 @@
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:4: ^(op= GREATER_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:304:4: ^(op= GREATER_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1578); 
@@ -3220,7 +3226,7 @@
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:305:4: ^(op= LESS fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:306:4: ^(op= LESS fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,LESS,FOLLOW_LESS_in_fact_expression1594); 
@@ -3237,7 +3243,7 @@
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:4: ^(op= LESS_EQUAL fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:308:4: ^(op= LESS_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1610); 
@@ -3254,13 +3260,13 @@
                     }
                     break;
                 case 13 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:310:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1626); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:310:24: (not= VK_NOT )?
                     int alt37=2;
                     int LA37_0 = input.LA(1);
 
@@ -3269,7 +3275,7 @@
                     }
                     switch (alt37) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:310:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1630); 
@@ -3290,13 +3296,13 @@
                     }
                     break;
                 case 14 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:311:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1647); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:311:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:24: (not= VK_NOT )?
                     int alt38=2;
                     int LA38_0 = input.LA(1);
 
@@ -3305,7 +3311,7 @@
                     }
                     switch (alt38) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:311:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1651); 
@@ -3326,13 +3332,13 @@
                     }
                     break;
                 case 15 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:314:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1668); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:23: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:314:23: (not= VK_NOT )?
                     int alt39=2;
                     int LA39_0 = input.LA(1);
 
@@ -3341,7 +3347,7 @@
                     }
                     switch (alt39) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:23: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:314:23: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1672); 
@@ -3362,13 +3368,13 @@
                     }
                     break;
                 case 16 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:315:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:316:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1689); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:315:26: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:316:26: (not= VK_NOT )?
                     int alt40=2;
                     int LA40_0 = input.LA(1);
 
@@ -3377,7 +3383,7 @@
                     }
                     switch (alt40) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:315:26: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:316:26: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1693); 
@@ -3398,13 +3404,13 @@
                     }
                     break;
                 case 17 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:318:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1710); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:24: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:318:24: (not= VK_NOT )?
                     int alt41=2;
                     int LA41_0 = input.LA(1);
 
@@ -3413,7 +3419,7 @@
                     }
                     switch (alt41) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:24: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:318:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1714); 
@@ -3434,13 +3440,13 @@
                     }
                     break;
                 case 18 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:319:4: ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:4: ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_fact_expression1731); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:319:15: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:15: (not= VK_NOT )?
                     int alt42=2;
                     int LA42_0 = input.LA(1);
 
@@ -3449,7 +3455,7 @@
                     }
                     switch (alt42) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:319:15: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:15: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1735); 
@@ -3459,7 +3465,7 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:319:29: (param= VT_SQUARE_CHUNK )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:29: (param= VT_SQUARE_CHUNK )?
                     int alt43=2;
                     int LA43_0 = input.LA(1);
 
@@ -3468,7 +3474,7 @@
                     }
                     switch (alt43) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:319:29: param= VT_SQUARE_CHUNK
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:29: param= VT_SQUARE_CHUNK
                             {
                             param=(DroolsTree)input.LT(1);
                             match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1740); 
@@ -3489,12 +3495,12 @@
                     }
                     break;
                 case 19 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:323:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
                     match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression1756); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:15: (not= VK_NOT )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:323:15: (not= VK_NOT )?
                     int alt44=2;
                     int LA44_0 = input.LA(1);
 
@@ -3503,7 +3509,7 @@
                     }
                     switch (alt44) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:15: not= VK_NOT
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:323:15: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1760); 
@@ -3513,7 +3519,7 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:24: (fe= fact_expression )+
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:323:24: (fe= fact_expression )+
                     int cnt45=0;
                     loop45:
                     do {
@@ -3527,7 +3533,7 @@
 
                         switch (alt45) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:25: fe= fact_expression
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:323:25: fe= fact_expression
                     	    {
                     	    pushFollow(FOLLOW_fact_expression_in_fact_expression1766);
                     	    fe=fact_expression();
@@ -3554,7 +3560,7 @@
                     }
                     break;
                 case 20 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:325:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:326:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
                     {
                     match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression1781); 
 
@@ -3574,7 +3580,7 @@
                     }
                     break;
                 case 21 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
                     {
                     match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression1799); 
 
@@ -3594,12 +3600,12 @@
                     }
                     break;
                 case 22 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:330:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
                     match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1818); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:330:23: (ae= accessor_element )+
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:23: (ae= accessor_element )+
                     int cnt46=0;
                     loop46:
                     do {
@@ -3613,7 +3619,7 @@
 
                         switch (alt46) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:330:24: ae= accessor_element
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:331:24: ae= accessor_element
                     	    {
                     	    pushFollow(FOLLOW_accessor_element_in_fact_expression1823);
                     	    ae=accessor_element();
@@ -3640,7 +3646,7 @@
                     }
                     break;
                 case 23 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:332:4: s= STRING
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:333:4: s= STRING
                     {
                     s=(DroolsTree)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_fact_expression1838); 
@@ -3649,7 +3655,7 @@
                     }
                     break;
                 case 24 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:334:4: i= INT
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:4: i= INT
                     {
                     i=(DroolsTree)input.LT(1);
                     match(input,INT,FOLLOW_INT_in_fact_expression1848); 
@@ -3658,7 +3664,7 @@
                     }
                     break;
                 case 25 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:336:4: f= FLOAT
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:337:4: f= FLOAT
                     {
                     f=(DroolsTree)input.LT(1);
                     match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression1858); 
@@ -3667,7 +3673,7 @@
                     }
                     break;
                 case 26 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:338:4: b= BOOL
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:339:4: b= BOOL
                     {
                     b=(DroolsTree)input.LT(1);
                     match(input,BOOL,FOLLOW_BOOL_in_fact_expression1868); 
@@ -3676,7 +3682,7 @@
                     }
                     break;
                 case 27 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:4: n= NULL
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:341:4: n= NULL
                     {
                     n=(DroolsTree)input.LT(1);
                     match(input,NULL,FOLLOW_NULL_in_fact_expression1878); 
@@ -3685,7 +3691,7 @@
                     }
                     break;
                 case 28 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:342:4: pc= VT_PAREN_CHUNK
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: pc= VT_PAREN_CHUNK
                     {
                     pc=(DroolsTree)input.LT(1);
                     match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1888); 
@@ -3708,7 +3714,7 @@
 
 
     // $ANTLR start field_element
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:346:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:347:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
@@ -3719,13 +3725,13 @@
         	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
             match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element1910); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:24: (ae= accessor_element )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:24: (ae= accessor_element )+
             int cnt48=0;
             loop48:
             do {
@@ -3739,7 +3745,7 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:25: ae= accessor_element
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:25: ae= accessor_element
             	    {
             	    pushFollow(FOLLOW_accessor_element_in_field_element1915);
             	    ae=accessor_element();
@@ -3778,7 +3784,7 @@
 
 
     // $ANTLR start accessor_element
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:353:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
     public final BaseDescr accessor_element() throws RecognitionException {
         BaseDescr element = null;
 
@@ -3787,15 +3793,15 @@
         List list_sc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
             match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1939); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
             match(input,ID,FOLLOW_ID_in_accessor_element1943); 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:34: (sc+= VT_SQUARE_CHUNK )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:34: (sc+= VT_SQUARE_CHUNK )*
             loop49:
             do {
                 int alt49=2;
@@ -3808,7 +3814,7 @@
 
                 switch (alt49) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:34: sc+= VT_SQUARE_CHUNK
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:34: sc+= VT_SQUARE_CHUNK
             	    {
             	    sc=(DroolsTree)input.LT(1);
             	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1947); 
@@ -3843,7 +3849,7 @@
 
 
     // $ANTLR start pattern_type
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr pattern_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -3853,13 +3859,13 @@
         List list_rightList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
             match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type1968); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:28: (idList+= ID )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:28: (idList+= ID )+
             int cnt50=0;
             loop50:
             do {
@@ -3873,7 +3879,7 @@
 
                 switch (alt50) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:28: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:28: idList+= ID
             	    {
             	    idList=(DroolsTree)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_pattern_type1972); 
@@ -3893,7 +3899,7 @@
                 cnt50++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop51:
             do {
                 int alt51=2;
@@ -3906,7 +3912,7 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:360:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
             	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type1976); 
             	    rightList=(DroolsTree)input.LT(1);
@@ -3942,7 +3948,7 @@
 
 
     // $ANTLR start data_type
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr data_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -3952,13 +3958,13 @@
         List list_rightList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
             match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2002); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:25: (idList+= ID )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:25: (idList+= ID )+
             int cnt52=0;
             loop52:
             do {
@@ -3972,7 +3978,7 @@
 
                 switch (alt52) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:25: idList+= ID
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:25: idList+= ID
             	    {
             	    idList=(DroolsTree)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_data_type2006); 
@@ -3992,7 +3998,7 @@
                 cnt52++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop53:
             do {
                 int alt53=2;
@@ -4005,7 +4011,7 @@
 
                 switch (alt53) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:365:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
             	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2010); 
             	    rightList=(DroolsTree)input.LT(1);

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/xml/rules/ExpressionHandler.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/xml/rules/ExpressionHandler.java	2008-06-03 21:40:03 UTC (rev 20275)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/xml/rules/ExpressionHandler.java	2008-06-03 21:42:25 UTC (rev 20276)
@@ -29,6 +29,7 @@
 import org.drools.lang.DroolsTreeAdaptor;
 import org.drools.lang.DRLLexer;
 import org.drools.lang.DRLParser;
+import org.drools.lang.DescrBuilderTree.from_source_clause_return;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.FromDescr;
 import org.drools.xml.BaseAbstractHandler;
@@ -85,9 +86,8 @@
         
         emptyContentCheck( localName, expression, parser );
 
-        final Object parent = parser.getParent();
+        FromDescr parent = (FromDescr) parser.getParent();
 
-        FromDescr fromSource = null;
         final CharStream charStream = new ANTLRStringStream( expression.trim() );
         final DRLLexer lexer = new DRLLexer( charStream );
         final TokenStream tokenStream = new CommonTokenStream( lexer );
@@ -100,7 +100,9 @@
 				CommonTreeNodeStream nodes = new CommonTreeNodeStream(fromSourceTree);
 				nodes.setTokenStream(tokenStream);
             	DescrBuilderTree walker = new DescrBuilderTree(nodes);
-            	fromSource = walker.from_source_clause();
+            	from_source_clause_return fromReturn = walker.from_source_clause();
+            	parent.setDataSource(fromReturn.retAccessorDescr);
+            	parent = fromReturn.fromDescr;
         	} else {
                 throw new SAXParseException( "<" + localName + "> must have a valid expression content ",
                         parser.getLocator() );        		

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-06-03 21:40:03 UTC (rev 20275)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-06-03 21:42:25 UTC (rev 20276)
@@ -251,11 +251,12 @@
 	{	$accumulateDescr = factory.setupAccumulateId($accumulateParam, $id, $pc);	}
 	;
 
-from_source_clause returns [FromDescr fromDescr]
+from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr]
 scope{
 	AccessorDescr accessorDescr;
 }	:	^(VT_FROM_SOURCE id=ID pc=VT_PAREN_CHUNK? 
-	{	$from_source_clause::accessorDescr = factory.createAccessor($id, $pc);	}
+	{	$from_source_clause::accessorDescr = factory.createAccessor($id, $pc);	
+		$retAccessorDescr = $from_source_clause::accessorDescr;	}
 		expression_chain?)
 	{	$fromDescr = factory.createFromSource(factory.setupAccessorOffset($from_source_clause::accessorDescr)); }
 	;




More information about the jboss-svn-commits mailing list