tree-hugger-js
Version:
A friendly tree-sitter wrapper for JavaScript and TypeScript
28 lines • 1.08 kB
TypeScript
import { TreeNode } from './node-wrapper';
export type VisitorFunction = (node: TreeNode, parent?: TreeNode) => void | boolean;
export interface Visitor {
enter?: VisitorFunction;
exit?: VisitorFunction;
}
export declare class TreeVisitor {
visit(node: TreeNode, visitor: Visitor | VisitorFunction): void;
private visitNode;
collect(node: TreeNode, predicate: (node: TreeNode) => boolean): TreeNode[];
findFirst(node: TreeNode, predicate: (node: TreeNode) => boolean): TreeNode | null;
getPath(root: TreeNode, target: TreeNode): TreeNode[];
}
export declare function visit(node: TreeNode, visitor: Visitor | VisitorFunction): void;
export interface Scope {
node: TreeNode;
bindings: Map<string, TreeNode>;
parent?: Scope;
}
export declare class ScopeAnalyzer {
private scopes;
private currentScope;
analyze(root: TreeNode): Map<TreeNode, Scope>;
private createsScope;
getScope(node: TreeNode): Scope | undefined;
findBinding(node: TreeNode, name: string): TreeNode | null;
}
//# sourceMappingURL=visitor.d.ts.map