[jboss-svn-commits] JBL Code SVN: r26893 - in labs/jbossrules/branches/DroolsChance/drools-compiler/src/main: java/org/drools/rule/builder and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 10 02:47:24 EDT 2009


Author: dsotty
Date: 2009-06-10 02:47:23 -0400 (Wed, 10 Jun 2009)
New Revision: 26893

Modified:
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
Log:


Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/AndDescr.java	2009-06-10 06:47:23 UTC (rev 26893)
@@ -68,7 +68,7 @@
     }
 
     public void addOrMerge(final BaseDescr baseDescr) {
-        if ( baseDescr instanceof AndDescr ) {
+        if ( baseDescr instanceof AndDescr && ! overrides(this,baseDescr) ) {
             this.descrs.addAll( ((AndDescr) baseDescr).getDescrs() );
         } else {
             addDescr( baseDescr );

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java	2009-06-10 06:47:23 UTC (rev 26893)
@@ -195,4 +195,19 @@
 	public String getPrior() {
 		return prior;
 	}
+	
+	public boolean overrides(BaseDescr master, BaseDescr slave) {
+		boolean testCut = master.isCutter() == slave.isCutter();
+		
+		boolean testLabel = (master.getLabel() == null && slave.getLabel() == null)
+						    || (master.getLabel() != null && master.getLabel().equals(slave.getLabel()));
+		
+		boolean testPrior = (master.getPrior() == null && slave.getPrior() == null)
+	    					|| (master.getPrior() != null && master.getPrior().equals(slave.getPrior()));
+		
+		boolean testParams = (master.getParams() == null && slave.getParams() == null)
+	    					|| (master.getParams() != null && master.getParams().equals(slave.getParams()));
+		
+		return ! (testCut && testLabel && testPrior && testParams);
+	}
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java	2009-06-10 06:47:23 UTC (rev 26893)
@@ -65,7 +65,7 @@
     }
 
     public void addOrMerge(final BaseDescr baseDescr) {
-        if( baseDescr instanceof OrDescr ) {
+        if( baseDescr instanceof OrDescr && ! overrides(this,baseDescr)) {
             this.descrs.addAll( ((OrDescr)baseDescr).getDescrs() );
         } else {
             this.descrs.add( baseDescr );

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2009-06-10 06:47:23 UTC (rev 26893)
@@ -232,6 +232,12 @@
         
         if (patternDescr.getLabel() != null)
         	pattern.setLabel(patternDescr.getLabel());
+        
+        if (patternDescr.getParams() != null)
+        	pattern.setParams(patternDescr.getParams());
+        
+        if (patternDescr.getPrior() != null)
+        	pattern.setPrior(patternDescr.getPrior());
 
         return pattern;
     }

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2009-06-10 06:47:23 UTC (rev 26893)
@@ -134,6 +134,8 @@
             	rule.setEntailMode(attributeDescr.getValue());
             } else if ( name.equals( "filter_str" ) ) {
             	rule.setFilterStrategy(attributeDescr.getValue());
+            } else if ( name.equals( "kind" ) ) {
+            	rule.setModusPonensKind(attributeDescr.getValue());
             }
             
         }

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-06-10 06:47:23 UTC (rev 26893)
@@ -768,6 +768,7 @@
 	| prior
 	| entail_mode
 	| filter
+	| kind
 	;
 finally {
 	if (isEditorInterfaceEnabled && isFailed) {
@@ -857,10 +858,13 @@
   { emit($STRING, DroolsEditorType.STRING_CONST ); }
   ;
 
+kind
+  : kind_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } STRING
+  { emit($STRING, DroolsEditorType.STRING_CONST ); }
+  ;
 
 
 
-
 normal_lhs_block
 	:	lhs*
 	->	^(VT_AND_IMPLICIT lhs*)
@@ -1272,66 +1276,107 @@
 
 
 
+//or_constr
+//  :             
+//     or_constr_config
+//          
+//        (DOUBLE_PIPE^                        
+//         and_constr
+//        )*
+//        
+//  ;
+//   
+//or_constr_config
+//  :     
+//    (and_constr SINGLE_PIPE) =>
+//      and_constr
+//         SINGLE_PIPE
+//           //square_chunk?
+//           //constr_identifier? 
+//           //cut?
+//           constr_parameters             
+//           and_constr
+//      -> ^(SINGLE_PIPE 
+//            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+//            constr_parameters? 
+//            and_constr and_constr)
+//    |
+//    and_constr      
+//  ;     
+
+
+//
+//and_constr
+//  :       
+//          and_constr_config          
+//          (DOUBLE_AMPER^                        
+//           unary_constr
+//          )*                        
+//  ;
+//  
+//and_constr_config
+//  :     
+//    (unary_constr SINGLE_AMPER) =>
+//      unary_constr
+//         SINGLE_AMPER
+//           //square_chunk?
+//           //constr_identifier?
+//           //cut?
+//           constr_parameters?                 
+//           unary_constr           
+//      -> ^(SINGLE_AMPER 
+//            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+//            constr_parameters? 
+//            unary_constr unary_constr)
+//    |
+//    unary_constr      
+//  ;      
+
+
+
+
+
 or_constr
-  :             
-     or_constr_config
+  :              
+         and_constr          
           
-        (DOUBLE_PIPE^                        
-         and_constr
-        )*
+          (DOUBLE_PIPE^
+            constr_parameters?
+            or_constr_follow
+          )?
         
   ;
    
-or_constr_config
-  :     
-    (and_constr SINGLE_PIPE) =>
-      and_constr
-         SINGLE_PIPE
-           //square_chunk?
-           //constr_identifier? 
-           //cut?
-           constr_parameters             
-           and_constr
-      -> ^(SINGLE_PIPE 
-            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
-            constr_parameters? 
-            and_constr and_constr)
-    |
-    and_constr      
-  ;     
+or_constr_follow
+  : and_constr
+    (DOUBLE_PIPE^
+      or_constr_follow
+    )?
+  ;
 
+
 and_constr
-
-  :       
-          and_constr_config
+  :                 
+          unary_constr          
           
-          (DOUBLE_AMPER^                         
-           unary_constr
-          )*
-                
-           
+          (DOUBLE_AMPER^
+            constr_parameters?
+            and_constr_follow
+          )?
+       //-> ^(VT_AND_RESTR constr_parameters? unary_constr and_constr_follow?)                           
   ;
   
-and_constr_config
-  :     
-    (unary_constr SINGLE_AMPER) =>
-      unary_constr
-         SINGLE_AMPER
-           //square_chunk?
-           //constr_identifier?
-           //cut?
-           constr_parameters?                 
-           unary_constr           
-      -> ^(SINGLE_AMPER 
-            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
-            constr_parameters? 
-            unary_constr unary_constr)
-    |
-    unary_constr      
-  ;      
+and_constr_follow
+  : unary_constr
+    (DOUBLE_AMPER^
+      and_constr_follow
+    )?
+  ;
 
 
 
+
+
 /*
 or_constr
 	:		          
@@ -2745,6 +2790,13 @@
   ;
 
 
+kind_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.KIND))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_KIND[$id]
+  ;
+
+
 salience_key
 	:	{(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))}?=>  id=ID
 	{	emit($id, DroolsEditorType.KEYWORD);	}
@@ -2950,12 +3002,7 @@
   { emit($id, DroolsEditorType.KEYWORD);  }
     ->  VK_CUT[$id]
   ;
-  
-kind_key  
-  : {(validateIdentifierKey(DroolsSoftKeywords.KIND))}?=>  id=ID
-  { emit($id, DroolsEditorType.KEYWORD);  }
-    ->  VK_KIND[$id]
-  ;  
+    
 
 args_key  
   : {(validateIdentifierKey(DroolsSoftKeywords.ARGS))}?=>  id=ID

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-06-10 06:46:19 UTC (rev 26892)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-06-10 06:47:23 UTC (rev 26893)
@@ -207,6 +207,7 @@
 	| ^(attrName=VK_PRIOR value=VT_PAREN_CHUNK)
 	| ^(attrName=VK_ENTAIL value=STRING)
 	| ^(attrName=VK_FILTER value=STRING)
+	| ^(attrName=VK_KIND value=STRING)
 	)
 	{	$attributeDescr = factory.createAttribute($attrName, $value);	}
 	;
@@ -412,7 +413,7 @@
 	|	^((DOUBLE_PIPE | SINGLE_PIPE)  attribs=constraint_attributes? left=fact_expression right=fact_expression )
 	{	$descr = factory.createOrRestrictionConnective($left.descr, $right.descr, attribs); }	
 	  
-	|	^((DOUBLE_AMPER | SINGLE_AMPER) attribs=constraint_attributes? left=fact_expression right=fact_expression )
+	|	^(( DOUBLE_AMPER | SINGLE_AMPER) left=fact_expression attribs=constraint_attributes? right=fact_expression )
 	{	$descr = factory.createAndRestrictionConnective($left.descr, $right.descr, attribs); 
 		
 	} 




More information about the jboss-svn-commits mailing list