parser-lr 0.2.4 → 0.3.1
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/README.md +82 -0
- package/bin/parser-lr.js +3385 -3220
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/grammar/grammar.json +3123 -3123
- package/dist/lib/parse-table/analysis/first-follow.d.ts +6 -0
- package/dist/lib/parse-table/analysis/first-follow.d.ts.map +1 -1
- package/dist/lib/parse-table/analysis/first-follow.js +13 -0
- package/dist/lib/parse-table/analysis/first-follow.js.map +1 -1
- package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts.map +1 -1
- package/dist/lib/parse-table/bnf/desugar-ebnf.js +2 -0
- package/dist/lib/parse-table/bnf/desugar-ebnf.js.map +1 -1
- package/dist/lib/parse-table/build-lr-table.d.ts +1 -0
- package/dist/lib/parse-table/build-lr-table.d.ts.map +1 -1
- package/dist/lib/parse-table/build-lr-table.js +11 -1
- package/dist/lib/parse-table/build-lr-table.js.map +1 -1
- package/dist/lib/parse-table/index.d.ts +1 -1
- package/dist/lib/parse-table/index.d.ts.map +1 -1
- package/dist/lib/parse-table/index.js +1 -1
- package/dist/lib/parse-table/index.js.map +1 -1
- package/dist/lib/parse-table/lr0/lr0-item-set.d.ts +26 -2
- package/dist/lib/parse-table/lr0/lr0-item-set.d.ts.map +1 -1
- package/dist/lib/parse-table/lr0/lr0-item-set.js +92 -54
- package/dist/lib/parse-table/lr0/lr0-item-set.js.map +1 -1
- package/dist/lib/parse-table/lr1/lr1-item-set.d.ts +31 -2
- package/dist/lib/parse-table/lr1/lr1-item-set.d.ts.map +1 -1
- package/dist/lib/parse-table/lr1/lr1-item-set.js +95 -60
- package/dist/lib/parse-table/lr1/lr1-item-set.js.map +1 -1
- package/dist/lib/parse-table/parse-table.d.ts +13 -3
- package/dist/lib/parse-table/parse-table.d.ts.map +1 -1
- package/dist/lib/parse-table/parse-table.js +19 -8
- package/dist/lib/parse-table/parse-table.js.map +1 -1
- package/dist/lib/parse-table/table/index.d.ts +1 -1
- package/dist/lib/parse-table/table/index.d.ts.map +1 -1
- package/dist/lib/parse-table/table/index.js +1 -1
- package/dist/lib/parse-table/table/index.js.map +1 -1
- package/dist/lib/parse-table/table/lr-parse-table.d.ts +14 -2
- package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -1
- package/dist/lib/parse-table/table/lr-parse-table.js +38 -3
- package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -1
- package/dist/lib/parse-table/table/parse-action.d.ts +3 -1
- package/dist/lib/parse-table/table/parse-action.d.ts.map +1 -1
- package/dist/lib/parse-table/table/parse-action.js.map +1 -1
- package/dist/lib/parse-table/table/table-builder-base.d.ts +5 -4
- package/dist/lib/parse-table/table/table-builder-base.d.ts.map +1 -1
- package/dist/lib/parse-table/table/table-builder-base.js +28 -8
- package/dist/lib/parse-table/table/table-builder-base.js.map +1 -1
- package/dist/lib/shift-reduce/shift-reduce-engine.d.ts +10 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.d.ts.map +1 -1
- package/dist/lib/shift-reduce/shift-reduce-engine.js +11 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.js.map +1 -1
- package/dist/lib/transform/binding-map.d.ts +6 -0
- package/dist/lib/transform/binding-map.d.ts.map +1 -1
- package/dist/lib/transform/binding-map.js +17 -0
- package/dist/lib/transform/binding-map.js.map +1 -1
- package/dist/lib/transform/cst-transformer.d.ts +6 -0
- package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
- package/dist/lib/transform/cst-transformer.js +24 -2
- package/dist/lib/transform/cst-transformer.js.map +1 -1
- package/package.json +3 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { bnfParserSymbolKey } from '../bnf/bnf-symbol.js';
|
|
2
|
-
import { sortLr0Items } from '../lr0/lr0-item-set.js';
|
|
2
|
+
import { sortLr0Items, symbolsAfterDot } from '../lr0/lr0-item-set.js';
|
|
3
3
|
import { TableBuilderBase } from '../table/table-builder-base.js';
|
|
4
4
|
/**
|
|
5
5
|
* Returns whether two LR(1) items are identical.
|
|
6
6
|
*
|
|
7
7
|
* @param left - First item.
|
|
8
8
|
* @param right - Second item.
|
|
9
|
+
* @returns True when production id, dot, and lookahead match.
|
|
9
10
|
*/
|
|
10
11
|
export function lr1ItemsEqual(left, right) {
|
|
11
12
|
return left.productionId === right.productionId
|
|
@@ -16,6 +17,7 @@ export function lr1ItemsEqual(left, right) {
|
|
|
16
17
|
* Sorts LR(1) items for canonical set comparison.
|
|
17
18
|
*
|
|
18
19
|
* @param items - Items to sort.
|
|
20
|
+
* @returns A new array sorted by production id, dot, then lookahead.
|
|
19
21
|
*/
|
|
20
22
|
export function sortLr1Items(items) {
|
|
21
23
|
return [...items].sort((left, right) => {
|
|
@@ -32,6 +34,7 @@ export function sortLr1Items(items) {
|
|
|
32
34
|
* Returns the LR(0) core key for one LR(1) item.
|
|
33
35
|
*
|
|
34
36
|
* @param item - LR(1) item to encode.
|
|
37
|
+
* @returns A string `productionId:dot` shared by all lookaheads at the same dot position.
|
|
35
38
|
*/
|
|
36
39
|
export function lr1CoreKey(item) {
|
|
37
40
|
return `${String(item.productionId)}:${String(item.dot)}`;
|
|
@@ -40,6 +43,7 @@ export function lr1CoreKey(item) {
|
|
|
40
43
|
* Returns a stable identity string for one LR(1) item.
|
|
41
44
|
*
|
|
42
45
|
* @param item - Item to encode.
|
|
46
|
+
* @returns A string `productionId:dot:lookahead` for set membership tests.
|
|
43
47
|
*/
|
|
44
48
|
export function lr1ItemIdentity(item) {
|
|
45
49
|
return `${lr1CoreKey(item)}:${item.lookahead}`;
|
|
@@ -48,9 +52,12 @@ export function lr1ItemIdentity(item) {
|
|
|
48
52
|
* Returns a stable identity string for an LR(1) item set.
|
|
49
53
|
*
|
|
50
54
|
* @param items - Closed item set.
|
|
55
|
+
* @param alreadySorted - When true, skips re-sorting because items are canonical.
|
|
56
|
+
* @returns A pipe-separated, sorted identity string for canonical set comparison.
|
|
51
57
|
*/
|
|
52
|
-
export function lr1SetIdentity(items) {
|
|
53
|
-
|
|
58
|
+
export function lr1SetIdentity(items, alreadySorted = false) {
|
|
59
|
+
const sorted = alreadySorted ? items : sortLr1Items(items);
|
|
60
|
+
return sorted
|
|
54
61
|
.map((item) => lr1ItemIdentity(item))
|
|
55
62
|
.join('|');
|
|
56
63
|
}
|
|
@@ -58,6 +65,7 @@ export function lr1SetIdentity(items) {
|
|
|
58
65
|
* Returns the LR(0) core identity for an LR(1) item set.
|
|
59
66
|
*
|
|
60
67
|
* @param items - LR(1) item set.
|
|
68
|
+
* @returns A pipe-separated, sorted string of LR(0) cores with lookaheads removed.
|
|
61
69
|
*/
|
|
62
70
|
export function lr1CoreSetIdentity(items) {
|
|
63
71
|
const cores = new Set(items.map((item) => lr1CoreKey(item)));
|
|
@@ -69,9 +77,11 @@ export function lr1CoreSetIdentity(items) {
|
|
|
69
77
|
* @param beta - Remaining right-hand side symbols after a non-terminal.
|
|
70
78
|
* @param lookahead - Lookahead terminal following β.
|
|
71
79
|
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
80
|
+
* @returns Terminal keys that may follow the dotted non-terminal in this item.
|
|
72
81
|
*/
|
|
73
82
|
export function firstAfterSymbols(beta, lookahead, analysis) {
|
|
74
83
|
const result = new Set();
|
|
84
|
+
// Accumulate FIRST of each prefix symbol until a non-nullable symbol stops propagation.
|
|
75
85
|
for (const symbol of beta) {
|
|
76
86
|
for (const terminal of analysis.firstOfSymbol(symbol)) {
|
|
77
87
|
result.add(terminal);
|
|
@@ -80,6 +90,7 @@ export function firstAfterSymbols(beta, lookahead, analysis) {
|
|
|
80
90
|
return result;
|
|
81
91
|
}
|
|
82
92
|
}
|
|
93
|
+
// Every symbol in β is nullable, so the item's own lookahead is reachable.
|
|
83
94
|
result.add(lookahead);
|
|
84
95
|
return result;
|
|
85
96
|
}
|
|
@@ -89,36 +100,37 @@ export function firstAfterSymbols(beta, lookahead, analysis) {
|
|
|
89
100
|
* @param grammar - Augmented BNF grammar.
|
|
90
101
|
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
91
102
|
* @param items - Seed items.
|
|
103
|
+
* @returns The seed items plus all items implied by dotted non-terminal prefixes.
|
|
92
104
|
*/
|
|
93
105
|
export function lr1Closure(grammar, analysis, items) {
|
|
94
106
|
const result = sortLr1Items(items);
|
|
95
107
|
const itemKeys = new Set(result.map((item) => lr1ItemIdentity(item)));
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
108
|
+
const pendingIndices = result.map((_, index) => index);
|
|
109
|
+
// Expand closure from each newly discovered item only.
|
|
110
|
+
while (pendingIndices.length > 0) {
|
|
111
|
+
const item = result[pendingIndices.pop()];
|
|
112
|
+
const production = grammar.production(item.productionId);
|
|
113
|
+
if (production === null) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const nextSymbol = production.rhs[item.dot];
|
|
117
|
+
if (nextSymbol === undefined || nextSymbol.kind !== 'nonTerminal') {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const beta = production.rhs.slice(item.dot + 1);
|
|
121
|
+
// For each production of the non-terminal after the dot, propagate lookaheads.
|
|
122
|
+
for (const candidate of grammar.productionsFor(nextSymbol.name)) {
|
|
123
|
+
for (const lookahead of firstAfterSymbols(beta, item.lookahead, analysis)) {
|
|
124
|
+
const closureItem = {
|
|
125
|
+
productionId: candidate.id,
|
|
126
|
+
dot: 0,
|
|
127
|
+
lookahead,
|
|
128
|
+
};
|
|
129
|
+
const identity = lr1ItemIdentity(closureItem);
|
|
130
|
+
if (!itemKeys.has(identity)) {
|
|
131
|
+
itemKeys.add(identity);
|
|
132
|
+
pendingIndices.push(result.length);
|
|
133
|
+
result.push(closureItem);
|
|
122
134
|
}
|
|
123
135
|
}
|
|
124
136
|
}
|
|
@@ -132,9 +144,11 @@ export function lr1Closure(grammar, analysis, items) {
|
|
|
132
144
|
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
133
145
|
* @param items - Closed item set.
|
|
134
146
|
* @param symbolKey - Encoded terminal or non-terminal symbol.
|
|
147
|
+
* @returns The closed item set reached after advancing the dot past `symbolKey`.
|
|
135
148
|
*/
|
|
136
149
|
export function lr1Goto(grammar, analysis, items, symbolKey) {
|
|
137
150
|
const moved = [];
|
|
151
|
+
// Advance the dot on every item expecting `symbolKey`, preserving lookaheads.
|
|
138
152
|
for (const item of items) {
|
|
139
153
|
const production = grammar.production(item.productionId);
|
|
140
154
|
if (production === null) {
|
|
@@ -161,34 +175,45 @@ export function lr1Goto(grammar, analysis, items, symbolKey) {
|
|
|
161
175
|
export class Lr1ItemSetCollection {
|
|
162
176
|
grammar;
|
|
163
177
|
itemSets;
|
|
178
|
+
indexByIdentity;
|
|
164
179
|
/**
|
|
165
180
|
* Creates a collection from an ordered list of closed item sets.
|
|
166
181
|
*
|
|
167
182
|
* @param grammar - Grammar the item sets were built from.
|
|
168
183
|
* @param itemSets - Closed LR(1) item sets in discovery order.
|
|
184
|
+
* @param indexByIdentity - Optional precomputed identity-to-state map.
|
|
169
185
|
*/
|
|
170
|
-
constructor(
|
|
186
|
+
constructor(
|
|
187
|
+
/** Grammar analyzed when the item sets were constructed. */
|
|
188
|
+
grammar,
|
|
189
|
+
/** Closed LR(1) item sets indexed by parser state number. */
|
|
190
|
+
itemSets, indexByIdentity) {
|
|
171
191
|
this.grammar = grammar;
|
|
172
192
|
this.itemSets = itemSets;
|
|
193
|
+
if (indexByIdentity !== undefined) {
|
|
194
|
+
this.indexByIdentity = indexByIdentity;
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const builtIndex = new Map();
|
|
198
|
+
for (let index = 0; index < itemSets.length; index += 1) {
|
|
199
|
+
builtIndex.set(lr1SetIdentity(itemSets[index] ?? [], true), index);
|
|
200
|
+
}
|
|
201
|
+
this.indexByIdentity = builtIndex;
|
|
173
202
|
}
|
|
174
203
|
/**
|
|
175
204
|
* Returns the index of an item set matching `items`, or null when absent.
|
|
176
205
|
*
|
|
177
206
|
* @param items - Closed item set to locate.
|
|
207
|
+
* @returns State index, or null when no set has the same canonical identity.
|
|
178
208
|
*/
|
|
179
209
|
indexOf(items) {
|
|
180
|
-
|
|
181
|
-
for (let index = 0; index < this.itemSets.length; index += 1) {
|
|
182
|
-
if (lr1SetIdentity(this.itemSets[index]) === target) {
|
|
183
|
-
return index;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return null;
|
|
210
|
+
return this.indexByIdentity.get(lr1SetIdentity(items, true)) ?? null;
|
|
187
211
|
}
|
|
188
212
|
/**
|
|
189
213
|
* Returns LR(0) items derived from one LR(1) item set.
|
|
190
214
|
*
|
|
191
215
|
* @param items - LR(1) item set.
|
|
216
|
+
* @returns Deduplicated LR(0) cores with lookaheads stripped.
|
|
192
217
|
*/
|
|
193
218
|
static lr0Core(items) {
|
|
194
219
|
const cores = new Map();
|
|
@@ -211,43 +236,43 @@ export class Lr1ItemSetBuilder {
|
|
|
211
236
|
* @param grammar - Augmented BNF grammar.
|
|
212
237
|
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
213
238
|
* @param startLookahead - Lookahead terminal for the initial item.
|
|
239
|
+
* @returns The canonical LR(1) item set collection for the grammar.
|
|
214
240
|
*/
|
|
215
241
|
static build(grammar, analysis, startLookahead) {
|
|
216
242
|
const startProductions = grammar.productionsFor(grammar.startSymbol);
|
|
217
243
|
if (startProductions.length === 0) {
|
|
218
244
|
return new Lr1ItemSetCollection(grammar, []);
|
|
219
245
|
}
|
|
246
|
+
// Seed state 0 from the augmented start production and its initial lookahead.
|
|
220
247
|
const initial = lr1Closure(grammar, analysis, [{
|
|
221
248
|
productionId: startProductions[0].id,
|
|
222
249
|
dot: 0,
|
|
223
250
|
lookahead: startLookahead,
|
|
224
251
|
}]);
|
|
225
252
|
const itemSets = [[...initial]];
|
|
226
|
-
const
|
|
227
|
-
[lr1SetIdentity(initial), 0],
|
|
253
|
+
const indexByIdentity = new Map([
|
|
254
|
+
[lr1SetIdentity(initial, true), 0],
|
|
228
255
|
]);
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
while (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
changed = true;
|
|
246
|
-
}
|
|
256
|
+
const pendingStates = [0];
|
|
257
|
+
// Discover new states from each state exactly once.
|
|
258
|
+
while (pendingStates.length > 0) {
|
|
259
|
+
const stateIndex = pendingStates.pop();
|
|
260
|
+
const itemSet = itemSets[stateIndex] ?? [];
|
|
261
|
+
for (const symbolKey of symbolsAfterDot(grammar, itemSet)) {
|
|
262
|
+
const gotoSet = lr1Goto(grammar, analysis, itemSet, symbolKey);
|
|
263
|
+
if (gotoSet.length === 0) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
const gotoKey = lr1SetIdentity(gotoSet, true);
|
|
267
|
+
if (!indexByIdentity.has(gotoKey)) {
|
|
268
|
+
const nextIndex = itemSets.length;
|
|
269
|
+
indexByIdentity.set(gotoKey, nextIndex);
|
|
270
|
+
itemSets.push([...gotoSet]);
|
|
271
|
+
pendingStates.push(nextIndex);
|
|
247
272
|
}
|
|
248
273
|
}
|
|
249
274
|
}
|
|
250
|
-
return new Lr1ItemSetCollection(grammar, itemSets);
|
|
275
|
+
return new Lr1ItemSetCollection(grammar, itemSets, indexByIdentity);
|
|
251
276
|
}
|
|
252
277
|
}
|
|
253
278
|
/**
|
|
@@ -256,6 +281,7 @@ export class Lr1ItemSetBuilder {
|
|
|
256
281
|
* @param grammar - Augmented BNF grammar.
|
|
257
282
|
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
258
283
|
* @param startLookahead - Lookahead terminal for the initial item.
|
|
284
|
+
* @returns The canonical LR(1) item set collection for the grammar.
|
|
259
285
|
*/
|
|
260
286
|
export function buildLr1ItemSets(grammar, analysis, startLookahead) {
|
|
261
287
|
return Lr1ItemSetBuilder.build(grammar, analysis, startLookahead);
|
|
@@ -264,11 +290,13 @@ export function buildLr1ItemSets(grammar, analysis, startLookahead) {
|
|
|
264
290
|
* Merges LR(1) item sets that share the same LR(0) core into LALR item sets.
|
|
265
291
|
*
|
|
266
292
|
* @param collection - Canonical LR(1) item set collection.
|
|
293
|
+
* @returns A new collection with LR(1) states merged by LR(0) core.
|
|
267
294
|
*/
|
|
268
295
|
export function mergeLalrItemSets(collection) {
|
|
269
296
|
const coreToLalrIndex = new Map();
|
|
270
297
|
const lr1ToLalr = new Map();
|
|
271
298
|
const mergedItemSets = [];
|
|
299
|
+
// Assign each LR(1) state to an LALR state keyed by its LR(0) core identity.
|
|
272
300
|
for (let lr1Index = 0; lr1Index < collection.itemSets.length; lr1Index += 1) {
|
|
273
301
|
const itemSet = collection.itemSets[lr1Index] ?? [];
|
|
274
302
|
const core = lr1CoreSetIdentity(itemSet);
|
|
@@ -292,17 +320,18 @@ export function mergeLalrItemSets(collection) {
|
|
|
292
320
|
* @param lr1Collection - Canonical LR(1) item set collection.
|
|
293
321
|
* @param lalrCollection - Merged LALR item set collection.
|
|
294
322
|
* @param lr1ToLalr - LR(1) state index to LALR state index map.
|
|
323
|
+
* @returns Map from `state:symbol` keys to LALR GOTO target state indices.
|
|
295
324
|
*/
|
|
296
325
|
export function buildLalrGotoTargets(grammar, analysis, lr1Collection, lr1ToLalr) {
|
|
297
326
|
const targets = new Map();
|
|
298
|
-
|
|
327
|
+
// Recompute LR(1) GOTOs and remap each target through the LR(1) → LALR index map.
|
|
299
328
|
for (let lr1State = 0; lr1State < lr1Collection.itemSets.length; lr1State += 1) {
|
|
300
329
|
const lalrState = lr1ToLalr.get(lr1State);
|
|
301
330
|
if (lalrState === undefined) {
|
|
302
331
|
continue;
|
|
303
332
|
}
|
|
304
333
|
const itemSet = lr1Collection.itemSets[lr1State] ?? [];
|
|
305
|
-
for (const symbolKey of
|
|
334
|
+
for (const symbolKey of symbolsAfterDot(grammar, itemSet)) {
|
|
306
335
|
const gotoSet = lr1Goto(grammar, analysis, itemSet, symbolKey);
|
|
307
336
|
if (gotoSet.length === 0) {
|
|
308
337
|
continue;
|
|
@@ -329,9 +358,11 @@ export function buildLalrGotoTargets(grammar, analysis, lr1Collection, lr1ToLalr
|
|
|
329
358
|
*
|
|
330
359
|
* @param left - Existing merged item set.
|
|
331
360
|
* @param right - Additional LR(1) item set to merge in.
|
|
361
|
+
* @returns Items with lookaheads unioned for each shared LR(0) core.
|
|
332
362
|
*/
|
|
333
363
|
function mergeItems(left, right) {
|
|
334
364
|
const lookaheadsByCore = new Map();
|
|
365
|
+
// Collect every lookahead grouped by dotted-production core.
|
|
335
366
|
for (const item of [...left, ...right]) {
|
|
336
367
|
const core = lr1CoreKey(item);
|
|
337
368
|
const lookaheads = lookaheadsByCore.get(core) ?? new Set();
|
|
@@ -339,6 +370,7 @@ export function buildLalrGotoTargets(grammar, analysis, lr1Collection, lr1ToLalr
|
|
|
339
370
|
lookaheadsByCore.set(core, lookaheads);
|
|
340
371
|
}
|
|
341
372
|
const merged = [];
|
|
373
|
+
// Expand each core into one item per distinct lookahead.
|
|
342
374
|
for (const [core, lookaheads] of lookaheadsByCore.entries()) {
|
|
343
375
|
const [productionIdText, dotText] = core.split(':');
|
|
344
376
|
const productionId = Number(productionIdText);
|
|
@@ -359,13 +391,16 @@ export function buildLalrGotoTargets(grammar, analysis, lr1Collection, lr1ToLalr
|
|
|
359
391
|
*
|
|
360
392
|
* @param lr1Collection - Canonical LR(1) item set collection.
|
|
361
393
|
* @param lalrCollection - Merged LALR item set collection.
|
|
394
|
+
* @returns Map from LR(1) state index to merged LALR state index.
|
|
362
395
|
*/
|
|
363
396
|
function buildLr1ToLalrMap(lr1Collection, lalrCollection) {
|
|
364
397
|
const coreToLalrIndex = new Map();
|
|
398
|
+
// Index LALR states by their LR(0) core identity.
|
|
365
399
|
for (let lalrIndex = 0; lalrIndex < lalrCollection.itemSets.length; lalrIndex += 1) {
|
|
366
400
|
coreToLalrIndex.set(lr1CoreSetIdentity(lalrCollection.itemSets[lalrIndex] ?? []), lalrIndex);
|
|
367
401
|
}
|
|
368
402
|
const lr1ToLalr = new Map();
|
|
403
|
+
// Map each LR(1) state to the LALR state sharing its core.
|
|
369
404
|
for (let lr1Index = 0; lr1Index < lr1Collection.itemSets.length; lr1Index += 1) {
|
|
370
405
|
const core = lr1CoreSetIdentity(lr1Collection.itemSets[lr1Index] ?? []);
|
|
371
406
|
const lalrIndex = coreToLalrIndex.get(core);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lr1-item-set.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/lr1/lr1-item-set.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lr1-item-set.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/lr1/lr1-item-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Grammar } from '../grammar/grammar.js';
|
|
|
2
2
|
import type { TokenRule } from '../grammar/token-rule.js';
|
|
3
3
|
import type { LrAlgorithm } from './lr-algorithm.js';
|
|
4
4
|
import { type ParseTableActionJson, type ParseTableGotoJson, type ParseTableProductionJson } from './parse-table-json.js';
|
|
5
|
-
import type { ParseAction } from './table/parse-action.js';
|
|
5
|
+
import type { ParseAction, ParseConflict } from './table/parse-action.js';
|
|
6
6
|
/** Current on-disk JSON schema version for lexer-only parse tables. */
|
|
7
7
|
export declare const PARSE_TABLE_VERSION = 1;
|
|
8
8
|
/** JSON schema version for full LR parse tables. */
|
|
@@ -36,6 +36,7 @@ export declare class ParseTable {
|
|
|
36
36
|
readonly states: readonly string[];
|
|
37
37
|
readonly algorithm: LrAlgorithm;
|
|
38
38
|
readonly parserStateCount: number;
|
|
39
|
+
readonly conflicts: readonly ParseConflict[];
|
|
39
40
|
private readonly actionByState;
|
|
40
41
|
private readonly gotoByState;
|
|
41
42
|
private readonly productionById;
|
|
@@ -53,12 +54,21 @@ export declare class ParseTable {
|
|
|
53
54
|
* @param productions - Flat BNF production metadata for reduce actions.
|
|
54
55
|
* @param actions - ACTION entries keyed by state and terminal symbol.
|
|
55
56
|
* @param gotos - GOTO entries keyed by state and non-terminal name.
|
|
57
|
+
* @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
|
|
56
58
|
*/
|
|
57
|
-
constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number
|
|
59
|
+
constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts?: readonly ParseConflict[]);
|
|
58
60
|
/**
|
|
59
61
|
* Whether the table includes parser ACTION/GOTO entries.
|
|
60
62
|
*/
|
|
61
63
|
get hasParserTable(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the table was built without conflicts.
|
|
66
|
+
*/
|
|
67
|
+
get isConflictFree(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Returns conflict warning lines for this table.
|
|
70
|
+
*/
|
|
71
|
+
formatConflictWarnings(): readonly string[];
|
|
62
72
|
/**
|
|
63
73
|
* Builds a parse table from a parsed grammar.
|
|
64
74
|
*
|
|
@@ -123,7 +133,7 @@ export declare class ParseTable {
|
|
|
123
133
|
* Creates a {@link ParseTable} from a built LR table and source grammar.
|
|
124
134
|
*
|
|
125
135
|
* @param grammar - Parsed `.grammar` file model.
|
|
126
|
-
* @param lrTable -
|
|
136
|
+
* @param lrTable - Built LR parse table, including any resolved conflict warnings.
|
|
127
137
|
*/
|
|
128
138
|
private static fromLrParseTable;
|
|
129
139
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAEH,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAChC,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG1E,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,OAAO,EAAE,OAAO,mBAAmB,GAAG,OAAO,wBAAwB,CAAC;IAC/E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,UAAU;aAuBC,WAAW,EAAE,MAAM;aACnB,WAAW,EAAE,MAAM;aACnB,MAAM,EAAE,SAAS,MAAM,EAAE;aACzB,UAAU,EAAE,SAAS,SAAS,EAAE;aAChC,SAAS,EAAE,SAAS,SAAS,EAAE;aAC/B,MAAM,EAAE,SAAS,MAAM,EAAE;aACzB,SAAS,EAAE,WAAW;aACtB,gBAAgB,EAAE,MAAM;aAIxB,SAAS,EAAE,SAAS,aAAa,EAAE;IAhCvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwD;IACtF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAE/E;;;;;;;;;;;;;;;OAeG;gBAEiB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,EAAE,WAAW,EACtB,gBAAgB,GAAE,MAAU,EAC5C,WAAW,GAAE,SAAS,wBAAwB,EAAO,EACrD,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa,EAC1E,KAAK,GAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa,EACnD,SAAS,GAAE,SAAS,aAAa,EAAO;IAgB5D;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;OAEG;IACI,sBAAsB,IAAI,SAAS,MAAM,EAAE;IAKlD;;;;;;OAMG;WACW,WAAW,CACrB,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,WAAmB,GAC/B,UAAU;IAQb;;;;;OAKG;WACW,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU;IAsCxD;;;;;OAKG;WACW,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAkBtD;;;;OAIG;IACI,YAAY,IAAI,MAAM;IAK7B;;;;OAIG;IACI,MAAM,IAAI,cAAc;IAkC/B;;;;OAIG;IACI,SAAS,IAAI,OAAO;IAY3B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK9D;;;;OAIG;IACI,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAKxE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA0B/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAoD5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAwC9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;CAe/B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Grammar } from '../grammar/grammar.js';
|
|
2
2
|
import { desugarEbnf } from './bnf/desugar-ebnf.js';
|
|
3
3
|
import { buildLrTable } from './build-lr-table.js';
|
|
4
|
-
import { ParseTableBuildError } from './parse-table-build-error.js';
|
|
5
4
|
import { ParseTableError } from './parse-table-error.js';
|
|
6
5
|
import { isParseTableJsonV2, } from './parse-table-json.js';
|
|
7
|
-
import { encodeProductionRhs,
|
|
6
|
+
import { encodeProductionRhs, formatParseConflictWarning, } from './table/lr-parse-table.js';
|
|
8
7
|
import { tokenInventory } from './token-inventory.js';
|
|
9
8
|
/** Current on-disk JSON schema version for lexer-only parse tables. */
|
|
10
9
|
export const PARSE_TABLE_VERSION = 1;
|
|
@@ -22,6 +21,7 @@ export class ParseTable {
|
|
|
22
21
|
states;
|
|
23
22
|
algorithm;
|
|
24
23
|
parserStateCount;
|
|
24
|
+
conflicts;
|
|
25
25
|
actionByState;
|
|
26
26
|
gotoByState;
|
|
27
27
|
productionById;
|
|
@@ -39,8 +39,9 @@ export class ParseTable {
|
|
|
39
39
|
* @param productions - Flat BNF production metadata for reduce actions.
|
|
40
40
|
* @param actions - ACTION entries keyed by state and terminal symbol.
|
|
41
41
|
* @param gotos - GOTO entries keyed by state and non-terminal name.
|
|
42
|
+
* @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
|
|
42
43
|
*/
|
|
43
|
-
constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map()) {
|
|
44
|
+
constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map(), conflicts = []) {
|
|
44
45
|
this.grammarName = grammarName;
|
|
45
46
|
this.startSymbol = startSymbol;
|
|
46
47
|
this.tokens = tokens;
|
|
@@ -49,6 +50,7 @@ export class ParseTable {
|
|
|
49
50
|
this.states = states;
|
|
50
51
|
this.algorithm = algorithm;
|
|
51
52
|
this.parserStateCount = parserStateCount;
|
|
53
|
+
this.conflicts = conflicts;
|
|
52
54
|
this.actionByState = actions;
|
|
53
55
|
this.gotoByState = gotos;
|
|
54
56
|
const productionById = new Map();
|
|
@@ -63,6 +65,18 @@ export class ParseTable {
|
|
|
63
65
|
get hasParserTable() {
|
|
64
66
|
return this.parserStateCount > 0 || this.actionByState.size > 0;
|
|
65
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether the table was built without conflicts.
|
|
70
|
+
*/
|
|
71
|
+
get isConflictFree() {
|
|
72
|
+
return this.conflicts.length === 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns conflict warning lines for this table.
|
|
76
|
+
*/
|
|
77
|
+
formatConflictWarnings() {
|
|
78
|
+
return this.conflicts.map((conflict) => formatParseConflictWarning(conflict));
|
|
79
|
+
}
|
|
66
80
|
/**
|
|
67
81
|
* Builds a parse table from a parsed grammar.
|
|
68
82
|
*
|
|
@@ -73,9 +87,6 @@ export class ParseTable {
|
|
|
73
87
|
static fromGrammar(grammar, algorithm = 'lr1') {
|
|
74
88
|
const bnf = desugarEbnf(grammar);
|
|
75
89
|
const lrTable = buildLrTable(bnf, algorithm);
|
|
76
|
-
if (!lrTable.isConflictFree) {
|
|
77
|
-
throw new ParseTableBuildError(algorithm, formatLrConflicts(lrTable));
|
|
78
|
-
}
|
|
79
90
|
return ParseTable.fromLrParseTable(grammar, lrTable);
|
|
80
91
|
}
|
|
81
92
|
/**
|
|
@@ -191,7 +202,7 @@ export class ParseTable {
|
|
|
191
202
|
* Creates a {@link ParseTable} from a built LR table and source grammar.
|
|
192
203
|
*
|
|
193
204
|
* @param grammar - Parsed `.grammar` file model.
|
|
194
|
-
* @param lrTable -
|
|
205
|
+
* @param lrTable - Built LR parse table, including any resolved conflict warnings.
|
|
195
206
|
*/
|
|
196
207
|
static fromLrParseTable(grammar, lrTable) {
|
|
197
208
|
const productions = lrTable.productions.map((production) => ({
|
|
@@ -201,7 +212,7 @@ export class ParseTable {
|
|
|
201
212
|
variant: production.variant,
|
|
202
213
|
origin: production.origin,
|
|
203
214
|
}));
|
|
204
|
-
return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos);
|
|
215
|
+
return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos, [...lrTable.conflicts]);
|
|
205
216
|
}
|
|
206
217
|
/**
|
|
207
218
|
* Converts ACTION maps into JSON rows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { classifyParseConflict, formatParseAction, parseActionsEqual, } from './parse-action.js';
|
|
2
2
|
export type { ParseAction, ParseConflict, ParseConflictKind } from './parse-action.js';
|
|
3
|
-
export { encodeProductionRhs, formatLrActions, formatLrConflicts, formatLrGotos, lrActionTerminalKeys, lrGotoNonTerminalNames, lrProduction, LrParseTable, } from './lr-parse-table.js';
|
|
3
|
+
export { encodeProductionRhs, formatLrActions, formatLrConflictWarnings, formatLrConflicts, formatLrGotos, formatParseConflictWarning, lrActionTerminalKeys, lrGotoNonTerminalNames, lrProduction, LrParseTable, } from './lr-parse-table.js';
|
|
4
4
|
export { TableBuilderBase } from './table-builder-base.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { classifyParseConflict, formatParseAction, parseActionsEqual, } from './parse-action.js';
|
|
2
|
-
export { encodeProductionRhs, formatLrActions, formatLrConflicts, formatLrGotos, lrActionTerminalKeys, lrGotoNonTerminalNames, lrProduction, LrParseTable, } from './lr-parse-table.js';
|
|
2
|
+
export { encodeProductionRhs, formatLrActions, formatLrConflictWarnings, formatLrConflicts, formatLrGotos, formatParseConflictWarning, lrActionTerminalKeys, lrGotoNonTerminalNames, lrProduction, LrParseTable, } from './lr-parse-table.js';
|
|
3
3
|
export { TableBuilderBase } from './table-builder-base.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|