123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- import { Parser } from "./parse";
- export declare const DefaultBufferLength = 1024;
- export declare class Range {
- readonly from: number;
- readonly to: number;
- constructor(from: number, to: number);
- }
- export declare class NodeProp<T> {
- perNode: boolean;
- deserialize: (str: string) => T;
- constructor(config?: {
- deserialize?: (str: string) => T;
- perNode?: boolean;
- });
- add(match: {
- [selector: string]: T;
- } | ((type: NodeType) => T | undefined)): NodePropSource;
- static closedBy: NodeProp<readonly string[]>;
- static openedBy: NodeProp<readonly string[]>;
- static group: NodeProp<readonly string[]>;
- static contextHash: NodeProp<number>;
- static lookAhead: NodeProp<number>;
- static mounted: NodeProp<MountedTree>;
- }
- export declare class MountedTree {
- readonly tree: Tree;
- readonly overlay: readonly {
- from: number;
- to: number;
- }[] | null;
- readonly parser: Parser;
- constructor(tree: Tree, overlay: readonly {
- from: number;
- to: number;
- }[] | null, parser: Parser);
- }
- export declare type NodePropSource = (type: NodeType) => null | [NodeProp<any>, any];
- export declare class NodeType {
- readonly name: string;
- readonly id: number;
- static define(spec: {
- id: number;
- name?: string;
- props?: readonly ([NodeProp<any>, any] | NodePropSource)[];
- top?: boolean;
- error?: boolean;
- skipped?: boolean;
- }): NodeType;
- prop<T>(prop: NodeProp<T>): T | undefined;
- get isTop(): boolean;
- get isSkipped(): boolean;
- get isError(): boolean;
- get isAnonymous(): boolean;
- is(name: string | number): boolean;
- static none: NodeType;
- static match<T>(map: {
- [selector: string]: T;
- }): (node: NodeType) => T | undefined;
- }
- export declare class NodeSet {
- readonly types: readonly NodeType[];
- constructor(types: readonly NodeType[]);
- extend(...props: NodePropSource[]): NodeSet;
- }
- export declare enum IterMode {
- ExcludeBuffers = 1,
- IncludeAnonymous = 2,
- IgnoreMounts = 4,
- IgnoreOverlays = 8
- }
- export declare class Tree {
- readonly type: NodeType;
- readonly children: readonly (Tree | TreeBuffer)[];
- readonly positions: readonly number[];
- readonly length: number;
- constructor(type: NodeType, children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number, props?: readonly [NodeProp<any> | number, any][]);
- static empty: Tree;
- cursor(mode?: IterMode): TreeCursor;
- cursorAt(pos: number, side?: -1 | 0 | 1, mode?: IterMode): TreeCursor;
- get topNode(): SyntaxNode;
- resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- iterate(spec: {
- enter(node: SyntaxNodeRef): boolean | void;
- leave?(node: SyntaxNodeRef): void;
- from?: number;
- to?: number;
- mode?: IterMode;
- }): void;
- prop<T>(prop: NodeProp<T>): T | undefined;
- get propValues(): readonly [NodeProp<any> | number, any][];
- balance(config?: {
- makeTree?: (children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number) => Tree;
- }): Tree;
- static build(data: BuildData): Tree;
- }
- declare type BuildData = {
- buffer: BufferCursor | readonly number[];
- nodeSet: NodeSet;
- topID: number;
- start?: number;
- bufferStart?: number;
- length?: number;
- maxBufferLength?: number;
- reused?: readonly Tree[];
- minRepeatType?: number;
- };
- export interface BufferCursor {
- pos: number;
- id: number;
- start: number;
- end: number;
- size: number;
- next(): void;
- fork(): BufferCursor;
- }
- export declare class TreeBuffer {
- readonly buffer: Uint16Array;
- readonly length: number;
- readonly set: NodeSet;
- constructor(buffer: Uint16Array, length: number, set: NodeSet);
- }
- export interface SyntaxNodeRef {
- readonly from: number;
- readonly to: number;
- readonly type: NodeType;
- readonly name: string;
- readonly tree: Tree | null;
- readonly node: SyntaxNode;
- matchContext(context: readonly string[]): boolean;
- }
- export interface SyntaxNode extends SyntaxNodeRef {
- parent: SyntaxNode | null;
- firstChild: SyntaxNode | null;
- lastChild: SyntaxNode | null;
- childAfter(pos: number): SyntaxNode | null;
- childBefore(pos: number): SyntaxNode | null;
- enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): SyntaxNode | null;
- nextSibling: SyntaxNode | null;
- prevSibling: SyntaxNode | null;
- cursor(mode?: IterMode): TreeCursor;
- resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- enterUnfinishedNodesBefore(pos: number): SyntaxNode;
- toTree(): Tree;
- getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode | null;
- getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
- matchContext(context: readonly string[]): boolean;
- }
- declare const enum Side {
- Before = -2,
- AtOrBefore = -1,
- Around = 0,
- AtOrAfter = 1,
- After = 2,
- DontCare = 4
- }
- export declare class TreeNode implements SyntaxNode {
- readonly _tree: Tree;
- readonly from: number;
- readonly index: number;
- readonly _parent: TreeNode | null;
- constructor(_tree: Tree, from: number, index: number, _parent: TreeNode | null);
- get type(): NodeType;
- get name(): string;
- get to(): number;
- nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: IterMode): TreeNode | BufferNode | null;
- get firstChild(): TreeNode | BufferNode;
- get lastChild(): TreeNode | BufferNode;
- childAfter(pos: number): TreeNode | BufferNode;
- childBefore(pos: number): TreeNode | BufferNode;
- enter(pos: number, side: -1 | 0 | 1, mode?: number): TreeNode | BufferNode;
- nextSignificantParent(): TreeNode;
- get parent(): TreeNode | null;
- get nextSibling(): SyntaxNode | null;
- get prevSibling(): SyntaxNode | null;
- cursor(mode?: IterMode): TreeCursor;
- get tree(): Tree;
- toTree(): Tree;
- resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- enterUnfinishedNodesBefore(pos: number): SyntaxNode;
- getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
- getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
- get node(): this;
- matchContext(context: readonly string[]): boolean;
- }
- declare class BufferContext {
- readonly parent: TreeNode;
- readonly buffer: TreeBuffer;
- readonly index: number;
- readonly start: number;
- constructor(parent: TreeNode, buffer: TreeBuffer, index: number, start: number);
- }
- declare class BufferNode implements SyntaxNode {
- readonly context: BufferContext;
- readonly _parent: BufferNode | null;
- readonly index: number;
- type: NodeType;
- get name(): string;
- get from(): number;
- get to(): number;
- constructor(context: BufferContext, _parent: BufferNode | null, index: number);
- child(dir: 1 | -1, pos: number, side: Side): BufferNode | null;
- get firstChild(): BufferNode;
- get lastChild(): BufferNode;
- childAfter(pos: number): BufferNode;
- childBefore(pos: number): BufferNode;
- enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): BufferNode;
- get parent(): SyntaxNode | null;
- externalSibling(dir: 1 | -1): TreeNode | BufferNode;
- get nextSibling(): SyntaxNode | null;
- get prevSibling(): SyntaxNode | null;
- cursor(mode?: IterMode): TreeCursor;
- get tree(): any;
- toTree(): Tree;
- resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
- enterUnfinishedNodesBefore(pos: number): SyntaxNode;
- getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
- getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
- get node(): this;
- matchContext(context: readonly string[]): boolean;
- }
- export declare class TreeCursor implements SyntaxNodeRef {
- type: NodeType;
- get name(): string;
- from: number;
- to: number;
- private stack;
- private bufferNode;
- private yieldNode;
- private yieldBuf;
- private yield;
- firstChild(): boolean;
- lastChild(): boolean;
- childAfter(pos: number): boolean;
- childBefore(pos: number): boolean;
- enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): boolean;
- parent(): boolean;
- nextSibling(): boolean;
- prevSibling(): boolean;
- private atLastNode;
- private move;
- next(enter?: boolean): boolean;
- prev(enter?: boolean): boolean;
- moveTo(pos: number, side?: -1 | 0 | 1): this;
- get node(): SyntaxNode;
- get tree(): Tree | null;
- iterate(enter: (node: SyntaxNodeRef) => boolean | void, leave?: (node: SyntaxNodeRef) => void): void;
- matchContext(context: readonly string[]): boolean;
- }
- export declare class NodeWeakMap<T> {
- private map;
- private setBuffer;
- private getBuffer;
- set(node: SyntaxNode, value: T): void;
- get(node: SyntaxNode): T | undefined;
- cursorSet(cursor: TreeCursor, value: T): void;
- cursorGet(cursor: TreeCursor): T | undefined;
- }
- export {};
|