parser-lr 0.2.4 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +82 -0
  2. package/bin/parser-lr.js +3385 -3220
  3. package/bin/parser-lr.js.map +1 -1
  4. package/dist/lib/grammar/grammar.json +3123 -3123
  5. package/dist/lib/parse-table/analysis/first-follow.d.ts +6 -0
  6. package/dist/lib/parse-table/analysis/first-follow.d.ts.map +1 -1
  7. package/dist/lib/parse-table/analysis/first-follow.js +13 -0
  8. package/dist/lib/parse-table/analysis/first-follow.js.map +1 -1
  9. package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts.map +1 -1
  10. package/dist/lib/parse-table/bnf/desugar-ebnf.js +2 -0
  11. package/dist/lib/parse-table/bnf/desugar-ebnf.js.map +1 -1
  12. package/dist/lib/parse-table/build-lr-table.d.ts +1 -0
  13. package/dist/lib/parse-table/build-lr-table.d.ts.map +1 -1
  14. package/dist/lib/parse-table/build-lr-table.js +11 -1
  15. package/dist/lib/parse-table/build-lr-table.js.map +1 -1
  16. package/dist/lib/parse-table/index.d.ts +1 -1
  17. package/dist/lib/parse-table/index.d.ts.map +1 -1
  18. package/dist/lib/parse-table/index.js +1 -1
  19. package/dist/lib/parse-table/index.js.map +1 -1
  20. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts +26 -2
  21. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts.map +1 -1
  22. package/dist/lib/parse-table/lr0/lr0-item-set.js +92 -54
  23. package/dist/lib/parse-table/lr0/lr0-item-set.js.map +1 -1
  24. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts +31 -2
  25. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts.map +1 -1
  26. package/dist/lib/parse-table/lr1/lr1-item-set.js +95 -60
  27. package/dist/lib/parse-table/lr1/lr1-item-set.js.map +1 -1
  28. package/dist/lib/parse-table/parse-table.d.ts +13 -3
  29. package/dist/lib/parse-table/parse-table.d.ts.map +1 -1
  30. package/dist/lib/parse-table/parse-table.js +19 -8
  31. package/dist/lib/parse-table/parse-table.js.map +1 -1
  32. package/dist/lib/parse-table/table/index.d.ts +1 -1
  33. package/dist/lib/parse-table/table/index.d.ts.map +1 -1
  34. package/dist/lib/parse-table/table/index.js +1 -1
  35. package/dist/lib/parse-table/table/index.js.map +1 -1
  36. package/dist/lib/parse-table/table/lr-parse-table.d.ts +14 -2
  37. package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -1
  38. package/dist/lib/parse-table/table/lr-parse-table.js +38 -3
  39. package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -1
  40. package/dist/lib/parse-table/table/parse-action.d.ts +3 -1
  41. package/dist/lib/parse-table/table/parse-action.d.ts.map +1 -1
  42. package/dist/lib/parse-table/table/parse-action.js.map +1 -1
  43. package/dist/lib/parse-table/table/table-builder-base.d.ts +5 -4
  44. package/dist/lib/parse-table/table/table-builder-base.d.ts.map +1 -1
  45. package/dist/lib/parse-table/table/table-builder-base.js +28 -8
  46. package/dist/lib/parse-table/table/table-builder-base.js.map +1 -1
  47. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts +10 -0
  48. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts.map +1 -1
  49. package/dist/lib/shift-reduce/shift-reduce-engine.js +11 -0
  50. package/dist/lib/shift-reduce/shift-reduce-engine.js.map +1 -1
  51. package/dist/lib/transform/binding-map.d.ts +6 -0
  52. package/dist/lib/transform/binding-map.d.ts.map +1 -1
  53. package/dist/lib/transform/binding-map.js +17 -0
  54. package/dist/lib/transform/binding-map.js.map +1 -1
  55. package/dist/lib/transform/cst-transformer.d.ts +6 -0
  56. package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
  57. package/dist/lib/transform/cst-transformer.js +24 -2
  58. package/dist/lib/transform/cst-transformer.js.map +1 -1
  59. package/package.json +3 -1
