parser-lr 0.4.1 → 0.6.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/README.md +39 -1
- package/bin/parser-lr.js +8373 -7960
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/grammar/grammar-json-path.d.ts +2 -0
- package/dist/lib/grammar/grammar-json-path.d.ts.map +1 -0
- package/dist/lib/grammar/grammar-json-path.esm.d.ts +5 -0
- package/dist/lib/grammar/grammar-json-path.esm.d.ts.map +1 -0
- package/dist/lib/grammar/grammar-json-path.esm.js +9 -0
- package/dist/lib/grammar/grammar-json-path.esm.js.map +1 -0
- package/dist/lib/grammar/grammar-json-path.js +2 -0
- package/dist/lib/grammar/grammar-json-path.js.map +1 -0
- package/dist/lib/grammar/index.d.ts +3 -0
- package/dist/lib/grammar/index.d.ts.map +1 -1
- package/dist/lib/grammar/index.js +2 -0
- package/dist/lib/grammar/index.js.map +1 -1
- package/dist/lib/grammar/meta-grammar-table.d.ts +12 -0
- package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -1
- package/dist/lib/grammar/meta-grammar-table.js +33 -3
- package/dist/lib/grammar/meta-grammar-table.js.map +1 -1
- package/dist/lib/grammar/table-validator.d.ts +26 -0
- package/dist/lib/grammar/table-validator.d.ts.map +1 -0
- package/dist/lib/grammar/table-validator.js +258 -0
- package/dist/lib/grammar/table-validator.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/transform/cst-transformer.d.ts +14 -0
- package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
- package/dist/lib/transform/cst-transformer.js +82 -11
- package/dist/lib/transform/cst-transformer.js.map +1 -1
- package/dist/lib/transform/grammar-fixture.d.ts +56 -0
- package/dist/lib/transform/grammar-fixture.d.ts.map +1 -0
- package/dist/lib/transform/grammar-fixture.js +101 -0
- package/dist/lib/transform/grammar-fixture.js.map +1 -0
- package/dist/lib-cjs/ast/ast-node.js +70 -0
- package/dist/lib-cjs/ast/ast-node.js.map +1 -0
- package/dist/lib-cjs/errors/index.js +9 -0
- package/dist/lib-cjs/errors/index.js.map +1 -0
- package/dist/lib-cjs/errors/parser-lr-error.js +52 -0
- package/dist/lib-cjs/errors/parser-lr-error.js.map +1 -0
- package/dist/lib-cjs/grammar/ast-schema.js +43 -0
- package/dist/lib-cjs/grammar/ast-schema.js.map +1 -0
- package/dist/lib-cjs/grammar/ast-type.js +3 -0
- package/dist/lib-cjs/grammar/ast-type.js.map +1 -0
- package/dist/lib-cjs/grammar/expression.js +3 -0
- package/dist/lib-cjs/grammar/expression.js.map +1 -0
- package/dist/lib-cjs/grammar/grammar-from-cst.js +641 -0
- package/dist/lib-cjs/grammar/grammar-from-cst.js.map +1 -0
- package/dist/lib-cjs/grammar/grammar-json-path.js +13 -0
- package/dist/lib-cjs/grammar/grammar-json-path.js.map +1 -0
- package/dist/lib-cjs/grammar/grammar-literals.js +71 -0
- package/dist/lib-cjs/grammar/grammar-literals.js.map +1 -0
- package/dist/lib-cjs/grammar/grammar.js +64 -0
- package/dist/lib-cjs/grammar/grammar.js.map +1 -0
- package/dist/lib-cjs/grammar/grammar.json +5760 -0
- package/dist/lib-cjs/grammar/index.js +21 -0
- package/dist/lib-cjs/grammar/index.js.map +1 -0
- package/dist/lib-cjs/grammar/meta-grammar-table.js +68 -0
- package/dist/lib-cjs/grammar/meta-grammar-table.js.map +1 -0
- package/dist/lib-cjs/grammar/production.js +3 -0
- package/dist/lib-cjs/grammar/production.js.map +1 -0
- package/dist/lib-cjs/grammar/read-grammar-error.js +22 -0
- package/dist/lib-cjs/grammar/read-grammar-error.js.map +1 -0
- package/dist/lib-cjs/grammar/read-grammar.js +24 -0
- package/dist/lib-cjs/grammar/read-grammar.js.map +1 -0
- package/dist/lib-cjs/grammar/table-validator.js +262 -0
- package/dist/lib-cjs/grammar/table-validator.js.map +1 -0
- package/dist/lib-cjs/grammar/token-rule.js +3 -0
- package/dist/lib-cjs/grammar/token-rule.js.map +1 -0
- package/dist/lib-cjs/grammar/transform-expression.js +3 -0
- package/dist/lib-cjs/grammar/transform-expression.js.map +1 -0
- package/dist/lib-cjs/grammar/transform-rule.js +3 -0
- package/dist/lib-cjs/grammar/transform-rule.js.map +1 -0
- package/dist/lib-cjs/grammar/transform-schema.js +43 -0
- package/dist/lib-cjs/grammar/transform-schema.js.map +1 -0
- package/dist/lib-cjs/index.js +66 -0
- package/dist/lib-cjs/index.js.map +1 -0
- package/dist/lib-cjs/lexer/index.js +32 -0
- package/dist/lib-cjs/lexer/index.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer-compile-error.js +22 -0
- package/dist/lib-cjs/lexer/lexer-compile-error.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer-compile.js +201 -0
- package/dist/lib-cjs/lexer/lexer-compile.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer-error.js +22 -0
- package/dist/lib-cjs/lexer/lexer-error.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer-input-error.js +17 -0
- package/dist/lib-cjs/lexer/lexer-input-error.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer-state-error.js +19 -0
- package/dist/lib-cjs/lexer/lexer-state-error.js.map +1 -0
- package/dist/lib-cjs/lexer/lexer.js +278 -0
- package/dist/lib-cjs/lexer/lexer.js.map +1 -0
- package/dist/lib-cjs/lexer/token.js +44 -0
- package/dist/lib-cjs/lexer/token.js.map +1 -0
- package/dist/lib-cjs/package.json +3 -0
- package/dist/lib-cjs/parse-context-error.js +19 -0
- package/dist/lib-cjs/parse-context-error.js.map +1 -0
- package/dist/lib-cjs/parse-context.js +137 -0
- package/dist/lib-cjs/parse-context.js.map +1 -0
- package/dist/lib-cjs/parse-output-error.js +19 -0
- package/dist/lib-cjs/parse-output-error.js.map +1 -0
- package/dist/lib-cjs/parse-output.js +18 -0
- package/dist/lib-cjs/parse-output.js.map +1 -0
- package/dist/lib-cjs/parse-table/analysis/first-follow.js +294 -0
- package/dist/lib-cjs/parse-table/analysis/first-follow.js.map +1 -0
- package/dist/lib-cjs/parse-table/analysis/index.js +9 -0
- package/dist/lib-cjs/parse-table/analysis/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js +140 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js.map +1 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-production.js +3 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-production.js.map +1 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js +39 -0
- package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js.map +1 -0
- package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js +224 -0
- package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js.map +1 -0
- package/dist/lib-cjs/parse-table/bnf/index.js +13 -0
- package/dist/lib-cjs/parse-table/bnf/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/build-lr-table.js +171 -0
- package/dist/lib-cjs/parse-table/build-lr-table.js.map +1 -0
- package/dist/lib-cjs/parse-table/index.js +49 -0
- package/dist/lib-cjs/parse-table/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr-algorithm-error.js +19 -0
- package/dist/lib-cjs/parse-table/lr-algorithm-error.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr-algorithm.js +31 -0
- package/dist/lib-cjs/parse-table/lr-algorithm.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr0/index.js +14 -0
- package/dist/lib-cjs/parse-table/lr0/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js +286 -0
- package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr1/index.js +18 -0
- package/dist/lib-cjs/parse-table/lr1/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js +432 -0
- package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js.map +1 -0
- package/dist/lib-cjs/parse-table/parse-table-build-error.js +24 -0
- package/dist/lib-cjs/parse-table/parse-table-build-error.js.map +1 -0
- package/dist/lib-cjs/parse-table/parse-table-error.js +19 -0
- package/dist/lib-cjs/parse-table/parse-table-error.js.map +1 -0
- package/dist/lib-cjs/parse-table/parse-table-json.js +12 -0
- package/dist/lib-cjs/parse-table/parse-table-json.js.map +1 -0
- package/dist/lib-cjs/parse-table/parse-table.js +345 -0
- package/dist/lib-cjs/parse-table/parse-table.js.map +1 -0
- package/dist/lib-cjs/parse-table/slr/index.js +13 -0
- package/dist/lib-cjs/parse-table/slr/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/slr/parse-action.js +8 -0
- package/dist/lib-cjs/parse-table/slr/parse-action.js.map +1 -0
- package/dist/lib-cjs/parse-table/slr/slr-table.js +18 -0
- package/dist/lib-cjs/parse-table/slr/slr-table.js.map +1 -0
- package/dist/lib-cjs/parse-table/table/index.js +21 -0
- package/dist/lib-cjs/parse-table/table/index.js.map +1 -0
- package/dist/lib-cjs/parse-table/table/lr-parse-table.js +192 -0
- package/dist/lib-cjs/parse-table/table/lr-parse-table.js.map +1 -0
- package/dist/lib-cjs/parse-table/table/parse-action.js +54 -0
- package/dist/lib-cjs/parse-table/table/parse-action.js.map +1 -0
- package/dist/lib-cjs/parse-table/table/table-builder-base.js +153 -0
- package/dist/lib-cjs/parse-table/table/table-builder-base.js.map +1 -0
- package/dist/lib-cjs/parse-table/token-inventory.js +18 -0
- package/dist/lib-cjs/parse-table/token-inventory.js.map +1 -0
- package/dist/lib-cjs/parser-lr.js +143 -0
- package/dist/lib-cjs/parser-lr.js.map +1 -0
- package/dist/lib-cjs/shift-reduce/index.js +11 -0
- package/dist/lib-cjs/shift-reduce/index.js.map +1 -0
- package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js +224 -0
- package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js.map +1 -0
- package/dist/lib-cjs/transform/binding-map.js +82 -0
- package/dist/lib-cjs/transform/binding-map.js.map +1 -0
- package/dist/lib-cjs/transform/cst-transformer.js +480 -0
- package/dist/lib-cjs/transform/cst-transformer.js.map +1 -0
- package/dist/lib-cjs/transform/grammar-fixture.js +109 -0
- package/dist/lib-cjs/transform/grammar-fixture.js.map +1 -0
- package/dist/lib-cjs/transform/index.js +12 -0
- package/dist/lib-cjs/transform/index.js.map +1 -0
- package/docs/grammar.md +113 -0
- package/docs/parser-lr-enhancement-proposals.md +337 -0
- package/grammars/6502.grammar +233 -0
- package/grammars/calc.grammar +30 -0
- package/grammars/ferrite.grammar +991 -0
- package/grammars/fixtures/build-optional/build-optional.grammar +32 -0
- package/grammars/fixtures/build-optional/input.txt +1 -0
- package/grammars/fixtures/comparison-op/comparison-op.grammar +28 -0
- package/grammars/fixtures/comparison-op/input.txt +1 -0
- package/grammars/fixtures/flatten-repeat/flatten-repeat.grammar +28 -0
- package/grammars/fixtures/flatten-repeat/input.txt +1 -0
- package/grammars/fixtures/help-topic/help-topic.grammar +28 -0
- package/grammars/fixtures/help-topic/input.txt +1 -0
- package/grammars/fixtures/let-target/input.txt +1 -0
- package/grammars/fixtures/let-target/let-target.grammar +33 -0
- package/grammars/fixtures/nested-production-repro/input.txt +1 -0
- package/grammars/fixtures/nested-production-repro/nested-production-repro.grammar +26 -0
- package/grammars/fixtures/pass-preserves-production/bare-terminal/bare-terminal.grammar +24 -0
- package/grammars/fixtures/pass-preserves-production/bare-terminal/input.txt +1 -0
- package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end-if.txt +1 -0
- package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end.txt +1 -0
- package/grammars/fixtures/pass-preserves-production/labeled-variant/labeled-variant.grammar +24 -0
- package/grammars/fixtures/pass-preserves-production/optional-absent/input.txt +1 -0
- package/grammars/fixtures/pass-preserves-production/optional-absent/optional-absent.grammar +24 -0
- package/grammars/fixtures/pass-preserves-production/optional-present/input.txt +1 -0
- package/grammars/fixtures/pass-preserves-production/optional-present/optional-present.grammar +24 -0
- package/grammars/fixtures/table-only-import/calc.table.json +190 -0
- package/grammars/fixtures/table-only-import/table-only-smoke.cjs +38 -0
- package/grammars/fixtures/table-only-import/table-only-smoke.mjs +18 -0
- package/grammars/grammar.grammar +428 -0
- package/grammars/lisp.grammar +95 -0
- package/package.json +10 -4
|
@@ -78,7 +78,7 @@ export class CstTransformer {
|
|
|
78
78
|
case 'drop':
|
|
79
79
|
return null;
|
|
80
80
|
case 'pass':
|
|
81
|
-
return this.
|
|
81
|
+
return this.applyPass(node, expression.reference);
|
|
82
82
|
case 'build':
|
|
83
83
|
return this.applyBuild(node, expression);
|
|
84
84
|
case 'foldLeft':
|
|
@@ -89,6 +89,15 @@ export class CstTransformer {
|
|
|
89
89
|
return this.applyFlatten(node, expression);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Passes one referenced child through the transform pipeline.
|
|
94
|
+
*
|
|
95
|
+
* @param node - CST node supplying the referenced child.
|
|
96
|
+
* @param reference - Binding or symbol name from a transform expression.
|
|
97
|
+
*/
|
|
98
|
+
applyPass(node, reference) {
|
|
99
|
+
return this.transformReference(node, reference);
|
|
100
|
+
}
|
|
92
101
|
/**
|
|
93
102
|
* Builds an AST node from a `type.#variant(arg, …)` transform.
|
|
94
103
|
*
|
|
@@ -97,12 +106,36 @@ export class CstTransformer {
|
|
|
97
106
|
*/
|
|
98
107
|
applyBuild(node, expression) {
|
|
99
108
|
const children = [];
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
109
|
+
const production = this.productionFor(node);
|
|
110
|
+
if (production === null) {
|
|
111
|
+
for (const reference of expression.arguments) {
|
|
112
|
+
const child = this.transformReference(node, reference);
|
|
113
|
+
if (child === null) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
children.push(child);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
for (const reference of expression.arguments) {
|
|
121
|
+
const slotIndex = referenceSlotIndex(production, reference);
|
|
122
|
+
// Skip optional bindings absent from the matched alternative.
|
|
123
|
+
if (slotIndex === null) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const childNode = node.children[slotIndex] ?? null;
|
|
127
|
+
if (childNode === null) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
if (this.isEpsilonNode(childNode)) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const child = this.transformNode(childNode);
|
|
134
|
+
if (child === null) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
children.push(child);
|
|
104
138
|
}
|
|
105
|
-
children.push(child);
|
|
106
139
|
}
|
|
107
140
|
return AstNode.rule(expression.typeName, children, mergeChildLocations(children) ?? node.location, expression.variant);
|
|
108
141
|
}
|
|
@@ -193,15 +226,49 @@ export class CstTransformer {
|
|
|
193
226
|
const items = [];
|
|
194
227
|
let current = node;
|
|
195
228
|
while (current !== null && !this.isEpsilonNode(current)) {
|
|
196
|
-
const head = this.
|
|
229
|
+
const head = this.transformFlattenHead(current, expression.head);
|
|
197
230
|
if (head === null) {
|
|
198
231
|
return null;
|
|
199
232
|
}
|
|
200
233
|
items.push(head);
|
|
201
|
-
|
|
234
|
+
const tail = this.resolveReferenceNode(current, expression.tail);
|
|
235
|
+
if (tail === null || this.isEpsilonNode(tail)) {
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
current = tail;
|
|
202
239
|
}
|
|
203
240
|
return AstNode.rule(expression.typeName, items, mergeChildLocations(items) ?? node.location, expression.variant);
|
|
204
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Resolves the head item for one flatten iteration.
|
|
244
|
+
*
|
|
245
|
+
* @param node - CST node for one list segment or repeat tail.
|
|
246
|
+
* @param headRef - Primary head binding from the flatten expression.
|
|
247
|
+
*/
|
|
248
|
+
transformFlattenHead(node, headRef) {
|
|
249
|
+
const head = this.transformReference(node, headRef);
|
|
250
|
+
if (head !== null) {
|
|
251
|
+
return head;
|
|
252
|
+
}
|
|
253
|
+
const production = this.productionFor(node);
|
|
254
|
+
if (production === null || repeatSymbolPrefix(production.name) === null) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
// Repeat tail segments bind repeated elements under names like `rest`.
|
|
258
|
+
for (const slot of productionSlots(production)) {
|
|
259
|
+
if (slot.binding === null || slot.binding === headRef) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (repeatSymbolPrefix(slot.symbol) !== null) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
const repeated = this.transformReference(node, slot.binding);
|
|
266
|
+
if (repeated !== null) {
|
|
267
|
+
return repeated;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
205
272
|
/**
|
|
206
273
|
* Transforms a CST node without explicit transform rules.
|
|
207
274
|
*
|
|
@@ -212,12 +279,16 @@ export class CstTransformer {
|
|
|
212
279
|
return null;
|
|
213
280
|
}
|
|
214
281
|
const children = this.transformChildren(node.children);
|
|
215
|
-
if (children.length === 1) {
|
|
216
|
-
return children[0];
|
|
217
|
-
}
|
|
218
282
|
if (children.length === 0) {
|
|
219
283
|
return null;
|
|
220
284
|
}
|
|
285
|
+
// Preserve parse-table productions even when a single child would collapse.
|
|
286
|
+
if (node.productionId !== null) {
|
|
287
|
+
return AstNode.rule(node.symbol, children, mergeChildLocations(children) ?? node.location, node.variant);
|
|
288
|
+
}
|
|
289
|
+
if (children.length === 1) {
|
|
290
|
+
return children[0];
|
|
291
|
+
}
|
|
221
292
|
return AstNode.rule(node.symbol, children, mergeChildLocations(children) ?? node.location, node.variant);
|
|
222
293
|
}
|
|
223
294
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cst-transformer.js","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cst-transformer.js","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AstNode } from '../ast/ast-node.js';
|
|
2
|
+
/**
|
|
3
|
+
* One grammar fixture case with source input and optional expected AST JSON.
|
|
4
|
+
*/
|
|
5
|
+
export interface GrammarFixtureCase {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly grammarPath: string;
|
|
8
|
+
readonly inputPath: string;
|
|
9
|
+
readonly expectedPath: string | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Returns the `.grammar` file for one fixture directory.
|
|
13
|
+
*
|
|
14
|
+
* Fixture grammars are named after their directory (for example
|
|
15
|
+
* `bare-terminal/bare-terminal.grammar`). The meta-grammar keeps the reserved
|
|
16
|
+
* name `grammar.grammar` at the repo root only.
|
|
17
|
+
*
|
|
18
|
+
* @param fixtureDir - Directory containing a fixture grammar and input files.
|
|
19
|
+
*/
|
|
20
|
+
export declare function fixtureGrammarPath(fixtureDir: string): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Returns child AST nodes matching a symbol name.
|
|
23
|
+
*
|
|
24
|
+
* @param node - Parent AST node.
|
|
25
|
+
* @param symbol - Child symbol to find.
|
|
26
|
+
*/
|
|
27
|
+
export declare function findChildrenBySymbol(node: AstNode, symbol: string): AstNode[];
|
|
28
|
+
/**
|
|
29
|
+
* Returns the first child AST node matching a symbol name.
|
|
30
|
+
*
|
|
31
|
+
* @param node - Parent AST node.
|
|
32
|
+
* @param symbol - Child symbol to find.
|
|
33
|
+
*/
|
|
34
|
+
export declare function findChildBySymbol(node: AstNode, symbol: string): AstNode | null;
|
|
35
|
+
/**
|
|
36
|
+
* Parses one fixture grammar and input file into an AST.
|
|
37
|
+
*
|
|
38
|
+
* @param fixtureDir - Directory containing a named fixture grammar and an input file.
|
|
39
|
+
* @param inputFileName - Input file name within the fixture directory.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseFixture(fixtureDir: string, inputFileName?: string): AstNode | null;
|
|
42
|
+
/**
|
|
43
|
+
* Discovers fixture directories containing a named `.grammar` file under a root path.
|
|
44
|
+
*
|
|
45
|
+
* @param rootDir - Root directory to scan recursively.
|
|
46
|
+
*/
|
|
47
|
+
export declare function discoverFixtures(rootDir: string): GrammarFixtureCase[];
|
|
48
|
+
/**
|
|
49
|
+
* Parses a fixture case and compares to expected JSON when present.
|
|
50
|
+
*
|
|
51
|
+
* @param fixture - Fixture metadata.
|
|
52
|
+
*/
|
|
53
|
+
export declare function runFixtureCase(fixture: GrammarFixtureCase, expectFn: (received: unknown) => {
|
|
54
|
+
toEqual(expected: unknown): void;
|
|
55
|
+
}): AstNode | null;
|
|
56
|
+
//# sourceMappingURL=grammar-fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammar-fixture.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/grammar-fixture.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAG7E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAG/E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CACxB,UAAU,EAAE,MAAM,EAClB,aAAa,SAAc,GAC5B,OAAO,GAAG,IAAI,CAchB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAyCtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK;IAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GACtE,OAAO,GAAG,IAAI,CAehB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { basename, join } from 'node:path';
|
|
3
|
+
import { ParseContext } from '../parse-context.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns the `.grammar` file for one fixture directory.
|
|
6
|
+
*
|
|
7
|
+
* Fixture grammars are named after their directory (for example
|
|
8
|
+
* `bare-terminal/bare-terminal.grammar`). The meta-grammar keeps the reserved
|
|
9
|
+
* name `grammar.grammar` at the repo root only.
|
|
10
|
+
*
|
|
11
|
+
* @param fixtureDir - Directory containing a fixture grammar and input files.
|
|
12
|
+
*/
|
|
13
|
+
export function fixtureGrammarPath(fixtureDir) {
|
|
14
|
+
const grammarPath = join(fixtureDir, `${basename(fixtureDir)}.grammar`);
|
|
15
|
+
return existsSync(grammarPath) ? grammarPath : null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns child AST nodes matching a symbol name.
|
|
19
|
+
*
|
|
20
|
+
* @param node - Parent AST node.
|
|
21
|
+
* @param symbol - Child symbol to find.
|
|
22
|
+
*/
|
|
23
|
+
export function findChildrenBySymbol(node, symbol) {
|
|
24
|
+
return node.children.filter((child) => child.symbol === symbol);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the first child AST node matching a symbol name.
|
|
28
|
+
*
|
|
29
|
+
* @param node - Parent AST node.
|
|
30
|
+
* @param symbol - Child symbol to find.
|
|
31
|
+
*/
|
|
32
|
+
export function findChildBySymbol(node, symbol) {
|
|
33
|
+
return node.children.find((child) => child.symbol === symbol) ?? null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parses one fixture grammar and input file into an AST.
|
|
37
|
+
*
|
|
38
|
+
* @param fixtureDir - Directory containing a named fixture grammar and an input file.
|
|
39
|
+
* @param inputFileName - Input file name within the fixture directory.
|
|
40
|
+
*/
|
|
41
|
+
export function parseFixture(fixtureDir, inputFileName = 'input.txt') {
|
|
42
|
+
const grammarPath = fixtureGrammarPath(fixtureDir);
|
|
43
|
+
if (grammarPath === null) {
|
|
44
|
+
throw new Error(`fixture grammar not found in ${fixtureDir}`);
|
|
45
|
+
}
|
|
46
|
+
const grammarSource = readFileSync(grammarPath, 'utf8');
|
|
47
|
+
const input = readFileSync(join(fixtureDir, inputFileName), 'utf8').trimEnd();
|
|
48
|
+
const context = ParseContext.fromGrammar(grammarSource, 'lr1');
|
|
49
|
+
return context.parseSource(input);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Discovers fixture directories containing a named `.grammar` file under a root path.
|
|
53
|
+
*
|
|
54
|
+
* @param rootDir - Root directory to scan recursively.
|
|
55
|
+
*/
|
|
56
|
+
export function discoverFixtures(rootDir) {
|
|
57
|
+
const fixtures = [];
|
|
58
|
+
const visit = (directory) => {
|
|
59
|
+
const grammarPath = fixtureGrammarPath(directory);
|
|
60
|
+
if (grammarPath !== null) {
|
|
61
|
+
const inputFiles = readdirSync(directory)
|
|
62
|
+
.filter((name) => name.startsWith('input') && name.endsWith('.txt'))
|
|
63
|
+
.sort();
|
|
64
|
+
for (const inputFile of inputFiles) {
|
|
65
|
+
const baseName = inputFile.replace(/^input/, '').replace(/\.txt$/, '');
|
|
66
|
+
const expectedName = baseName === '' ? 'expected.json' : `expected${baseName}.json`;
|
|
67
|
+
const expectedPath = join(directory, expectedName);
|
|
68
|
+
fixtures.push({
|
|
69
|
+
name: `${directory.split('/').slice(-2).join('/')}/${inputFile}`,
|
|
70
|
+
grammarPath,
|
|
71
|
+
inputPath: join(directory, inputFile),
|
|
72
|
+
expectedPath: existsSync(expectedPath) ? expectedPath : null,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
77
|
+
if (entry.isDirectory()) {
|
|
78
|
+
visit(join(directory, entry.name));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
visit(rootDir);
|
|
83
|
+
return fixtures;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parses a fixture case and compares to expected JSON when present.
|
|
87
|
+
*
|
|
88
|
+
* @param fixture - Fixture metadata.
|
|
89
|
+
*/
|
|
90
|
+
export function runFixtureCase(fixture, expectFn) {
|
|
91
|
+
const grammarSource = readFileSync(fixture.grammarPath, 'utf8');
|
|
92
|
+
const input = readFileSync(fixture.inputPath, 'utf8').trimEnd();
|
|
93
|
+
const context = ParseContext.fromGrammar(grammarSource, 'lr1');
|
|
94
|
+
const ast = context.parseSource(input);
|
|
95
|
+
if (fixture.expectedPath !== null) {
|
|
96
|
+
const expected = JSON.parse(readFileSync(fixture.expectedPath, 'utf8'));
|
|
97
|
+
expectFn(ast).toEqual(expected);
|
|
98
|
+
}
|
|
99
|
+
return ast;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=grammar-fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammar-fixture.js","sourceRoot":"","sources":["../../../src/lib/transform/grammar-fixture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AstNode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Tree node used for both parse (CST) and abstract (AST) phases.
|
|
6
|
+
*
|
|
7
|
+
* After parsing, {@link symbol} is a grammar production and {@link variant}
|
|
8
|
+
* is the matched `#` label. After transform, {@link symbol} is an AST type
|
|
9
|
+
* name and {@link variant} is the AST alternative label.
|
|
10
|
+
*/
|
|
11
|
+
class AstNode {
|
|
12
|
+
symbol;
|
|
13
|
+
children;
|
|
14
|
+
text;
|
|
15
|
+
location;
|
|
16
|
+
variant;
|
|
17
|
+
productionId;
|
|
18
|
+
origin;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a tree node.
|
|
21
|
+
*
|
|
22
|
+
* @param symbol - Production or AST type name.
|
|
23
|
+
* @param children - Child subtrees.
|
|
24
|
+
* @param text - Lexeme or literal text for leaves; null for interior nodes.
|
|
25
|
+
* @param location - Optional source span.
|
|
26
|
+
* @param variant - `#` alternative label when present.
|
|
27
|
+
* @param productionId - Parse table production id for CST nodes, or null after transform.
|
|
28
|
+
* @param origin - Source production or synthetic construct name for CST nodes.
|
|
29
|
+
*/
|
|
30
|
+
constructor(symbol, children = [], text = null, location = null, variant = null, productionId = null, origin = null) {
|
|
31
|
+
this.symbol = symbol;
|
|
32
|
+
this.children = children;
|
|
33
|
+
this.text = text;
|
|
34
|
+
this.location = location;
|
|
35
|
+
this.variant = variant;
|
|
36
|
+
this.productionId = productionId;
|
|
37
|
+
this.origin = origin;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether this node is a terminal leaf with lexeme text.
|
|
41
|
+
*/
|
|
42
|
+
get isTerminal() {
|
|
43
|
+
return this.text !== null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Builds an interior node from a grammar or AST reduction.
|
|
47
|
+
*
|
|
48
|
+
* @param symbol - Production or AST type name.
|
|
49
|
+
* @param children - Reduced child subtrees.
|
|
50
|
+
* @param location - Optional source span covering the full production.
|
|
51
|
+
* @param variant - `#` alternative label when present.
|
|
52
|
+
* @param productionId - Parse table production id for CST nodes.
|
|
53
|
+
* @param origin - Source production or synthetic construct name for CST nodes.
|
|
54
|
+
*/
|
|
55
|
+
static rule(symbol, children, location = null, variant = null, productionId = null, origin = null) {
|
|
56
|
+
return new AstNode(symbol, children, null, location, variant, productionId, origin);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Builds a terminal leaf node.
|
|
60
|
+
*
|
|
61
|
+
* @param symbol - Terminal symbol name.
|
|
62
|
+
* @param text - Matched lexeme text.
|
|
63
|
+
* @param location - Optional source span for the lexeme.
|
|
64
|
+
*/
|
|
65
|
+
static terminal(symbol, text, location = null) {
|
|
66
|
+
return new AstNode(symbol, [], text, location, null);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.AstNode = AstNode;
|
|
70
|
+
//# sourceMappingURL=ast-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-node.js","sourceRoot":"","sources":["../../../src/lib/ast/ast-node.ts"],"names":[],"mappings":";;;AASA;;;;;;GAMG;AACH,MAAa,OAAO;IAcI;IACA;IACA;IACA;IACA;IACA;IACA;IAlBpB;;;;;;;;;;OAUG;IACH,YACoB,MAAc,EACd,WAA+B,EAAE,EACjC,OAAsB,IAAI,EAC1B,WAAkC,IAAI,EACtC,UAAyB,IAAI,EAC7B,eAA8B,IAAI,EAClC,SAAwB,IAAI;QAN5B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAyB;QACjC,SAAI,GAAJ,IAAI,CAAsB;QAC1B,aAAQ,GAAR,QAAQ,CAA8B;QACtC,YAAO,GAAP,OAAO,CAAsB;QAC7B,iBAAY,GAAZ,YAAY,CAAsB;QAClC,WAAM,GAAN,MAAM,CAAsB;IAGhD,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QAEjB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,IAAI,CACd,MAAc,EACd,QAA4B,EAC5B,WAAkC,IAAI,EACtC,UAAyB,IAAI,EAC7B,eAA8B,IAAI,EAClC,SAAwB,IAAI;QAG5B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,QAAQ,CAClB,MAAc,EACd,IAAY,EACZ,WAAkC,IAAI;QAGtC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CACJ;AAtED,0BAsEC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParserLrError = exports.messageContainsStackTrace = exports.isParserLrError = exports.formatUserError = void 0;
|
|
4
|
+
var parser_lr_error_js_1 = require("./parser-lr-error.js");
|
|
5
|
+
Object.defineProperty(exports, "formatUserError", { enumerable: true, get: function () { return parser_lr_error_js_1.formatUserError; } });
|
|
6
|
+
Object.defineProperty(exports, "isParserLrError", { enumerable: true, get: function () { return parser_lr_error_js_1.isParserLrError; } });
|
|
7
|
+
Object.defineProperty(exports, "messageContainsStackTrace", { enumerable: true, get: function () { return parser_lr_error_js_1.messageContainsStackTrace; } });
|
|
8
|
+
Object.defineProperty(exports, "ParserLrError", { enumerable: true, get: function () { return parser_lr_error_js_1.ParserLrError; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/errors/index.ts"],"names":[],"mappings":";;;AAAA,2DAK8B;AAJ1B,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AACf,+HAAA,yBAAyB,OAAA;AACzB,mHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParserLrError = void 0;
|
|
4
|
+
exports.isParserLrError = isParserLrError;
|
|
5
|
+
exports.formatUserError = formatUserError;
|
|
6
|
+
exports.messageContainsStackTrace = messageContainsStackTrace;
|
|
7
|
+
/**
|
|
8
|
+
* Base class for library errors surfaced to callers and the CLI.
|
|
9
|
+
*/
|
|
10
|
+
class ParserLrError extends Error {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a parser-lr error with a caller-safe message.
|
|
13
|
+
*
|
|
14
|
+
* @param message - Human-readable failure description without stack frames.
|
|
15
|
+
*/
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = new.target.name;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.ParserLrError = ParserLrError;
|
|
22
|
+
/**
|
|
23
|
+
* Returns whether a value is a parser-lr domain error.
|
|
24
|
+
*
|
|
25
|
+
* @param error - Value to test.
|
|
26
|
+
*/
|
|
27
|
+
function isParserLrError(error) {
|
|
28
|
+
return error instanceof ParserLrError;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns a user-facing message for an error value.
|
|
32
|
+
*
|
|
33
|
+
* @param error - Thrown value or Error instance.
|
|
34
|
+
*/
|
|
35
|
+
function formatUserError(error) {
|
|
36
|
+
if (error instanceof ParserLrError) {
|
|
37
|
+
return error.message;
|
|
38
|
+
}
|
|
39
|
+
if (error instanceof Error) {
|
|
40
|
+
return error.message;
|
|
41
|
+
}
|
|
42
|
+
return String(error);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns whether a message contains embedded stack trace frames.
|
|
46
|
+
*
|
|
47
|
+
* @param message - Error message text to inspect.
|
|
48
|
+
*/
|
|
49
|
+
function messageContainsStackTrace(message) {
|
|
50
|
+
return /\n\s+at .+/.test(message);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=parser-lr-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-lr-error.js","sourceRoot":"","sources":["../../../src/lib/errors/parser-lr-error.ts"],"names":[],"mappings":";;;AAsBA,0CAGC;AAOD,0CAaC;AAOD,8DAGC;AAvDD;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK;IAEpC;;;;OAIG;IACH,YAAmB,OAAe;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAChC,CAAC;CACJ;AAZD,sCAYC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAE1C,OAAO,KAAK,YAAY,aAAa,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAE1C,IAAI,KAAK,YAAY,aAAa,EAClC,CAAC;QACG,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAC1B,CAAC;QACG,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,OAAe;IAErD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AstSchema = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* AST shape declared in the `ast` section of a `.grammar` file.
|
|
6
|
+
*/
|
|
7
|
+
class AstSchema {
|
|
8
|
+
types;
|
|
9
|
+
typesByName;
|
|
10
|
+
/**
|
|
11
|
+
* Creates an AST schema from declared types.
|
|
12
|
+
*
|
|
13
|
+
* @param types - Named AST types from the `ast` section.
|
|
14
|
+
*/
|
|
15
|
+
constructor(types) {
|
|
16
|
+
this.types = types;
|
|
17
|
+
// Index types by name for lookup.
|
|
18
|
+
const typesByName = new Map();
|
|
19
|
+
for (const type of types) {
|
|
20
|
+
typesByName.set(type.name, type);
|
|
21
|
+
}
|
|
22
|
+
this.typesByName = typesByName;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns an AST type by name.
|
|
26
|
+
*
|
|
27
|
+
* @param name - Type name to look up.
|
|
28
|
+
* @returns The matching type, or null when the name is undefined.
|
|
29
|
+
*/
|
|
30
|
+
type(name) {
|
|
31
|
+
return this.typesByName.get(name) ?? null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Whether a named AST type is defined in this schema.
|
|
35
|
+
*
|
|
36
|
+
* @param name - Type name to test.
|
|
37
|
+
*/
|
|
38
|
+
hasType(name) {
|
|
39
|
+
return this.typesByName.has(name);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.AstSchema = AstSchema;
|
|
43
|
+
//# sourceMappingURL=ast-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-schema.js","sourceRoot":"","sources":["../../../src/lib/grammar/ast-schema.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,SAAS;IASiB;IAPlB,WAAW,CAA+B;IAE3D;;;;OAIG;IACH,YAAmC,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;QAExD,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EACxB,CAAC;YACG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAC,IAAY;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,IAAY;QAEvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AA1CD,8BA0CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-type.js","sourceRoot":"","sources":["../../../src/lib/grammar/ast-type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/lib/grammar/expression.ts"],"names":[],"mappings":""}
|