UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

40 lines (39 loc) 2.84 kB
import Joi from 'joi'; import type { AbsintVisitorConfiguration, DomainOfVisitor } from '../../../abstract-interpretation/absint-visitor'; import { DataFrameShapeInferenceVisitor } from '../../../abstract-interpretation/data-frame/shape-inference'; import type { ValueDomain } from '../../../abstract-interpretation/domains/state-domain-like'; import type { ReplOutput } from '../../../cli/repl/commands/repl-main'; import type { CommandCompletions } from '../../../cli/repl/core'; import type { FlowrConfig } from '../../../config'; import { SlicingCriterion, type SlicingCriteria } from '../../../slicing/criterion/parse'; import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format'; import type { ParsedQueryLine } from '../../query'; import { executeAbsintQuery } from './absint-query-executor'; export interface AbsintQuery<AbsintType extends AbsintQueryType = AbsintQueryType> extends BaseQueryFormat { readonly type: 'absint'; readonly inference: AbsintType; readonly criteria?: SlicingCriteria; } export interface AbsintQueryResult<AbsintType extends AbsintQueryType = AbsintQueryType> extends BaseQueryResult { result: AbsintQueryStateDomain<AbsintType> | Map<SlicingCriterion, AbsintQueryDomain<AbsintType> | undefined>; } export declare const AbsintQueryInferences: { 'df-shape': (config: AbsintVisitorConfiguration) => DataFrameShapeInferenceVisitor; }; export type AbsintQueryType = keyof typeof AbsintQueryInferences; export type AbsintQueryStateDomain<AbsintType extends AbsintQueryType = AbsintQueryType> = DomainOfVisitor<ReturnType<typeof AbsintQueryInferences[AbsintType]>>; export type AbsintQueryDomain<AbsintType extends AbsintQueryType = AbsintQueryType> = ValueDomain<AbsintQueryStateDomain<AbsintType>>; declare function absintQueryCompleter(line: readonly string[], startingNewArg: boolean, _config: FlowrConfig): CommandCompletions; declare function absintQueryLineParser(output: ReplOutput, line: readonly string[], _config: FlowrConfig): ParsedQueryLine<'absint'>; export declare const AbsintQueryDefinition: { readonly title: "Abstract Interpretation Query"; readonly executor: typeof executeAbsintQuery; readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, _analyzer: import("../../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../../r-bridge/parser").KnownParser>, queryResults: BaseQueryResult, result: string[]) => true; readonly jsonFormatter: (queryResults: BaseQueryResult) => object; readonly completer: typeof absintQueryCompleter; readonly fromLine: typeof absintQueryLineParser; readonly syntax: "@absint <inference-type> [(<criteria>)] <code | file://path>"; readonly schema: Joi.ObjectSchema<any>; readonly flattenInvolvedNodes: () => never[]; }; export {};