@scinorandex/sparse 0.0.8 → 0.1.2

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 (65) hide show
  1. package/.github/workflows/ci.yml +41 -0
  2. package/AGENTS.md +60 -0
  3. package/README.md +286 -30
  4. package/dist/cli.js +113 -24
  5. package/dist/cli.js.map +1 -1
  6. package/dist/generator.d.ts +9 -2
  7. package/dist/generator.js +179 -50
  8. package/dist/generator.js.map +1 -1
  9. package/dist/index.d.ts +17 -4
  10. package/dist/index.js +34 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/meta/common.d.ts +17 -0
  13. package/dist/meta/common.js +66 -1
  14. package/dist/meta/common.js.map +1 -1
  15. package/dist/meta/selfhosted.d.ts +4 -5
  16. package/dist/meta/selfhosted.js +51 -38
  17. package/dist/meta/selfhosted.js.map +1 -1
  18. package/dist/parser.d.ts +56 -33
  19. package/dist/parser.js +146 -18
  20. package/dist/parser.js.map +1 -1
  21. package/dist/table/selfhosted.d.ts +10 -1
  22. package/dist/table/selfhosted.js +32 -12
  23. package/dist/table/selfhosted.js.map +1 -1
  24. package/dist/table/validate.d.ts +17 -0
  25. package/dist/table/validate.js +84 -0
  26. package/dist/table/validate.js.map +1 -0
  27. package/dist/utils/Stack.d.ts +4 -0
  28. package/dist/utils/Stack.js +16 -1
  29. package/dist/utils/Stack.js.map +1 -1
  30. package/dist/utils/errorWindowBuilder.js +11 -11
  31. package/dist/utils/errorWindowBuilder.js.map +1 -1
  32. package/dist/utils/loadFiles.d.ts +8 -0
  33. package/dist/utils/loadFiles.js +47 -0
  34. package/dist/utils/loadFiles.js.map +1 -0
  35. package/dist/utils/reducers.d.ts +9 -0
  36. package/dist/utils/reducers.js +56 -0
  37. package/dist/utils/reducers.js.map +1 -0
  38. package/example/LoLang/example.ts +42 -18
  39. package/example/LoLang/tablelalr.txt +381 -0
  40. package/example/kleene-test/example.ts +35 -17
  41. package/example/math/example.ts +12 -7
  42. package/example/selfhosted/example.ts +30 -24
  43. package/opencode.json +18 -0
  44. package/package.json +9 -3
  45. package/src/cli.ts +132 -23
  46. package/src/generator.ts +237 -67
  47. package/src/index.ts +56 -3
  48. package/src/meta/common.ts +116 -0
  49. package/src/meta/selfhosted.ts +42 -11
  50. package/src/parser.ts +259 -47
  51. package/src/table/selfhosted.ts +48 -12
  52. package/src/table/validate.ts +143 -0
  53. package/src/utils/Stack.ts +22 -2
  54. package/src/utils/errorWindowBuilder.ts +15 -13
  55. package/src/utils/loadFiles.ts +54 -0
  56. package/src/utils/reducers.ts +93 -0
  57. package/test/cli.test.ts +144 -0
  58. package/test/codegen.test.ts +75 -0
  59. package/test/grammar.test.ts +243 -0
  60. package/test/helpers.ts +59 -0
  61. package/test/lalr.test.ts +114 -0
  62. package/test/parser.test.ts +392 -0
  63. package/test/table.test.ts +144 -0
  64. package/tsconfig.json +1 -1
  65. package/example/complicated/grammar.txt +0 -37
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,2DAA6B;AAC7B,mCAA8C;AAC9C,2CAA6C;AAC7C,wDAAgC;AAChC,gDAAwB;AACxB,mEAA8D;AAE9D,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,kBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC;aACnC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACzB,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,4BAA4B,UAAU,IAAI,CAAC,CAAC;IAEzF,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,iBAAiB,CAAC,CAAC;IAEhG,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAC;IACvD,IAAI,iBAAiB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAA,qCAAgB,EAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,0BAAc,EAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,eAAe,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAA,qCAAgB,EAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,23 @@
1
1
  import { TableState } from "./parser";
2
- import { Production } from "./meta/common";
2
+ import { Production, ProductionWarning } from "./meta/common";
3
3
  import { Result } from "./utils/Result";
4
4
  type Item = Production & {
5
5
  dot: number;
6
6
  lookahead: string[];
7
+ prodIndex: number;
8
+ key: string;
7
9
  };
8
10
  type State = {
9
11
  itemSet: Item[];
10
12
  kernel: Item;
11
13
  count: number;
12
14
  };