@@ -22,11 +22,11 @@ export declare class LrParseTable {
22
22
  * @param stateCount - Number of parser states in the item set collection.
23
23
  * @param actions - ACTION entries keyed by state and terminal symbol.
24
24
  * @param gotos - GOTO entries keyed by state and non-terminal name.
25
- * @param conflicts - Shift/reduce and reduce/reduce conflicts encountered while building.
25
+ * @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
26
26
  */
27
27
  constructor(algorithm: LrAlgorithm, grammar: BnfGrammar, productions: readonly BnfProduction[], stateCount: number, actions: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts: readonly ParseConflict[]);
28
28
  /**
29
- * Whether the table has no unresolved conflicts.
29
+ * Whether the table was built without conflicts.
30
30
  */
31
31
  get isConflictFree(): boolean;
32
32
  /**
@@ -64,6 +64,18 @@ export declare function formatLrGotos(table: LrParseTable, state: number): reado
64
64
  * @param table - LR parse table to format.
65
65
  */
66
66
  export declare function formatLrConflicts(table: LrParseTable): readonly string[];
67
+ /**
68
+ * Returns conflict warning lines for a built parse table.
69
+ *
70
+ * @param table - LR parse table to format.
71
+ */
72
+ export declare function formatLrConflictWarnings(table: LrParseTable): readonly string[];
73
+ /**
74
+ * Formats one resolved conflict as a warning line.
75
+ *
76
+ * @param conflict - Resolved shift/reduce or reduce/reduce conflict.
77
+ */
78
+ export declare function formatParseConflictWarning(conflict: ParseConflict): string;
67
79
  /**
68
80
  * Returns encoded terminal keys used in ACTION rows, including `$eof`.
69
81
  *
@@ -1 +1 @@
1
- {"version":3,"file":"lr-parse-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,qBAAa,YAAY;aAcD,SAAS,EAAE,WAAW;aACtB,OAAO,EAAE,UAAU;aACnB,WAAW,EAAE,SAAS,aAAa,EAAE;aACrC,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAlBvD;;;;;;;;;;OAUG;gBAEiB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAKvD;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAG5F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAGhF"}
1
+ {"version":3,"file":"lr-parse-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,qBAAa,YAAY;aAcD,SAAS,EAAE,WAAW;aACtB,OAAO,EAAE,UAAU;aACnB,WAAW,EAAE,SAAS,aAAa,EAAE;aACrC,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAlBvD;;;;;;;;;;OAUG;gBAEiB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAKvD;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAG/E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAe1E;AAiBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAG5F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAGhF"}
@@ -20,7 +20,7 @@ export class LrParseTable {
20
20
  * @param stateCount - Number of parser states in the item set collection.
21
21
  * @param actions - ACTION entries keyed by state and terminal symbol.
22
22
  * @param gotos - GOTO entries keyed by state and non-terminal name.
23
- * @param conflicts - Shift/reduce and reduce/reduce conflicts encountered while building.
23
+ * @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
24
24
  */
25
25
  constructor(algorithm, grammar, productions, stateCount, actions, gotos, conflicts) {
26
26
  this.algorithm = algorithm;
@@ -32,7 +32,7 @@ export class LrParseTable {
32
32
  this.conflicts = conflicts;
33
33
  }
34
34
  /**
35
- * Whether the table has no unresolved conflicts.
35
+ * Whether the table was built without conflicts.
36
36
  */
37
37
  get isConflictFree() {
38
38
  return this.conflicts.length === 0;
@@ -94,7 +94,42 @@ export function formatLrGotos(table, state) {
94
94
  export function formatLrConflicts(table) {
95
95
  return table.conflicts.map((conflict) => `${String(conflict.state)}/${conflict.symbol} `
96
96
  + `${formatParseAction(conflict.existing)} vs ${formatParseAction(conflict.incoming)} `
97
- + `(${conflict.kind})`);
97
+ + `(${conflict.kind}, resolved as ${conflict.resolution})`);
98
+ }
99
+ /**
100
+ * Returns conflict warning lines for a built parse table.
101
+ *
102
+ * @param table - LR parse table to format.
103
+ */
104
+ export function formatLrConflictWarnings(table) {
105
+ return table.conflicts.map((conflict) => formatParseConflictWarning(conflict));
106
+ }
107
+ /**
108
+ * Formats one resolved conflict as a warning line.
109
+ *
110
+ * @param conflict - Resolved shift/reduce or reduce/reduce conflict.
111
+ */
112
+ export function formatParseConflictWarning(conflict) {
113
+ const tokenLabel = formatConflictTokenLabel(conflict.symbol);
114
+ if (conflict.kind === 'shift-reduce') {
115
+ return `state ${String(conflict.state)}: shift/reduce conflict on ${tokenLabel} resolved as shift`;
116
+ }
117
+ const keptProduction = conflict.existing.kind === 'reduce'
118
+ ? conflict.existing.productionId
119
+ : conflict.incoming.productionId;
120
+ return `state ${String(conflict.state)}: reduce/reduce conflict on ${tokenLabel} `
121
+ + `resolved using rule ${String(keptProduction)}`;
122
+ }
123
+ /**
124
+ * Returns a readable terminal label for conflict warning text.
125
+ *
126
+ * @param symbol - Encoded terminal or `$eof` key from the ACTION table.
127
+ */
128
+ function formatConflictTokenLabel(symbol) {
129
+ if (symbol === '$eof') {
130
+ return 'token $eof';
131
+ }
132
+ return `token ${symbol}`;
98
133
  }
99
134
  /**
100
135
  * Returns encoded terminal keys used in ACTION rows, including `$eof`.
@@ -1 +1 @@
1
- {"version":3,"file":"lr-parse-table.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lr-parse-table.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export type ParseAction = {
15
15
  */
16
16
  export type ParseConflictKind = 'shift-reduce' | 'reduce-reduce';
17
17
  /**
18
- * Records an unresolved shift/reduce or reduce/reduce conflict.
18
+ * Records a shift/reduce or reduce/reduce conflict and how it was resolved.
19
19
  */
20
20
  export interface ParseConflict {
21
21
  readonly kind: ParseConflictKind;
@@ -23,6 +23,8 @@ export interface ParseConflict {
23
23
  readonly symbol: string;
24
24
  readonly existing: ParseAction;
25
25
  readonly incoming: ParseAction;
26
+ /** Action kept in the table after conflict resolution. */
27
+ readonly resolution: 'shift' | 'reduce';
26
28
  }
27
29
  /**
28
30
  * Returns whether two parse actions are identical.
@@ -1 +1 @@
1
- {"version":3,"file":"parse-action.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/parse-action.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACjB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,GACC;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC,GACC;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC3B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,eAAe,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBhF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAa7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GACtB,iBAAiB,CAWnB"}
1
+ {"version":3,"file":"parse-action.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/parse-action.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACjB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,GACC;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC,GACC;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC3B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,eAAe,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBhF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAa7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GACtB,iBAAiB,CAWnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-action.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/parse-action.ts"],"names":[],"mappings":"AAiCA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB,EAAE,KAAkB;IAEnE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAC5B,CAAC;QACG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ,IAAI,CAAC,IAAI,EACjB,CAAC;QACG,KAAK,OAAO;YACR,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;QAEhE,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;QAE/E,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IAEjD,QAAQ,MAAM,CAAC,IAAI,EACnB,CAAC;QACG,KAAK,OAAO;YACR,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAEtC,KAAK,QAAQ;YACT,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAE7C,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,QAAqB,EACrB,QAAqB;IAGrB,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IAClD,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IAElD,IAAI,eAAe,KAAK,eAAe,EACvC,CAAC;QACG,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"parse-action.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/parse-action.ts"],"names":[],"mappings":"AAmCA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB,EAAE,KAAkB;IAEnE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAC5B,CAAC;QACG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ,IAAI,CAAC,IAAI,EACjB,CAAC;QACG,KAAK,OAAO;YACR,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;QAEhE,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;QAE/E,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IAEjD,QAAQ,MAAM,CAAC,IAAI,EACnB,CAAC;QACG,KAAK,OAAO;YACR,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAEtC,KAAK,QAAQ;YACT,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAE7C,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,QAAqB,EACrB,QAAqB;IAGrB,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IAClD,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IAElD,IAAI,eAAe,KAAK,eAAe,EACvC,CAAC;QACG,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC"}
@@ -11,6 +11,7 @@ export declare class TableBuilderBase {
11
11
  * @param grammar - Augmented BNF grammar.
12
12
  * @param itemSets - Canonical item set collection.
13
13
  * @param gotoItems - Computes the GOTO item set for one state and symbol.
14
+ * @returns Map from `state:symbol` keys to target state indices.
14
15
  */
15
16
  static buildGotoTargets(grammar: BnfGrammar, itemSets: readonly (readonly Lr0Item[])[], indexOf: (items: readonly Lr0Item[]) => number | null, gotoItems: (grammar: BnfGrammar, items: readonly Lr0Item[], symbolKey: string) => readonly Lr0Item[]): ReadonlyMap<string, number>;
16
17
  /**
@@ -22,7 +23,7 @@ export declare class TableBuilderBase {
22
23
  * @param gotoTargets - Precomputed GOTO target indices.
23
24
  * @param stateActions - ACTION map for the state.
24
25
  * @param stateGotos - GOTO map for the state.
25
- * @param conflicts - Conflict list to append to when actions disagree.
26
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
26
27
  */
27
28
  static fillShiftsAndGotos(grammar: BnfGrammar, state: number, itemSet: readonly Lr0Item[], gotoTargets: ReadonlyMap<string, number>, stateActions: Map<string, ParseAction>, stateGotos: Map<string, number>, conflicts: ParseConflict[]): void;
28
29
  /**
@@ -31,7 +32,7 @@ export declare class TableBuilderBase {
31
32
  * @param state - Parser state index.
32
33
  * @param productionName - Left-hand side of the completed production.
33
34
  * @param stateActions - ACTION map for the state.
34
- * @param conflicts - Conflict list to append to when actions disagree.
35
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
35
36
  */
36
37
  static setAcceptAction(state: number, productionName: string, stateActions: Map<string, ParseAction>, conflicts: ParseConflict[]): void;
37
38
  /**
@@ -42,10 +43,10 @@ export declare class TableBuilderBase {
42
43
  */
43
44
  static gotoKey(state: number, symbolKey: string): string;
44
45
  /**
45
- * Inserts one ACTION entry, recording a conflict when the slot is already occupied.
46
+ * Inserts one ACTION entry, resolving shift/reduce and reduce/reduce conflicts.
46
47
  *
47
48
  * @param stateActions - ACTION map for the current state.
48
- * @param conflicts - Conflict list to append to when actions disagree.
49
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
49
50
  * @param state - Parser state index.
50
51
  * @param symbol - Encoded terminal or `$eof` key.
51
52
  * @param incoming - Candidate parse action.
@@ -1 +1 @@
1
- {"version":3,"file":"table-builder-base.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/table-builder-base.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,aAAa,EACrB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,gBAAgB;IAEzB;;;;;;OAMG;WACW,gBAAgB,CAC1B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,EACzC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,EACrD,SAAS,EAAE,CACP,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,KAChB,SAAS,OAAO,EAAE,GACxB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAgC9B;;;;;;;;;;OAUG;WACW,kBAAkB,CAC5B,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,aAAa,EAAE,GAC3B,IAAI;IA0CP;;;;;;;OAOG;WACW,eAAe,CACzB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,SAAS,EAAE,aAAa,EAAE,GAC3B,IAAI;IAgBP;;;;;OAKG;WACW,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAK/D;;;;;;;;OAQG;WACW,SAAS,CACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,SAAS,EAAE,aAAa,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,GACtB,IAAI;IAwBP;;;;;;OAMG;WACW,YAAY,CACtB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,GAClB,SAAS,OAAO,EAAE;CAIxB"}
1
+ {"version":3,"file":"table-builder-base.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/table-builder-base.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,aAAa,EACrB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,gBAAgB;IAEzB;;;;;;;OAOG;WACW,gBAAgB,CAC1B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,EACzC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,EACrD,SAAS,EAAE,CACP,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,KAChB,SAAS,OAAO,EAAE,GACxB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAgC9B;;;;;;;;;;OAUG;WACW,kBAAkB,CAC5B,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,aAAa,EAAE,GAC3B,IAAI;IA4CP;;;;;;;OAOG;WACW,eAAe,CACzB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,SAAS,EAAE,aAAa,EAAE,GAC3B,IAAI;IAgBP;;;;;OAKG;WACW,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAK/D;;;;;;;;OAQG;WACW,SAAS,CACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,SAAS,EAAE,aAAa,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,GACtB,IAAI;IA4CP;;;;;;OAMG;WACW,YAAY,CACtB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,SAAS,EAAE,MAAM,GAClB,SAAS,OAAO,EAAE;CAIxB"}
@@ -1,7 +1,7 @@
1
1
  import { EOF_TOKEN_NAME } from '../../lexer/token.js';
2
2
  import { AUGMENTED_START_SYMBOL } from '../bnf/bnf-grammar.js';
3
3
  import { bnfParserSymbolKey } from '../bnf/bnf-symbol.js';
4
- import { lr0Goto, Lr0ItemSetBuilder } from '../lr0/lr0-item-set.js';
4
+ import { lr0Goto, symbolsAfterDot } from '../lr0/lr0-item-set.js';
5
5
  import { classifyParseConflict, parseActionsEqual, } from './parse-action.js';
6
6
  /**
7
7
  * Shared helpers for constructing LR parse tables from item sets.
@@ -13,13 +13,14 @@ export class TableBuilderBase {
13
13
  * @param grammar - Augmented BNF grammar.
14
14
  * @param itemSets - Canonical item set collection.
15
15
  * @param gotoItems - Computes the GOTO item set for one state and symbol.
16
+ * @returns Map from `state:symbol` keys to target state indices.
16
17
  */
17
18
  static buildGotoTargets(grammar, itemSets, indexOf, gotoItems) {
18
19
  const targets = new Map();
19
- const symbols = Lr0ItemSetBuilder.grammarSymbolKeys(grammar);
20
+ // Precompute GOTO for every state and symbol reachable from its items.
20
21
  for (let state = 0; state < itemSets.length; state += 1) {
21
22
  const itemSet = itemSets[state] ?? [];
22
- for (const symbolKey of symbols) {
23
+ for (const symbolKey of symbolsAfterDot(grammar, itemSet)) {
23
24
  const gotoSet = gotoItems(grammar, itemSet, symbolKey);
24
25
  if (gotoSet.length === 0) {
25
26
  continue;
@@ -42,9 +43,10 @@ export class TableBuilderBase {
42
43
  * @param gotoTargets - Precomputed GOTO target indices.
43
44
  * @param stateActions - ACTION map for the state.
44
45
  * @param stateGotos - GOTO map for the state.
45
- * @param conflicts - Conflict list to append to when actions disagree.
46
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
46
47
  */
47
48
  static fillShiftsAndGotos(grammar, state, itemSet, gotoTargets, stateActions, stateGotos, conflicts) {
49
+ // Derive shift and GOTO entries from every incomplete item in the state.
48
50
  for (const item of itemSet) {
49
51
  const production = grammar.production(item.productionId);
50
52
  if (production === null) {
@@ -59,6 +61,7 @@ export class TableBuilderBase {
59
61
  if (targetState === undefined) {
60
62
  continue;
61
63
  }
64
+ // Non-terminal symbols populate GOTO; terminals populate ACTION shift entries.
62
65
  if (nextSymbol.kind === 'nonTerminal') {
63
66
  stateGotos.set(nextSymbol.name, targetState);
64
67
  continue;
@@ -72,7 +75,7 @@ export class TableBuilderBase {
72
75
  * @param state - Parser state index.
73
76
  * @param productionName - Left-hand side of the completed production.
74
77
  * @param stateActions - ACTION map for the state.
75
- * @param conflicts - Conflict list to append to when actions disagree.
78
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
76
79
  */
77
80
  static setAcceptAction(state, productionName, stateActions, conflicts) {
78
81
  if (productionName !== AUGMENTED_START_SYMBOL) {
@@ -90,10 +93,10 @@ export class TableBuilderBase {
90
93
  return `${String(state)}:${symbolKey}`;
91
94
  }
92
95
  /**
93
- * Inserts one ACTION entry, recording a conflict when the slot is already occupied.
96
+ * Inserts one ACTION entry, resolving shift/reduce and reduce/reduce conflicts.
94
97
  *
95
98
  * @param stateActions - ACTION map for the current state.
96
- * @param conflicts - Conflict list to append to when actions disagree.
99
+ * @param conflicts - Resolved conflict list to append to when actions disagree.
97
100
  * @param state - Parser state index.
98
101
  * @param symbol - Encoded terminal or `$eof` key.
99
102
  * @param incoming - Candidate parse action.
@@ -104,15 +107,32 @@ export class TableBuilderBase {
104
107
  stateActions.set(symbol, incoming);
105
108
  return;
106
109
  }
110
+ // Identical re-insertions are ignored; disagreeing actions are resolved by conflict kind.
107
111
  if (parseActionsEqual(existing, incoming)) {
108
112
  return;
109
113
  }
114
+ const conflictKind = classifyParseConflict(existing, incoming);
115
+ if (conflictKind === 'shift-reduce') {
116
+ const shiftAction = existing.kind === 'shift' ? existing : incoming;
117
+ stateActions.set(symbol, shiftAction);
118
+ conflicts.push({
119
+ kind: 'shift-reduce',
120
+ state,
121
+ symbol,
122
+ existing,
123
+ incoming,
124
+ resolution: 'shift',
125
+ });
126
+ return;
127
+ }
128
+ // Reduce/reduce: keep the first reduce action already in the table.
110
129
  conflicts.push({
111
- kind: classifyParseConflict(existing, incoming),
130
+ kind: 'reduce-reduce',
112
131
  state,
113
132
  symbol,
114
133
  existing,
115
134
  incoming,
135
+ resolution: 'reduce',
116
136
  });
117
137
  }
118
138
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"table-builder-base.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/table-builder-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-builder-base.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/table-builder-base.ts"],"names":[],"mappings":"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"}
@@ -6,26 +6,32 @@ import type { ParseTable } from '../parse-table/parse-table.js';
6
6
  * Returns the ACTION table key for a lexer token.
7
7
  *
8
8
  * @param token - Current input token.
9
+ * @returns The ACTION table key for the token, or `$eof` for end-of-input.
9
10
  */
10
11
  export declare function tokenActionKey(token: Token): string;
11
12
  /**
12
13
  * Builds a terminal CST node from a shifted token.
13
14
  *
14
15
  * @param token - Lexer token that was shifted.
16
+ * @returns A terminal CST node carrying the token name, text, and location.
15
17
  */
16
18
  export declare function astNodeFromToken(token: Token): AstNode;
17
19
  /**
18
20
  * Merges child spans into one source location.
19
21
  *
20
22
  * @param children - Reduced child subtrees.
23
+ * @returns The smallest span covering all child locations, or null when none exist.
21
24
  */
22
25
  export declare function mergeChildLocations(children: readonly AstNode[]): SourceLocation | null;
23
26
  /**
24
27
  * Outcome of a shift-reduce parse attempt.
25
28
  */
26
29
  export interface ShiftReduceParseResult {
30
+ /** Concrete syntax tree on success, or null on syntax error. */
27
31
  readonly cst: AstNode | null;
32
+ /** Source offset of the first error token, or null on success. */
28
33
  readonly errorOffset: number | null;
34
+ /** Human-readable syntax error message, or null on success. */
29
35
  readonly errorMessage: string | null;
30
36
  }
31
37
  /**
@@ -55,6 +61,7 @@ export declare class ShiftReduceEngine {
55
61
  * @param productionId - Production to reduce by.
56
62
  * @param stateStack - Parser state stack.
57
63
  * @param valueStack - Semantic value stack.
64
+ * @returns The reduced subtree pushed onto the value stack, or null on stack underflow.
58
65
  */
59
66
  private static reduce;
60
67
  /**
@@ -62,6 +69,7 @@ export declare class ShiftReduceEngine {
62
69
  *
63
70
  * @param production - Reduced production metadata.
64
71
  * @param children - Child subtrees matching the production right-hand side.
72
+ * @returns A rule CST node spanning the reduced children.
65
73
  */
66
74
  private static nodeFromProduction;
67
75
  }
@@ -70,6 +78,7 @@ export declare class ShiftReduceEngine {
70
78
  *
71
79
  * @param table - Parse table with ACTION, GOTO, and production metadata.
72
80
  * @param tokens - Token stream ending with `$eof`.
81
+ * @returns The start symbol parse tree, or null on syntax error.
73
82
  */
74
83
  export declare function parseWithTable(table: ParseTable, tokens: readonly Token[]): AstNode | null;
75
84
  /**
@@ -77,6 +86,7 @@ export declare function parseWithTable(table: ParseTable, tokens: readonly Token
77
86
  *
78
87
  * @param table - Parse table with ACTION, GOTO, and production metadata.
79
88
  * @param tokens - Token stream ending with `$eof`.
89
+ * @returns Parse tree on success, or error offset and message on failure.
80
90
  */
81
91
  export declare function parseWithTableResult(table: ParseTable, tokens: readonly Token[]): ShiftReduceParseResult;
82
92
  //# sourceMappingURL=shift-reduce-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shift-reduce-engine.d.ts","sourceRoot":"","sources":["../../../src/lib/shift-reduce/shift-reduce-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAA8B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAQnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,cAAc,GAAG,IAAI,CAgCvF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAEnC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B;;;;;;OAMG;WACW,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKhF;;;;;;OAMG;WACW,eAAe,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,KAAK,EAAE,GACzB,sBAAsB;IA2FzB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAsDrB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAcpC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI,CAG1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,KAAK,EAAE,GACzB,sBAAsB,CAGxB"}
1
+ {"version":3,"file":"shift-reduce-engine.d.ts","sourceRoot":"","sources":["../../../src/lib/shift-reduce/shift-reduce-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAA8B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAQnD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGtD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,cAAc,GAAG,IAAI,CAiCvF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAEnC,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAE7B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B;;;;;;OAMG;WACW,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKhF;;;;;;OAMG;WACW,eAAe,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,KAAK,EAAE,GACzB,sBAAsB;IA4FzB;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAwDrB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAcpC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI,CAG1F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,KAAK,EAAE,GACzB,sBAAsB,CAGxB"}
@@ -4,6 +4,7 @@ import { EOF_TOKEN_NAME, isEofToken } from '../lexer/token.js';
4
4
  * Returns the ACTION table key for a lexer token.
5
5
  *
6
6
  * @param token - Current input token.
7
+ * @returns The ACTION table key for the token, or `$eof` for end-of-input.
7
8
  */
8
9
  export function tokenActionKey(token) {
9
10
  if (isEofToken(token)) {
@@ -15,6 +16,7 @@ export function tokenActionKey(token) {
15
16
  * Builds a terminal CST node from a shifted token.
16
17
  *
17
18
  * @param token - Lexer token that was shifted.
19
+ * @returns A terminal CST node carrying the token name, text, and location.
18
20
  */
19
21
  export function astNodeFromToken(token) {
20
22
  return AstNode.terminal(token.name, token.text, token.location);
@@ -23,10 +25,12 @@ export function astNodeFromToken(token) {
23
25
  * Merges child spans into one source location.
24
26
  *
25
27
  * @param children - Reduced child subtrees.
28
+ * @returns The smallest span covering all child locations, or null when none exist.
26
29
  */
27
30
  export function mergeChildLocations(children) {
28
31
  let offset = null;
29
32
  let end = null;
33
+ // Walk children to find the earliest offset and latest end position.
30
34
  for (const child of children) {
31
35
  if (child.location === null) {
32
36
  continue;
@@ -86,6 +90,7 @@ export class ShiftReduceEngine {
86
90
  const stateStack = [0];
87
91
  const valueStack = [];
88
92
  let tokenIndex = 0;
93
+ // Drive the parser until accept, error, or an unrecoverable reduce failure.
89
94
  while (true) {
90
95
  const state = stateStack[stateStack.length - 1];
91
96
  const currentToken = tokens[tokenIndex];
@@ -142,6 +147,7 @@ export class ShiftReduceEngine {
142
147
  * @param productionId - Production to reduce by.
143
148
  * @param stateStack - Parser state stack.
144
149
  * @param valueStack - Semantic value stack.
150
+ * @returns The reduced subtree pushed onto the value stack, or null on stack underflow.
145
151
  */
146
152
  static reduce(table, productionId, stateStack, valueStack) {
147
153
  const production = table.production(productionId);
@@ -150,6 +156,7 @@ export class ShiftReduceEngine {
150
156
  }
151
157
  const rhsLength = production.rhs.length;
152
158
  const children = [];
159
+ // Pop one state and value per right-hand side symbol.
153
160
  for (let index = 0; index < rhsLength; index += 1) {
154
161
  if (stateStack.length === 0 || valueStack.length === 0) {
155
162
  return null;
@@ -164,6 +171,7 @@ export class ShiftReduceEngine {
164
171
  if (stateStack.length === 0) {
165
172
  return null;
166
173
  }
174
+ // Follow GOTO for the production left-hand side and push the new subtree.
167
175
  const gotoState = table.goto(stateStack[stateStack.length - 1], production.name);
168
176
  if (gotoState === null) {
169
177
  return null;
@@ -178,6 +186,7 @@ export class ShiftReduceEngine {
178
186
  *
179
187
  * @param production - Reduced production metadata.
180
188
  * @param children - Child subtrees matching the production right-hand side.
189
+ * @returns A rule CST node spanning the reduced children.
181
190
  */
182
191
  static nodeFromProduction(production, children) {
183
192
  return AstNode.rule(production.name, children, mergeChildLocations(children), production.variant, production.id, production.origin);
@@ -188,6 +197,7 @@ export class ShiftReduceEngine {
188
197
  *
189
198
  * @param table - Parse table with ACTION, GOTO, and production metadata.
190
199
  * @param tokens - Token stream ending with `$eof`.
200
+ * @returns The start symbol parse tree, or null on syntax error.
191
201
  */
192
202
  export function parseWithTable(table, tokens) {
193
203
  return ShiftReduceEngine.parse(table, tokens);
@@ -197,6 +207,7 @@ export function parseWithTable(table, tokens) {
197
207
  *
198
208
  * @param table - Parse table with ACTION, GOTO, and production metadata.
199
209
  * @param tokens - Token stream ending with `$eof`.
210
+ * @returns Parse tree on success, or error offset and message on failure.
200
211
  */
201
212
  export function parseWithTableResult(table, tokens) {
202
213
  return ShiftReduceEngine.parseWithResult(table, tokens);
@@ -1 +1 @@
1
- {"version":3,"file":"shift-reduce-engine.js","sourceRoot":"","sources":["../../../src/lib/shift-reduce/shift-reduce-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shift-reduce-engine.js","sourceRoot":"","sources":["../../../src/lib/shift-reduce/shift-reduce-engine.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,12 @@ export declare function parseRhsSymbolKey(key: string): {
22
22
  * @param production - Parse table production metadata.
23
23
  */
24
24
  export declare function productionSlots(production: ParseTableProductionJson): readonly ProductionSlot[];
25
+ /**
26
+ * Returns the shared `$repeat` prefix for a numbered synthetic repeat symbol or reference.
27
+ *
28
+ * @param name - Repeat non-terminal or transform reference name.
29
+ */
30
+ export declare function repeatSymbolPrefix(name: string): string | null;
25
31
  /**
26
32
  * Finds the child index for a transform reference name.
27
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"binding-map.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/binding-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwBzF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,wBAAwB,GAAG,SAAS,cAAc,EAAE,CAY/F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,wBAAwB,EACpC,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAmBf"}
1
+ {"version":3,"file":"binding-map.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/binding-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwBzF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,wBAAwB,GAAG,SAAS,cAAc,EAAE,CAY/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,wBAAwB,EACpC,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAgCf"}
@@ -37,6 +37,15 @@ export function productionSlots(production) {
37
37
  };
38
38
  });
39
39
  }
40
+ /**
41
+ * Returns the shared `$repeat` prefix for a numbered synthetic repeat symbol or reference.
42
+ *
43
+ * @param name - Repeat non-terminal or transform reference name.
44
+ */
45
+ export function repeatSymbolPrefix(name) {
46
+ const match = /^(.+\$repeat)_\d+$/.exec(name);
47
+ return match?.[1] ?? null;
48
+ }
40
49
  /**
41
50
  * Finds the child index for a transform reference name.
42
51
  *
@@ -54,6 +63,14 @@ export function referenceSlotIndex(production, reference) {
54
63
  return slot.index;
55
64
  }
56
65
  }
66
+ const repeatPrefix = repeatSymbolPrefix(reference);
67
+ if (repeatPrefix !== null) {
68
+ for (const slot of productionSlots(production)) {
69
+ if (slot.binding === null && repeatSymbolPrefix(slot.symbol) === repeatPrefix) {
70
+ return slot.index;
71
+ }
72
+ }
73
+ }
57
74
  return null;
58
75
  }
59
76
  //# sourceMappingURL=binding-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binding-map.js","sourceRoot":"","sources":["../../../src/lib/transform/binding-map.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAEzC,MAAM,YAAY,GAAG,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErE,IAAI,YAAY,KAAK,IAAI,EACzB,CAAC;QACG,OAAO;YACH,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1B,CAAC;IACN,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC5C,CAAC;QACG,OAAO;YACH,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3B,CAAC;IACN,CAAC;IAED,OAAO;QACH,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG;KACd,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAoC;IAEhE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAErC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,OAAO;YACH,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAC9B,UAAoC,EACpC,SAAiB;IAGjB,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAC9C,CAAC;QACG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAC9B,CAAC;YACG,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAC9C,CAAC;QACG,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EACtD,CAAC;YACG,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"binding-map.js","sourceRoot":"","sources":["../../../src/lib/transform/binding-map.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAEzC,MAAM,YAAY,GAAG,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErE,IAAI,YAAY,KAAK,IAAI,EACzB,CAAC;QACG,OAAO;YACH,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1B,CAAC;IACN,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC5C,CAAC;QACG,OAAO;YACH,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3B,CAAC;IACN,CAAC;IAED,OAAO;QACH,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG;KACd,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAoC;IAEhE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAErC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,OAAO;YACH,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAE3C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAC9B,UAAoC,EACpC,SAAiB;IAGjB,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAC9C,CAAC;QACG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAC9B,CAAC;YACG,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAC9C,CAAC;QACG,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EACtD,CAAC;YACG,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,YAAY,KAAK,IAAI,EACzB,CAAC;QACG,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAC9C,CAAC;YACG,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,YAAY,EAC7E,CAAC;gBACG,OAAO,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -112,6 +112,12 @@ export declare class CstTransformer {
112
112
  * @param resolved - Resolved reference child nodes.
113
113
  */
114
114
  private findRepeatTail;
115
+ /**
116
+ * Resolves a transform rule for a CST node, aliasing numbered repeat symbols to `$repeat_0`.
117
+ *
118
+ * @param node - CST node being transformed.
119
+ */
120
+ private resolveTransformRule;
115
121
  /**
116
122
  * Returns whether a CST node represents an epsilon production.
117
123
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cst-transformer.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5F;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC;;;;;OAKG;gBACgB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;IAM7D;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IAUrD;;;;;;OAMG;WACW,SAAS,CACnB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI;IAUjB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiCrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA2BlB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2DrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAsEtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI,CAGhB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,wBAAwB,GACrC,SAAS,cAAc,EAAE,CAG3B"}
1
+ {"version":3,"file":"cst-transformer.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhH;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC;;;;;OAKG;gBACgB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;IAM7D;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IAUrD;;;;;;OAMG;WACW,SAAS,CACnB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI;IAUjB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA2BlB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2DrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAsEtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI,CAGhB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,wBAAwB,GACrC,SAAS,cAAc,EAAE,CAG3B"}