[jboss-svn-commits] JBL Code SVN: r27121 - 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 24 19:53:19 EDT 2009
Author: dsotty
Date: 2009-06-24 19:53:18 -0400 (Wed, 24 Jun 2009)
New Revision: 27121
Modified:
labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.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/lang/descr/RestrictionConnectiveDescr.java
labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.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/DescrFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-06-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2009-06-24 23:53:18 UTC (rev 27121)
@@ -1495,6 +1495,37 @@
}
+
+ public BaseDescr createXorRestrictionConnective(BaseDescr left,
+ BaseDescr right, List<AttributeDescr> attribs) {
+
+ BaseDescr xor = createXorRestrictionConnective(left, right);
+ fillWithAttribs(xor, attribs);
+
+ return xor;
+ }
+
+ public BaseDescr createXorRestrictionConnective(BaseDescr left,
+ BaseDescr right) {
+ BaseDescr xor = null;
+ if (left instanceof RestrictionDescr
+ && !(left instanceof PredicateDescr)) {
+ RestrictionConnectiveDescr restXor = new RestrictionConnectiveDescr(
+ RestrictionConnectiveDescr.XOR);
+ restXor.addOrMerge((RestrictionDescr) left);
+ restXor.addOrMerge((RestrictionDescr) right);
+ xor = restXor;
+ } else {
+ XorDescr consXor = new XorDescr();
+ consXor.addOrMerge(left);
+ consXor.addOrMerge(right);
+ xor = consXor;
+ }
+
+ return xor;
+ }
+
+
public BaseDescr createAndRestrictionConnective(BaseDescr left,
BaseDescr right, List<AttributeDescr> attribs) {
// Map<String,String> atts = buildAttributes(attribs);
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-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/OrDescr.java 2009-06-24 23:53:18 UTC (rev 27121)
@@ -59,7 +59,11 @@
}
}
}
+
+
+
+
public void insertDescr(int index,
final BaseDescr baseDescr) {
if( baseDescr instanceof FieldBindingDescr ) {
@@ -85,7 +89,7 @@
addDescr( descr );
}
} else {
- this.descrs.add( baseDescr );
+ addDescr( baseDescr );
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java 2009-06-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java 2009-06-24 23:53:18 UTC (rev 27121)
@@ -17,6 +17,7 @@
public final static RestrictionConnectiveType AND = RestrictionConnectiveType.AND;
public final static RestrictionConnectiveType OR = RestrictionConnectiveType.OR;
+ public final static RestrictionConnectiveType XOR = RestrictionConnectiveType.XOR;
private RestrictionConnectiveType connective;
private List<RestrictionDescr> restrictions;
@@ -81,7 +82,13 @@
public String toString() {
return "||";
}
+ },
+ XOR {
+ public String toString() {
+ return "^^";
+ }
};
+
}
public boolean isCutter() {
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-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2009-06-24 23:53:18 UTC (rev 27121)
@@ -52,6 +52,7 @@
import org.drools.lang.descr.ReturnValueRestrictionDescr;
import org.drools.lang.descr.SlidingWindowDescr;
import org.drools.lang.descr.VariableRestrictionDescr;
+import org.drools.lang.descr.XorDescr;
import org.drools.rule.AbstractCompositeConstraint;
import org.drools.rule.AbstractCompositeRestriction;
import org.drools.rule.AndCompositeRestriction;
@@ -74,6 +75,8 @@
import org.drools.rule.SlidingTimeWindow;
import org.drools.rule.VariableConstraint;
import org.drools.rule.VariableRestriction;
+import org.drools.rule.XorCompositeRestriction;
+import org.drools.rule.XorConstraint;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.spi.AcceptsReadAccessor;
import org.drools.spi.Constraint;
@@ -289,6 +292,27 @@
and.setCutter(cutter);
and.setLabel(label);
and.setParams(((AndDescr) constraint ).getParams());
+ } else if ( constraint instanceof XorDescr ) {
+ XorConstraint xor = new XorConstraint();
+ for ( Iterator it = ((XorDescr) constraint).getDescrs().iterator(); it.hasNext(); ) {
+ this.buildConstraint( context,
+ pattern,
+ it.next(),
+ xor );
+ }
+
+ if ( container == null ) {
+ pattern.addConstraint( xor );
+ } else {
+ if ( xor.getType().equals( Constraint.ConstraintType.UNKNOWN ) ) {
+ this.setConstraintType( pattern,
+ (MutableTypeConstraint) xor );
+ }
+ container.addConstraint( xor );
+ }
+ xor.setCutter(cutter);
+ xor.setLabel(label);
+ xor.setParams(((XorDescr) constraint ).getParams());
} else if ( constraint instanceof OrDescr ) {
OrConstraint or = new OrConstraint();
for ( Iterator it = ((OrDescr) constraint).getDescrs().iterator(); it.hasNext(); ) {
@@ -564,6 +588,8 @@
composite = new AndCompositeRestriction( restrictions );
} else if ( top.getConnective() == RestrictionConnectiveDescr.OR ) {
composite = new OrCompositeRestriction( restrictions );
+ } else if ( top.getConnective() == RestrictionConnectiveDescr.XOR ) {
+ composite = new XorCompositeRestriction( restrictions );
} else {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
fieldConstraintDescr,
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-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-06-24 23:53:18 UTC (rev 27121)
@@ -1270,82 +1270,41 @@
;
constraint
- : or_constr
+ : or_constr
;
+xor_constr
+ :
+ and_constr
+ xor_key^
+ and_constr
+ ;
-//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
- :
- and_constr
-
- (DOUBLE_PIPE^
- constr_parameters?
- or_constr_follow
- )?
+ :
+ and_constr
+ or_sequitur^?
+
+
;
+
+
+
+or_sequitur
+ : (DOUBLE_PIPE^
+ constr_parameters?
+ or_constr_follow
+ )
+ | (DOUBLE_XOR^
+ and_constr)
+
+ ;
+
+
+
or_constr_follow
: and_constr
@@ -3220,6 +3179,10 @@
: '&&'
;
+DOUBLE_XOR
+ : '^^'
+ ;
+
DOUBLE_PIPE
: '||'
;
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-24 18:36:20 UTC (rev 27120)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-06-24 23:53:18 UTC (rev 27121)
@@ -414,9 +414,11 @@
{ $descr = factory.createOrRestrictionConnective($left.descr, $right.descr, attribs); }
| ^(( DOUBLE_AMPER | SINGLE_AMPER) left=fact_expression attribs=constraint_attributes? right=fact_expression )
- { $descr = factory.createAndRestrictionConnective($left.descr, $right.descr, attribs);
-
- }
+ { $descr = factory.createAndRestrictionConnective($left.descr, $right.descr, attribs); }
+
+ | ^(( DOUBLE_XOR | SINGLE_XOR) left=fact_expression attribs=constraint_attributes? right=fact_expression )
+ { $descr = factory.createXorRestrictionConnective($left.descr, $right.descr, attribs); }
+
| ^(VT_ACCESSOR_PATH (ae=accessor_element {exprList.add($ae.element);})+)
{ $descr = factory.createAccessorPath(exprList); }
More information about the jboss-svn-commits
mailing list