diff --git a/src/models/terms/meta/MetaEvaluatableTermSet.java b/src/models/terms/meta/MetaEvaluatableTermSet.java new file mode 100644 index 0000000..8611340 --- /dev/null +++ b/src/models/terms/meta/MetaEvaluatableTermSet.java @@ -0,0 +1,22 @@ +package models.terms.meta; + +import models.algebra.Constant; +import models.algebra.Expression; +import models.algebra.Symbol; +import models.algebra.Variable; + +public class MetaEvaluatableTermSet extends MetaVariable{ + + public MetaEvaluatableTermSet(Variable name, OrderConstraint constraint, Expression order) { + super(new Symbol(":", 1), TermType.META_EVALUATABLE_TERM_SET_VARIABLE, name, constraint, order); + } + + public MetaEvaluatableTermSet(Variable variableName) { + super(new Symbol(":", 1), MetaRDLTerm.TermType.META_EVALUATABLE_TERM_SET_VARIABLE, variableName, OrderConstraint.ANY, new Constant("0")); + } + + public MetaEvaluatableTermSet(Variable variableName, Expression order) { + super(new Symbol(":", 1), MetaRDLTerm.TermType.META_EVALUATABLE_TERM_SET_VARIABLE, variableName, OrderConstraint.EQ, order); + } + +} diff --git a/src/models/terms/meta/MetaRDLTerm.java b/src/models/terms/meta/MetaRDLTerm.java index 57ac148..6a78803 100644 --- a/src/models/terms/meta/MetaRDLTerm.java +++ b/src/models/terms/meta/MetaRDLTerm.java @@ -12,6 +12,7 @@ import models.terms.EvaluatableTerm; import models.terms.RDLTerm; import models.terms.ResourceVariable; +import models.terms.SetEvaluatableTerm; @Getter public class MetaRDLTerm extends RDLTerm { @@ -24,6 +25,8 @@ META_DEPENDENCY_TERM(DependencyTerm.class), META_DEPENDENCY_TERM_VARIABLE(DependencyTerm.class), META_EVALUATABLE_TERM_VARIABLE(EvaluatableTerm.class), + META_EVALUATABLE_TERM_SET(SetEvaluatableTerm.class), + META_EVALUATABLE_TERM_SET_VARIABLE(SetEvaluatableTerm.class), META_RESOURCE_VARIABLE(ResourceVariable.class); @Getter @@ -64,11 +67,15 @@ 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_LIST; + //list type dependency or set term + public MetaRDLTerm(MetaRDLTerm term) { + super(new Symbol(":", 1), term.getOrder() - 1); + if (term.isDependency()) { + this.termType = TermType.META_DEPENDENCY_LIST; + } else if (term.isEvaluatableTerm()) { + this.termType = TermType.META_EVALUATABLE_TERM_SET; + } + addChild(term); } //dependency term