package jetbrains.mps.lang.dataFlow; /*Generated by MPS */ import jetbrains.mps.lang.dataFlow.framework.ProgramFactory; import jetbrains.mps.lang.dataFlow.framework.NamedAnalyzerId; import jetbrains.mps.lang.dataFlow.framework.ProgramBuilderContext; import java.util.Collection; import jetbrains.mps.lang.dataFlow.framework.IDataFlowModeId; import jetbrains.mps.lang.dataFlow.framework.ProgramBuilderContextImpl; import jetbrains.mps.lang.dataFlow.framework.Program; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.lang.dataFlow.framework.instructions.InstructionBuilder; import jetbrains.mps.lang.dataFlow.framework.AnalyzerRules; import java.util.Collections; public class MPSProgramFactory implements ProgramFactory<NamedAnalyzerId> { private ProgramBuilderContext myContext; public MPSProgramFactory(Collection<IDataFlowModeId> modes) { this.myContext = new ProgramBuilderContextImpl(modes); } @Override public Program createProgram(SNode node) { return new MPSProgramBuilder(null, new InstructionBuilder(), myContext).buildProgram(node); } @Override public void prepareProgram(Program program, SNode node, NamedAnalyzerId analyzerId) { new AnalyzerRules(analyzerId.getAnalyzerFqName(), Collections.singletonList(node), program, myContext).apply(); } protected ProgramBuilderContext getContext() { return myContext; } }