import { LispType, IExecContext, Ticks, Scope } from '../utils'; import { LispItem } from '../parser'; import { YieldValue, Done } from './executorUtils'; export type ControlFlowAction = 'break' | 'continue'; export interface ControlFlowTarget { label?: string; acceptsBreak: boolean; acceptsContinue: boolean; acceptsUnlabeledBreak: boolean; acceptsUnlabeledContinue: boolean; } export type ControlFlowTargets = readonly ControlFlowTarget[] | undefined; export type Execution = (ticks: Ticks, tree: LispItem, scope: Scope, context: IExecContext, done: Done, statementLabels: ControlFlowTargets, internal: boolean, generatorYield: ((yv: YieldValue, done?: Done) => void) | undefined) => void; export type OpsCallbackParams = { op: LispType; exec: Execution; a: a; b: b; obj: obj; bobj: bobj; ticks: Ticks; tree: LispItem; scope: Scope; context: IExecContext; done: Done; statementLabels: ControlFlowTargets; internal: boolean; generatorYield: ((yv: YieldValue, done?: Done) => void) | undefined; }; type OpCallback = (params: OpsCallbackParams) => void; export declare const ops: Map>; export declare function addOps(type: LispType, cb: OpCallback): void; export {};