package org.overture.interpreter.utilities.pattern;
import org.overture.ast.analysis.AnalysisException;
import org.overture.ast.analysis.QuestionAnswerAdaptor;
import org.overture.ast.node.INode;
import org.overture.ast.patterns.ASeqMultipleBind;
import org.overture.ast.patterns.ASetMultipleBind;
import org.overture.ast.patterns.ATypeMultipleBind;
import org.overture.ast.patterns.PMultipleBind;
import org.overture.interpreter.assistant.IInterpreterAssistantFactory;
import org.overture.interpreter.runtime.ObjectContext;
import org.overture.interpreter.values.ValueList;
/***************************************
* This class implements a way to collect values from binds in a node type
*
* @author gkanos
****************************************/
public class ValueCollector extends
QuestionAnswerAdaptor<ObjectContext, ValueList>
{
protected IInterpreterAssistantFactory af;
public ValueCollector(IInterpreterAssistantFactory af)
{
this.af = af;
}
@Override
public ValueList caseASetMultipleBind(ASetMultipleBind node,
ObjectContext ctxt) throws AnalysisException
{
return af.createPExpAssistant().getValues(node.getSet(), ctxt);
}
@Override
public ValueList caseASeqMultipleBind(ASeqMultipleBind node,
ObjectContext ctxt) throws AnalysisException
{
return af.createPExpAssistant().getValues(node.getSeq(), ctxt);
}
@Override
public ValueList caseATypeMultipleBind(ATypeMultipleBind node,
ObjectContext ctxt) throws AnalysisException
{
return new ValueList();
}
@Override
public ValueList defaultPMultipleBind(PMultipleBind node, ObjectContext ctxt)
throws AnalysisException
{
return new ValueList();
}
@Override
public ValueList createNewReturnValue(INode node, ObjectContext question)
throws AnalysisException
{
// TODO Auto-generated method stub
return new ValueList();
}
@Override
public ValueList createNewReturnValue(Object node, ObjectContext question)
throws AnalysisException
{
// TODO Auto-generated method stub
return new ValueList();
}
}