public class UsageAnalysis {
public static void analyzeUsage(CHRRuleset ruleset) {
THashMap<CHRConstraint,ArrayList<CHRRule>> headConstraintMap = createHeadConstraintMap(ruleset);
public class UsageAnalysis {
public static void analyzeUsage(CHRRuleset ruleset) {
THashMap<CHRConstraint,ArrayList<CHRRule>> headConstraintMap = createHeadConstraintMap(ruleset);
- for(CHRRule rule : ruleset.rules)
- determinePassiveLiterals(rule);
+ if(!ruleset.extensible)
+ for(CHRRule rule : ruleset.rules)
+ determinePassiveLiterals(rule);
private static void calculateFirstPriorities(CHRRuleset ruleset,
THashMap<CHRConstraint, ArrayList<CHRRule>> headConstraintMap) {
for(CHRRule rule : ruleset.rules)
private static void calculateFirstPriorities(CHRRuleset ruleset,
THashMap<CHRConstraint, ArrayList<CHRRule>> headConstraintMap) {
for(CHRRule rule : ruleset.rules)
}
rule.firstPriorityExecuted = result;
for(CHRLiteral literal : rule.head.literals)
if(literal.killAfterMatch && literal.relation instanceof CHRConstraint) {
CHRConstraint constraint = (CHRConstraint)literal.relation;
}
rule.firstPriorityExecuted = result;
for(CHRLiteral literal : rule.head.literals)
if(literal.killAfterMatch && literal.relation instanceof CHRConstraint) {
CHRConstraint constraint = (CHRConstraint)literal.relation;
- if(constraint.firstPriorityRemoved != Integer.MAX_VALUE)
- continue;
- constraint.firstPriorityRemoved = result;
+ if(constraint.firstPriorityRemoved == Integer.MAX_VALUE)
+ constraint.firstPriorityRemoved = result;
private static void calculateLastPriorities(CHRRuleset ruleset,
THashMap<CHRConstraint, ArrayList<CHRRule>> headConstraintMap) {
for(CHRRule rule : ruleset.rules)
rule.lastPriorityExecuted = Integer.MIN_VALUE;
private static void calculateLastPriorities(CHRRuleset ruleset,
THashMap<CHRConstraint, ArrayList<CHRRule>> headConstraintMap) {
for(CHRRule rule : ruleset.rules)
rule.lastPriorityExecuted = Integer.MIN_VALUE;
constraint.lastPriorityAdded = Integer.MIN_VALUE;
constraint.lastPriorityRemoved = Integer.MIN_VALUE;
}
constraint.lastPriorityAdded = Integer.MIN_VALUE;
constraint.lastPriorityRemoved = Integer.MIN_VALUE;
}
for(CHRLiteral literal : rule.head.literals)
if(literal.killAfterMatch && literal.relation instanceof CHRConstraint) {
CHRConstraint constraint = (CHRConstraint)literal.relation;
for(CHRLiteral literal : rule.head.literals)
if(literal.killAfterMatch && literal.relation instanceof CHRConstraint) {
CHRConstraint constraint = (CHRConstraint)literal.relation;
- if(constraint.lastPriorityRemoved != Integer.MIN_VALUE)
- continue;
- constraint.lastPriorityRemoved = priority;
+ if(constraint.lastPriorityRemoved == Integer.MIN_VALUE)
+ constraint.lastPriorityRemoved = priority;
System.out.println("-------------------------------");
for(CHRConstraint constraint : ruleset.constraints) {
System.out.print(" [" + constraint.firstPriorityAdded + ".." + constraint.lastPriorityAdded + "]");
System.out.println("-------------------------------");
for(CHRConstraint constraint : ruleset.constraints) {
System.out.print(" [" + constraint.firstPriorityAdded + ".." + constraint.lastPriorityAdded + "]");
System.out.print(" [" + rule.firstPriorityExecuted + ".." + rule.lastPriorityExecuted + "] ");
System.out.println(rule);
}
System.out.print(" [" + rule.firstPriorityExecuted + ".." + rule.lastPriorityExecuted + "] ");
System.out.println(rule);
}
private static void determinePassiveLiterals(CHRRule rule) {
for(CHRLiteral literal : rule.head.literals) {
private static void determinePassiveLiterals(CHRRule rule) {
for(CHRLiteral literal : rule.head.literals) {