@lezer/common 1.0.3 → 1.0.4
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/index.cjs +506 -282
- package/dist/index.d.cts +1115 -0
- package/dist/index.d.ts +1115 -3
- package/dist/index.js +506 -280
- package/package.json +5 -10
- package/dist/mix.d.ts +0 -13
- package/dist/parse.d.ts +0 -48
- package/dist/tree.d.ts +0 -262
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lezer/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Syntax tree data structure and parser interfaces for the lezer parser",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"type": "module",
|
|
@@ -14,14 +14,9 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"ist": "^1.1.1",
|
|
17
|
-
"
|
|
18
|
-
"@rollup/plugin-commonjs": "^15.1.0",
|
|
19
|
-
"@rollup/plugin-node-resolve": "^9.0.0",
|
|
20
|
-
"rollup-plugin-typescript2": "^0.34.1",
|
|
21
|
-
"typescript": "^4.3.4",
|
|
17
|
+
"@marijn/buildtool": "^0.1.5",
|
|
22
18
|
"@types/mocha": "^5.2.6",
|
|
23
|
-
"
|
|
24
|
-
"mocha": "^9.0.1"
|
|
19
|
+
"mocha": "^10.2.0"
|
|
25
20
|
},
|
|
26
21
|
"files": ["dist"],
|
|
27
22
|
"repository": {
|
|
@@ -29,8 +24,8 @@
|
|
|
29
24
|
"url" : "https://github.com/lezer-parser/common.git"
|
|
30
25
|
},
|
|
31
26
|
"scripts": {
|
|
32
|
-
"watch": "
|
|
33
|
-
"prepare": "
|
|
27
|
+
"watch": "node build.js --watch",
|
|
28
|
+
"prepare": "node build.js",
|
|
34
29
|
"test": "mocha"
|
|
35
30
|
}
|
|
36
31
|
}
|
package/dist/mix.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { SyntaxNodeRef } from "./tree";
|
|
2
|
-
import { Input, Parser, ParseWrapper } from "./parse";
|
|
3
|
-
export interface NestedParse {
|
|
4
|
-
parser: Parser;
|
|
5
|
-
overlay?: readonly {
|
|
6
|
-
from: number;
|
|
7
|
-
to: number;
|
|
8
|
-
}[] | ((node: SyntaxNodeRef) => {
|
|
9
|
-
from: number;
|
|
10
|
-
to: number;
|
|
11
|
-
} | boolean);
|
|
12
|
-
}
|
|
13
|
-
export declare function parseMixed(nest: (node: SyntaxNodeRef, input: Input) => NestedParse | null): ParseWrapper;
|
package/dist/parse.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Tree } from "./tree";
|
|
2
|
-
export interface ChangedRange {
|
|
3
|
-
fromA: number;
|
|
4
|
-
toA: number;
|
|
5
|
-
fromB: number;
|
|
6
|
-
toB: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class TreeFragment {
|
|
9
|
-
readonly from: number;
|
|
10
|
-
readonly to: number;
|
|
11
|
-
readonly tree: Tree;
|
|
12
|
-
readonly offset: number;
|
|
13
|
-
constructor(from: number, to: number, tree: Tree, offset: number, openStart?: boolean, openEnd?: boolean);
|
|
14
|
-
get openStart(): boolean;
|
|
15
|
-
get openEnd(): boolean;
|
|
16
|
-
static addTree(tree: Tree, fragments?: readonly TreeFragment[], partial?: boolean): readonly TreeFragment[];
|
|
17
|
-
static applyChanges(fragments: readonly TreeFragment[], changes: readonly ChangedRange[], minGap?: number): readonly TreeFragment[];
|
|
18
|
-
}
|
|
19
|
-
export interface PartialParse {
|
|
20
|
-
advance(): Tree | null;
|
|
21
|
-
readonly parsedPos: number;
|
|
22
|
-
stopAt(pos: number): void;
|
|
23
|
-
readonly stoppedAt: number | null;
|
|
24
|
-
}
|
|
25
|
-
export declare abstract class Parser {
|
|
26
|
-
abstract createParse(input: Input, fragments: readonly TreeFragment[], ranges: readonly {
|
|
27
|
-
from: number;
|
|
28
|
-
to: number;
|
|
29
|
-
}[]): PartialParse;
|
|
30
|
-
startParse(input: Input | string, fragments?: readonly TreeFragment[], ranges?: readonly {
|
|
31
|
-
from: number;
|
|
32
|
-
to: number;
|
|
33
|
-
}[]): PartialParse;
|
|
34
|
-
parse(input: Input | string, fragments?: readonly TreeFragment[], ranges?: readonly {
|
|
35
|
-
from: number;
|
|
36
|
-
to: number;
|
|
37
|
-
}[]): Tree;
|
|
38
|
-
}
|
|
39
|
-
export interface Input {
|
|
40
|
-
readonly length: number;
|
|
41
|
-
chunk(from: number): string;
|
|
42
|
-
readonly lineChunks: boolean;
|
|
43
|
-
read(from: number, to: number): string;
|
|
44
|
-
}
|
|
45
|
-
export type ParseWrapper = (inner: PartialParse, input: Input, fragments: readonly TreeFragment[], ranges: readonly {
|
|
46
|
-
from: number;
|
|
47
|
-
to: number;
|
|
48
|
-
}[]) => PartialParse;
|
package/dist/tree.d.ts
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import { Parser } from "./parse";
|
|
2
|
-
export declare const DefaultBufferLength = 1024;
|
|
3
|
-
export declare class Range {
|
|
4
|
-
readonly from: number;
|
|
5
|
-
readonly to: number;
|
|
6
|
-
constructor(from: number, to: number);
|
|
7
|
-
}
|
|
8
|
-
export declare class NodeProp<T> {
|
|
9
|
-
perNode: boolean;
|
|
10
|
-
deserialize: (str: string) => T;
|
|
11
|
-
constructor(config?: {
|
|
12
|
-
deserialize?: (str: string) => T;
|
|
13
|
-
perNode?: boolean;
|
|
14
|
-
});
|
|
15
|
-
add(match: {
|
|
16
|
-
[selector: string]: T;
|
|
17
|
-
} | ((type: NodeType) => T | undefined)): NodePropSource;
|
|
18
|
-
static closedBy: NodeProp<readonly string[]>;
|
|
19
|
-
static openedBy: NodeProp<readonly string[]>;
|
|
20
|
-
static group: NodeProp<readonly string[]>;
|
|
21
|
-
static contextHash: NodeProp<number>;
|
|
22
|
-
static lookAhead: NodeProp<number>;
|
|
23
|
-
static mounted: NodeProp<MountedTree>;
|
|
24
|
-
}
|
|
25
|
-
export declare class MountedTree {
|
|
26
|
-
readonly tree: Tree;
|
|
27
|
-
readonly overlay: readonly {
|
|
28
|
-
from: number;
|
|
29
|
-
to: number;
|
|
30
|
-
}[] | null;
|
|
31
|
-
readonly parser: Parser;
|
|
32
|
-
constructor(tree: Tree, overlay: readonly {
|
|
33
|
-
from: number;
|
|
34
|
-
to: number;
|
|
35
|
-
}[] | null, parser: Parser);
|
|
36
|
-
}
|
|
37
|
-
export type NodePropSource = (type: NodeType) => null | [NodeProp<any>, any];
|
|
38
|
-
export declare class NodeType {
|
|
39
|
-
readonly name: string;
|
|
40
|
-
readonly id: number;
|
|
41
|
-
static define(spec: {
|
|
42
|
-
id: number;
|
|
43
|
-
name?: string;
|
|
44
|
-
props?: readonly ([NodeProp<any>, any] | NodePropSource)[];
|
|
45
|
-
top?: boolean;
|
|
46
|
-
error?: boolean;
|
|
47
|
-
skipped?: boolean;
|
|
48
|
-
}): NodeType;
|
|
49
|
-
prop<T>(prop: NodeProp<T>): T | undefined;
|
|
50
|
-
get isTop(): boolean;
|
|
51
|
-
get isSkipped(): boolean;
|
|
52
|
-
get isError(): boolean;
|
|
53
|
-
get isAnonymous(): boolean;
|
|
54
|
-
is(name: string | number): boolean;
|
|
55
|
-
static none: NodeType;
|
|
56
|
-
static match<T>(map: {
|
|
57
|
-
[selector: string]: T;
|
|
58
|
-
}): (node: NodeType) => T | undefined;
|
|
59
|
-
}
|
|
60
|
-
export declare class NodeSet {
|
|
61
|
-
readonly types: readonly NodeType[];
|
|
62
|
-
constructor(types: readonly NodeType[]);
|
|
63
|
-
extend(...props: NodePropSource[]): NodeSet;
|
|
64
|
-
}
|
|
65
|
-
export declare enum IterMode {
|
|
66
|
-
ExcludeBuffers = 1,
|
|
67
|
-
IncludeAnonymous = 2,
|
|
68
|
-
IgnoreMounts = 4,
|
|
69
|
-
IgnoreOverlays = 8
|
|
70
|
-
}
|
|
71
|
-
export declare class Tree {
|
|
72
|
-
readonly type: NodeType;
|
|
73
|
-
readonly children: readonly (Tree | TreeBuffer)[];
|
|
74
|
-
readonly positions: readonly number[];
|
|
75
|
-
readonly length: number;
|
|
76
|
-
constructor(type: NodeType, children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number, props?: readonly [NodeProp<any> | number, any][]);
|
|
77
|
-
static empty: Tree;
|
|
78
|
-
cursor(mode?: IterMode): TreeCursor;
|
|
79
|
-
cursorAt(pos: number, side?: -1 | 0 | 1, mode?: IterMode): TreeCursor;
|
|
80
|
-
get topNode(): SyntaxNode;
|
|
81
|
-
resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
82
|
-
resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
83
|
-
iterate(spec: {
|
|
84
|
-
enter(node: SyntaxNodeRef): boolean | void;
|
|
85
|
-
leave?(node: SyntaxNodeRef): void;
|
|
86
|
-
from?: number;
|
|
87
|
-
to?: number;
|
|
88
|
-
mode?: IterMode;
|
|
89
|
-
}): void;
|
|
90
|
-
prop<T>(prop: NodeProp<T>): T | undefined;
|
|
91
|
-
get propValues(): readonly [NodeProp<any> | number, any][];
|
|
92
|
-
balance(config?: {
|
|
93
|
-
makeTree?: (children: readonly (Tree | TreeBuffer)[], positions: readonly number[], length: number) => Tree;
|
|
94
|
-
}): Tree;
|
|
95
|
-
static build(data: BuildData): Tree;
|
|
96
|
-
}
|
|
97
|
-
type BuildData = {
|
|
98
|
-
buffer: BufferCursor | readonly number[];
|
|
99
|
-
nodeSet: NodeSet;
|
|
100
|
-
topID: number;
|
|
101
|
-
start?: number;
|
|
102
|
-
bufferStart?: number;
|
|
103
|
-
length?: number;
|
|
104
|
-
maxBufferLength?: number;
|
|
105
|
-
reused?: readonly Tree[];
|
|
106
|
-
minRepeatType?: number;
|
|
107
|
-
};
|
|
108
|
-
export interface BufferCursor {
|
|
109
|
-
pos: number;
|
|
110
|
-
id: number;
|
|
111
|
-
start: number;
|
|
112
|
-
end: number;
|
|
113
|
-
size: number;
|
|
114
|
-
next(): void;
|
|
115
|
-
fork(): BufferCursor;
|
|
116
|
-
}
|
|
117
|
-
export declare class TreeBuffer {
|
|
118
|
-
readonly buffer: Uint16Array;
|
|
119
|
-
readonly length: number;
|
|
120
|
-
readonly set: NodeSet;
|
|
121
|
-
constructor(buffer: Uint16Array, length: number, set: NodeSet);
|
|
122
|
-
}
|
|
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
|
-
matchContext(context: readonly string[]): boolean;
|
|
131
|
-
}
|
|
132
|
-
export interface SyntaxNode extends SyntaxNodeRef {
|
|
133
|
-
parent: SyntaxNode | null;
|
|
134
|
-
firstChild: SyntaxNode | null;
|
|
135
|
-
lastChild: SyntaxNode | null;
|
|
136
|
-
childAfter(pos: number): SyntaxNode | null;
|
|
137
|
-
childBefore(pos: number): SyntaxNode | null;
|
|
138
|
-
enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): SyntaxNode | null;
|
|
139
|
-
nextSibling: SyntaxNode | null;
|
|
140
|
-
prevSibling: SyntaxNode | null;
|
|
141
|
-
cursor(mode?: IterMode): TreeCursor;
|
|
142
|
-
resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
143
|
-
resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
144
|
-
enterUnfinishedNodesBefore(pos: number): SyntaxNode;
|
|
145
|
-
toTree(): Tree;
|
|
146
|
-
getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode | null;
|
|
147
|
-
getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
|
|
148
|
-
matchContext(context: readonly string[]): boolean;
|
|
149
|
-
}
|
|
150
|
-
declare const enum Side {
|
|
151
|
-
Before = -2,
|
|
152
|
-
AtOrBefore = -1,
|
|
153
|
-
Around = 0,
|
|
154
|
-
AtOrAfter = 1,
|
|
155
|
-
After = 2,
|
|
156
|
-
DontCare = 4
|
|
157
|
-
}
|
|
158
|
-
export declare class TreeNode implements SyntaxNode {
|
|
159
|
-
readonly _tree: Tree;
|
|
160
|
-
readonly from: number;
|
|
161
|
-
readonly index: number;
|
|
162
|
-
readonly _parent: TreeNode | null;
|
|
163
|
-
constructor(_tree: Tree, from: number, index: number, _parent: TreeNode | null);
|
|
164
|
-
get type(): NodeType;
|
|
165
|
-
get name(): string;
|
|
166
|
-
get to(): number;
|
|
167
|
-
nextChild(i: number, dir: 1 | -1, pos: number, side: Side, mode?: IterMode): TreeNode | BufferNode | null;
|
|
168
|
-
get firstChild(): TreeNode | BufferNode;
|
|
169
|
-
get lastChild(): TreeNode | BufferNode;
|
|
170
|
-
childAfter(pos: number): TreeNode | BufferNode;
|
|
171
|
-
childBefore(pos: number): TreeNode | BufferNode;
|
|
172
|
-
enter(pos: number, side: -1 | 0 | 1, mode?: number): TreeNode | BufferNode;
|
|
173
|
-
nextSignificantParent(): TreeNode;
|
|
174
|
-
get parent(): TreeNode | null;
|
|
175
|
-
get nextSibling(): SyntaxNode | null;
|
|
176
|
-
get prevSibling(): SyntaxNode | null;
|
|
177
|
-
cursor(mode?: IterMode): TreeCursor;
|
|
178
|
-
get tree(): Tree;
|
|
179
|
-
toTree(): Tree;
|
|
180
|
-
resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
181
|
-
resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
182
|
-
enterUnfinishedNodesBefore(pos: number): SyntaxNode;
|
|
183
|
-
getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
|
|
184
|
-
getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
|
|
185
|
-
get node(): this;
|
|
186
|
-
matchContext(context: readonly string[]): boolean;
|
|
187
|
-
}
|
|
188
|
-
declare class BufferContext {
|
|
189
|
-
readonly parent: TreeNode;
|
|
190
|
-
readonly buffer: TreeBuffer;
|
|
191
|
-
readonly index: number;
|
|
192
|
-
readonly start: number;
|
|
193
|
-
constructor(parent: TreeNode, buffer: TreeBuffer, index: number, start: number);
|
|
194
|
-
}
|
|
195
|
-
declare class BufferNode implements SyntaxNode {
|
|
196
|
-
readonly context: BufferContext;
|
|
197
|
-
readonly _parent: BufferNode | null;
|
|
198
|
-
readonly index: number;
|
|
199
|
-
type: NodeType;
|
|
200
|
-
get name(): string;
|
|
201
|
-
get from(): number;
|
|
202
|
-
get to(): number;
|
|
203
|
-
constructor(context: BufferContext, _parent: BufferNode | null, index: number);
|
|
204
|
-
child(dir: 1 | -1, pos: number, side: Side): BufferNode | null;
|
|
205
|
-
get firstChild(): BufferNode;
|
|
206
|
-
get lastChild(): BufferNode;
|
|
207
|
-
childAfter(pos: number): BufferNode;
|
|
208
|
-
childBefore(pos: number): BufferNode;
|
|
209
|
-
enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): BufferNode;
|
|
210
|
-
get parent(): SyntaxNode | null;
|
|
211
|
-
externalSibling(dir: 1 | -1): TreeNode | BufferNode;
|
|
212
|
-
get nextSibling(): SyntaxNode | null;
|
|
213
|
-
get prevSibling(): SyntaxNode | null;
|
|
214
|
-
cursor(mode?: IterMode): TreeCursor;
|
|
215
|
-
get tree(): any;
|
|
216
|
-
toTree(): Tree;
|
|
217
|
-
resolve(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
218
|
-
resolveInner(pos: number, side?: -1 | 0 | 1): SyntaxNode;
|
|
219
|
-
enterUnfinishedNodesBefore(pos: number): SyntaxNode;
|
|
220
|
-
getChild(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode;
|
|
221
|
-
getChildren(type: string | number, before?: string | number | null, after?: string | number | null): SyntaxNode[];
|
|
222
|
-
get node(): this;
|
|
223
|
-
matchContext(context: readonly string[]): boolean;
|
|
224
|
-
}
|
|
225
|
-
export declare class TreeCursor implements SyntaxNodeRef {
|
|
226
|
-
type: NodeType;
|
|
227
|
-
get name(): string;
|
|
228
|
-
from: number;
|
|
229
|
-
to: number;
|
|
230
|
-
private stack;
|
|
231
|
-
private bufferNode;
|
|
232
|
-
private yieldNode;
|
|
233
|
-
private yieldBuf;
|
|
234
|
-
private yield;
|
|
235
|
-
firstChild(): boolean;
|
|
236
|
-
lastChild(): boolean;
|
|
237
|
-
childAfter(pos: number): boolean;
|
|
238
|
-
childBefore(pos: number): boolean;
|
|
239
|
-
enter(pos: number, side: -1 | 0 | 1, mode?: IterMode): boolean;
|
|
240
|
-
parent(): boolean;
|
|
241
|
-
nextSibling(): boolean;
|
|
242
|
-
prevSibling(): boolean;
|
|
243
|
-
private atLastNode;
|
|
244
|
-
private move;
|
|
245
|
-
next(enter?: boolean): boolean;
|
|
246
|
-
prev(enter?: boolean): boolean;
|
|
247
|
-
moveTo(pos: number, side?: -1 | 0 | 1): this;
|
|
248
|
-
get node(): SyntaxNode;
|
|
249
|
-
get tree(): Tree | null;
|
|
250
|
-
iterate(enter: (node: SyntaxNodeRef) => boolean | void, leave?: (node: SyntaxNodeRef) => void): void;
|
|
251
|
-
matchContext(context: readonly string[]): boolean;
|
|
252
|
-
}
|
|
253
|
-
export declare class NodeWeakMap<T> {
|
|
254
|
-
private map;
|
|
255
|
-
private setBuffer;
|
|
256
|
-
private getBuffer;
|
|
257
|
-
set(node: SyntaxNode, value: T): void;
|
|
258
|
-
get(node: SyntaxNode): T | undefined;
|
|
259
|
-
cursorSet(cursor: TreeCursor, value: T): void;
|
|
260
|
-
cursorGet(cursor: TreeCursor): T | undefined;
|
|
261
|
-
}
|
|
262
|
-
export {};
|