diff --git a/src/models/meta/MetaDependencyTermVariable.java b/src/models/meta/MetaDependencyTermVariable.java new file mode 100644 index 0000000..02b184e --- /dev/null +++ b/src/models/meta/MetaDependencyTermVariable.java @@ -0,0 +1,11 @@ +package models.meta; + +import models.algebra.Symbol; + +public class MetaDependencyTermVariable extends MetaRDLTerm { + + public MetaDependencyTermVariable(int order) { + super(new Symbol(":", 3), order, MetaRDLTerm.TermType.META_DEPENDENCY_TERM_VARIABLE); + } + +} diff --git a/src/models/meta/MetaDependencyVariable.java b/src/models/meta/MetaDependencyVariable.java new file mode 100644 index 0000000..aa48210 --- /dev/null +++ b/src/models/meta/MetaDependencyVariable.java @@ -0,0 +1,11 @@ +package models.meta; + +import models.algebra.Symbol; + +public class MetaDependencyVariable extends MetaRDLTerm { + + public MetaDependencyVariable(int order) { + super(new Symbol(":", 2), order, MetaRDLTerm.TermType.META_DEPENDENCY_VARIABLE); + } + +} diff --git a/src/models/meta/MetaRDLTerm.java b/src/models/meta/MetaRDLTerm.java new file mode 100644 index 0000000..d7351a0 --- /dev/null +++ b/src/models/meta/MetaRDLTerm.java @@ -0,0 +1,88 @@ +package models.meta; + +import lombok.Getter; +import models.Dependency; +import models.EvaluatableTerm; +import models.RDLTerm; +import models.ResourceVariable; +import models.algebra.Symbol; + +@Getter +public class MetaRDLTerm extends RDLTerm { + + protected static enum TermType { + META_DEPENDENCY, + META_DEPENDENCY_VARIABLE, + META_DEPENDENCY_TERM, + META_DEPENDENCY_TERM_VARIABLE, + META_EVALUATABLE_TERM_VARIABLE, + META_RESOURCE_VARIABLE; + } + + protected TermType termType; + + protected MetaRDLTerm(Symbol symbol, int order, TermType termType) { + super(symbol, order); + this.termType = termType; + } + + //dependency + public MetaRDLTerm(RDLTerm dependingTerm, MetaResourceVariable dependedVariable) { + super(new Symbol(":", 2), dependedVariable.getOrder()); + addChild(dependingTerm); + addChild(dependedVariable); + this.termType = TermType.META_DEPENDENCY; + } + + public MetaRDLTerm(MetaRDLTerm dependingTerm, ResourceVariable dependedVariable) { + super(new Symbol(":", 2), dependedVariable.getOrder()); + addChild(dependingTerm); + addChild(dependedVariable); + this.termType = TermType.META_DEPENDENCY; + } + + //list type dependency + public MetaRDLTerm(MetaRDLTerm dependency) { + super(new Symbol(":", 1), dependency.getOrder() - 1); + addChild(dependency); + this.termType = TermType.META_DEPENDENCY; + } + + //dependency term + public MetaRDLTerm(Dependency dependency, MetaRDLTerm argumentVariable) { + super( + new Symbol(":", 3), + dependency.getDependedVariable().getOrder() == argumentVariable.getOrder() + ? dependency.getDependedVariable().getOrder() + : dependency.getDependedVariable().getOrder() - 1 + ); + addChild(dependency.getDependingTerm()); + addChild(dependency.getDependedVariable()); + addChild(argumentVariable); + this.termType = TermType.META_DEPENDENCY_TERM; + } + + public MetaRDLTerm(MetaRDLTerm dependency, EvaluatableTerm argumentVariable) { + super( + new Symbol(":", 3), + ((RDLTerm) dependency.getChild(1)).getOrder() == argumentVariable.getOrder() + ? ((RDLTerm) dependency.getChild(1)).getOrder() + : ((RDLTerm) dependency.getChild(1)).getOrder() - 1 + ); + addChild(dependency.getChild(0)); + addChild(dependency.getChild(1)); + addChild(argumentVariable); + this.termType = TermType.META_DEPENDENCY_TERM; + } + + @Override + public String toString() { + return null; + } + + @Override + public String toStringWithOrder() { + return null; + } + +} diff --git a/src/models/meta/MetaResourceVariable.java b/src/models/meta/MetaResourceVariable.java new file mode 100644 index 0000000..e849e85 --- /dev/null +++ b/src/models/meta/MetaResourceVariable.java @@ -0,0 +1,11 @@ +package models.meta; + +import models.algebra.Symbol; + +public class MetaResourceVariable extends MetaRDLTerm { + + protected MetaResourceVariable(int order) { + super(new Symbol("", 0), order, MetaRDLTerm.TermType.META_RESOURCE_VARIABLE); + } + +}