parser-lr 0.0.0 → 0.2.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 +112 -1
- package/bin/parser-lr.js +12502 -16
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/ast/ast-node.d.ts +59 -0
- package/dist/lib/ast/ast-node.d.ts.map +1 -0
- package/dist/lib/ast/ast-node.js +66 -0
- package/dist/lib/ast/ast-node.js.map +1 -0
- package/dist/lib/errors/index.d.ts +2 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/errors/index.js +2 -0
- package/dist/lib/errors/index.js.map +1 -0
- package/dist/lib/errors/parser-lr-error.d.ts +30 -0
- package/dist/lib/errors/parser-lr-error.d.ts.map +1 -0
- package/dist/lib/errors/parser-lr-error.js +45 -0
- package/dist/lib/errors/parser-lr-error.js.map +1 -0
- package/dist/lib/grammar/ast-schema.d.ts +28 -0
- package/dist/lib/grammar/ast-schema.d.ts.map +1 -0
- package/dist/lib/grammar/ast-schema.js +39 -0
- package/dist/lib/grammar/ast-schema.js.map +1 -0
- package/dist/lib/grammar/ast-type.d.ts +12 -0
- package/dist/lib/grammar/ast-type.d.ts.map +1 -0
- package/dist/lib/grammar/ast-type.js +2 -0
- package/dist/lib/grammar/ast-type.js.map +1 -0
- package/dist/lib/grammar/expression.d.ts +69 -0
- package/dist/lib/grammar/expression.d.ts.map +1 -0
- package/dist/lib/grammar/expression.js +2 -0
- package/dist/lib/grammar/expression.js.map +1 -0
- package/dist/lib/grammar/grammar-from-cst.d.ts +10 -0
- package/dist/lib/grammar/grammar-from-cst.d.ts.map +1 -0
- package/dist/lib/grammar/grammar-from-cst.js +638 -0
- package/dist/lib/grammar/grammar-from-cst.js.map +1 -0
- package/dist/lib/grammar/grammar-literals.d.ts +18 -0
- package/dist/lib/grammar/grammar-literals.d.ts.map +1 -0
- package/dist/lib/grammar/grammar-literals.js +67 -0
- package/dist/lib/grammar/grammar-literals.js.map +1 -0
- package/dist/lib/grammar/grammar.d.ts +45 -0
- package/dist/lib/grammar/grammar.d.ts.map +1 -0
- package/dist/lib/grammar/grammar.js +60 -0
- package/dist/lib/grammar/grammar.js.map +1 -0
- package/dist/lib/grammar/grammar.json +7950 -0
- package/dist/lib/grammar/index.d.ts +13 -0
- package/dist/lib/grammar/index.d.ts.map +1 -0
- package/dist/lib/grammar/index.js +7 -0
- package/dist/lib/grammar/index.js.map +1 -0
- package/dist/lib/grammar/meta-grammar-table.d.ts +19 -0
- package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -0
- package/dist/lib/grammar/meta-grammar-table.js +32 -0
- package/dist/lib/grammar/meta-grammar-table.js.map +1 -0
- package/dist/lib/grammar/production.d.ts +9 -0
- package/dist/lib/grammar/production.d.ts.map +1 -0
- package/dist/lib/grammar/production.js +2 -0
- package/dist/lib/grammar/production.js.map +1 -0
- package/dist/lib/grammar/read-grammar-error.d.ts +15 -0
- package/dist/lib/grammar/read-grammar-error.d.ts.map +1 -0
- package/dist/lib/grammar/read-grammar-error.js +18 -0
- package/dist/lib/grammar/read-grammar-error.js.map +1 -0
- package/dist/lib/grammar/read-grammar.d.ts +9 -0
- package/dist/lib/grammar/read-grammar.d.ts.map +1 -0
- package/dist/lib/grammar/read-grammar.js +21 -0
- package/dist/lib/grammar/read-grammar.js.map +1 -0
- package/dist/lib/grammar/token-rule.d.ts +11 -0
- package/dist/lib/grammar/token-rule.d.ts.map +1 -0
- package/dist/lib/grammar/token-rule.js +2 -0
- package/dist/lib/grammar/token-rule.js.map +1 -0
- package/dist/lib/grammar/transform-expression.d.ts +55 -0
- package/dist/lib/grammar/transform-expression.d.ts.map +1 -0
- package/dist/lib/grammar/transform-expression.js +2 -0
- package/dist/lib/grammar/transform-expression.js.map +1 -0
- package/dist/lib/grammar/transform-rule.d.ts +16 -0
- package/dist/lib/grammar/transform-rule.d.ts.map +1 -0
- package/dist/lib/grammar/transform-rule.js +2 -0
- package/dist/lib/grammar/transform-rule.js.map +1 -0
- package/dist/lib/grammar/transform-schema.d.ts +28 -0
- package/dist/lib/grammar/transform-schema.d.ts.map +1 -0
- package/dist/lib/grammar/transform-schema.js +39 -0
- package/dist/lib/grammar/transform-schema.js.map +1 -0
- package/dist/lib/index.d.ts +19 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +13 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/lexer/index.d.ts +10 -0
- package/dist/lib/lexer/index.d.ts.map +1 -0
- package/dist/lib/lexer/index.js +8 -0
- package/dist/lib/lexer/index.js.map +1 -0
- package/dist/lib/lexer/lexer-compile-error.d.ts +15 -0
- package/dist/lib/lexer/lexer-compile-error.d.ts.map +1 -0
- package/dist/lib/lexer/lexer-compile-error.js +18 -0
- package/dist/lib/lexer/lexer-compile-error.js.map +1 -0
- package/dist/lib/lexer/lexer-compile.d.ts +94 -0
- package/dist/lib/lexer/lexer-compile.d.ts.map +1 -0
- package/dist/lib/lexer/lexer-compile.js +189 -0
- package/dist/lib/lexer/lexer-compile.js.map +1 -0
- package/dist/lib/lexer/lexer-error.d.ts +15 -0
- package/dist/lib/lexer/lexer-error.d.ts.map +1 -0
- package/dist/lib/lexer/lexer-error.js +18 -0
- package/dist/lib/lexer/lexer-error.js.map +1 -0
- package/dist/lib/lexer/lexer-input-error.d.ts +11 -0
- package/dist/lib/lexer/lexer-input-error.d.ts.map +1 -0
- package/dist/lib/lexer/lexer-input-error.js +13 -0
- package/dist/lib/lexer/lexer-input-error.js.map +1 -0
- package/dist/lib/lexer/lexer-state-error.d.ts +13 -0
- package/dist/lib/lexer/lexer-state-error.d.ts.map +1 -0
- package/dist/lib/lexer/lexer-state-error.js +15 -0
- package/dist/lib/lexer/lexer-state-error.js.map +1 -0
- package/dist/lib/lexer/lexer.d.ts +111 -0
- package/dist/lib/lexer/lexer.d.ts.map +1 -0
- package/dist/lib/lexer/lexer.js +270 -0
- package/dist/lib/lexer/lexer.js.map +1 -0
- package/dist/lib/lexer/token.d.ts +34 -0
- package/dist/lib/lexer/token.d.ts.map +1 -0
- package/dist/lib/lexer/token.js +38 -0
- package/dist/lib/lexer/token.js.map +1 -0
- package/dist/lib/parse-context-error.d.ts +13 -0
- package/dist/lib/parse-context-error.d.ts.map +1 -0
- package/dist/lib/parse-context-error.js +15 -0
- package/dist/lib/parse-context-error.js.map +1 -0
- package/dist/lib/parse-context.d.ts +106 -0
- package/dist/lib/parse-context.d.ts.map +1 -0
- package/dist/lib/parse-context.js +133 -0
- package/dist/lib/parse-context.js.map +1 -0
- package/dist/lib/parse-output-error.d.ts +13 -0
- package/dist/lib/parse-output-error.d.ts.map +1 -0
- package/dist/lib/parse-output-error.js +15 -0
- package/dist/lib/parse-output-error.js.map +1 -0
- package/dist/lib/parse-output.d.ts +10 -0
- package/dist/lib/parse-output.d.ts.map +1 -0
- package/dist/lib/parse-output.js +15 -0
- package/dist/lib/parse-output.js.map +1 -0
- package/dist/lib/parse-table/analysis/first-follow.d.ts +124 -0
- package/dist/lib/parse-table/analysis/first-follow.d.ts.map +1 -0
- package/dist/lib/parse-table/analysis/first-follow.js +274 -0
- package/dist/lib/parse-table/analysis/first-follow.js.map +1 -0
- package/dist/lib/parse-table/analysis/index.d.ts +2 -0
- package/dist/lib/parse-table/analysis/index.d.ts.map +1 -0
- package/dist/lib/parse-table/analysis/index.js +2 -0
- package/dist/lib/parse-table/analysis/index.js.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-grammar.d.ts +65 -0
- package/dist/lib/parse-table/bnf/bnf-grammar.d.ts.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-grammar.js +136 -0
- package/dist/lib/parse-table/bnf/bnf-grammar.js.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-production.d.ts +12 -0
- package/dist/lib/parse-table/bnf/bnf-production.d.ts.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-production.js +2 -0
- package/dist/lib/parse-table/bnf/bnf-production.js.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-symbol.d.ts +40 -0
- package/dist/lib/parse-table/bnf/bnf-symbol.d.ts.map +1 -0
- package/dist/lib/parse-table/bnf/bnf-symbol.js +35 -0
- package/dist/lib/parse-table/bnf/bnf-symbol.js.map +1 -0
- package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts +104 -0
- package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts.map +1 -0
- package/dist/lib/parse-table/bnf/desugar-ebnf.js +217 -0
- package/dist/lib/parse-table/bnf/desugar-ebnf.js.map +1 -0
- package/dist/lib/parse-table/bnf/index.d.ts +6 -0
- package/dist/lib/parse-table/bnf/index.d.ts.map +1 -0
- package/dist/lib/parse-table/bnf/index.js +4 -0
- package/dist/lib/parse-table/bnf/index.js.map +1 -0
- package/dist/lib/parse-table/build-lr-table.d.ts +11 -0
- package/dist/lib/parse-table/build-lr-table.d.ts.map +1 -0
- package/dist/lib/parse-table/build-lr-table.js +158 -0
- package/dist/lib/parse-table/build-lr-table.js.map +1 -0
- package/dist/lib/parse-table/index.d.ts +22 -0
- package/dist/lib/parse-table/index.d.ts.map +1 -0
- package/dist/lib/parse-table/index.js +15 -0
- package/dist/lib/parse-table/index.js.map +1 -0
- package/dist/lib/parse-table/lr-algorithm-error.d.ts +13 -0
- package/dist/lib/parse-table/lr-algorithm-error.d.ts.map +1 -0
- package/dist/lib/parse-table/lr-algorithm-error.js +15 -0
- package/dist/lib/parse-table/lr-algorithm-error.js.map +1 -0
- package/dist/lib/parse-table/lr-algorithm.d.ts +19 -0
- package/dist/lib/parse-table/lr-algorithm.d.ts.map +1 -0
- package/dist/lib/parse-table/lr-algorithm.js +27 -0
- package/dist/lib/parse-table/lr-algorithm.js.map +1 -0
- package/dist/lib/parse-table/lr0/index.d.ts +3 -0
- package/dist/lib/parse-table/lr0/index.d.ts.map +1 -0
- package/dist/lib/parse-table/lr0/index.js +2 -0
- package/dist/lib/parse-table/lr0/index.js.map +1 -0
- package/dist/lib/parse-table/lr0/lr0-item-set.d.ts +106 -0
- package/dist/lib/parse-table/lr0/lr0-item-set.d.ts.map +1 -0
- package/dist/lib/parse-table/lr0/lr0-item-set.js +235 -0
- package/dist/lib/parse-table/lr0/lr0-item-set.js.map +1 -0
- package/dist/lib/parse-table/lr1/index.d.ts +3 -0
- package/dist/lib/parse-table/lr1/index.d.ts.map +1 -0
- package/dist/lib/parse-table/lr1/index.js +2 -0
- package/dist/lib/parse-table/lr1/index.js.map +1 -0
- package/dist/lib/parse-table/lr1/lr1-item-set.d.ts +157 -0
- package/dist/lib/parse-table/lr1/lr1-item-set.d.ts.map +1 -0
- package/dist/lib/parse-table/lr1/lr1-item-set.js +380 -0
- package/dist/lib/parse-table/lr1/lr1-item-set.js.map +1 -0
- package/dist/lib/parse-table/parse-table-build-error.d.ts +17 -0
- package/dist/lib/parse-table/parse-table-build-error.d.ts.map +1 -0
- package/dist/lib/parse-table/parse-table-build-error.js +20 -0
- package/dist/lib/parse-table/parse-table-build-error.js.map +1 -0
- package/dist/lib/parse-table/parse-table-error.d.ts +13 -0
- package/dist/lib/parse-table/parse-table-error.d.ts.map +1 -0
- package/dist/lib/parse-table/parse-table-error.js +15 -0
- package/dist/lib/parse-table/parse-table-error.js.map +1 -0
- package/dist/lib/parse-table/parse-table-json.d.ts +50 -0
- package/dist/lib/parse-table/parse-table-json.d.ts.map +1 -0
- package/dist/lib/parse-table/parse-table-json.js +9 -0
- package/dist/lib/parse-table/parse-table-json.js.map +1 -0
- package/dist/lib/parse-table/parse-table.d.ts +154 -0
- package/dist/lib/parse-table/parse-table.d.ts.map +1 -0
- package/dist/lib/parse-table/parse-table.js +314 -0
- package/dist/lib/parse-table/parse-table.js.map +1 -0
- package/dist/lib/parse-table/slr/index.d.ts +4 -0
- package/dist/lib/parse-table/slr/index.d.ts.map +1 -0
- package/dist/lib/parse-table/slr/index.js +3 -0
- package/dist/lib/parse-table/slr/index.js.map +1 -0
- package/dist/lib/parse-table/slr/parse-action.d.ts +3 -0
- package/dist/lib/parse-table/slr/parse-action.d.ts.map +1 -0
- package/dist/lib/parse-table/slr/parse-action.js +2 -0
- package/dist/lib/parse-table/slr/parse-action.js.map +1 -0
- package/dist/lib/parse-table/slr/slr-table.d.ts +14 -0
- package/dist/lib/parse-table/slr/slr-table.d.ts.map +1 -0
- package/dist/lib/parse-table/slr/slr-table.js +14 -0
- package/dist/lib/parse-table/slr/slr-table.js.map +1 -0
- package/dist/lib/parse-table/table/index.d.ts +5 -0
- package/dist/lib/parse-table/table/index.d.ts.map +1 -0
- package/dist/lib/parse-table/table/index.js +4 -0
- package/dist/lib/parse-table/table/index.js.map +1 -0
- package/dist/lib/parse-table/table/lr-parse-table.d.ts +92 -0
- package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -0
- package/dist/lib/parse-table/table/lr-parse-table.js +144 -0
- package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -0
- package/dist/lib/parse-table/table/parse-action.d.ts +47 -0
- package/dist/lib/parse-table/table/parse-action.d.ts.map +1 -0
- package/dist/lib/parse-table/table/parse-action.js +49 -0
- package/dist/lib/parse-table/table/parse-action.js.map +1 -0
- package/dist/lib/parse-table/table/table-builder-base.d.ts +63 -0
- package/dist/lib/parse-table/table/table-builder-base.d.ts.map +1 -0
- package/dist/lib/parse-table/table/table-builder-base.js +129 -0
- package/dist/lib/parse-table/table/table-builder-base.js.map +1 -0
- package/dist/lib/parse-table/token-inventory.d.ts +9 -0
- package/dist/lib/parse-table/token-inventory.d.ts.map +1 -0
- package/dist/lib/parse-table/token-inventory.js +15 -0
- package/dist/lib/parse-table/token-inventory.js.map +1 -0
- package/dist/lib/parser-lr.d.ts +96 -2
- package/dist/lib/parser-lr.d.ts.map +1 -1
- package/dist/lib/parser-lr.js +130 -2
- package/dist/lib/parser-lr.js.map +1 -1
- package/dist/lib/shift-reduce/index.d.ts +3 -0
- package/dist/lib/shift-reduce/index.d.ts.map +1 -0
- package/dist/lib/shift-reduce/index.js +2 -0
- package/dist/lib/shift-reduce/index.js.map +1 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.d.ts +82 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.d.ts.map +1 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.js +204 -0
- package/dist/lib/shift-reduce/shift-reduce-engine.js.map +1 -0
- package/dist/lib/transform/binding-map.d.ts +32 -0
- package/dist/lib/transform/binding-map.d.ts.map +1 -0
- package/dist/lib/transform/binding-map.js +59 -0
- package/dist/lib/transform/binding-map.js.map +1 -0
- package/dist/lib/transform/cst-transformer.d.ts +158 -0
- package/dist/lib/transform/cst-transformer.d.ts.map +1 -0
- package/dist/lib/transform/cst-transformer.js +381 -0
- package/dist/lib/transform/cst-transformer.js.map +1 -0
- package/dist/lib/transform/index.d.ts +4 -0
- package/dist/lib/transform/index.d.ts.map +1 -0
- package/dist/lib/transform/index.js +3 -0
- package/dist/lib/transform/index.js.map +1 -0
- package/docs/grammar.md +170 -0
- package/package.json +12 -4
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import { bnfParserSymbolKey } from '../bnf/bnf-symbol.js';
|
|
2
|
+
import { sortLr0Items } from '../lr0/lr0-item-set.js';
|
|
3
|
+
import { TableBuilderBase } from '../table/table-builder-base.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns whether two LR(1) items are identical.
|
|
6
|
+
*
|
|
7
|
+
* @param left - First item.
|
|
8
|
+
* @param right - Second item.
|
|
9
|
+
*/
|
|
10
|
+
export function lr1ItemsEqual(left, right) {
|
|
11
|
+
return left.productionId === right.productionId
|
|
12
|
+
&& left.dot === right.dot
|
|
13
|
+
&& left.lookahead === right.lookahead;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Sorts LR(1) items for canonical set comparison.
|
|
17
|
+
*
|
|
18
|
+
* @param items - Items to sort.
|
|
19
|
+
*/
|
|
20
|
+
export function sortLr1Items(items) {
|
|
21
|
+
return [...items].sort((left, right) => {
|
|
22
|
+
if (left.productionId !== right.productionId) {
|
|
23
|
+
return left.productionId - right.productionId;
|
|
24
|
+
}
|
|
25
|
+
if (left.dot !== right.dot) {
|
|
26
|
+
return left.dot - right.dot;
|
|
27
|
+
}
|
|
28
|
+
return left.lookahead.localeCompare(right.lookahead);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the LR(0) core key for one LR(1) item.
|
|
33
|
+
*
|
|
34
|
+
* @param item - LR(1) item to encode.
|
|
35
|
+
*/
|
|
36
|
+
export function lr1CoreKey(item) {
|
|
37
|
+
return `${String(item.productionId)}:${String(item.dot)}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns a stable identity string for one LR(1) item.
|
|
41
|
+
*
|
|
42
|
+
* @param item - Item to encode.
|
|
43
|
+
*/
|
|
44
|
+
export function lr1ItemIdentity(item) {
|
|
45
|
+
return `${lr1CoreKey(item)}:${item.lookahead}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns a stable identity string for an LR(1) item set.
|
|
49
|
+
*
|
|
50
|
+
* @param items - Closed item set.
|
|
51
|
+
*/
|
|
52
|
+
export function lr1SetIdentity(items) {
|
|
53
|
+
return sortLr1Items(items)
|
|
54
|
+
.map((item) => lr1ItemIdentity(item))
|
|
55
|
+
.join('|');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns the LR(0) core identity for an LR(1) item set.
|
|
59
|
+
*
|
|
60
|
+
* @param items - LR(1) item set.
|
|
61
|
+
*/
|
|
62
|
+
export function lr1CoreSetIdentity(items) {
|
|
63
|
+
const cores = new Set(items.map((item) => lr1CoreKey(item)));
|
|
64
|
+
return [...cores].sort().join('|');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Computes FIRST(β) ∪ { lookahead } when every symbol in β is nullable.
|
|
68
|
+
*
|
|
69
|
+
* @param beta - Remaining right-hand side symbols after a non-terminal.
|
|
70
|
+
* @param lookahead - Lookahead terminal following β.
|
|
71
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
72
|
+
*/
|
|
73
|
+
export function firstAfterSymbols(beta, lookahead, analysis) {
|
|
74
|
+
const result = new Set();
|
|
75
|
+
for (const symbol of beta) {
|
|
76
|
+
for (const terminal of analysis.firstOfSymbol(symbol)) {
|
|
77
|
+
result.add(terminal);
|
|
78
|
+
}
|
|
79
|
+
if (!analysis.isSymbolNullable(symbol)) {
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
result.add(lookahead);
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Computes the LR(1) closure of an item set.
|
|
88
|
+
*
|
|
89
|
+
* @param grammar - Augmented BNF grammar.
|
|
90
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
91
|
+
* @param items - Seed items.
|
|
92
|
+
*/
|
|
93
|
+
export function lr1Closure(grammar, analysis, items) {
|
|
94
|
+
const result = sortLr1Items(items);
|
|
95
|
+
const itemKeys = new Set(result.map((item) => lr1ItemIdentity(item)));
|
|
96
|
+
let changed = true;
|
|
97
|
+
while (changed) {
|
|
98
|
+
changed = false;
|
|
99
|
+
for (const item of [...result]) {
|
|
100
|
+
const production = grammar.production(item.productionId);
|
|
101
|
+
if (production === null) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const nextSymbol = production.rhs[item.dot];
|
|
105
|
+
if (nextSymbol === undefined || nextSymbol.kind !== 'nonTerminal') {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const beta = production.rhs.slice(item.dot + 1);
|
|
109
|
+
for (const candidate of grammar.productionsFor(nextSymbol.name)) {
|
|
110
|
+
for (const lookahead of firstAfterSymbols(beta, item.lookahead, analysis)) {
|
|
111
|
+
const closureItem = {
|
|
112
|
+
productionId: candidate.id,
|
|
113
|
+
dot: 0,
|
|
114
|
+
lookahead,
|
|
115
|
+
};
|
|
116
|
+
const identity = lr1ItemIdentity(closureItem);
|
|
117
|
+
if (!itemKeys.has(identity)) {
|
|
118
|
+
itemKeys.add(identity);
|
|
119
|
+
result.push(closureItem);
|
|
120
|
+
changed = true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return sortLr1Items(result);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Computes the LR(1) GOTO set for symbol `symbolKey`.
|
|
130
|
+
*
|
|
131
|
+
* @param grammar - Augmented BNF grammar.
|
|
132
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
133
|
+
* @param items - Closed item set.
|
|
134
|
+
* @param symbolKey - Encoded terminal or non-terminal symbol.
|
|
135
|
+
*/
|
|
136
|
+
export function lr1Goto(grammar, analysis, items, symbolKey) {
|
|
137
|
+
const moved = [];
|
|
138
|
+
for (const item of items) {
|
|
139
|
+
const production = grammar.production(item.productionId);
|
|
140
|
+
if (production === null) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const nextSymbol = production.rhs[item.dot];
|
|
144
|
+
if (nextSymbol === undefined || bnfParserSymbolKey(nextSymbol) !== symbolKey) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
moved.push({
|
|
148
|
+
productionId: item.productionId,
|
|
149
|
+
dot: item.dot + 1,
|
|
150
|
+
lookahead: item.lookahead,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (moved.length === 0) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
return lr1Closure(grammar, analysis, moved);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Canonical collection of LR(1) item sets for a BNF grammar.
|
|
160
|
+
*/
|
|
161
|
+
export class Lr1ItemSetCollection {
|
|
162
|
+
grammar;
|
|
163
|
+
itemSets;
|
|
164
|
+
/**
|
|
165
|
+
* Creates a collection from an ordered list of closed item sets.
|
|
166
|
+
*
|
|
167
|
+
* @param grammar - Grammar the item sets were built from.
|
|
168
|
+
* @param itemSets - Closed LR(1) item sets in discovery order.
|
|
169
|
+
*/
|
|
170
|
+
constructor(grammar, itemSets) {
|
|
171
|
+
this.grammar = grammar;
|
|
172
|
+
this.itemSets = itemSets;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Returns the index of an item set matching `items`, or null when absent.
|
|
176
|
+
*
|
|
177
|
+
* @param items - Closed item set to locate.
|
|
178
|
+
*/
|
|
179
|
+
indexOf(items) {
|
|
180
|
+
const target = lr1SetIdentity(items);
|
|
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;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Returns LR(0) items derived from one LR(1) item set.
|
|
190
|
+
*
|
|
191
|
+
* @param items - LR(1) item set.
|
|
192
|
+
*/
|
|
193
|
+
static lr0Core(items) {
|
|
194
|
+
const cores = new Map();
|
|
195
|
+
for (const item of items) {
|
|
196
|
+
cores.set(lr1CoreKey(item), {
|
|
197
|
+
productionId: item.productionId,
|
|
198
|
+
dot: item.dot,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
return sortLr0Items([...cores.values()]);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Builds LR(1) item sets for a BNF grammar.
|
|
206
|
+
*/
|
|
207
|
+
export class Lr1ItemSetBuilder {
|
|
208
|
+
/**
|
|
209
|
+
* Builds the canonical LR(1) collection for a grammar.
|
|
210
|
+
*
|
|
211
|
+
* @param grammar - Augmented BNF grammar.
|
|
212
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
213
|
+
* @param startLookahead - Lookahead terminal for the initial item.
|
|
214
|
+
*/
|
|
215
|
+
static build(grammar, analysis, startLookahead) {
|
|
216
|
+
const startProductions = grammar.productionsFor(grammar.startSymbol);
|
|
217
|
+
if (startProductions.length === 0) {
|
|
218
|
+
return new Lr1ItemSetCollection(grammar, []);
|
|
219
|
+
}
|
|
220
|
+
const initial = lr1Closure(grammar, analysis, [{
|
|
221
|
+
productionId: startProductions[0].id,
|
|
222
|
+
dot: 0,
|
|
223
|
+
lookahead: startLookahead,
|
|
224
|
+
}]);
|
|
225
|
+
const itemSets = [[...initial]];
|
|
226
|
+
const itemSetKeys = new Map([
|
|
227
|
+
[lr1SetIdentity(initial), 0],
|
|
228
|
+
]);
|
|
229
|
+
const symbols = grammar.terminalKeys().concat(grammar.nonTerminalNames()).sort();
|
|
230
|
+
let changed = true;
|
|
231
|
+
while (changed) {
|
|
232
|
+
changed = false;
|
|
233
|
+
for (const itemSet of [...itemSets]) {
|
|
234
|
+
for (const symbolKey of symbols) {
|
|
235
|
+
const gotoSet = lr1Goto(grammar, analysis, itemSet, symbolKey);
|
|
236
|
+
if (gotoSet.length === 0) {
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
const gotoKey = lr1SetIdentity(gotoSet);
|
|
240
|
+
const existingIndex = itemSetKeys.get(gotoKey);
|
|
241
|
+
if (existingIndex === undefined) {
|
|
242
|
+
const nextIndex = itemSets.length;
|
|
243
|
+
itemSetKeys.set(gotoKey, nextIndex);
|
|
244
|
+
itemSets.push([...gotoSet]);
|
|
245
|
+
changed = true;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return new Lr1ItemSetCollection(grammar, itemSets);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Builds the canonical LR(1) item set collection for a grammar.
|
|
255
|
+
*
|
|
256
|
+
* @param grammar - Augmented BNF grammar.
|
|
257
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
258
|
+
* @param startLookahead - Lookahead terminal for the initial item.
|
|
259
|
+
*/
|
|
260
|
+
export function buildLr1ItemSets(grammar, analysis, startLookahead) {
|
|
261
|
+
return Lr1ItemSetBuilder.build(grammar, analysis, startLookahead);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Merges LR(1) item sets that share the same LR(0) core into LALR item sets.
|
|
265
|
+
*
|
|
266
|
+
* @param collection - Canonical LR(1) item set collection.
|
|
267
|
+
*/
|
|
268
|
+
export function mergeLalrItemSets(collection) {
|
|
269
|
+
const coreToLalrIndex = new Map();
|
|
270
|
+
const lr1ToLalr = new Map();
|
|
271
|
+
const mergedItemSets = [];
|
|
272
|
+
for (let lr1Index = 0; lr1Index < collection.itemSets.length; lr1Index += 1) {
|
|
273
|
+
const itemSet = collection.itemSets[lr1Index] ?? [];
|
|
274
|
+
const core = lr1CoreSetIdentity(itemSet);
|
|
275
|
+
let lalrIndex = coreToLalrIndex.get(core);
|
|
276
|
+
if (lalrIndex === undefined) {
|
|
277
|
+
lalrIndex = mergedItemSets.length;
|
|
278
|
+
coreToLalrIndex.set(core, lalrIndex);
|
|
279
|
+
mergedItemSets.push([]);
|
|
280
|
+
}
|
|
281
|
+
lr1ToLalr.set(lr1Index, lalrIndex);
|
|
282
|
+
mergedItemSets[lalrIndex] = Lr1ItemSetBuilder.mergeItems(mergedItemSets[lalrIndex] ?? [], itemSet);
|
|
283
|
+
}
|
|
284
|
+
const remappedItemSets = mergedItemSets.map((itemSet) => sortLr1Items(itemSet));
|
|
285
|
+
return new Lr1ItemSetCollection(collection.grammar, remappedItemSets);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Builds LALR GOTO target indices from an LR(1) collection and merged LALR states.
|
|
289
|
+
*
|
|
290
|
+
* @param grammar - Augmented BNF grammar.
|
|
291
|
+
* @param analysis - Nullable and FIRST analysis for the grammar.
|
|
292
|
+
* @param lr1Collection - Canonical LR(1) item set collection.
|
|
293
|
+
* @param lalrCollection - Merged LALR item set collection.
|
|
294
|
+
* @param lr1ToLalr - LR(1) state index to LALR state index map.
|
|
295
|
+
*/
|
|
296
|
+
export function buildLalrGotoTargets(grammar, analysis, lr1Collection, lr1ToLalr) {
|
|
297
|
+
const targets = new Map();
|
|
298
|
+
const symbols = grammar.terminalKeys().concat(grammar.nonTerminalNames()).sort();
|
|
299
|
+
for (let lr1State = 0; lr1State < lr1Collection.itemSets.length; lr1State += 1) {
|
|
300
|
+
const lalrState = lr1ToLalr.get(lr1State);
|
|
301
|
+
if (lalrState === undefined) {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
const itemSet = lr1Collection.itemSets[lr1State] ?? [];
|
|
305
|
+
for (const symbolKey of symbols) {
|
|
306
|
+
const gotoSet = lr1Goto(grammar, analysis, itemSet, symbolKey);
|
|
307
|
+
if (gotoSet.length === 0) {
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
const lr1Target = lr1Collection.indexOf(gotoSet);
|
|
311
|
+
if (lr1Target === null) {
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
const lalrTarget = lr1ToLalr.get(lr1Target);
|
|
315
|
+
if (lalrTarget === undefined) {
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
targets.set(TableBuilderBase.gotoKey(lalrState, symbolKey), lalrTarget);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return targets;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Merges lookaheads for LR(1) items sharing the same LR(0) core.
|
|
325
|
+
*/
|
|
326
|
+
(function (Lr1ItemSetBuilder) {
|
|
327
|
+
/**
|
|
328
|
+
* Unions lookaheads for items with the same dotted production.
|
|
329
|
+
*
|
|
330
|
+
* @param left - Existing merged item set.
|
|
331
|
+
* @param right - Additional LR(1) item set to merge in.
|
|
332
|
+
*/
|
|
333
|
+
function mergeItems(left, right) {
|
|
334
|
+
const lookaheadsByCore = new Map();
|
|
335
|
+
for (const item of [...left, ...right]) {
|
|
336
|
+
const core = lr1CoreKey(item);
|
|
337
|
+
const lookaheads = lookaheadsByCore.get(core) ?? new Set();
|
|
338
|
+
lookaheads.add(item.lookahead);
|
|
339
|
+
lookaheadsByCore.set(core, lookaheads);
|
|
340
|
+
}
|
|
341
|
+
const merged = [];
|
|
342
|
+
for (const [core, lookaheads] of lookaheadsByCore.entries()) {
|
|
343
|
+
const [productionIdText, dotText] = core.split(':');
|
|
344
|
+
const productionId = Number(productionIdText);
|
|
345
|
+
const dot = Number(dotText);
|
|
346
|
+
for (const lookahead of [...lookaheads].sort()) {
|
|
347
|
+
merged.push({
|
|
348
|
+
productionId,
|
|
349
|
+
dot,
|
|
350
|
+
lookahead,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return sortLr1Items(merged);
|
|
355
|
+
}
|
|
356
|
+
Lr1ItemSetBuilder.mergeItems = mergeItems;
|
|
357
|
+
/**
|
|
358
|
+
* Builds the LR(1) to LALR state index map for merged item sets.
|
|
359
|
+
*
|
|
360
|
+
* @param lr1Collection - Canonical LR(1) item set collection.
|
|
361
|
+
* @param lalrCollection - Merged LALR item set collection.
|
|
362
|
+
*/
|
|
363
|
+
function buildLr1ToLalrMap(lr1Collection, lalrCollection) {
|
|
364
|
+
const coreToLalrIndex = new Map();
|
|
365
|
+
for (let lalrIndex = 0; lalrIndex < lalrCollection.itemSets.length; lalrIndex += 1) {
|
|
366
|
+
coreToLalrIndex.set(lr1CoreSetIdentity(lalrCollection.itemSets[lalrIndex] ?? []), lalrIndex);
|
|
367
|
+
}
|
|
368
|
+
const lr1ToLalr = new Map();
|
|
369
|
+
for (let lr1Index = 0; lr1Index < lr1Collection.itemSets.length; lr1Index += 1) {
|
|
370
|
+
const core = lr1CoreSetIdentity(lr1Collection.itemSets[lr1Index] ?? []);
|
|
371
|
+
const lalrIndex = coreToLalrIndex.get(core);
|
|
372
|
+
if (lalrIndex !== undefined) {
|
|
373
|
+
lr1ToLalr.set(lr1Index, lalrIndex);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return lr1ToLalr;
|
|
377
|
+
}
|
|
378
|
+
Lr1ItemSetBuilder.buildLr1ToLalrMap = buildLr1ToLalrMap;
|
|
379
|
+
})(Lr1ItemSetBuilder || (Lr1ItemSetBuilder = {}));
|
|
380
|
+
//# sourceMappingURL=lr1-item-set.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ParserLrError } from '../errors/parser-lr-error.js';
|
|
2
|
+
import type { LrAlgorithm } from './lr-algorithm.js';
|
|
3
|
+
/**
|
|
4
|
+
* Thrown when LR table construction encounters unresolved conflicts.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParseTableBuildError extends ParserLrError {
|
|
7
|
+
readonly algorithm: LrAlgorithm;
|
|
8
|
+
readonly conflicts: readonly string[];
|
|
9
|
+
/**
|
|
10
|
+
* Creates a parse table build error from detected conflicts.
|
|
11
|
+
*
|
|
12
|
+
* @param algorithm - LR algorithm that was attempted.
|
|
13
|
+
* @param conflicts - Readable conflict descriptions.
|
|
14
|
+
*/
|
|
15
|
+
constructor(algorithm: LrAlgorithm, conflicts: readonly string[]);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=parse-table-build-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-build-error.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-build-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;aAS/B,SAAS,EAAE,WAAW;aACtB,SAAS,EAAE,SAAS,MAAM,EAAE;IARhD;;;;;OAKG;gBAEiB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,SAAS,MAAM,EAAE;CAKnD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ParserLrError } from '../errors/parser-lr-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when LR table construction encounters unresolved conflicts.
|
|
4
|
+
*/
|
|
5
|
+
export class ParseTableBuildError extends ParserLrError {
|
|
6
|
+
algorithm;
|
|
7
|
+
conflicts;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a parse table build error from detected conflicts.
|
|
10
|
+
*
|
|
11
|
+
* @param algorithm - LR algorithm that was attempted.
|
|
12
|
+
* @param conflicts - Readable conflict descriptions.
|
|
13
|
+
*/
|
|
14
|
+
constructor(algorithm, conflicts) {
|
|
15
|
+
super(`LR table build failed for ${algorithm}: ${conflicts.join('; ')}`);
|
|
16
|
+
this.algorithm = algorithm;
|
|
17
|
+
this.conflicts = conflicts;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=parse-table-build-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-build-error.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-build-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAS/B;IACA;IARpB;;;;;OAKG;IACH,YACoB,SAAsB,EACtB,SAA4B;QAG5C,KAAK,CAAC,6BAA6B,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAJzD,cAAS,GAAT,SAAS,CAAa;QACtB,cAAS,GAAT,SAAS,CAAmB;IAIhD,CAAC;CACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ParserLrError } from '../errors/parser-lr-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when serialized parse table JSON cannot be loaded.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ParseTableError extends ParserLrError {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a parse table load error.
|
|
8
|
+
*
|
|
9
|
+
* @param message - Human-readable failure description.
|
|
10
|
+
*/
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parse-table-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-error.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAE9C;;;;OAIG;gBACgB,OAAO,EAAE,MAAM;CAIrC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ParserLrError } from '../errors/parser-lr-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when serialized parse table JSON cannot be loaded.
|
|
4
|
+
*/
|
|
5
|
+
export class ParseTableError extends ParserLrError {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a parse table load error.
|
|
8
|
+
*
|
|
9
|
+
* @param message - Human-readable failure description.
|
|
10
|
+
*/
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=parse-table-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-error.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAE9C;;;;OAIG;IACH,YAAmB,OAAe;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ParseTableJson } from './parse-table.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serialized production metadata referenced by reduce actions.
|
|
4
|
+
*/
|
|
5
|
+
export interface ParseTableProductionJson {
|
|
6
|
+
readonly id: number;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly rhs: readonly string[];
|
|
9
|
+
readonly variant: string | null;
|
|
10
|
+
readonly origin: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Serialized ACTION entry for one state and terminal symbol.
|
|
14
|
+
*/
|
|
15
|
+
export interface ParseTableActionJson {
|
|
16
|
+
readonly state: number;
|
|
17
|
+
readonly symbol: string;
|
|
18
|
+
readonly kind: 'shift' | 'reduce' | 'accept';
|
|
19
|
+
readonly target?: number;
|
|
20
|
+
readonly productionId?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Serialized GOTO entry for one state and non-terminal.
|
|
24
|
+
*/
|
|
25
|
+
export interface ParseTableGotoJson {
|
|
26
|
+
readonly state: number;
|
|
27
|
+
readonly symbol: string;
|
|
28
|
+
readonly target: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Full parse table JSON including parser states and table entries.
|
|
32
|
+
*/
|
|
33
|
+
export interface ParseTableJsonV2 extends ParseTableJson {
|
|
34
|
+
readonly version: 2;
|
|
35
|
+
readonly parserStateCount: number;
|
|
36
|
+
readonly productions: readonly ParseTableProductionJson[];
|
|
37
|
+
readonly actions: readonly ParseTableActionJson[];
|
|
38
|
+
readonly gotos: readonly ParseTableGotoJson[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns whether a JSON object is a version 2 parse table payload.
|
|
42
|
+
*
|
|
43
|
+
* @param json - Parsed table JSON object.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isParseTableJsonV2(json: ParseTableJson): json is ParseTableJsonV2;
|
|
46
|
+
/**
|
|
47
|
+
* Lexer-only parse table JSON without parser states or table entries.
|
|
48
|
+
*/
|
|
49
|
+
export type ParseTableJsonV1 = ParseTableJson;
|
|
50
|
+
//# sourceMappingURL=parse-table-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-json.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAErC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IAEpD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,gBAAgB,CAGjF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-table-json.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IAEnD,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|