UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

35 lines (34 loc) 1.76 kB
import type { CfgSimplificationPassName } from '../../control-flow/cfg-simplification'; import { CfgKind } from '../cfg-kind'; import type { ControlFlowInformation } from '../../control-flow/control-flow-graph'; import type { NormalizedAst } from '../../r-bridge/lang-4.x/ast/model/processing/decorate'; import type { DataflowInformation } from '../../dataflow/info'; import type { FlowrAnalyzerContext } from '../context/flowr-analyzer-context'; interface CfgInfo { ctx: FlowrAnalyzerContext; cfgQuick: ControlFlowInformation | undefined; dfg: () => Promise<DataflowInformation>; ast: () => Promise<NormalizedAst>; } export declare class FlowrAnalyzerControlFlowCache { private readonly cache; peek(kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): ControlFlowInformation | undefined; get(force: boolean | undefined, kind: CfgKind, cfgCacheInfo: CfgInfo, simplifications?: readonly CfgSimplificationPassName[]): Promise<ControlFlowInformation>; /** * Create and cache the base CFG without simplifications. */ private createAndCacheBaseCfg; /** * Try to get a cached CFG with some of the requested simplifications already applied. * Matches the longest prefix of simplifications available. * @returns The cached CFG and the missing simplifications to be applied, or `undefined` if no cached CFG is available. */ private tryGetCachedCfg; /** * Normalize the order of simplification passes. * Is currently an identity function, but may be extended in the future to enforce a specific order using heuristics. * @param simplifications - the requested simplification passes. */ private normalizeSimplificationOrder; } export {};