parser-lr 0.2.3 → 0.3.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.
Files changed (58) hide show
  1. package/README.md +85 -3
  2. package/bin/parser-lr.js +336 -171
  3. package/bin/parser-lr.js.map +1 -1
  4. package/dist/lib/parse-table/analysis/first-follow.d.ts +6 -0
  5. package/dist/lib/parse-table/analysis/first-follow.d.ts.map +1 -1
  6. package/dist/lib/parse-table/analysis/first-follow.js +13 -0
  7. package/dist/lib/parse-table/analysis/first-follow.js.map +1 -1
  8. package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts.map +1 -1
  9. package/dist/lib/parse-table/bnf/desugar-ebnf.js +2 -0
  10. package/dist/lib/parse-table/bnf/desugar-ebnf.js.map +1 -1
  11. package/dist/lib/parse-table/build-lr-table.d.ts +1 -0
  12. package/dist/lib/parse-table/build-lr-table.d.ts.map +1 -1
  13. package/dist/lib/parse-table/build-lr-table.js +11 -1
  14. package/dist/lib/parse-table/build-lr-table.js.map +1 -1
  15. package/dist/lib/parse-table/index.d.ts +1 -1
  16. package/dist/lib/parse-table/index.d.ts.map +1 -1
  17. package/dist/lib/parse-table/index.js +1 -1
  18. package/dist/lib/parse-table/index.js.map +1 -1
  19. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts +26 -2
  20. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts.map +1 -1
  21. package/dist/lib/parse-table/lr0/lr0-item-set.js +92 -54
  22. package/dist/lib/parse-table/lr0/lr0-item-set.js.map +1 -1
  23. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts +31 -2
  24. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts.map +1 -1
  25. package/dist/lib/parse-table/lr1/lr1-item-set.js +95 -60
  26. package/dist/lib/parse-table/lr1/lr1-item-set.js.map +1 -1
  27. package/dist/lib/parse-table/parse-table.d.ts +13 -3
  28. package/dist/lib/parse-table/parse-table.d.ts.map +1 -1
  29. package/dist/lib/parse-table/parse-table.js +19 -8
  30. package/dist/lib/parse-table/parse-table.js.map +1 -1
  31. package/dist/lib/parse-table/table/index.d.ts +1 -1
  32. package/dist/lib/parse-table/table/index.d.ts.map +1 -1
  33. package/dist/lib/parse-table/table/index.js +1 -1
  34. package/dist/lib/parse-table/table/index.js.map +1 -1
  35. package/dist/lib/parse-table/table/lr-parse-table.d.ts +14 -2
  36. package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -1
  37. package/dist/lib/parse-table/table/lr-parse-table.js +38 -3
  38. package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -1
  39. package/dist/lib/parse-table/table/parse-action.d.ts +3 -1
  40. package/dist/lib/parse-table/table/parse-action.d.ts.map +1 -1
  41. package/dist/lib/parse-table/table/parse-action.js.map +1 -1
  42. package/dist/lib/parse-table/table/table-builder-base.d.ts +5 -4
  43. package/dist/lib/parse-table/table/table-builder-base.d.ts.map +1 -1
  44. package/dist/lib/parse-table/table/table-builder-base.js +28 -8
  45. package/dist/lib/parse-table/table/table-builder-base.js.map +1 -1
  46. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts +10 -0
  47. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts.map +1 -1
  48. package/dist/lib/shift-reduce/shift-reduce-engine.js +11 -0
  49. package/dist/lib/shift-reduce/shift-reduce-engine.js.map +1 -1
  50. package/dist/lib/transform/binding-map.d.ts +6 -0
  51. package/dist/lib/transform/binding-map.d.ts.map +1 -1
  52. package/dist/lib/transform/binding-map.js +17 -0
  53. package/dist/lib/transform/binding-map.js.map +1 -1
  54. package/dist/lib/transform/cst-transformer.d.ts +6 -0
  55. package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
  56. package/dist/lib/transform/cst-transformer.js +24 -2
  57. package/dist/lib/transform/cst-transformer.js.map +1 -1
  58. package/package.json +12 -3