13
- export declare const generateStates: (productions: Production[]) => Result<GeneratorResult>;
15
+ export type GeneratorOptions = {
16
+ mode?: "lr1" | "lalr1";
17
+ onWarning?: (warning: ProductionWarning) => void;
18
+ onProgress?: (statesGenerated: number) => void;
19
+ };
20
+ export declare const generateStates: (productions: Production[], options?: GeneratorOptions) => Result<GeneratorResult>;
14
21
  export declare class GeneratorResult {
15
22
  readonly states: State[];
16
23
  readonly ActionTable: Map<string, {
package/dist/generator.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GeneratorResult = exports.generateStates = void 0;
4
4
  const parser_1 = require("./parser");
5
+ const common_1 = require("./meta/common");
5
6
  const xContainsAllOfY = (xs, ys) => [...ys].every((x) => xs.has(x));
6
7
  const EOF_STRING = "[EOF]";
7
8
  function computeFirstSets(allProductions) {
@@ -14,6 +15,12 @@ function computeFirstSets(allProductions) {
14
15
  for (const production of allProductions) {
15
16
  const toBeModified = ret.get(production.identifier);
16
17
  const firstRhsToken = production.rhs[0];
18
+ if (firstRhsToken == null)
19
+ return {
20
+ success: false,
21
+ reason: `Production "${production.identifier}" has an empty right hand side, which Sparse does not support`,
22
+ token: production.lhs,
23
+ };
17
24
  if (firstRhsToken.type === "variable") {
18
25
  const add = ret.get(firstRhsToken.identifier);
19
26
  if (add == null) {
@@ -94,7 +101,12 @@ function computeFollowSets(allProductions) {
94
101
  }
95
102
  return { success: true, value: { firstSets, followSets: ret } };
96
103
  }
97
- const generateStates = (productions) => {
104
+ const KEY_SEP = "\x00";
105
+ const FIELD_SEP = "\x01";
106
+ const generateStates = (productions, options = {}) => {
107
+ const validationResult = (0, common_1.validateProductions)(productions, { onWarning: options.onWarning });
108
+ if (validationResult.success === false)
109
+ return validationResult;
98
110
  const followSetsResult = computeFollowSets(productions);
99
111
  if (followSetsResult.success == false)
100
112
  return followSetsResult;
@@ -124,41 +136,74 @@ const generateStates = (productions) => {
124
136
  };
125
137
  }
126
138
  };
127
- function generateInitialItemSet(production) {
139
+ const productionIndicesByLhs = new Map();
140
+ for (let i = 0; i < productions.length; i++) {
141
+ const indexList = productionIndicesByLhs.get(productions[i].identifier);
142
+ if (indexList == undefined)
143
+ productionIndicesByLhs.set(productions[i].identifier, [i]);
144
+ else
145
+ indexList.push(i);
146
+ }
147
+ const rhsEntrySignature = (rhsToken) => { var _a; return `${rhsToken.type}${FIELD_SEP}${rhsToken.identifier}${FIELD_SEP}${(_a = rhsToken.name) !== null && _a !== void 0 ? _a : ""}${FIELD_SEP}${rhsToken.token.line}${FIELD_SEP}${rhsToken.token.column}`; };
148
+ const reduceValue = [];
149
+ {
150
+ const lowestIndexBySignature = new Map();
151
+ for (let i = 0; i < productions.length; i++) {
152
+ const production = productions[i];
153
+ const signature = `${production.identifier}${FIELD_SEP}${production.rhs.map(rhsEntrySignature).join(FIELD_SEP)}`;
154
+ const lowest = lowestIndexBySignature.get(signature);
155
+ if (lowest == undefined)
156
+ lowestIndexBySignature.set(signature, i);
157
+ reduceValue[i] = lowestIndexBySignature.get(signature);
158
+ }
159
+ }
160
+ const itemKey = (prodIndex, dot, lookahead) => `${prodIndex}${KEY_SEP}${dot}${KEY_SEP}${lookahead.join(FIELD_SEP)}`;
161
+ const itemSetSignature = (itemSet) => itemSet.map((item) => item.key).join(FIELD_SEP);
162
+ function generateInitialItemSet(production, prodIndex) {
163
+ const lookahead = [EOF_STRING];
128
164
  const initialItem = {
129
165
  lhs: production.lhs,
130
166
  identifier: production.identifier,
131
167
  rhs: production.rhs,
132
168
  dot: 0,
133
- lookahead: [EOF_STRING],
169
+ lookahead,
170
+ prodIndex,
171
+ key: itemKey(prodIndex, 0, lookahead),
134
172
  };
135
173
  return expandItemSet([initialItem]);
136
174
  }
137
175
  function expandItemSet(items) {
176
+ var _a;
138
177
  const itemSet = [...items];
178
+ const knownItems = new Set(items.map((item) => item.key));
139
179
  const unprocesssedItems = [...items];
140
- while (unprocesssedItems.length > 0) {
141
- const currentItem = unprocesssedItems.shift();
180
+ let queuePosition = 0;
181
+ while (queuePosition < unprocesssedItems.length) {
182
+ const currentItem = unprocesssedItems[queuePosition++];
142
183
  const after = currentItem.rhs[currentItem.dot];
143
184
  if (after == null)
144
185
  continue;
145
186
  if (after.type === "variable") {
146
- const newProductions = productions.filter((p) => p.identifier === after.identifier);
147
187
  const rest = currentItem.rhs.slice(currentItem.dot + 1);
148
188
  const lookaheadResult = determineNextLookAhead(currentItem.lhs, currentItem.identifier, rest);
149
189
  if (lookaheadResult.success === false)
150
190
  return lookaheadResult;
151
191
  const lookahead = lookaheadResult.value;
152
- for (const newProduction of newProductions) {
153
- const newItem = {
154
- lhs: newProduction.lhs,
155
- identifier: newProduction.identifier,
156
- rhs: newProduction.rhs,
157
- dot: 0,
158
- lookahead,
159
- };
160
- const encoding = JSON.stringify(newItem);
161
- if (itemSet.some((i) => JSON.stringify(i) === encoding) == false) {
192
+ const productionIndices = (_a = productionIndicesByLhs.get(after.identifier)) !== null && _a !== void 0 ? _a : [];
193
+ for (const prodIndex of productionIndices) {
194
+ const newProduction = productions[prodIndex];
195
+ const key = itemKey(prodIndex, 0, lookahead);
196
+ if (knownItems.has(key) == false) {
197
+ knownItems.add(key);
198
+ const newItem = {
199
+ lhs: newProduction.lhs,
200
+ identifier: newProduction.identifier,
201
+ rhs: newProduction.rhs,
202
+ dot: 0,
203
+ lookahead,
204
+ prodIndex,
205
+ key,
206
+ };
162
207
  unprocesssedItems.push(newItem);
163
208
  itemSet.push(newItem);
164
209
  }
@@ -167,34 +212,35 @@ const generateStates = (productions) => {
167
212
  }
168
213
  return { success: true, value: { itemSet, kernel: items[0] } };
169
214
  }
170
- const initialItemSetResult = generateInitialItemSet(productions[0]);
215
+ const initialItemSetResult = generateInitialItemSet(productions[0], 0);
171
216
  if (initialItemSetResult.success === false)
172
217
  return initialItemSetResult;
173
218
  const initialItemSet = initialItemSetResult.value;
174
219
  function generateStates(_initialState) {
220
+ var _a, _b;
175
221
  const initialState = Object.assign(Object.assign({}, _initialState), { count: 0 });
176
222
  const states = [initialState];
177
223
  const unprocessedStates = [initialState];
178
224
  const GotoTable = [];
179
225
  const ActionTable = [];
180
- while (unprocessedStates.length > 0) {
181
- const currentState = unprocessedStates.shift();
226
+ const stateIndexBySignature = new Map();
227
+ stateIndexBySignature.set(itemSetSignature(initialState.itemSet), 0);
228
+ let statePosition = 0;
229
+ while (statePosition < unprocessedStates.length) {
230
+ const currentState = unprocessedStates[statePosition++];
182
231
  const nextStates_Goto = new Map();
183
232
  const nextStates_Shift = new Map();
184
233
  calculateNextItem: for (const item of currentState.itemSet) {
185
234
  const nextSymbol = item.rhs[item.dot];
186
235
  if (nextSymbol == null) {
187
- const productionToReduceTo = productions
188
- .map((p, i) => [p, i])
189
- .find(([p, _]) => JSON.stringify(p.rhs) === JSON.stringify(item.rhs) && p.identifier === item.identifier)[1];
190
236
  for (const lookahead of item.lookahead) {
191
237
  if (ActionTable[currentState.count] === undefined)
192
238
  ActionTable[currentState.count] = new Map();
193
- ActionTable[currentState.count].set(lookahead, { action: "reduce", value: productionToReduceTo });
239
+ ActionTable[currentState.count].set(lookahead, { action: "reduce", value: reduceValue[item.prodIndex] });
194
240
  }
195
241
  continue calculateNextItem;
196
242
  }
197
- const newItem = Object.assign(Object.assign({}, item), { dot: item.dot + 1 });
243
+ const newItem = Object.assign(Object.assign({}, item), { dot: item.dot + 1, key: itemKey(item.prodIndex, item.dot + 1, item.lookahead) });
198
244
  if (nextSymbol.type === "variable") {
199
245
  if (nextStates_Goto.has(nextSymbol.identifier))
200
246
  nextStates_Goto.get(nextSymbol.identifier).push(newItem);
@@ -213,17 +259,11 @@ const generateStates = (productions) => {
213
259
  if (expandedItemsResult.success === false)
214
260
  return expandedItemsResult;
215
261
  const expandedItems = expandedItemsResult.value;
216
- let existingState = states.find((s) => {
217
- return (s.kernel.lhs === expandedItems.kernel.lhs &&
218
- s.kernel.rhs.length === expandedItems.kernel.rhs.length &&
219
- JSON.stringify(s.kernel.rhs) === JSON.stringify(expandedItems.kernel.rhs) &&
220
- s.kernel.lookahead.length === expandedItems.kernel.lookahead.length &&
221
- JSON.stringify(s.kernel.lookahead) === JSON.stringify(expandedItems.kernel.lookahead) &&
222
- JSON.stringify(s.itemSet) === JSON.stringify(expandedItems.itemSet));
223
- });
262
+ const signature = itemSetSignature(expandedItems.itemSet);
263
+ let existingStateIndex = stateIndexBySignature.get(signature);
224
264
  if (GotoTable[currentState.count] === undefined)
225
265
  GotoTable[currentState.count] = new Map();
226
- if (existingState == undefined) {
266
+ if (existingStateIndex == undefined) {
227
267
  const newState = {
228
268
  itemSet: expandedItems.itemSet,
229
269
  kernel: expandedItems.kernel,
@@ -231,26 +271,22 @@ const generateStates = (productions) => {
231
271
  };
232
272
  states.push(newState);
233
273
  unprocessedStates.push(newState);
234
- existingState = newState;
274
+ stateIndexBySignature.set(signature, newState.count);
275
+ existingStateIndex = newState.count;
235
276
  }
236
- GotoTable[currentState.count].set(gotoTransition, existingState.count);
277
+ (_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, states.length);
278
+ GotoTable[currentState.count].set(gotoTransition, existingStateIndex);
237
279
  }
238
280
  for (const [shiftTransition, shiftItems] of nextStates_Shift.entries()) {
239
281
  const expandedItemsResult = expandItemSet(shiftItems);
240
282
  if (expandedItemsResult.success === false)
241
283
  return expandedItemsResult;
242
284
  const expandedItems = expandedItemsResult.value;
243
- let existingState = states.find((s) => {
244
- return (s.kernel.lhs === expandedItems.kernel.lhs &&
245
- s.kernel.rhs.length === expandedItems.kernel.rhs.length &&
246
- JSON.stringify(s.kernel.rhs) === JSON.stringify(expandedItems.kernel.rhs) &&
247
- s.kernel.lookahead.length === expandedItems.kernel.lookahead.length &&
248
- JSON.stringify(s.kernel.lookahead) === JSON.stringify(expandedItems.kernel.lookahead) &&
249
- JSON.stringify(s.itemSet) === JSON.stringify(expandedItems.itemSet));
250
- });
285
+ const signature = itemSetSignature(expandedItems.itemSet);
286
+ let existingStateIndex = stateIndexBySignature.get(signature);
251
287
  if (ActionTable[currentState.count] === undefined)
252
288
  ActionTable[currentState.count] = new Map();
253
- if (existingState == undefined) {
289
+ if (existingStateIndex == undefined) {
254
290
  const newState = {
255
291
  itemSet: expandedItems.itemSet,
256
292
  kernel: expandedItems.kernel,
@@ -258,9 +294,11 @@ const generateStates = (productions) => {
258
294
  };
259
295
  states.push(newState);
260
296
  unprocessedStates.push(newState);
261
- existingState = newState;
297
+ stateIndexBySignature.set(signature, newState.count);
298
+ existingStateIndex = newState.count;
262
299
  }
263
- ActionTable[currentState.count].set(shiftTransition, { action: "shift", value: existingState.count });
300
+ (_b = options.onProgress) === null || _b === void 0 ? void 0 : _b.call(options, states.length);
301
+ ActionTable[currentState.count].set(shiftTransition, { action: "shift", value: existingStateIndex });
264
302
  }
265
303
  }
266
304
  return { success: true, value: { states, GotoTable, ActionTable } };
@@ -269,9 +307,90 @@ const generateStates = (productions) => {
269
307
  if (StatesResult.success === false)
270
308
  return StatesResult;
271
309
  const { states, ActionTable, GotoTable } = StatesResult.value;
310
+ if (options.mode === "lalr1") {
311
+ const merged = mergeStatesForLALR(states, ActionTable, GotoTable);
312
+ if (merged.success === false)
313
+ return merged;
314
+ return {
315
+ success: true,
316
+ value: new GeneratorResult(merged.value.states, merged.value.ActionTable, merged.value.GotoTable),
317
+ };
318
+ }
272
319
  return { success: true, value: new GeneratorResult(states, ActionTable, GotoTable) };
273
320
  };
274
321
  exports.generateStates = generateStates;
322
+ function mergeStatesForLALR(states, ActionTable, GotoTable) {
323
+ var _a;
324
+ const itemSkeleton = (item) => `${item.prodIndex}${KEY_SEP}${item.dot}`;
325
+ const stateSkeleton = (state) => state.itemSet.map(itemSkeleton).sort().join(FIELD_SEP);
326
+ const groupIndices = [];
327
+ const groupBySkeleton = new Map();
328
+ const oldToNew = new Array(states.length);
329
+ for (let i = 0; i < states.length; i++) {
330
+ const skeleton = stateSkeleton(states[i]);
331
+ let group = groupBySkeleton.get(skeleton);
332
+ if (group == undefined) {
333
+ group = groupIndices.length;
334
+ groupBySkeleton.set(skeleton, group);
335
+ groupIndices.push([]);
336
+ }
337
+ groupIndices[group].push(i);
338
+ oldToNew[i] = group;
339
+ }
340
+ const describeAction = (a) => a.action === "reduce" ? `reduce by production ${a.value}` : `shift to state ${a.value}`;
341
+ const conflictToken = (members) => states[members[0]].kernel.lhs;
342
+ const conflict = (g, members, reason) => ({
343
+ success: false,
344
+ reason: `LALR(1) conflict in state ${g} on ${reason} between LR(1) states ${members.join(", ")}: the grammar is not LALR(1)`,
345
+ token: conflictToken(members),
346
+ });
347
+ const newStates = [];
348
+ const newActionTable = [];
349
+ const newGotoTable = [];
350
+ for (let g = 0; g < groupIndices.length; g++) {
351
+ const members = groupIndices[g];
352
+ const actions = new Map();
353
+ const gotos = new Map();
354
+ for (const member of members) {
355
+ for (const [key, entry] of ((_a = ActionTable[member]) !== null && _a !== void 0 ? _a : new Map()).entries()) {
356
+ const value = {
357
+ action: entry.action,
358
+ value: entry.action === "shift" ? oldToNew[entry.value] : entry.value,
359
+ };
360
+ const existing = actions.get(key);
361
+ if (existing == undefined)
362
+ actions.set(key, value);
363
+ else if (existing.action !== value.action || existing.value !== value.value)
364
+ return conflict(g, members, `"${key}": ${describeAction(existing)} conflicts with ${describeAction(value)}`);
365
+ }
366
+ if (GotoTable[member] !== undefined)
367
+ for (const [key, target] of GotoTable[member].entries()) {
368
+ const value = oldToNew[target];
369
+ const existing = gotos.get(key);
370
+ if (existing == undefined)
371
+ gotos.set(key, value);
372
+ else if (existing !== value)
373
+ return conflict(g, members, `"${key}": goto to state ${existing} conflicts with goto to state ${value}`);
374
+ }
375
+ }
376
+ const itemsBySkeleton = new Map();
377
+ for (const member of members)
378
+ for (const item of states[member].itemSet) {
379
+ const skeleton = itemSkeleton(item);
380
+ const existing = itemsBySkeleton.get(skeleton);
381
+ if (existing == undefined)
382
+ itemsBySkeleton.set(skeleton, Object.assign(Object.assign({}, item), { lookahead: [...item.lookahead] }));
383
+ else
384
+ for (const lookahead of item.lookahead)
385
+ if (!existing.lookahead.includes(lookahead))
386
+ existing.lookahead.push(lookahead);
387
+ }
388
+ newStates.push({ itemSet: [...itemsBySkeleton.values()], kernel: states[members[0]].kernel, count: g });
389
+ newActionTable.push(actions);
390
+ newGotoTable.push(gotos);
391
+ }
392
+ return { success: true, value: { states: newStates, ActionTable: newActionTable, GotoTable: newGotoTable } };
393
+ }
275
394
  class GeneratorResult {
276
395
  constructor(states, ActionTable, GotoTable) {
277
396
  this.states = states;
@@ -279,7 +398,11 @@ class GeneratorResult {
279
398
  this.GotoTable = GotoTable;
280
399
  }
281
400
  toTable() {
282
- return this.ActionTable.map((actions, idx) => {
401
+ const actionless = this.ActionTable.findIndex((actions) => actions === undefined || actions.size === 0);
402
+ if (actionless !== -1)
403
+ throw new Error(`State ${actionless} of this grammar has no actions, so it cannot be written in the parsing table format. ` +
404
+ `Use Sparse.fromProductions to keep the states in memory instead.`);
405
+ return Array.from(this.ActionTable, (actions, idx) => {
283
406
  return [
284
407
  ...[...actions.entries()].map(([k, { action, value }]) => `${k}=${action === "reduce" ? "r" : "s"}${value}`),
285
408
  ...(this.GotoTable[idx] === undefined ? [] : [...this.GotoTable[idx].entries()].map(([k, v]) => `${k}=${v}`)),
@@ -287,13 +410,19 @@ class GeneratorResult {
287
410
  }).join("\n");
288
411
  }
289
412
  toStates() {
290
- return this.ActionTable.map((actions, idx) => {
413
+ return Array.from(this.ActionTable, (actions, idx) => {
291
414
  const tableState = new parser_1.TableState();
292
- for (const [k, { action, value }] of actions.entries())
415
+ if (actions === undefined)
416
+ return tableState;
417
+ for (const [k, { action, value }] of actions.entries()) {
293
418
  tableState.actions.set(k, { type: action === "reduce" ? "reduce" : "shift", value });
419
+ tableState.rawActions.set(k, `${action === "reduce" ? "r" : "s"}${value}`);
420
+ }
294
421
  if (this.GotoTable[idx] !== undefined)
295
- for (const [k, value] of this.GotoTable[idx].entries())
422
+ for (const [k, value] of this.GotoTable[idx].entries()) {
296
423
  tableState.actions.set(k, { type: "goto", value });
424
+ tableState.rawActions.set(k, `${value}`);
425
+ }
297
426
  return tableState;
298
427
  });
299
428
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,19 @@
1
1
  export { GeneratorResult, generateStates } from "./generator";
2
- export { buildProductions, tryBuildProductions } from "./meta/selfhosted";
2
+ export type { GeneratorOptions } from "./generator";
3
+ export { buildProductions, tryBuildProductions, grammarLexerGenerator, getSelfHostedParserGenerator, } from "./meta/selfhosted";
4
+ export type { LexerInterface } from "./meta/selfhosted";
3
5
  export { Result } from "./utils/Result";
4
- export { ParserRecoveryFunction, Sparse, LR1ParserGraveError, LR1StackSymbol, ParserResult, ParserError, } from "./parser";
5
- export { buildStates } from "./table/selfhosted";
6
- export { Production } from "./meta/common";
6
+ export { ParserRecoveryFunction, Sparse, SparseGrammarError, LR1ParserGraveError, LR1StackSymbol, LR1Parser, ParserResult, ParserError, TableAction, TableState, } from "./parser";
7
+ export type { ReducerType, SparseOptions, FromProductionsOptions } from "./parser";
8
+ export { buildStates, tryBuildStates } from "./table/selfhosted";
9
+ export type { BuildStatesOptions } from "./table/selfhosted";
10
+ export { validateTable, validateTableStates } from "./table/validate";
11
+ export type { ValidateTableOptions, ValidateTableStatesOptions, TableFormatWarning } from "./table/validate";
12
+ export { dehydateProduction, hydrateProduction, isVariableIdentifier, syntheticGrammarToken, terminalIdentifier, validateProductions, variableIdentifier, GrammarTokenType, } from "./meta/common";
13
+ export type { GrammarToken, GrammarTokenMetadata, Production, ProductionRhsItem, ProductionWarning, ProductionWarningKind, ValidateProductionsOptions, } from "./meta/common";
14
+ export { assertReducersCoverGrammar, defineReducers, enumToString, missingReducerMessage, missingReducerNames, namedProductions, KLEENE_REDUCER_NAME, } from "./utils/reducers";
15
+ export type { ReducerMap } from "./utils/reducers";
16
+ export { loadGrammar, loadTable } from "./utils/loadFiles";
17
+ export type { LoadGrammarOptions, LoadTableOptions } from "./utils/loadFiles";
18
+ export { buildErrorWindow } from "./utils/errorWindowBuilder";
19
+ export { Stack } from "./utils/Stack";
package/dist/index.js CHANGED
@@ -1,15 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildStates = exports.LR1ParserGraveError = exports.Sparse = exports.tryBuildProductions = exports.buildProductions = exports.generateStates = exports.GeneratorResult = void 0;
3
+ exports.Stack = exports.buildErrorWindow = exports.loadTable = exports.loadGrammar = exports.KLEENE_REDUCER_NAME = exports.namedProductions = exports.missingReducerNames = exports.missingReducerMessage = exports.enumToString = exports.defineReducers = exports.assertReducersCoverGrammar = exports.GrammarTokenType = exports.variableIdentifier = exports.validateProductions = exports.terminalIdentifier = exports.syntheticGrammarToken = exports.isVariableIdentifier = exports.hydrateProduction = exports.dehydateProduction = exports.validateTableStates = exports.validateTable = exports.tryBuildStates = exports.buildStates = exports.TableState = exports.LR1Parser = exports.LR1ParserGraveError = exports.SparseGrammarError = exports.Sparse = exports.getSelfHostedParserGenerator = exports.grammarLexerGenerator = exports.tryBuildProductions = exports.buildProductions = exports.generateStates = exports.GeneratorResult = void 0;
4
4
  var generator_1 = require("./generator");
5
5
  Object.defineProperty(exports, "GeneratorResult", { enumerable: true, get: function () { return generator_1.GeneratorResult; } });
6
6
  Object.defineProperty(exports, "generateStates", { enumerable: true, get: function () { return generator_1.generateStates; } });
7
7
  var selfhosted_1 = require("./meta/selfhosted");
8
8
  Object.defineProperty(exports, "buildProductions", { enumerable: true, get: function () { return selfhosted_1.buildProductions; } });
9
9
  Object.defineProperty(exports, "tryBuildProductions", { enumerable: true, get: function () { return selfhosted_1.tryBuildProductions; } });
10
+ Object.defineProperty(exports, "grammarLexerGenerator", { enumerable: true, get: function () { return selfhosted_1.grammarLexerGenerator; } });
11
+ Object.defineProperty(exports, "getSelfHostedParserGenerator", { enumerable: true, get: function () { return selfhosted_1.getSelfHostedParserGenerator; } });
10
12
  var parser_1 = require("./parser");
11
13
  Object.defineProperty(exports, "Sparse", { enumerable: true, get: function () { return parser_1.Sparse; } });
14
+ Object.defineProperty(exports, "SparseGrammarError", { enumerable: true, get: function () { return parser_1.SparseGrammarError; } });
12
15
  Object.defineProperty(exports, "LR1ParserGraveError", { enumerable: true, get: function () { return parser_1.LR1ParserGraveError; } });
16
+ Object.defineProperty(exports, "LR1Parser", { enumerable: true, get: function () { return parser_1.LR1Parser; } });
17
+ Object.defineProperty(exports, "TableState", { enumerable: true, get: function () { return parser_1.TableState; } });
13
18
  var selfhosted_2 = require("./table/selfhosted");
14
19
  Object.defineProperty(exports, "buildStates", { enumerable: true, get: function () { return selfhosted_2.buildStates; } });
20
+ Object.defineProperty(exports, "tryBuildStates", { enumerable: true, get: function () { return selfhosted_2.tryBuildStates; } });
21
+ var validate_1 = require("./table/validate");
22
+ Object.defineProperty(exports, "validateTable", { enumerable: true, get: function () { return validate_1.validateTable; } });
23
+ Object.defineProperty(exports, "validateTableStates", { enumerable: true, get: function () { return validate_1.validateTableStates; } });
24
+ var common_1 = require("./meta/common");
25
+ Object.defineProperty(exports, "dehydateProduction", { enumerable: true, get: function () { return common_1.dehydateProduction; } });
26
+ Object.defineProperty(exports, "hydrateProduction", { enumerable: true, get: function () { return common_1.hydrateProduction; } });
27
+ Object.defineProperty(exports, "isVariableIdentifier", { enumerable: true, get: function () { return common_1.isVariableIdentifier; } });
28
+ Object.defineProperty(exports, "syntheticGrammarToken", { enumerable: true, get: function () { return common_1.syntheticGrammarToken; } });
29
+ Object.defineProperty(exports, "terminalIdentifier", { enumerable: true, get: function () { return common_1.terminalIdentifier; } });
30
+ Object.defineProperty(exports, "validateProductions", { enumerable: true, get: function () { return common_1.validateProductions; } });
31
+ Object.defineProperty(exports, "variableIdentifier", { enumerable: true, get: function () { return common_1.variableIdentifier; } });
32
+ Object.defineProperty(exports, "GrammarTokenType", { enumerable: true, get: function () { return common_1.GrammarTokenType; } });
33
+ var reducers_1 = require("./utils/reducers");
34
+ Object.defineProperty(exports, "assertReducersCoverGrammar", { enumerable: true, get: function () { return reducers_1.assertReducersCoverGrammar; } });
35
+ Object.defineProperty(exports, "defineReducers", { enumerable: true, get: function () { return reducers_1.defineReducers; } });
36
+ Object.defineProperty(exports, "enumToString", { enumerable: true, get: function () { return reducers_1.enumToString; } });
37
+ Object.defineProperty(exports, "missingReducerMessage", { enumerable: true, get: function () { return reducers_1.missingReducerMessage; } });
38
+ Object.defineProperty(exports, "missingReducerNames", { enumerable: true, get: function () { return reducers_1.missingReducerNames; } });
39
+ Object.defineProperty(exports, "namedProductions", { enumerable: true, get: function () { return reducers_1.namedProductions; } });
40
+ Object.defineProperty(exports, "KLEENE_REDUCER_NAME", { enumerable: true, get: function () { return reducers_1.KLEENE_REDUCER_NAME; } });
41
+ var loadFiles_1 = require("./utils/loadFiles");
42
+ Object.defineProperty(exports, "loadGrammar", { enumerable: true, get: function () { return loadFiles_1.loadGrammar; } });
43
+ Object.defineProperty(exports, "loadTable", { enumerable: true, get: function () { return loadFiles_1.loadTable; } });
44
+ var errorWindowBuilder_1 = require("./utils/errorWindowBuilder");
45
+ Object.defineProperty(exports, "buildErrorWindow", { enumerable: true, get: function () { return errorWindowBuilder_1.buildErrorWindow; } });
46
+ var Stack_1 = require("./utils/Stack");
47
+ Object.defineProperty(exports, "Stack", { enumerable: true, get: function () { return Stack_1.Stack; } });
15
48
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8D;AAArD,4GAAA,eAAe,OAAA;AAAE,2GAAA,cAAc,OAAA;AACxC,gDAA0E;AAAjE,8GAAA,gBAAgB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAE9C,mCAOkB;AALhB,gGAAA,MAAM,OAAA;AACN,6GAAA,mBAAmB,OAAA;AAKrB,iDAAiD;AAAxC,yGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8D;AAArD,4GAAA,eAAe,OAAA;AAAE,2GAAA,cAAc,OAAA;AAGxC,gDAK2B;AAJzB,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AACrB,0HAAA,4BAA4B,OAAA;AAK9B,mCAWkB;AAThB,gGAAA,MAAM,OAAA;AACN,4GAAA,kBAAkB,OAAA;AAClB,6GAAA,mBAAmB,OAAA;AAEnB,mGAAA,SAAS,OAAA;AAIT,oGAAA,UAAU,OAAA;AAIZ,iDAAiE;AAAxD,yGAAA,WAAW,OAAA;AAAE,4GAAA,cAAc,OAAA;AAEpC,6CAAsE;AAA7D,yGAAA,aAAa,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAG3C,wCASuB;AARrB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,8GAAA,oBAAoB,OAAA;AACpB,+GAAA,qBAAqB,OAAA;AACrB,4GAAA,kBAAkB,OAAA;AAClB,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAClB,0GAAA,gBAAgB,OAAA;AAYlB,6CAQ0B;AAPxB,sHAAA,0BAA0B,OAAA;AAC1B,0GAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAA;AACZ,iHAAA,qBAAqB,OAAA;AACrB,+GAAA,mBAAmB,OAAA;AACnB,4GAAA,gBAAgB,OAAA;AAChB,+GAAA,mBAAmB,OAAA;AAIrB,+CAA2D;AAAlD,wGAAA,WAAW,OAAA;AAAE,sGAAA,SAAS,OAAA;AAE/B,iEAA8D;AAArD,sHAAA,gBAAgB,OAAA;AACzB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA"}
@@ -1,4 +1,5 @@
1
1
  import { Token } from "@scinorandex/slex";
2
+ import { Result } from "../utils/Result";
2
3
  export type Production = {
3
4
  lhs: GrammarToken;
4
5
  identifier: string;
@@ -11,6 +12,7 @@ export type Production = {
11
12
  name: string | null;
12
13
  }[];
13
14
  };
15
+ export type ProductionRhsItem = Production["rhs"][number];
14
16
  export declare const dehydateProduction: (opts: Production) => {
15
17
  lhs: {
16
18
  column: number;
@@ -35,6 +37,21 @@ export declare const dehydateProduction: (opts: Production) => {
35
37
  };
36
38
  export declare const hydrateProduction: (production: ReturnType<typeof dehydateProduction>) => Production;
37
39
  export type GrammarTokenMetadata = {};
40
+ export declare const describeThrowable: (err: unknown) => string;
41
+ export declare const syntheticGrammarToken: () => GrammarToken;
42
+ export type ProductionWarningKind = "duplicate-rhs-name" | "unreachable-production";
43
+ export type ProductionWarning = {
44
+ kind: ProductionWarningKind;
45
+ reason: string;
46
+ token: GrammarToken;
47
+ };
48
+ export type ValidateProductionsOptions = {
49
+ onWarning?: (warning: ProductionWarning) => void;
50
+ };
51
+ export declare const validateProductions: (productions: Production[], options?: ValidateProductionsOptions) => Result<Production[]>;
52
+ export declare const isVariableIdentifier: (identifier: string) => boolean;
53
+ export declare const terminalIdentifier: (name: string) => string;
54
+ export declare const variableIdentifier: (name: string) => string;
38
55
  export declare enum GrammarTokenType {
39
56
  IDENTIFIER = 0,
40
57
  L_ANGLE = 1,