From 1f69c464c78b106f89d84c1c5f3209fb1e48ed12 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Thu, 18 Dec 2003 19:23:26 +0000 Subject: [PATCH] Updates --- .../MCC/IR/ComparisonPredicate.java | 4 + Repair/RepairCompiler/MCC/IR/Conjunction.java | 43 +++++++ Repair/RepairCompiler/MCC/IR/Constraint.java | 4 +- .../RepairCompiler/MCC/IR/DNFConstraint.java | 76 +++++++++++ Repair/RepairCompiler/MCC/IR/DNFExpr.java | 19 +++ .../RepairCompiler/MCC/IR/DNFPredicate.java | 21 ++++ Repair/RepairCompiler/MCC/IR/DNFRule.java | 76 +++++++++++ .../MCC/IR/DependencyBuilder.java | 2 +- Repair/RepairCompiler/MCC/IR/Expr.java | 4 + .../RepairCompiler/MCC/IR/ExprPredicate.java | 5 +- .../RepairCompiler/MCC/IR/ImplicitSchema.java | 119 ++++++++++++++++++ .../MCC/IR/InclusionPredicate.java | 15 ++- .../RepairCompiler/MCC/IR/LogicStatement.java | 16 ++- Repair/RepairCompiler/MCC/IR/OpExpr.java | 17 +++ Repair/RepairCompiler/MCC/IR/Optimizer.java | 1 - Repair/RepairCompiler/MCC/IR/Predicate.java | 4 + .../MCC/IR/RuleConjunction.java | 43 +++++++ .../MCC/IR/SemanticChecker.java | 5 +- Repair/RepairCompiler/MCC/IR/SetAnalysis.java | 76 +++++++++++ .../MCC/IR/SizeofPredicate.java | 23 ++++ Repair/RepairCompiler/MCC/IR/Termination.java | 93 ++++++++++++++ 21 files changed, 657 insertions(+), 9 deletions(-) create mode 100755 Repair/RepairCompiler/MCC/IR/Conjunction.java create mode 100755 Repair/RepairCompiler/MCC/IR/DNFConstraint.java create mode 100755 Repair/RepairCompiler/MCC/IR/DNFExpr.java create mode 100755 Repair/RepairCompiler/MCC/IR/DNFPredicate.java create mode 100755 Repair/RepairCompiler/MCC/IR/DNFRule.java create mode 100755 Repair/RepairCompiler/MCC/IR/ImplicitSchema.java create mode 100755 Repair/RepairCompiler/MCC/IR/RuleConjunction.java create mode 100755 Repair/RepairCompiler/MCC/IR/SetAnalysis.java create mode 100755 Repair/RepairCompiler/MCC/IR/Termination.java diff --git a/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java b/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java index 54b64ad..63390e9 100755 --- a/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java +++ b/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java @@ -34,6 +34,10 @@ public class ComparisonPredicate extends Predicate { return v; } + public int[] getRepairs(boolean negated) { + return new int[] {AbstractRepair.MODIFYRELATION}; + } + public void generate(CodeWriter writer, VarDescriptor vd) { // get (first) value for quantifer.relation ... then do comparison with expr... // can this be maybe? i guess if quantifer.relation is empty diff --git a/Repair/RepairCompiler/MCC/IR/Conjunction.java b/Repair/RepairCompiler/MCC/IR/Conjunction.java new file mode 100755 index 0000000..82e115f --- /dev/null +++ b/Repair/RepairCompiler/MCC/IR/Conjunction.java @@ -0,0 +1,43 @@ +package MCC.IR; +import java.util.*; + +public class Conjunction { + + Vector predicates; + public Conjunction(DNFPredicate pred) { + predicates=new Vector(); + predicates.add(pred); + } + Conjunction(Vector preds){ + predicates=preds ; + } + + int size() { + return predicates.size(); + } + + DNFPredicate get(int i) { + return (DNFPredicate) predicates.get(i); + } + + void add(DNFPredicate dp) { + predicates.add(dp); + } + + public Conjunction append(Conjunction c) { + Conjunction copy=copy(); + for(int i=0;irule dependencies */ diff --git a/Repair/RepairCompiler/MCC/IR/Expr.java b/Repair/RepairCompiler/MCC/IR/Expr.java index 1e7fd14..cd82227 100755 --- a/Repair/RepairCompiler/MCC/IR/Expr.java +++ b/Repair/RepairCompiler/MCC/IR/Expr.java @@ -25,4 +25,8 @@ public abstract class Expr { throw new IRException("unsupported"); } + public DNFRule constructDNF() { + return new DNFRule(this); + } + } diff --git a/Repair/RepairCompiler/MCC/IR/ExprPredicate.java b/Repair/RepairCompiler/MCC/IR/ExprPredicate.java index 4508867..3242de1 100755 --- a/Repair/RepairCompiler/MCC/IR/ExprPredicate.java +++ b/Repair/RepairCompiler/MCC/IR/ExprPredicate.java @@ -25,6 +25,9 @@ public class ExprPredicate extends Predicate { public void generate(CodeWriter writer, VarDescriptor dest) { expr.generate(writer, dest); } - + + public int[] getRepairs(boolean negated) { + return new int[] {}; + } } diff --git a/Repair/RepairCompiler/MCC/IR/ImplicitSchema.java b/Repair/RepairCompiler/MCC/IR/ImplicitSchema.java new file mode 100755 index 0000000..adea1ff --- /dev/null +++ b/Repair/RepairCompiler/MCC/IR/ImplicitSchema.java @@ -0,0 +1,119 @@ +package MCC.IR; +import MCC.State; +import java.util.*; + +public class ImplicitSchema { + State state; + SetAnalysis setanalysis; + public ImplicitSchema(State state) { + this.state=state; + this.setanalysis=new SetAnalysis(state); + } + + public void update() { + updaterules(); + updateconstraints(); + updaterelationconstraints(); + } + + void updaterelationconstraints() { + Vector reldescriptors=state.stRelations.getAllDescriptors(); + for(int i=0;i