package org.overture.interpreter.utilities.definition; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.analysis.QuestionAnswerAdaptor; import org.overture.ast.definitions.AAssignmentDefinition; import org.overture.ast.definitions.AEqualsDefinition; import org.overture.ast.definitions.AInstanceVariableDefinition; import org.overture.ast.definitions.AValueDefinition; import org.overture.ast.definitions.PDefinition; import org.overture.ast.node.INode; import org.overture.interpreter.assistant.IInterpreterAssistantFactory; import org.overture.interpreter.runtime.ObjectContext; import org.overture.interpreter.values.ValueList; /*************************************** * This method locates a value for a definition node. * * @author gkanos ****************************************/ public class ValuesDefinitionLocator extends QuestionAnswerAdaptor<ObjectContext, ValueList> { protected IInterpreterAssistantFactory af; public ValuesDefinitionLocator(IInterpreterAssistantFactory af) { this.af = af; } @Override public ValueList caseAAssignmentDefinition(AAssignmentDefinition def, ObjectContext ctxt) throws AnalysisException { return af.createPExpAssistant().getValues(def.getExpression(), ctxt); } @Override public ValueList caseAEqualsDefinition(AEqualsDefinition def, ObjectContext ctxt) throws AnalysisException { ValueList list = af.createPExpAssistant().getValues(def.getTest(), ctxt); if (def.getSetbind() != null) { list.addAll(af.createPBindAssistant().getBindValues(def.getSetbind(), ctxt, false)); } return list; } @Override public ValueList caseAInstanceVariableDefinition( AInstanceVariableDefinition def, ObjectContext ctxt) throws AnalysisException { return af.createPExpAssistant().getValues(def.getExpression(), ctxt); } @Override public ValueList caseAValueDefinition(AValueDefinition def, ObjectContext ctxt) throws AnalysisException { return af.createPExpAssistant().getValues(def.getExpression(), ctxt); } @Override public ValueList defaultPDefinition(PDefinition def, ObjectContext ctxt) throws AnalysisException { return new ValueList(); } @Override public ValueList createNewReturnValue(INode node, ObjectContext question) throws AnalysisException { // TODO Auto-generated method stub return null; } @Override public ValueList createNewReturnValue(Object node, ObjectContext question) throws AnalysisException { // TODO Auto-generated method stub return null; } }