diff --git a/src/main/java/models/terms/meta/MetaDependency.java b/src/main/java/models/terms/meta/MetaDependency.java index 6c33ca9..e5798aa 100644 --- a/src/main/java/models/terms/meta/MetaDependency.java +++ b/src/main/java/models/terms/meta/MetaDependency.java @@ -11,7 +11,6 @@ import exceptions.SubstituteFailedException; import exceptions.SyntaxException; import models.algebra.Expression; -import models.algebra.Symbol; import models.algebra.Variable; import models.terms.Dependency; import models.terms.EvaluatableTerm; @@ -45,7 +44,7 @@ } @Override - protected Set isMatchedBy(RDLTerm another, MatchConstraint constraint, int depth) { + public Set isMatchedBy(RDLTerm another, MatchConstraint constraint) { Set result = new HashSet<>(); if (! another.getClass().isAssignableFrom(this.termType.getBaseTermClass())) { return result; @@ -53,16 +52,16 @@ if (isDependencyTerm() && (! islinearRightNormalizedMatchedBy(another))) { return result; } - result = dependingTermMatch(another, constraint, depth); - return dependedTermsMatch(another, result, depth); + result = dependingTermMatch(another, constraint); + return dependedTermsMatch(another, result); } - private Set dependingTermMatch(RDLTerm another, MatchConstraint constraint, int depth) { + private Set dependingTermMatch(RDLTerm another, MatchConstraint constraint) { RDLTerm dependingChild = (RDLTerm) this.getChild(0); RDLTerm anotherDependingChild = (RDLTerm) another.getChild(0); if (dependingChild instanceof MetaRDLTerm) { MetaRDLTerm metaChild = (MetaRDLTerm) dependingChild; - return metaChild.isMatchedBy(anotherDependingChild, constraint, depth + 1); + return metaChild.isMatchedBy(anotherDependingChild, constraint); } else { if (!(dependingChild.equals(anotherDependingChild))) { return new HashSet<>(); @@ -71,7 +70,7 @@ return new HashSet<>(); } - private Set dependedTermsMatch(RDLTerm another, Set constraint, int depth) { + private Set dependedTermsMatch(RDLTerm another, Set constraint) { Set result = new HashSet<>(); for (List perm : Permutation.permutation(another.getChildren().size() - 1)) { Set localResult = new HashSet<>(constraint); @@ -81,7 +80,7 @@ RDLTerm metaDependedTerm = (RDLTerm) getChild(metaTermIndex + 1); RDLTerm anotherDependedTerm = (RDLTerm) another.getChild(anotherTermIndex + 1); if (metaDependedTerm instanceof MetaRDLTerm metaTerm) { - localResult = metaTerm.isMatchedBy(anotherDependedTerm, localResult, depth + 1); + localResult = metaTerm.isMatchedBy(anotherDependedTerm, localResult); if (localResult.isEmpty()) { flg = false; break; diff --git a/src/main/java/models/terms/meta/MetaDependencyTerm.java b/src/main/java/models/terms/meta/MetaDependencyTerm.java index 0f3e0d7..4eb4fb8 100644 --- a/src/main/java/models/terms/meta/MetaDependencyTerm.java +++ b/src/main/java/models/terms/meta/MetaDependencyTerm.java @@ -57,7 +57,7 @@ } @Override - protected Set isMatchedBy(RDLTerm another, MatchConstraint constraint, int depth) { + public Set isMatchedBy(RDLTerm another, MatchConstraint constraint) { Set result = new HashSet<>(); if (! another.getClass().isAssignableFrom(this.termType.getBaseTermClass())) { return result; @@ -65,16 +65,16 @@ if (isDependencyTerm() && (! islinearRightNormalizedMatchedBy(another))) { return result; } - result = dependingTermMatch(another, constraint, depth); - return termPairsMatch(another, result, depth); + result = dependingTermMatch(another, constraint); + return termPairsMatch(another, result); } - private Set dependingTermMatch(RDLTerm another, MatchConstraint constraint, int depth) { + private Set dependingTermMatch(RDLTerm another, MatchConstraint constraint) { RDLTerm dependingChild = (RDLTerm) this.getChild(0); RDLTerm anotherDependingChild = (RDLTerm) another.getChild(0); if (dependingChild instanceof MetaRDLTerm) { MetaRDLTerm metaChild = (MetaRDLTerm) dependingChild; - return metaChild.isMatchedBy(anotherDependingChild, constraint, depth + 1); + return metaChild.isMatchedBy(anotherDependingChild, constraint); } else { if (!(dependingChild.equals(anotherDependingChild))) { return new HashSet<>(); @@ -83,7 +83,7 @@ return new HashSet<>(); } - private Set termPairsMatch(RDLTerm another, Set constraint, int depth) { + private Set termPairsMatch(RDLTerm another, Set constraint) { Set result = new HashSet<>(); for (List perm : Permutation.permutation((another.getChildren().size() - 1) / 2)) { Set localResult = new HashSet<>(constraint); @@ -95,7 +95,7 @@ RDLTerm metaArgTerm = (RDLTerm) getChild(2 * metaTermIndex + 2); RDLTerm anotherArgTerm = (RDLTerm) another.getChild(2 * anotherTermIndex + 2); if (metaDependedTerm instanceof MetaRDLTerm metaTerm) { - localResult = metaTerm.isMatchedBy(anotherDependedTerm, localResult, depth + 1); + localResult = metaTerm.isMatchedBy(anotherDependedTerm, localResult); if (localResult.isEmpty()) { flg = false; break; @@ -107,7 +107,7 @@ } } if (metaArgTerm instanceof MetaRDLTerm metaTerm) { - localResult = metaTerm.isMatchedBy(anotherArgTerm, localResult, depth + 1); + localResult = metaTerm.isMatchedBy(anotherArgTerm, localResult); if (localResult.isEmpty()) { flg = false; break; diff --git a/src/main/java/models/terms/meta/MetaDynaimcDependencyTerm.java b/src/main/java/models/terms/meta/MetaDynaimcDependencyTerm.java index 410e28b..cbcbbef 100644 --- a/src/main/java/models/terms/meta/MetaDynaimcDependencyTerm.java +++ b/src/main/java/models/terms/meta/MetaDynaimcDependencyTerm.java @@ -90,11 +90,11 @@ } @Override - protected Set isMatchedBy(RDLTerm another, Set constraint, int depth) { + public Set isMatchedBy(RDLTerm another, Set constraint) { int maxIndex = another.getMaxIndex(); int maxDepth = another.getMaxDepth(); MetaRDLTerm metaTerm = generate(maxIndex, maxDepth, new HashMap<>()); - return metaTerm.isMatchedBy(another, constraint, depth); + return metaTerm.isMatchedBy(another, constraint); } @Override diff --git a/src/main/java/models/terms/meta/MetaDynamicDependency.java b/src/main/java/models/terms/meta/MetaDynamicDependency.java index e6050b3..9012848 100644 --- a/src/main/java/models/terms/meta/MetaDynamicDependency.java +++ b/src/main/java/models/terms/meta/MetaDynamicDependency.java @@ -62,16 +62,16 @@ @Override - protected Set isMatchedBy(RDLTerm another, MatchConstraint constraint, int depth) { + public Set isMatchedBy(RDLTerm another, MatchConstraint constraint) { int maxIndex = another.getMaxIndex(); int maxDepth = another.getMaxDepth(); MetaRDLTerm metaDep = generate(maxIndex, maxDepth, new HashMap<>()); - return metaDep.isMatchedBy(another, constraint, depth); + return metaDep.isMatchedBy(another, constraint); } @Override protected RDLTerm substitute(Map binding, int depth) { - // TODO 自動生成されたメソッド・スタブ + return null; } diff --git a/src/main/java/models/terms/meta/MetaRDLTerm.java b/src/main/java/models/terms/meta/MetaRDLTerm.java index 7ae4d46..0f23787 100644 --- a/src/main/java/models/terms/meta/MetaRDLTerm.java +++ b/src/main/java/models/terms/meta/MetaRDLTerm.java @@ -6,7 +6,6 @@ import java.util.Set; import lombok.Getter; -import models.algebra.Symbol; import models.algebra.Variable; import models.terms.Dependency; import models.terms.DependencyTerm; @@ -30,26 +29,18 @@ public Set isMatchedBy(RDLTerm another) { - return isMatchedBy(another, MatchConstraint.createDefault(), 0); - } - - public Set isMatchedBy(RDLTerm another, MatchConstraint constraint) { - return isMatchedBy(another, constraint, 0); + return isMatchedBy(another, MatchConstraint.createDefault()); } public Set isMatchedBy(RDLTerm another, Set constraints) { - return isMatchedBy(another, constraints, 0); - } - - protected Set isMatchedBy(RDLTerm another, Set constraints, int depth) { Set result = new HashSet<>(); for (MatchConstraint constraint : constraints) { - result.addAll(isMatchedBy(another, constraint, depth + 1)); + result.addAll(isMatchedBy(another, constraint)); } return result; } - abstract protected Set isMatchedBy(RDLTerm another, MatchConstraint constraint, int depth); + abstract public Set isMatchedBy(RDLTerm another, MatchConstraint constraint); public RDLTerm substitute(Map binding) { diff --git a/src/main/java/models/terms/meta/MetaVariable.java b/src/main/java/models/terms/meta/MetaVariable.java index 89a4bbe..c43bd18 100644 --- a/src/main/java/models/terms/meta/MetaVariable.java +++ b/src/main/java/models/terms/meta/MetaVariable.java @@ -10,7 +10,6 @@ import exceptions.TooManyVariablesException; import lombok.Getter; import models.algebra.Expression; -import models.algebra.Symbol; import models.algebra.Variable; import models.terms.LinearRightNormalizedType; import models.terms.RDLTerm; @@ -76,7 +75,7 @@ } @Override - public Set isMatchedBy(RDLTerm another, MatchConstraint constraint, int depth) { + public Set isMatchedBy(RDLTerm another, MatchConstraint constraint) { Set result = new HashSet<>(); Map binding = constraint.getBinding(); Map orderConstraint = constraint.getOrderConstraint();