@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
55 lines (54 loc) • 2.71 kB
TypeScript
import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format';
import type { SlicingCriteria } from '../../../slicing/criterion/parse';
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
import type { ParsedQueryLine } from '../../query';
import Joi from 'joi';
import { executeDiceQuery } from './dice-query-executor';
import type { ReplOutput } from '../../../cli/repl/commands/repl-main';
import type { CommandCompletions } from '../../../cli/repl/core';
import type { FlowrConfig } from '../../../config';
import { type SliceQueryOptions } from '../slice-query-options';
/**
* Computes a program dice: only those parts that lie on a path from the given start nodes to the given end nodes.
* Equivalent to the intersection of a forward slice from `from` and a backward slice from `to`.
*/
export interface DiceQuery extends BaseQueryFormat, SliceQueryOptions {
readonly type: 'dice';
/** Slicing criteria for the start of the dice (forward slice seeds) */
readonly from: SlicingCriteria;
/** Slicing criteria for the end of the dice (backward slice seeds) */
readonly to: SlicingCriteria;
}
export interface DiceQueryResult extends BaseQueryResult {
results: Record<string, {
slice: {
timesHitThreshold: number;
result: ReadonlySet<NodeId>;
slicedFor: readonly NodeId[];
/** see {@link SliceResult.stoppedEarly} */
stoppedEarly?: boolean;
'.meta': {
timing: number;
};
};
reconstruct?: {
code: string | string[];
'.meta': {
timing: number;
};
};
}>;
}
declare function diceQueryLineParser(output: ReplOutput, line: readonly string[], _config: FlowrConfig): ParsedQueryLine<'dice'>;
declare function diceQueryCompleter(line: readonly string[], startingNewArg: boolean, _config: FlowrConfig): CommandCompletions;
export declare const DiceQueryDefinition: {
readonly title: "Dice Query";
readonly executor: typeof executeDiceQuery;
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 fromLine: typeof diceQueryLineParser;
readonly completer: typeof diceQueryCompleter;
readonly syntax: "@dice (<crit>;...->crit;...)[iIcB] <code | file://path>";
readonly schema: Joi.ObjectSchema<any>;
readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
};
export {};