@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
40 lines (39 loc) • 2.84 kB
TypeScript
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 {};