package org.overture.interpreter.assistant.pattern; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.assistant.IAstAssistant; import org.overture.ast.patterns.PMultipleBind; import org.overture.interpreter.assistant.IInterpreterAssistantFactory; import org.overture.interpreter.eval.BindState; import org.overture.interpreter.runtime.Context; import org.overture.interpreter.runtime.ObjectContext; import org.overture.interpreter.runtime.ValueException; import org.overture.interpreter.values.ValueList; import org.overture.typechecker.assistant.pattern.PMultipleBindAssistantTC; public class PMultipleBindAssistantInterpreter extends PMultipleBindAssistantTC implements IAstAssistant { protected static IInterpreterAssistantFactory af; @SuppressWarnings("static-access") public PMultipleBindAssistantInterpreter(IInterpreterAssistantFactory af) { super(af); this.af = af; } public ValueList getBindValues(PMultipleBind mb, Context ctxt, boolean permuted) throws ValueException, AnalysisException { return mb.apply(af.getBindValuesCollector(), new BindState(ctxt, permuted)); } public ValueList getValues(PMultipleBind mb, ObjectContext ctxt) { try { return mb.apply(af.getValueCollector(), ctxt);// FIXME: should we handle exceptions like this } catch (AnalysisException e) { return new ValueList(); } } }