diff --git a/EDG/src/main/java/edg/constraint/AccessConstraint.java b/EDG/src/main/java/edg/constraint/AccessConstraint.java index efbf3199ca523e3f4875427f5e0255a2ab0c24f0..55e9c64dba452914b22e5481c8ee155d60906e52 100644 --- a/EDG/src/main/java/edg/constraint/AccessConstraint.java +++ b/EDG/src/main/java/edg/constraint/AccessConstraint.java @@ -89,9 +89,6 @@ public abstract class AccessConstraint extends EdgeConstraint { return super.wrap(super.push(phase, constraints)); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) { - return super.wrap(); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth){ if (this.operation == Operation.Add) return super.wrap(super.push(phase, constraints)); diff --git a/EDG/src/main/java/edg/constraint/AddNodeConstraint.java b/EDG/src/main/java/edg/constraint/AddNodeConstraint.java index fe68e840400251936360d3495ebf7c2fdd28fdd8..8c5cc3001fae4500002a18f638ed8b9dc14b2c17 100644 --- a/EDG/src/main/java/edg/constraint/AddNodeConstraint.java +++ b/EDG/src/main/java/edg/constraint/AddNodeConstraint.java @@ -40,10 +40,7 @@ public class AddNodeConstraint extends EdgeConstraint { constraints.nodeConstraints.add(this.nodeConstraint); return super.wrap(constraints); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) { - constraints.nodeConstraints.add(this.nodeConstraint); - return super.wrap(constraints); - } + protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth) { constraints.nodeConstraints.add(this.nodeConstraint); return super.wrap(constraints); diff --git a/EDG/src/main/java/edg/constraint/AsteriskConstraint.java b/EDG/src/main/java/edg/constraint/AsteriskConstraint.java index 76919abf6cf571d4bb7f76b648d2162d1bf1c425..e65566d80a0abcc4371468b09e79b04adcf631e0 100644 --- a/EDG/src/main/java/edg/constraint/AsteriskConstraint.java +++ b/EDG/src/main/java/edg/constraint/AsteriskConstraint.java @@ -56,25 +56,7 @@ public class AsteriskConstraint extends EdgeConstraint final EdgeConstraint peekConstraint = newConstraints.peekEdgeConstraint(); return super.resolve(phase, edg, edge, newConstraints, peekConstraint, productionDepth); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) { - if (phase.isInstanceof(Phase.Slicing)) - return super.wrap(new Constraints()); - super.check(phase, Phase.SummaryGeneration); - - if (existsPreviousAsteriskConstraint(constraints)) - return super.wrap(this.popToAsteriskConstraint(constraints)); - - if (topConstraint.getConstraint().operation == AccessConstraint.Operation.Remove) - return super.wrap(super.push(phase, constraints)); - super.check(topConstraint.getConstraint().operation, AccessConstraint.Operation.Add); - final Constraints newConstraints = super.pop(constraints); - if (newConstraints.isEdgeConstraintsEmpty()) - return super.wrap(newConstraints); - - final EdgeConstraint peekConstraint = newConstraints.peekEdgeConstraint(); - return super.resolve(phase, edg, edge, newConstraints, peekConstraint, productionDepth); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth) { if (phase.isInstanceof(Phase.Slicing)) return super.wrap(new Constraints()); diff --git a/EDG/src/main/java/edg/constraint/EdgeConstraint.java b/EDG/src/main/java/edg/constraint/EdgeConstraint.java index a5152442e3844a4478ef614e29a1c3f404e6e7a3..d31c79b7017afd7bffd625b796f55cbcae06076c 100644 --- a/EDG/src/main/java/edg/constraint/EdgeConstraint.java +++ b/EDG/src/main/java/edg/constraint/EdgeConstraint.java @@ -17,8 +17,6 @@ public abstract class EdgeConstraint extends Constraint return this.resolve(phase, edg, edge, constraints, (ListComprehensionConstraint) topConstraint, productionDepth); else if (topConstraint instanceof AccessConstraint) return this.resolve(phase, edg, edge, constraints, (AccessConstraint) topConstraint, productionDepth); - else if (topConstraint instanceof StructuralConstraint) - return this.resolve(phase, edg, edge, constraints, (StructuralConstraint) topConstraint, productionDepth); else if (topConstraint instanceof LiteralConstraint) return this.resolve(phase, edg, edge, constraints, (LiteralConstraint) topConstraint, productionDepth); else if (topConstraint instanceof EmptyConstraint) @@ -37,7 +35,6 @@ public abstract class EdgeConstraint extends Constraint protected abstract List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, int productionDepth); protected abstract List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, AccessConstraint topConstraint, int productionDepth); - protected abstract List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth); protected abstract List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth); protected final List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, AddNodeConstraint topConstraint, int productionDepth) diff --git a/EDG/src/main/java/edg/constraint/EmptyConstraint.java b/EDG/src/main/java/edg/constraint/EmptyConstraint.java index ddc0683d22be1d9233428e73c64688c4df6d58f9..926b6fce06bc03cb39eaffa8b371d5f98e3e9cd8 100644 --- a/EDG/src/main/java/edg/constraint/EmptyConstraint.java +++ b/EDG/src/main/java/edg/constraint/EmptyConstraint.java @@ -36,10 +36,6 @@ public class EmptyConstraint extends EdgeConstraint { return super.wrap(constraints); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) - { - return super.wrap(constraints); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth){ return super.wrap(constraints); } diff --git a/EDG/src/main/java/edg/constraint/GrammarConstraint.java b/EDG/src/main/java/edg/constraint/GrammarConstraint.java index 6adb4973157e1faa8bb5cf2c3a9d8cce2e832c71..e84885216ecae8ce93d5bdd0cf1e0dbddc76b1a3 100644 --- a/EDG/src/main/java/edg/constraint/GrammarConstraint.java +++ b/EDG/src/main/java/edg/constraint/GrammarConstraint.java @@ -76,13 +76,6 @@ public class GrammarConstraint extends EdgeConstraint { super.check(phase, Phase.SummaryGeneration); return super.wrap(super.push(phase, constraints)); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) - { - if (phase.isInstanceof(Phase.Slicing)) - return this.resolveProductions(phase, edg, edge, constraints, productionDepth); - super.check(phase, Phase.SummaryGeneration); - return super.wrap(super.push(phase, constraints)); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth){ if (phase.isInstanceof(Phase.Slicing)) return this.resolveProductions(phase, edg, edge, constraints, productionDepth); diff --git a/EDG/src/main/java/edg/constraint/ListComprehensionConstraint.java b/EDG/src/main/java/edg/constraint/ListComprehensionConstraint.java index ffaa91af2a93195c391b3852aaef34f6d4cd5a1f..347cf38bbb04f1feaaa00052e16f3a5a69595358 100644 --- a/EDG/src/main/java/edg/constraint/ListComprehensionConstraint.java +++ b/EDG/src/main/java/edg/constraint/ListComprehensionConstraint.java @@ -69,12 +69,6 @@ public class ListComprehensionConstraint extends AccessConstraint { return super.wrap(super.push(phase, constraints)); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) { - if (this.operation == Operation.Add) - return super.wrap(super.push(phase, constraints)); - return super.wrap(); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, ListComprehensionConstraint topConstraint, int productionDepth) { if (topConstraint.operation == Operation.Add && this.cancels(topConstraint)) diff --git a/EDG/src/main/java/edg/constraint/ListConstraint.java b/EDG/src/main/java/edg/constraint/ListConstraint.java index a6f2ada346c4e9153332ca78b9da98c813ed04b3..e28aa60023b18ca2eb1855f475a05733e896a24c 100644 --- a/EDG/src/main/java/edg/constraint/ListConstraint.java +++ b/EDG/src/main/java/edg/constraint/ListConstraint.java @@ -2,7 +2,7 @@ package edg.constraint; public class ListConstraint extends AccessConstraint { - public enum Position { H, T, S, HS } + public enum Position { H, T, S} // H -> Head // T -> Tail // S -> Structure: Interested in the list structure but not in its elements (Only positive constraints) diff --git a/EDG/src/main/java/edg/constraint/LiteralConstraint.java b/EDG/src/main/java/edg/constraint/LiteralConstraint.java index a0938f090cf5518c67af9b298b39869aa9da7a50..a2ab32afd03b4c1d1781373be7645f7301788872 100644 --- a/EDG/src/main/java/edg/constraint/LiteralConstraint.java +++ b/EDG/src/main/java/edg/constraint/LiteralConstraint.java @@ -35,13 +35,8 @@ public class LiteralConstraint extends EdgeConstraint { { return super.wrap(super.push(phase, constraints)); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) - { - return super.wrap(); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth){ return super.wrap(constraints); - // throw new IllegalStateException("There is no situation where 2 literal constraints are stacked consecutively."); } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, GrammarConstraint topConstraint, int productionDepth) diff --git a/EDG/src/main/java/edg/constraint/PhaseConstraint.java b/EDG/src/main/java/edg/constraint/PhaseConstraint.java index 3e4cfbb0239a30823940e3af7761ff7b13bcd0ad..b589580da562ffa2ac87c9b98de447a6efb42baf 100644 --- a/EDG/src/main/java/edg/constraint/PhaseConstraint.java +++ b/EDG/src/main/java/edg/constraint/PhaseConstraint.java @@ -53,12 +53,7 @@ public class PhaseConstraint extends EdgeConstraint { return super.wrap(constraints); return super.wrap(); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) - { - if (this.allows(phase)) - return super.wrap(constraints); - return super.wrap(); - } + protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth) { if (this.allows(phase)) diff --git a/EDG/src/main/java/edg/constraint/SeekingConstraint.java b/EDG/src/main/java/edg/constraint/SeekingConstraint.java index 1f2beca3b6c423bff78246be734f8a568432b161..dc8cbcdaeb4f1db12fb3ba11384811d382bbd739 100644 --- a/EDG/src/main/java/edg/constraint/SeekingConstraint.java +++ b/EDG/src/main/java/edg/constraint/SeekingConstraint.java @@ -97,10 +97,6 @@ public abstract class SeekingConstraint extends EdgeConstraint { return super.wrap(super.push(phase, constraints)); return super.wrap(); } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) - { - throw new IllegalStateException("Scenario not evaluated"); - } protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth){ throw new IllegalStateException("Scenario not evaluated"); } diff --git a/EDG/src/main/java/edg/constraint/StructuralConstraint.java b/EDG/src/main/java/edg/constraint/StructuralConstraint.java deleted file mode 100644 index ae37b719a1a8291a2a12efbc379251df96279e7f..0000000000000000000000000000000000000000 --- a/EDG/src/main/java/edg/constraint/StructuralConstraint.java +++ /dev/null @@ -1,101 +0,0 @@ -package edg.constraint; - -import edg.graph.EDG; -import edg.graph.Edge; -import edg.slicing.Phase; -import edg.constraint.AccessConstraint.Operation; - -import java.util.List; - -public class StructuralConstraint extends EdgeConstraint { - private AccessConstraint constraint; - - public StructuralConstraint(Operation operation, String index) { - constraint = new DataConstructorConstraint(operation, index + "S"); - } - - public StructuralConstraint(Operation operation, ListConstraint.Position position) { - constraint = new ListConstraint(operation, ListConstraint.Position.HS); - } - - private StructuralConstraint(AccessConstraint constraint) { - this.constraint = constraint; - } - - public AccessConstraint getConstraint() { - return this.constraint; - } - - public boolean equals(Object object) { - if (object == this) - return true; - if (!(object instanceof StructuralConstraint)) - return false; - - final StructuralConstraint sConstraint = (StructuralConstraint) object; - return this.constraint.equals(sConstraint.getConstraint()); - } - - public String toString() { - return this.constraint.toString(); - } - - public boolean cancels(StructuralConstraint constraint){ - return this.equals(constraint.opposite()); - } - - public StructuralConstraint opposite() { - final AccessConstraint opposite = this.constraint.opposite(); - return new StructuralConstraint(opposite); - } - - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, int productionDepth) { - if (this.constraint.operation == Operation.Add) - return super.wrap(super.push(phase, constraints)); - super.check(this.constraint.operation, Operation.Remove); - if (phase.isInstanceof(Phase.Slicing)) - return super.wrap(); - super.check(phase, Phase.SummaryGeneration); - return super.wrap(super.push(phase, constraints)); - } - - - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, AccessConstraint topConstraint, int productionDepth) { - throw new IllegalStateException("This combination of constraints is illegal"); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, StructuralConstraint topConstraint, int productionDepth) { - if (topConstraint.constraint.operation == Operation.Add) - { - if (this.constraint.operation == Operation.Add) - return super.wrap(super.push(phase, constraints)); - if (!constraints.nodeConstraints.isEmpty()) - throw new IllegalStateException("NodeConstraints cannot be stacked in this implementation"); - Constraint bottomConstraint = constraints.edgeConstraints.firstElement(); - if (!(bottomConstraint instanceof StructuralConstraint)) - throw new IllegalStateException("The bottom constraint must be a Structural Constraint"); - StructuralConstraint headConstraint = (StructuralConstraint) bottomConstraint; - if (this.cancels(headConstraint)) { - constraints.edgeConstraints.remove(0); - return super.wrap(constraints); - } - return super.wrap(); - } - - super.check(topConstraint.constraint.operation, Operation.Remove); - super.check(phase, Phase.SummaryGeneration); - - return super.wrap(super.push(phase, constraints)); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, LiteralConstraint topConstraint, int productionDepth) { - throw new IllegalStateException("This combination of constraints is illegal"); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, SeekingConstraint topConstraint, int productionDepth) { - throw new IllegalStateException("This combination of constraints is illegal"); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, AsteriskConstraint topConstraint, int productionDepth) { - throw new IllegalStateException("This combination of constraints is illegal"); - } - protected List resolve(Phase phase, EDG edg, Edge edge, Constraints constraints, GrammarConstraint topConstraint, int productionDepth) { - throw new IllegalStateException("This combination of constraints is illegal"); - } -} \ No newline at end of file diff --git a/EDG/src/main/java/edg/graph/Edge.java b/EDG/src/main/java/edg/graph/Edge.java index 83e8a1c0ae4547b0b362676f2b8cd5a46351c56b..de5e6fc2c93d6af4945d732062611f9490b852c3 100644 --- a/EDG/src/main/java/edg/graph/Edge.java +++ b/EDG/src/main/java/edg/graph/Edge.java @@ -16,8 +16,7 @@ public class Edge Call, Input, Output, Summary, Exception, TotalDefinition, ObjectFlow, - Class, CallReq, - ValueStructure + Class, CallReq } private boolean mark; diff --git a/EDG/src/main/java/edg/graph/Grammar.java b/EDG/src/main/java/edg/graph/Grammar.java index 3444c06cbddfbcbf8a85c9fd0424ae171eba490c..f1f06f724cbbf091ac346300775753d7740d5571 100644 --- a/EDG/src/main/java/edg/graph/Grammar.java +++ b/EDG/src/main/java/edg/graph/Grammar.java @@ -1,6 +1,5 @@ package edg.graph; -import edg.constraint.Constraints; import edg.constraint.GrammarConstraint; import java.util.HashMap; @@ -57,10 +56,6 @@ public class Grammar return this.grammarConstraints.get(grammarConstraint.getRefNode()) == null; } - public Map getGrammarConstraints(){ - return grammarConstraints; - } - public boolean removeControlReachingProductions(GrammarConstraint grammarConstraint) { if (!grammarConstraint.isFlowReached()) return false;