js-slang
Version:
Javascript-based implementations of Source, written in Typescript
21 lines (20 loc) • 913 B
TypeScript
import * as es from 'estree';
import { Context, Node, Value } from '../types';
import Closure from './closure';
export type Evaluator<T extends Node> = (node: T, context: Context) => IterableIterator<Value>;
/**
* WARNING: Do not use object literal shorthands, e.g.
* {
* *Literal(node: es.Literal, ...) {...},
* *ThisExpression(node: es.ThisExpression, ..._ {...},
* ...
* }
* They do not minify well, raising uncaught syntax errors in production.
* See: https://github.com/webpack/webpack/issues/7566
*/
export declare const evaluators: {
[nodeType: string]: Evaluator<Node>;
};
export declare function evaluate(node: Node, context: Context): Generator<any, any, undefined>;
export declare function apply(context: Context, fun: Closure | Value, args: Value[], node: es.CallExpression, thisContext?: Value): Generator<any, undefined, unknown>;
export { evaluate as nonDetEvaluate };