public static TAnalysisData Flow(DataFlowOperationVisitor <TAnalysisData, TAbstractAnalysisValue> operationVisitor, BasicBlock block, TAnalysisData data) { if (block.Kind == BasicBlockKind.Entry) { operationVisitor.OnEntry(block, data); } else if (block.Kind == BasicBlockKind.Exit) { operationVisitor.OnExit(block, data); } foreach (var statement in block.Statements) { data = operationVisitor.Flow(statement, block, data); } return(data); }
protected DataFlowAnalysis(AbstractAnalysisDomain <TAnalysisData> analysisDomain, DataFlowOperationVisitor <TAnalysisData, TAbstractAnalysisValue> operationVisitor) { AnalysisDomain = analysisDomain; OperationVisitor = operationVisitor; }
protected BackwardDataFlowAnalysis(AbstractDomain <TAnalysisData> analysisDomain, DataFlowOperationVisitor <TAnalysisData, TAbstractAnalysisValue> operationVisitor) : base(analysisDomain, operationVisitor) { }