@lezer/common 0.15.10 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tree.d.ts CHANGED
@@ -62,6 +62,12 @@ export declare class NodeSet {
62
62
  constructor(types: readonly NodeType[]);
63
63
  extend(...props: NodePropSource[]): NodeSet;
64
64
  }
65
+ export declare enum IterMode {
66
+ ExcludeBuffers = 1,
67
+ IncludeAnonymous = 2,
68
+ IgnoreMounts = 4,
69
+ IgnoreOverlays = 8
70
+ }
65
71
  export declare class Tree {
66
72
  readonly type: NodeType;
67
73
  readonly children: readonly (Tree | TreeBuffer)[];
@@ -69,16 +75,17 @@ export declare class Tree {
69
75
  readonly length: number;
70
76
  constructor(type: NodeType, children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number, props?: readonly [NodeProp<any> | number, any][]);
71
77
  static empty: Tree;
72
- cursor(pos?: number, side?: -1 | 0 | 1): TreeCursor;
73
- fullCursor(): TreeCursor;
78
+ cursor(mode?: IterMode): TreeCursor;
79
+ cursorAt(pos: number, side?: -1 | 0 | 1, mode?: IterMode): TreeCursor;
74
80
  get topNode(): SyntaxNode;
75
81
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
76
82
  resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
77
83
  iterate(spec: {
78
- enter(type: NodeType, from: number, to: number, get: () => SyntaxNode): false | void;
79
- leave?(type: NodeType, from: number, to: number, get: () => SyntaxNode): void;
84
+ enter(node: SyntaxNodeRef): boolean | void;
85
+ leave?(node: SyntaxNodeRef): void;
80
86
  from?: number;
81
87
  to?: number;
88
+ mode?: IterMode;
82
89
  }): void;
83
90
  prop<T>(prop: NodeProp<T>): T | undefined;
84
91
  get propValues(): readonly [NodeProp<any> | number, any][];
@@ -113,27 +120,31 @@ export declare class TreeBuffer {
113
120
  readonly set: NodeSet;
114
121
  constructor(buffer: Uint16Array, length: number, set: NodeSet);
115
122
  }
116
- export interface SyntaxNode {
117
- type: NodeType;
118
- name: string;
119
- from: number;
120
- to: number;
123
+ export interface SyntaxNodeRef {
124
+ readonly from: number;
125
+ readonly to: number;
126
+ readonly type: NodeType;
127
+ readonly name: string;
128
+ readonly tree: Tree | null;
129
+ readonly node: SyntaxNode;
130
+ }
131
+ export interface SyntaxNode extends SyntaxNodeRef {
121
132
  parent: SyntaxNode | null;
122
133
  firstChild: SyntaxNode | null;
123
134
  lastChild: SyntaxNode | null;
124
135
  childAfter(pos: number): SyntaxNode | null;
125
136
  childBefore(pos: number): SyntaxNode | null;
126
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): SyntaxNode | null;
137
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): SyntaxNode | null;
127
138
  nextSibling: SyntaxNode | null;
128
139
  prevSibling: SyntaxNode | null;
129
- cursor: TreeCursor;
140
+ cursor(mode?: IterMode): TreeCursor;
130
141
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
131
142
  resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
132
143
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
133
- tree: Tree | null;
134
144
  toTree(): Tree;
135
145
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode | null;
136
146
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
147
+ matchContext(context: readonly string[]): boolean;
137
148
  }
138
149
  declare const enum Side {
139
150
  Before = -2,
@@ -143,31 +154,26 @@ declare const enum Side {
143
154
  After = 2,
144
155
  DontCare = 4
145
156
  }
146
- export declare const enum Mode {
147
- Full = 1,
148
- NoEnterBuffer = 2
149
- }
150
157
  export declare class TreeNode implements SyntaxNode {
151
- readonly node: Tree;
152
- readonly _from: number;
158
+ readonly _tree: Tree;
159
+ readonly from: number;
153
160
  readonly index: number;
154
161
  readonly _parent: TreeNode | null;
155
- constructor(node: Tree, _from: number, index: number, _parent: TreeNode | null);
162
+ constructor(_tree: Tree, from: number, index: number, _parent: TreeNode | null);
156
163
  get type(): NodeType;
157
164
  get name(): string;
158
- get from(): number;
159
165
  get to(): number;
160
- nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: Mode): TreeNode | BufferNode | null;
166
+ nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: IterMode): TreeNode | BufferNode | null;
161
167
  get firstChild(): TreeNode | BufferNode;
162
168
  get lastChild(): TreeNode | BufferNode;
163
169
  childAfter(pos: number): TreeNode | BufferNode;
164
170
  childBefore(pos: number): TreeNode | BufferNode;
165
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): TreeNode | BufferNode;
171
+ enter(pos: number, side: -1 | 0 | 1, mode?: number): TreeNode | BufferNode;
166
172
  nextSignificantParent(): TreeNode;
