package org.uva.student.calinwouter.qlqls.ql; import org.uva.student.calinwouter.qlqls.generated.node.AForm; import org.uva.student.calinwouter.qlqls.ql.tests.PFormInterpreter; import org.uva.student.calinwouter.qlqls.ql.model.StaticFields; import org.uva.student.calinwouter.qlqls.ql.model.VariableTable; public class QLInterpreter { private final AForm aForm; private final StaticFields staticFields; public VariableTable interpret(VariableTable oldVariableTable) { final VariableTable newVariableTable = new VariableTable(); final PFormInterpreter formInterpreter = new PFormInterpreter(oldVariableTable, newVariableTable, staticFields); aForm.apply(formInterpreter); return newVariableTable; } public QLInterpreter(AForm aForm, StaticFields staticFields) { this.aForm = aForm; this.staticFields = staticFields; } private static StaticFields collectStaticFields(AForm aForm) { return new QLStaticAnalyser(aForm).collectStaticFields(); } public QLInterpreter(AForm aForm) { this(aForm, collectStaticFields(aForm)); } }