@@ -18,6 +18,7 @@ export declare class GrammarAnalysis {
18
18
  * Returns whether a non-terminal can derive the empty string.
19
19
  *
20
20
  * @param name - Non-terminal name to test.
21
+ * @returns True when the non-terminal can derive ε.
21
22
  */
22
23
  isNullable(name: string): boolean;
23
24
  /**
@@ -36,6 +37,7 @@ export declare class GrammarAnalysis {
36
37
  * Returns FIRST symbols for a symbol sequence.
37
38
  *
38
39
  * @param symbols - Right-hand side prefix or full sequence.
40
+ * @returns Encoded terminal keys in FIRST of the sequence.
39
41
  */
40
42
  firstOfSequence(symbols: readonly BnfSymbol[]): ReadonlySet<string>;
41
43
  /**
@@ -54,6 +56,7 @@ export declare class GrammarAnalysis {
54
56
  * Computes nullable non-terminals by fixed-point iteration.
55
57
  *
56
58
  * @param grammar - Plain BNF grammar to analyze.
59
+ * @returns The set of non-terminal names that derive ε.
57
60
  */
58
61
  private static computeNullable;
59
62
  /**
@@ -61,6 +64,7 @@ export declare class GrammarAnalysis {
61
64
  *
62
65
  * @param grammar - Plain BNF grammar to analyze.
63
66
  * @param nullable - Nullable non-terminal names.
67
+ * @returns FIRST set for every non-terminal name.
64
68
  */
65
69
  private static computeFirst;
66
70
  /**
@@ -69,6 +73,7 @@ export declare class GrammarAnalysis {
69
73
  * @param grammar - Plain BNF grammar to analyze.
70
74
  * @param firstByNonTerminal - Precomputed FIRST sets.
71
75
  * @param nullable - Nullable non-terminal names.
76
+ * @returns FOLLOW set for every non-terminal name.
72
77
  */
73
78
  private static computeFollow;
74
79
  /**
@@ -107,6 +112,7 @@ export declare class GrammarAnalysis {
107
112
  * Computes nullable, FIRST, and FOLLOW sets for a BNF grammar.
108
113
  *
109
114
  * @param grammar - Plain BNF grammar to analyze.
115
+ * @returns Nullable, FIRST, and FOLLOW analysis for the grammar.
110
116
  */
111
117
  export declare function analyzeGrammar(grammar: BnfGrammar): GrammarAnalysis;
112
118
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"first-follow.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/analysis/first-follow.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExF;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAC9E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;IAE/E;;;;OAIG;gBACgB,OAAO,EAAE,UAAU;IAWtC;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAK5D;;;;OAIG;IACI,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAK7D;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IAyB1E;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;IAU5D;;;;OAIG;IACI,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAUnD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAiC9B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAoC3B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAgE5B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqCpC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;CAOxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAUrE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAG/D"}
1
+ {"version":3,"file":"first-follow.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/analysis/first-follow.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExF;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAC9E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;IAE/E;;;;OAIG;gBACgB,OAAO,EAAE,UAAU;IAWtC;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAK5D;;;;OAIG;IACI,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAK7D;;;;;OAKG;IACI,eAAe,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IA2B1E;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;IAU5D;;;;OAIG;IACI,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAUnD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAkC9B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAqC3B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmE5B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqCpC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;CAOxB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAUrE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAG/D"}
@@ -22,6 +22,7 @@ export class GrammarAnalysis {
22
22
  * Returns whether a non-terminal can derive the empty string.
23
23
  *
24
24
  * @param name - Non-terminal name to test.
25
+ * @returns True when the non-terminal can derive ε.
25
26
  */
26
27
  isNullable(name) {
27
28
  return this.nullable.has(name);
@@ -46,10 +47,12 @@ export class GrammarAnalysis {
46
47
  * Returns FIRST symbols for a symbol sequence.
47
48
  *
48
49
  * @param symbols - Right-hand side prefix or full sequence.
50
+ * @returns Encoded terminal keys in FIRST of the sequence.
49
51
  */
50
52
  firstOfSequence(symbols) {
51
53
  const result = new Set();
52
54
  let allNullable = true;
55
+ // Accumulate FIRST of each prefix symbol until a non-nullable symbol stops propagation.
53
56
  for (const symbol of symbols) {
54
57
  const symbolFirst = this.firstOfSymbol(symbol);
55
58
  GrammarAnalysis.addAll(result, symbolFirst);
@@ -58,6 +61,7 @@ export class GrammarAnalysis {
58
61
  break;
59
62
  }
60
63
  }
64
+ // Every symbol is nullable, so end-of-input is in FIRST.
61
65
  if (allNullable) {
62
66
  result.add(EOF_TOKEN_NAME);
63
67
  }
@@ -89,10 +93,12 @@ export class GrammarAnalysis {
89
93
  * Computes nullable non-terminals by fixed-point iteration.
90
94
  *
91
95
  * @param grammar - Plain BNF grammar to analyze.
96
+ * @returns The set of non-terminal names that derive ε.
92
97
  */
93
98
  static computeNullable(grammar) {
94
99
  const nullable = new Set();
95
100
  let changed = true;
101
+ // Fixed-point: mark A nullable when every production A → α has nullable α.
96
102
  while (changed) {
97
103
  changed = false;
98
104
  for (const production of grammar.productions) {
@@ -116,6 +122,7 @@ export class GrammarAnalysis {
116
122
  *
117
123
  * @param grammar - Plain BNF grammar to analyze.
118
124
  * @param nullable - Nullable non-terminal names.
125
+ * @returns FIRST set for every non-terminal name.
119
126
  */
120
127
  static computeFirst(grammar, nullable) {
121
128
  const firstByNonTerminal = new Map();
@@ -123,6 +130,7 @@ export class GrammarAnalysis {
123
130
  firstByNonTerminal.set(name, new Set());
124
131
  }
125
132
  let changed = true;
133
+ // Fixed-point: add FIRST(α) into FIRST(A) for each production A → α.
126
134
  while (changed) {
127
135
  changed = false;
128
136
  for (const production of grammar.productions) {
@@ -143,16 +151,19 @@ export class GrammarAnalysis {
143
151
  * @param grammar - Plain BNF grammar to analyze.
144
152
  * @param firstByNonTerminal - Precomputed FIRST sets.
145
153
  * @param nullable - Nullable non-terminal names.
154
+ * @returns FOLLOW set for every non-terminal name.
146
155
  */
147
156
  static computeFollow(grammar, firstByNonTerminal, nullable) {
148
157
  const followByNonTerminal = new Map();
149
158
  for (const name of grammar.nonTerminalNames()) {
150
159
  followByNonTerminal.set(name, new Set());
151
160
  }
161
+ // Seed FOLLOW of the start symbol with end-of-input.
152
162
  const startFollow = followByNonTerminal.get(grammar.startSymbol) ?? new Set();
153
163
  startFollow.add(EOF_TOKEN_NAME);
154
164
  followByNonTerminal.set(grammar.startSymbol, startFollow);
155
165
  let changed = true;
166
+ // Fixed-point: propagate FOLLOW through every production A → α B β.
156
167
  while (changed) {
157
168
  changed = false;
158
169
  for (const production of grammar.productions) {
@@ -166,6 +177,7 @@ export class GrammarAnalysis {
166
177
  const beta = production.rhs.slice(index + 1);
167
178
  const betaFirst = GrammarAnalysis.firstOfSequenceStatic(beta, firstByNonTerminal, nullable);
168
179
  GrammarAnalysis.addAll(follow, betaFirst);
180
+ // When β is empty or nullable, inherit FOLLOW of the production lhs.
169
181
  if (beta.length === 0 || GrammarAnalysis.isSequenceNullableStatic(beta, nullable)) {
170
182
  const lhsFollow = followByNonTerminal.get(production.name) ?? new Set();
171
183
  GrammarAnalysis.addAll(follow, lhsFollow);
@@ -247,6 +259,7 @@ export class GrammarAnalysis {
247
259
  * Computes nullable, FIRST, and FOLLOW sets for a BNF grammar.
248
260
  *
249
261
  * @param grammar - Plain BNF grammar to analyze.
262
+ * @returns Nullable, FIRST, and FOLLOW analysis for the grammar.
250
263
  */
251
264
  export function analyzeGrammar(grammar) {
252
265
  return new GrammarAnalysis(grammar);
@@ -1 +1 @@
1
- {"version":3,"file":"first-follow.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/analysis/first-follow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAmB,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAC;AAExF;;GAEG;AACH,MAAM,OAAO,eAAe;IAEP,QAAQ,CAAsB;IAC9B,kBAAkB,CAA2C;IAC7D,mBAAmB,CAA2C;IAE/E;;;;OAIG;IACH,YAAmB,OAAmB;QAElC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC,aAAa,CACpD,OAAO,EACP,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,QAAQ,CAChB,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,IAAY;QAE1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,IAAY;QAElC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,IAAY;QAEnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,OAA6B;QAEhD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAC5B,CAAC;YACG,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAClC,CAAC;gBACG,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,WAAW,EACf,CAAC;YACG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,MAAiB;QAElC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EACjC,CAAC;YACG,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,GAAG,CAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,MAAiB;QAErC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EACjC,CAAC;YACG,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,eAAe,CAAC,OAAmB;QAE9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EACd,CAAC;YACG,OAAO,GAAG,KAAK,CAAC;YAEhB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAC5C,CAAC;gBACG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EACjE,CAAC;oBACG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC9B,OAAO,GAAG,IAAI,CAAC;oBACf,SAAS;gBACb,CAAC;gBAED,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAChC,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAC/D,CAAC;oBACG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAClC,CAAC;wBACG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC9B,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,YAAY,CACvB,OAAmB,EACnB,QAA6B;QAG7B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAC7C,CAAC;YACG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EACd,CAAC;YACG,OAAO,GAAG,KAAK,CAAC;YAEhB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAC5C,CAAC;gBACG,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC1B,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBAExF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EACzB,CAAC;oBACG,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,aAAa,CACxB,OAAmB,EACnB,kBAA4D,EAC5D,QAA6B;QAG7B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAC7C,CAAC;YACG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QACtF,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAChC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE1D,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EACd,CAAC;YACG,OAAO,GAAG,KAAK,CAAC;YAEhB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAC5C,CAAC;gBACG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAC7D,CAAC;oBACG,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAErC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EACjC,CAAC;wBACG,SAAS;oBACb,CAAC;oBAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;oBACzE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,qBAAqB,CACnD,IAAI,EACJ,kBAAkB,EAClB,QAAQ,CACX,CAAC;oBAEF,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;oBAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,EACjF,CAAC;wBACG,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;wBAChF,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;oBAC9C,CAAC;oBAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAC1B,CAAC;wBACG,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;oBAED,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,kBAAkB,CAC7B,MAAmB,EACnB,OAA6B,EAC7B,kBAAoD,EACpD,QAA6B;QAG7B,eAAe,CAAC,MAAM,CAClB,MAAM,EACN,eAAe,CAAC,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAC/E,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,qBAAqB,CAChC,OAA6B,EAC7B,kBAA4D,EAC5D,QAA6B;QAG7B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAC5B,CAAC;YACG,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EACjC,CAAC;gBACG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC,CAAC;gBAEzF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9B,CAAC;oBACG,WAAW,GAAG,KAAK,CAAC;oBACpB,MAAM;gBACV,CAAC;YACL,CAAC;iBAED,CAAC;gBACG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvC,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,WAAW,EACf,CAAC;YACG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,wBAAwB,CACnC,OAA6B,EAC7B,QAA6B;QAG7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EACxB,CAAC;YACG,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,MAAM,CAAC,MAAmB,EAAE,MAA2B;QAElE,KAAK,MAAM,KAAK,IAAI,MAAM,EAC1B,CAAC;YACG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAmB;IAE9C,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAyB;IAEzD,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAC/B,CAAC;QACG,OAAO,GAAG,UAAU,CAAC,IAAI,MAAM,CAAC;IACpC,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3E,OAAO,GAAG,UAAU,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IAElD,OAAO,OAAO,CAAC,WAAW,KAAK,sBAAsB,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"first-follow.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/analysis/first-follow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"desugar-ebnf.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/bnf/desugar-ebnf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAc9C;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAK;IAE5B;;;;OAIG;gBACgB,OAAO,EAAE,OAAO;IAMnC;;;;OAIG;IACI,OAAO,IAAI,UAAU;IAe5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA8BpB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IASnB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;CAc3B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAGxD"}
1
+ {"version":3,"file":"desugar-ebnf.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/bnf/desugar-ebnf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAK;IAE5B;;;;OAIG;gBACgB,OAAO,EAAE,OAAO;IAMnC;;;;OAIG;IACI,OAAO,IAAI,UAAU;IAe5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA8BpB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IASnB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;CAc3B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAGxD"}
@@ -37,6 +37,7 @@ export class EbnfDesugarer {
37
37
  */
38
38
  desugarProduction(production) {
39
39
  const alternatives = this.expandExpression(production.name, production.expression, null);
40
+ // Record one BNF production per desugared alternative.
40
41
  for (const alternative of alternatives) {
41
42
  this.addProduction(production.name, alternative.symbols, alternative.variant, production.name);
42
43
  }
@@ -114,6 +115,7 @@ export class EbnfDesugarer {
114
115
  */
115
116
  expandSequence(ownerName, elements, variant) {
116
117
  let results = [{ symbols: [], variant }];
118
+ // Cartesian product: combine each prefix alternative with each next-element alternative.
117
119
  for (const element of elements) {
118
120
  const elementAlternatives = this.expandExpression(ownerName, element, variant);
119
121
  const combined = [];
@@ -1 +1 @@
1
- {"version":3,"file":"desugar-ebnf.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/bnf/desugar-ebnf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desugar-ebnf.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/bnf/desugar-ebnf.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { LrParseTable } from './table/lr-parse-table.js';
6
6
  *
7
7
  * @param grammar - Plain BNF grammar to analyze.
8
8
  * @param algorithm - LR table construction algorithm.
9
+ * @returns A populated LR parse table, possibly recording conflicts.
9
10
  */
10
11
  export declare function buildLrTable(grammar: BnfGrammar, algorithm: LrAlgorithm): LrParseTable;
11
12
  //# sourceMappingURL=build-lr-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-lr-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/build-lr-table.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,CAmBtF"}
1
+ {"version":3,"file":"build-lr-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/build-lr-table.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,CAmBtF"}
@@ -10,6 +10,7 @@ import { TableBuilderBase } from './table/table-builder-base.js';
10
10
  *
11
11
  * @param grammar - Plain BNF grammar to analyze.
12
12
  * @param algorithm - LR table construction algorithm.
13
+ * @returns A populated LR parse table, possibly recording conflicts.
13
14
  */
14
15
  export function buildLrTable(grammar, algorithm) {
15
16
  const augmented = grammar.augment();
@@ -33,7 +34,7 @@ class LrTableBuilder {
33
34
  * Builds an LR(0) parse table.
34
35
  *
35
36
  * @param grammar - Augmented BNF grammar.
36
- * @param analysis - Nullable, FIRST, and FOLLOW analysis for the grammar.
37
+ * @returns An LR(0) parse table using all terminals as reduce lookaheads.
37
38
  */
38
39
  static buildLr0(grammar) {
39
40
  const itemSets = buildLr0ItemSets(grammar);
@@ -50,6 +51,7 @@ class LrTableBuilder {
50
51
  *
51
52
  * @param grammar - Augmented BNF grammar.
52
53
  * @param analysis - Nullable, FIRST, and FOLLOW analysis for the grammar.
54
+ * @returns An SLR parse table using FOLLOW sets as reduce lookaheads.
53
55
  */
54
56
  static buildSlr(grammar, analysis) {
55
57
  const itemSets = buildLr0ItemSets(grammar);
@@ -65,6 +67,7 @@ class LrTableBuilder {
65
67
  *
66
68
  * @param grammar - Augmented BNF grammar.
67
69
  * @param analysis - Nullable, FIRST, and FOLLOW analysis for the grammar.
70
+ * @returns An LR(1) parse table with per-item lookaheads.
68
71
  */
69
72
  static buildLr1(grammar, analysis) {
70
73
  const itemSets = buildLr1ItemSets(grammar, analysis, EOF_TOKEN_NAME);
@@ -75,6 +78,7 @@ class LrTableBuilder {
75
78
  *
76
79
  * @param grammar - Augmented BNF grammar.
77
80
  * @param analysis - Nullable, FIRST, and FOLLOW analysis for the grammar.
81
+ * @returns An LALR parse table merged from the canonical LR(1) collection.
78
82
  */
79
83
  static buildLalr(grammar, analysis) {
80
84
  const lr1ItemSets = buildLr1ItemSets(grammar, analysis, EOF_TOKEN_NAME);
@@ -90,12 +94,14 @@ class LrTableBuilder {
90
94
  * @param grammar - Augmented BNF grammar.
91
95
  * @param itemSets - Canonical LR(0) item set collection.
92
96
  * @param reduceLookaheads - Returns terminal keys for one completed production.
97
+ * @returns A parse table with ACTION, GOTO, and any recorded conflicts.
93
98
  */
94
99
  static buildFromLr0ItemSets(algorithm, grammar, itemSets, reduceLookaheads) {
95
100
  const gotoTargets = TableBuilderBase.buildGotoTargets(grammar, itemSets.itemSets, (items) => itemSets.indexOf(items), TableBuilderBase.lr0GotoItems);
96
101
  const actions = new Map();
97
102
  const gotos = new Map();
98
103
  const conflicts = [];
104
+ // Fill ACTION and GOTO rows for every LR(0) state.
99
105
  for (let state = 0; state < itemSets.itemSets.length; state += 1) {
100
106
  const itemSet = itemSets.itemSets[state] ?? [];
101
107
  const stateActions = new Map();
@@ -103,6 +109,7 @@ class LrTableBuilder {
103
109
  actions.set(state, stateActions);
104
110
  gotos.set(state, stateGotos);
105
111
  TableBuilderBase.fillShiftsAndGotos(grammar, state, itemSet, gotoTargets, stateActions, stateGotos, conflicts);
112
+ // Record reduce and accept actions for every completed item in the state.
106
113
  for (const item of itemSet) {
107
114
  const production = grammar.production(item.productionId);
108
115
  if (production === null || item.dot !== production.rhs.length) {
@@ -127,12 +134,14 @@ class LrTableBuilder {
127
134
  * @param itemSets - LR(1) or merged LALR item set collection used for ACTION/GOTO rows.
128
135
  * @param lr1Collection - Canonical LR(1) collection used for LALR GOTO remapping.
129
136
  * @param gotoTargetsOverride - Optional precomputed GOTO indices for LALR.
137
+ * @returns A parse table with ACTION, GOTO, and any recorded conflicts.
130
138
  */
131
139
  static buildFromLr1ItemSets(algorithm, grammar, analysis, itemSets, gotoTargetsOverride) {
132
140
  const gotoTargets = gotoTargetsOverride ?? TableBuilderBase.buildGotoTargets(grammar, itemSets.itemSets, (items) => itemSets.indexOf(items), (grammarArg, items, symbolKey) => lr1Goto(grammarArg, analysis, items, symbolKey));
133
141
  const actions = new Map();
134
142
  const gotos = new Map();
135
143
  const conflicts = [];
144
+ // Fill ACTION and GOTO rows for every LR(1) or merged LALR state.
136
145
  for (let state = 0; state < itemSets.itemSets.length; state += 1) {
137
146
  const itemSet = itemSets.itemSets[state] ?? [];
138
147
  const stateActions = new Map();
@@ -140,6 +149,7 @@ class LrTableBuilder {
140
149
  actions.set(state, stateActions);
141
150
  gotos.set(state, stateGotos);
142
151
  TableBuilderBase.fillShiftsAndGotos(grammar, state, itemSet, gotoTargets, stateActions, stateGotos, conflicts);
152
+ // Record reduce or accept for each completed item using its lookahead.
143
153
  for (const item of itemSet) {
144
154
  const production = grammar.production(item.productionId);
145
155
  if (production === null || item.dot !== production.rhs.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"build-lr-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/build-lr-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-lr-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/build-lr-table.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export { ParseTableError } from './parse-table-error.js';
14
14
  export { isParseTableJsonV2 } from './parse-table-json.js';
15
15
  export type { ParseTableActionJson, ParseTableGotoJson, ParseTableJsonV2, ParseTableProductionJson, } from './parse-table-json.js';
16
16
  export { buildSlrTable, formatSlrActions, formatSlrConflicts, SlrTable } from './slr/index.js';
17
- export { formatLrActions, formatLrConflicts, formatLrGotos, LrParseTable, } from './table/index.js';
17
+ export { formatLrActions, formatLrConflictWarnings, formatLrConflicts, formatLrGotos, formatParseConflictWarning, LrParseTable, } from './table/index.js';
18
18
  export type { ParseAction, ParseConflict } from './table/index.js';
19
19
  export { tokenInventory } from './token-inventory.js';
20
20
  export { PARSE_TABLE_VERSION, PARSE_TABLE_VERSION_FULL, ParseTable } from './parse-table.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EACR,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EACR,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EACH,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,YAAY,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -9,7 +9,7 @@ export { ParseTableBuildError } from './parse-table-build-error.js';
9
9
  export { ParseTableError } from './parse-table-error.js';
10
10
  export { isParseTableJsonV2 } from './parse-table-json.js';
11
11
  export { buildSlrTable, formatSlrActions, formatSlrConflicts } from './slr/index.js';
12
- export { formatLrActions, formatLrConflicts, formatLrGotos, LrParseTable, } from './table/index.js';
12
+ export { formatLrActions, formatLrConflictWarnings, formatLrConflicts, formatLrGotos, formatParseConflictWarning, LrParseTable, } from './table/index.js';
13
13
  export { tokenInventory } from './token-inventory.js';
14
14
  export { PARSE_TABLE_VERSION, PARSE_TABLE_VERSION_FULL, ParseTable } from './parse-table.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/parse-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAO3D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAY,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/parse-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAO3D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAY,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EACH,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,YAAY,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -3,7 +3,9 @@ import type { BnfGrammar } from '../bnf/bnf-grammar.js';
3
3
  * One LR(0) item: a production with the dot before `dot` right-hand side symbols.
4
4
  */
5
5
  export interface Lr0Item {
6
+ /** Stable production id assigned during BNF desugaring. */
6
7
  readonly productionId: number;
8
+ /** Number of right-hand side symbols before the dot. */
7
9
  readonly dot: number;
8
10
  }
9
11
  /**
@@ -11,6 +13,7 @@ export interface Lr0Item {
11
13
  *
12
14
  * @param grammar - Grammar containing the referenced production.
13
15
  * @param item - LR(0) item to encode.
16
+ * @returns A human-readable dotted production string for diagnostics.
14
17
  */
15
18
  export declare function lr0ItemKey(grammar: BnfGrammar, item: Lr0Item): string;
16
19
  /**
@@ -26,11 +29,20 @@ export declare function lr0ItemsEqual(left: Lr0Item, right: Lr0Item): boolean;
26
29
  * @param items - Items to sort.
27
30
  */
28
31
  export declare function sortLr0Items(items: readonly Lr0Item[]): Lr0Item[];
32
+ /**
33
+ * Returns encoded symbol keys that appear immediately after the dot in an item set.
34
+ *
35
+ * @param grammar - BNF grammar containing referenced productions.
36
+ * @param items - Closed item set.
37
+ * @returns Sorted terminal and non-terminal keys eligible for GOTO from this state.
38
+ */
39
+ export declare function symbolsAfterDot(grammar: BnfGrammar, items: readonly Lr0Item[]): readonly string[];
29
40
  /**
30
41
  * Computes the LR(0) closure of an item set.
31
42
  *
32
43
  * @param grammar - Plain or augmented BNF grammar.
33
44
  * @param items - Seed items.
45
+ * @returns The seed items plus all items implied by dotted non-terminal prefixes.
34
46
  */
35
47
  export declare function lr0Closure(grammar: BnfGrammar, items: readonly Lr0Item[]): readonly Lr0Item[];
36
48
  /**
@@ -39,21 +51,30 @@ export declare function lr0Closure(grammar: BnfGrammar, items: readonly Lr0Item[
39
51
  * @param grammar - Plain or augmented BNF grammar.
40
52
  * @param items - Closed item set.
41
53
  * @param symbolKey - Encoded terminal or non-terminal symbol.
54
+ * @returns The closed item set reached after advancing the dot past `symbolKey`.
42
55
  */
43
56
  export declare function lr0Goto(grammar: BnfGrammar, items: readonly Lr0Item[], symbolKey: string): readonly Lr0Item[];
44
57
  /**
45
58
  * Canonical collection of LR(0) item sets for a BNF grammar.
46
59
  */
47
60
  export declare class Lr0ItemSetCollection {
61
+ /** Grammar analyzed when the item sets were constructed. */
48
62
  readonly grammar: BnfGrammar;
63
+ /** Closed LR(0) item sets indexed by parser state number. */
49
64
  readonly itemSets: readonly (readonly Lr0Item[])[];
65
+ private readonly indexByIdentity;
50
66
  /**
51
67
  * Creates a collection from an ordered list of closed item sets.
52
68
  *
53
69
  * @param grammar - Grammar the item sets were built from.
54
70
  * @param itemSets - Closed LR(0) item sets in discovery order.
71
+ * @param indexByIdentity - Optional precomputed identity-to-state map.
55
72
  */
56
- constructor(grammar: BnfGrammar, itemSets: readonly (readonly Lr0Item[])[]);
73
+ constructor(
74
+ /** Grammar analyzed when the item sets were constructed. */
75
+ grammar: BnfGrammar,
76
+ /** Closed LR(0) item sets indexed by parser state number. */
77
+ itemSets: readonly (readonly Lr0Item[])[], indexByIdentity?: ReadonlyMap<string, number>);
57
78
  /**
58
79
  * Returns the index of an item set matching `items`, or null when absent.
59
80
  *
@@ -69,6 +90,7 @@ export declare class Lr0ItemSetBuilder {
69
90
  * Builds the canonical LR(0) collection for a grammar.
70
91
  *
71
92
  * @param grammar - Augmented or plain BNF grammar.
93
+ * @returns The canonical LR(0) item set collection for the grammar.
72
94
  */
73
95
  static build(grammar: BnfGrammar): Lr0ItemSetCollection;
74
96
  /**
@@ -87,13 +109,15 @@ export declare class Lr0ItemSetBuilder {
87
109
  * Returns a stable identity string for an item set.
88
110
  *
89
111
  * @param items - Closed item set.
112
+ * @param alreadySorted - When true, skips re-sorting because items are canonical.
90
113
  */
91
- static setIdentity(items: readonly Lr0Item[]): string;
114
+ static setIdentity(items: readonly Lr0Item[], alreadySorted?: boolean): string;
92
115
  }
93
116
  /**
94
117
  * Builds the canonical LR(0) item set collection for a grammar.
95
118
  *
96
119
  * @param grammar - Augmented or plain BNF grammar.
120
+ * @returns The canonical LR(0) item set collection for the grammar.
97
121
  */
98
122
  export declare function buildLr0ItemSets(grammar: BnfGrammar): Lr0ItemSetCollection;
99
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lr0-item-set.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/lr0/lr0-item-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,OAAO;IAEpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwBrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAGpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAWjE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,CA6C7F;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,GAClB,SAAS,OAAO,EAAE,CAgCpB;AAED;;GAEG;AACH,qBAAa,oBAAoB;aAST,OAAO,EAAE,UAAU;aACnB,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE;IAR7D;;;;;OAKG;gBAEiB,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE;IAK7D;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI;CAc3D;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B;;;;OAIG;WACW,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB;IAoD9D;;;;OAIG;WACW,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE;IAYvE;;;;OAIG;WACW,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAKjD;;;;OAIG;WACW,WAAW,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM;CAM/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,MAAM,EAAE,CAGlG"}
1
+ {"version":3,"file":"lr0-item-set.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/lr0/lr0-item-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,OAAO;IAEpB,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwBrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAGpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAWjE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,GAC1B,SAAS,MAAM,EAAE,CAwBnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,CA0C7F;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,GAClB,SAAS,OAAO,EAAE,CAiCpB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAYzB,4DAA4D;aAC5C,OAAO,EAAE,UAAU;IACnC,6DAA6D;aAC7C,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE;IAb7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D;;;;;;OAMG;;IAEC,4DAA4D;IAC5C,OAAO,EAAE,UAAU;IACnC,6DAA6D;IAC7C,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,EACzD,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAsBjD;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI;CAM3D;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B;;;;;OAKG;WACW,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB;IAkD9D;;;;OAIG;WACW,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE;IAYvE;;;;OAIG;WACW,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAKjD;;;;;OAKG;WACW,WAAW,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,aAAa,UAAQ,GAAG,MAAM;CAQtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,MAAM,EAAE,CAGlG"}