167
173
  get parent(): TreeNode;
168
174
  get nextSibling(): TreeNode | BufferNode;
169
175
  get prevSibling(): TreeNode | BufferNode;
170
- get cursor(): TreeCursor;
176
+ cursor(mode?: IterMode): TreeCursor;
171
177
  get tree(): Tree;
172
178
  toTree(): Tree;
173
179
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
@@ -175,6 +181,8 @@ export declare class TreeNode implements SyntaxNode {
175
181
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
176
182
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
177
183
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
184
+ get node(): this;
185
+ matchContext(context: readonly string[]): boolean;
178
186
  }
179
187
  declare class BufferContext {
180
188
  readonly parent: TreeNode;
@@ -197,12 +205,12 @@ declare class BufferNode implements SyntaxNode {
197
205
  get lastChild(): BufferNode;
198
206
  childAfter(pos: number): BufferNode;
199
207
  childBefore(pos: number): BufferNode;
200
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): BufferNode;
208
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): BufferNode;
201
209
  get parent(): TreeNode | BufferNode;
202
210
  externalSibling(dir: 1 | -1): TreeNode | BufferNode;
203
211
  get nextSibling(): SyntaxNode | null;
204
212
  get prevSibling(): SyntaxNode | null;
205
- get cursor(): TreeCursor;
213
+ cursor(mode?: IterMode): TreeCursor;
206
214
  get tree(): any;
207
215
  toTree(): Tree;
208
216
  resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
@@ -210,15 +218,15 @@ declare class BufferNode implements SyntaxNode {
210
218
  enterUnfinishedNodesBefore(pos: number): SyntaxNode;
211
219
  getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
212
220
  getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
221
+ get node(): this;
222
+ matchContext(context: readonly string[]): boolean;
213
223
  }
