Newer
Older
ResourceDependencyLogic / src / Main.java
import lombok.SneakyThrows;
import models.EvaluatableTerm;
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.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;
		
		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 dd = new MetaRDLTerm(v1, v2);
		var te = new MetaRDLTerm(dd, (MetaRDLTerm) 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);
	}
	
	
}