import lombok.SneakyThrows;
import models.algebra.Expression;
import models.algebra.Type;
import models.algebra.Variable;
import models.dataConstraintModel.DataConstraintModel;
import models.dataFlowModel.DataTransferModel;
import models.terms.EvaluatableTerm;
import models.terms.ResourceVariable;
import models.terms.meta.MetaRDLTerm;
import models.terms.meta.MetaResourceVariable;
import models.terms.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;
var a = new ResourceVariable("a", INT, 2);
var b = new ResourceVariable("b", INT, 2);
var c = new ResourceVariable("c", INT, 1);
var d = EvaluatableTerm.of(a, b, c);
var v1 = new MetaResourceVariable(new Variable("v1"), OrderConstraint.LE, parse("x + 1"));
var v2 = new MetaResourceVariable(new Variable("v1"), OrderConstraint.EQ, parse("x + 1"));
var v3 = new MetaResourceVariable(new Variable("v3"), OrderConstraint.LE, parse("x"));
var te = new MetaRDLTerm(v1, v2, v3);
System.out.println(d.toString());
System.out.println(te.toString());
System.out.println(te.isMatchedBy(d));
}
@SneakyThrows
static Expression parse(String expr) {
stream.addLine(expr);
return parser.parseTerm(stream, model);
}
}