import lombok.SneakyThrows;
import models.Dependency;
import models.ResourceVariable;
import models.algebra.Expression;
import models.algebra.Type;
import models.algebra.Variable;
import models.dataConstraintModel.DataConstraintModel;
import models.dataFlowModel.DataTransferModel;
import models.meta.MetaDependencyVariable;
import models.meta.MetaRDLTerm;
import models.meta.MetaResourceVariable;
import models.meta.OrderConstraint;
import parser.Parser;
import parser.Parser.TokenStream;
public class Main {
static TokenStream stream = new Parser.TokenStream();
static Parser parser = new Parser(stream);
static DataTransferModel model = new DataTransferModel();
public static void main(String[] args) {
Type INT = DataConstraintModel.typeInt;
ResourceVariable a = new ResourceVariable("a", INT, 0);
ResourceVariable b = new ResourceVariable("b", INT, 0);
Dependency dep = new Dependency(a, b);
System.out.println(dep.toStringWithOrder());
MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.EQ, parse("0"));
MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.EQ, parse("x"));
MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.EQ, parse("x"));
MetaRDLTerm term = new MetaRDLTerm(x, x);
System.out.println(term.isMatchedBy(dep));
}
@SneakyThrows
public static Expression parse(String expr) {
stream.addLine(expr);
return parser.parseTerm(stream, model);
}
}