214
- export declare class TreeCursor {
224
+ export declare class TreeCursor implements SyntaxNodeRef {
215
225
  type: NodeType;
216
226
  get name(): string;
217
227
  from: number;
218
228
  to: number;
219
- private buffer;
220
229
  private stack;
221
- private index;
222
230
  private bufferNode;
223
231
  private yieldNode;
224
232
  private yieldBuf;
@@ -227,7 +235,7 @@ export declare class TreeCursor {
227
235
  lastChild(): boolean;
228
236
  childAfter(pos: number): boolean;
229
237
  childBefore(pos: number): boolean;
230
- enter(pos: number, side: -1 | 0 | 1, overlays?: boolean, buffers?: boolean): boolean;
238
+ enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): boolean;
231
239
  parent(): boolean;
232
240
  nextSibling(): boolean;
233
241
  prevSibling(): boolean;
@@ -238,5 +246,16 @@ export declare class TreeCursor {
238
246
  moveTo(pos: number, side?: -1 | 0 | 1): this;
239
247
  get node(): SyntaxNode;
240
248
  get tree(): Tree | null;
249
+ iterate(enter: (node: SyntaxNodeRef) => boolean | void, leave?: (node: SyntaxNodeRef) => void): void;
250
+ matchContext(context: readonly string[]): boolean;
251
+ }
252
+ export declare class NodeWeakMap<T> {
253
+ private map;
254
+ private setBuffer;
255
+ private getBuffer;
256
+ set(node: SyntaxNode, value: T): void;
257
+ get(node: SyntaxNode): T | undefined;
258
+ cursorSet(cursor: TreeCursor, value: T): void;
259
+ cursorGet(cursor: TreeCursor): T | undefined;
241
260
  }
242
261
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lezer/common",
3
- "version": "0.15.10",
3
+ "version": "0.16.0",
4
4
  "description": "Syntax tree data structure and parser interfaces for the lezer parser",
5
5
  "main": "dist/index.cjs",
6
6
  "type": "module",
@@ -1,42 +0,0 @@
1
- import { Tree, SyntaxNode } from "./tree";
2
- import { Parser, PartialParse, TreeFragment, Input } from "./parse";
3
- export declare class SubtreeRange {
4
- constructor(from: number, to: number, parser: Parser, cont?: any);
5
- }
6
- export declare class CompositeParser extends Parser {
7
- private subtreeRanges;
8
- private subtreeCache;
9
- constructor(main: Parser, subtreeRanges: {
10
- [nodeID: number]: (node: SyntaxNode, input: Input) => (readonly SubtreeRange[] | null);
11
- });
12
- startParseInner(input: Input, fragments: readonly TreeFragment[], ranges: readonly {
13
- from: number;
14
- to: number;
15
- }[]): CompositeParse;
16
- }
17
- declare class CompositeParse implements PartialParse {
18
- readonly input: Input;
19
- readonly fragments: readonly TreeFragment[];
20
- readonly ranges: readonly {
21
- from: number;
22
- to: number;
23
- }[];
24
- readonly parser: CompositeParser;
25
- main: PartialParse;
26
- mainResult: Tree | null;
27
- mainSub: Tree[];
28
- inner: PartialParse[];
29
- subtrees: Tree[];
30
- stoppedAt: number | null;
31
- constructor(input: Input, fragments: readonly TreeFragment[], ranges: readonly {
32
- from: number;
33
- to: number;
34
- }[], parser: CompositeParser);
35
- advance(): Tree | null;
36
- private startSub;
37
- private startInner;
38
- private reuseInner;
39
- stopAt(pos: number): void;
40
- get parsedPos(): number;
41
- }
42
- export {};
package/dist/frame.d.ts DELETED
@@ -1,25 +0,0 @@
1
- import { Parser, ParseSpec, FullParseSpec, PartialParse } from "./parse";
2
- import { Tree, NodeType } from "./tree";
3
- export declare class FramingParser extends Parser {
4
- constructor(config: {
5
- frame: Parser;
6
- fill: Parser;
7
- frameNodes: readonly NodeType[];
8
- });
9
- startParse(spec: ParseSpec): FramingParse;
10
- }
11
- declare class FramingParse implements PartialParse {
12
- readonly parser: FramingParser;
13
- readonly spec: FullParseSpec;
14
- outerTree: Tree | null;
15
- outer: PartialParse;
16
- inner: PartialParse | null;
17
- stoppedAt: null | number;
18
- constructor(parser: FramingParser, spec: FullParseSpec);
19
- get parsedPos(): number;
20
- advance(): Tree;
21
- stopAt(pos: number): void;
22
- private startInner;
23
- private finishParse;
24
- }
25
- export {};
@@ -1,25 +0,0 @@
1
- import { Parser, ParseSpec, FullParseSpec, PartialParse } from "./parse";
2
- import { Tree, NodeType } from "./tree";
3
- export declare class ScaffoldParser extends Parser {
4
- constructor(config: {
5
- scaffold: Parser;
6
- fill: Parser;
7
- scaffoldNodes: readonly NodeType[];
8
- });
9
- startParse(spec: ParseSpec): ScaffoldParse;
10
- }
11
- declare class ScaffoldParse implements PartialParse {
12
- readonly parser: ScaffoldParser;
13
- readonly spec: FullParseSpec;
14
- outerTree: Tree | null;
15
- outer: PartialParse;
16
- inner: PartialParse | null;
17
- stoppedAt: null | number;
18
- constructor(parser: ScaffoldParser, spec: FullParseSpec);
19
- get parsedPos(): number;
20
- advance(): Tree;
21
- stopAt(pos: number): void;
22
- private startInner;
23
- private finishParse;
24
- }
25
- export {};