@scinorandex/sparse 0.0.7 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md ADDED
@@ -0,0 +1,40 @@
1
+ # AGENTS.md
2
+
3
+ `@scinorandex/sparse` — LR(1) parser generator library (TypeScript, CJS via tsc, yarn 1).
4
+ Single package: `src/` = library + CLI, `example/` = runnable demos. README.md is the user-facing doc.
5
+
6
+ ## Commands
7
+ - Typecheck: `yarn tc` (covers src/ and example/)
8
+ - Build: `yarn build` → `dist/` (CLI is `dist/cli.js`)
9
+ - Run examples: `tsx example/<name>/example.ts` — tsx is global, not a repo dep; `node file.ts` fails (enums)
10
+ - Table CLI: `node dist/cli.js --input=<grammar> --output=<table>` (build first); output matches committed tables exactly
11
+ - `yarn test` / `yarn bench` (vitest) exist but there are no test/bench files — `yarn test` fails with "No test files found". Verify via examples + `yarn tc` instead.
12
+ - `dist/` and `yarn.lock` are gitignored.
13
+
14
+ ## Self-hosting / codegen (critical, easy to break)
15
+ - The lib parses its own grammar-file and table-file formats using **pre-generated** LR(1) states:
16
+ `src/meta/states.ts` (grammar format) and `src/table/states.ts` (table format) are generated files —
17
+ byte-identical copies of `example/selfhosted/codegen-meta.ts` and `codegen-table.ts`.
18
+ - To change the grammar/table file syntax: edit `example/selfhosted/01-meta-grammar.txt` and/or
19
+ `02-table-grammar.txt`, run `tsx example/selfhosted/example.ts`, then copy the regenerated
20
+ `codegen-*.ts` over the two `src/.../states.ts` files. The old (checked-in) parser must still
21
+ parse the modified grammar (bootstrap constraint).
22
+
23
+ ## Non-obvious behavior
24
+ - `?`, `*`, `+` groups and multi-token alternatives are unrolled into extra productions; `*`/`+`
25
+ create `autogen-N` productions whose reducer is named `autogenerated-kleene` — user reducers must
26
+ handle it (see `example/kleene-test/`).
27
+ - Two construction paths: `Sparse.fromProductions(...)` builds states at runtime (slow, ~30s for
28
+ 150 productions) vs `new Sparse({ productions, states: buildStates(table.txt) })` (fast).
29
+ - Reducers are keyed by production name (`<LHS: name>` in the grammar file); nameless productions
30
+ have `name: null` (use `reducers[name ?? ""]`). Production index 0 is the accept production —
31
+ the parse loop breaks on it without calling the reducer.
32
+ - Table file format: one line per state, comma-separated `[TERMINAL]=sN|rN` and `<VARIABLE>=M`.
33
+ - Errors flow as `Result<T>` (`{ success: false, reason, token }`); `buildProductions` /
34
+ `Sparse.fromProductions` are the throwing wrappers.
35
+
36
+ ## Key files
37
+ - `src/generator.ts` — LR(1) state construction (first/follow sets, item-set expansion), `toTable()` serialization
38
+ - `src/parser.ts` — runtime parser loop + `recover` error-recovery callback API
39
+ - `src/meta/selfhosted.ts` — grammar-file parser + production unrolling
40
+ - `example/` — `math` (prebuilt table), `kleene-test` (`*`/`+`), `LoLang` (large grammar + recovery), `complicated` (grammar only), `selfhosted` (codegen)
package/README.md CHANGED
@@ -107,10 +107,12 @@ console.log(parser.parse().result!.toObject());
107
107
 
108
108
  ## Exporting and Loading the Parsing Table
109
109
 
110
- It takes a while for Sparse to build states (around 30 seconds for a file containing 150 productions). This can be alleviated by generating the parsing table and loading the states directly instead. This method also allows you to edit the parsing table to resolve parsing conflicts.
110
+ It takes a while for Sparse to build states (around 0.5 seconds seconds for a file containing 150 productions). This can be alleviated by generating the parsing table and loading the states directly instead. This method also allows you to edit the parsing table to resolve parsing conflicts.
111
111
 
112
112
  To create the the states, you can run `npx @scinorandex/sparse --input=<input> --output=<output>`.
113
113
 
114
+ By default, LR(1) states are generated. You can generate LALR(1) states instead by passing the `--lalr` flag (or setting `mode: "lalr1"` in `Sparse.fromProductions`): the resulting table is never larger than the LR(1) one, but generation fails if the grammar is not LALR(1). Using LALR(1) yields a ~35% performance boost over LR(1) for the same grammar (tested on the LoLang example).
115
+
114
116
  Afterwards, you can create a parser with pre-built states like the following:
115
117
 
116
118
  ```ts
@@ -124,9 +126,8 @@ async function main() {
124
126
  }
125
127
  ```
126
128
 
127
- ---
129
+ ## AI Disclaimer
128
130
 
129
- ## Roadmap
131
+ This project was originally written without the use of AI tools, the core LR(1) table generator was written by hand as per the algorithms described in the Dragon Book. Every release prior to v0.1 contained no AI generated code.
130
132
 
131
- 1. Support grouping and other modifiers in the CFG. Currently, you have to unroll your grammar and remove kleene-star, kleene-plus, and other modifiers.
132
- 2. Potentially add LALR(1) support. Currently, the parser only supports outputting LR(1) tables. Tables can be significantly smaller if it made LALR(1) tables instead.
133
+ OpenCode and Qwen 3.8 27B were to implement performance improvements on the original LR(1) table generator and to implement LALR(1) support.
package/dist/cli.js CHANGED
@@ -20,7 +20,7 @@ function checkFileExists(filepath) {
20
20
  }
21
21
  async function main() {
22
22
  if (typeof args.input !== "string" || typeof args.output !== "string") {
23
- console.log("Usage: npx @scinorandex/sparse --input=<input> --output=<output>");
23
+ console.log("Usage: npx @scinorandex/sparse --input=<input> --output=<output> [--lalr]");
24
24
  return;
25
25
  }
26
26
  const inputFile = path_1.default.resolve(args.input);
@@ -35,7 +35,7 @@ async function main() {
35
35
  console.log((0, errorWindowBuilder_1.buildErrorWindow)(grammar, productionsResult.token));
36
36
  return;
37
37
  }
38
- const generatorResult = (0, generator_1.generateStates)(productionsResult.value);
38
+ const generatorResult = (0, generator_1.generateStates)(productionsResult.value, { mode: args.lalr === true ? "lalr1" : "lr1" });
39
39
  if (generatorResult.success === false) {
40
40
  console.log(generatorResult.reason);
41
41
  console.log((0, errorWindowBuilder_1.buildErrorWindow)(grammar, generatorResult.token));
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":";;;;;;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,2EAA2E,CAAC,CAAC;QACzF,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,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAChH,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"}
@@ -4,13 +4,18 @@ 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
+ };
18
+ export declare const generateStates: (productions: Production[], options?: GeneratorOptions) => Result<GeneratorResult>;
14
19
  export declare class GeneratorResult {
15
20
  readonly states: State[];
16
21
  readonly ActionTable: Map<string, {
package/dist/generator.js CHANGED
@@ -94,7 +94,9 @@ function computeFollowSets(allProductions) {
94
94
  }
95
95
  return { success: true, value: { firstSets, followSets: ret } };
96
96
  }
97
- const generateStates = (productions) => {
97
+ const KEY_SEP = "\x00";
98
+ const FIELD_SEP = "\x01";
99
+ const generateStates = (productions, options = {}) => {
98
100
  const followSetsResult = computeFollowSets(productions);
99
101
  if (followSetsResult.success == false)
100
102
  return followSetsResult;
@@ -124,41 +126,74 @@ const generateStates = (productions) => {
124
126
  };
125
127
  }
126
128
  };
127
- function generateInitialItemSet(production) {
129
+ const productionIndicesByLhs = new Map();
130
+ for (let i = 0; i < productions.length; i++) {
131
+ const indexList = productionIndicesByLhs.get(productions[i].identifier);
132
+ if (indexList == undefined)
133
+ productionIndicesByLhs.set(productions[i].identifier, [i]);
134
+ else
135
+ indexList.push(i);
136
+ }
137
+ 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}`; };
138
+ const reduceValue = [];
139
+ {
140
+ const lowestIndexBySignature = new Map();
141
+ for (let i = 0; i < productions.length; i++) {
142
+ const production = productions[i];
143
+ const signature = `${production.identifier}${FIELD_SEP}${production.rhs.map(rhsEntrySignature).join(FIELD_SEP)}`;
144
+ const lowest = lowestIndexBySignature.get(signature);
145
+ if (lowest == undefined)
146
+ lowestIndexBySignature.set(signature, i);
147
+ reduceValue[i] = lowestIndexBySignature.get(signature);
148
+ }
149
+ }
150
+ const itemKey = (prodIndex, dot, lookahead) => `${prodIndex}${KEY_SEP}${dot}${KEY_SEP}${lookahead.join(FIELD_SEP)}`;
151
+ const itemSetSignature = (itemSet) => itemSet.map((item) => item.key).join(FIELD_SEP);
152
+ function generateInitialItemSet(production, prodIndex) {
153
+ const lookahead = [EOF_STRING];
128
154
  const initialItem = {
129
155
  lhs: production.lhs,
130
156
  identifier: production.identifier,
131
157
  rhs: production.rhs,
132
158
  dot: 0,
133
- lookahead: [EOF_STRING],
159
+ lookahead,
160
+ prodIndex,
161
+ key: itemKey(prodIndex, 0, lookahead),
134
162
  };
135
163
  return expandItemSet([initialItem]);
136
164
  }
137
165
  function expandItemSet(items) {
166
+ var _a;
138
167
  const itemSet = [...items];
168
+ const knownItems = new Set(items.map((item) => item.key));
139
169
  const unprocesssedItems = [...items];
140
- while (unprocesssedItems.length > 0) {
141
- const currentItem = unprocesssedItems.shift();
170
+ let queuePosition = 0;
171
+ while (queuePosition < unprocesssedItems.length) {
172
+ const currentItem = unprocesssedItems[queuePosition++];
142
173
  const after = currentItem.rhs[currentItem.dot];
143
174
  if (after == null)
144
175
  continue;
145
176
  if (after.type === "variable") {
146
- const newProductions = productions.filter((p) => p.identifier === after.identifier);
147
177
  const rest = currentItem.rhs.slice(currentItem.dot + 1);
148
178
  const lookaheadResult = determineNextLookAhead(currentItem.lhs, currentItem.identifier, rest);
149
179
  if (lookaheadResult.success === false)
150
180
  return lookaheadResult;
151
181
  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) {
182
+ const productionIndices = (_a = productionIndicesByLhs.get(after.identifier)) !== null && _a !== void 0 ? _a : [];
183
+ for (const prodIndex of productionIndices) {
184
+ const newProduction = productions[prodIndex];
185
+ const key = itemKey(prodIndex, 0, lookahead);
186
+ if (knownItems.has(key) == false) {
187
+ knownItems.add(key);
188
+ const newItem = {
189
+ lhs: newProduction.lhs,
190
+ identifier: newProduction.identifier,
191
+ rhs: newProduction.rhs,
192
+ dot: 0,
193
+ lookahead,
194
+ prodIndex,
195
+ key,
196
+ };
162
197
  unprocesssedItems.push(newItem);
163
198
  itemSet.push(newItem);
164
199
  }
@@ -167,7 +202,7 @@ const generateStates = (productions) => {
167
202
  }
168
203
  return { success: true, value: { itemSet, kernel: items[0] } };
169
204
  }
170
- const initialItemSetResult = generateInitialItemSet(productions[0]);
205
+ const initialItemSetResult = generateInitialItemSet(productions[0], 0);
171
206
  if (initialItemSetResult.success === false)
172
207
  return initialItemSetResult;
173
208
  const initialItemSet = initialItemSetResult.value;
@@ -177,24 +212,24 @@ const generateStates = (productions) => {
177
212
  const unprocessedStates = [initialState];
178
213
  const GotoTable = [];
179
214
  const ActionTable = [];
180
- while (unprocessedStates.length > 0) {
181
- const currentState = unprocessedStates.shift();
215
+ const stateIndexBySignature = new Map();
216
+ stateIndexBySignature.set(itemSetSignature(initialState.itemSet), 0);
217
+ let statePosition = 0;
218
+ while (statePosition < unprocessedStates.length) {
219
+ const currentState = unprocessedStates[statePosition++];
182
220
  const nextStates_Goto = new Map();
183
221
  const nextStates_Shift = new Map();
184
222
  calculateNextItem: for (const item of currentState.itemSet) {
185
223
  const nextSymbol = item.rhs[item.dot];
186
224
  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
225
  for (const lookahead of item.lookahead) {
191
226
  if (ActionTable[currentState.count] === undefined)
192
227
  ActionTable[currentState.count] = new Map();
193
- ActionTable[currentState.count].set(lookahead, { action: "reduce", value: productionToReduceTo });
228
+ ActionTable[currentState.count].set(lookahead, { action: "reduce", value: reduceValue[item.prodIndex] });
194
229
  }
195
230
  continue calculateNextItem;
196
231
  }
197
- const newItem = Object.assign(Object.assign({}, item), { dot: item.dot + 1 });
232
+ const newItem = Object.assign(Object.assign({}, item), { dot: item.dot + 1, key: itemKey(item.prodIndex, item.dot + 1, item.lookahead) });
198
233
  if (nextSymbol.type === "variable") {
199
234
  if (nextStates_Goto.has(nextSymbol.identifier))
200
235
  nextStates_Goto.get(nextSymbol.identifier).push(newItem);
@@ -213,17 +248,11 @@ const generateStates = (productions) => {
213
248
  if (expandedItemsResult.success === false)
214
249
  return expandedItemsResult;
215
250
  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
- });
251
+ const signature = itemSetSignature(expandedItems.itemSet);
252
+ let existingStateIndex = stateIndexBySignature.get(signature);
224
253
  if (GotoTable[currentState.count] === undefined)
225
254
  GotoTable[currentState.count] = new Map();
226
- if (existingState == undefined) {
255
+ if (existingStateIndex == undefined) {
227
256
  const newState = {
228
257
  itemSet: expandedItems.itemSet,
229
258
  kernel: expandedItems.kernel,
@@ -231,26 +260,21 @@ const generateStates = (productions) => {
231
260
  };
232
261
  states.push(newState);
233
262
  unprocessedStates.push(newState);
234
- existingState = newState;
263
+ stateIndexBySignature.set(signature, newState.count);
264
+ existingStateIndex = newState.count;
235
265
  }
236
- GotoTable[currentState.count].set(gotoTransition, existingState.count);
266
+ GotoTable[currentState.count].set(gotoTransition, existingStateIndex);
237
267
  }
238
268
  for (const [shiftTransition, shiftItems] of nextStates_Shift.entries()) {
239
269
  const expandedItemsResult = expandItemSet(shiftItems);
240
270
  if (expandedItemsResult.success === false)
241
271
  return expandedItemsResult;
242
272
  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
- });
273
+ const signature = itemSetSignature(expandedItems.itemSet);
274
+ let existingStateIndex = stateIndexBySignature.get(signature);
251
275
  if (ActionTable[currentState.count] === undefined)
252
276
  ActionTable[currentState.count] = new Map();
253
- if (existingState == undefined) {
277
+ if (existingStateIndex == undefined) {
254
278
  const newState = {
255
279
  itemSet: expandedItems.itemSet,
256
280
  kernel: expandedItems.kernel,
@@ -258,9 +282,10 @@ const generateStates = (productions) => {
258
282
  };
259
283
  states.push(newState);
260
284
  unprocessedStates.push(newState);
261
- existingState = newState;
285
+ stateIndexBySignature.set(signature, newState.count);
286
+ existingStateIndex = newState.count;
262
287
  }
263
- ActionTable[currentState.count].set(shiftTransition, { action: "shift", value: existingState.count });
288
+ ActionTable[currentState.count].set(shiftTransition, { action: "shift", value: existingStateIndex });
264
289
  }
265
290
  }
266
291
  return { success: true, value: { states, GotoTable, ActionTable } };
@@ -269,9 +294,89 @@ const generateStates = (productions) => {
269
294
  if (StatesResult.success === false)
270
295
  return StatesResult;
271
296
  const { states, ActionTable, GotoTable } = StatesResult.value;
297
+ if (options.mode === "lalr1") {
298
+ const merged = mergeStatesForLALR(states, ActionTable, GotoTable);
299
+ if (merged.success === false)
300
+ return merged;
301
+ return {
302
+ success: true,
303
+ value: new GeneratorResult(merged.value.states, merged.value.ActionTable, merged.value.GotoTable),
304
+ };
305
+ }
272
306
  return { success: true, value: new GeneratorResult(states, ActionTable, GotoTable) };
273
307
  };
274
308
  exports.generateStates = generateStates;
309
+ function mergeStatesForLALR(states, ActionTable, GotoTable) {
310
+ const itemSkeleton = (item) => `${item.prodIndex}${KEY_SEP}${item.dot}`;
311
+ const stateSkeleton = (state) => state.itemSet.map(itemSkeleton).sort().join(FIELD_SEP);
312
+ const groupIndices = [];
313
+ const groupBySkeleton = new Map();
314
+ const oldToNew = new Array(states.length);
315
+ for (let i = 0; i < states.length; i++) {
316
+ const skeleton = stateSkeleton(states[i]);
317
+ let group = groupBySkeleton.get(skeleton);
318
+ if (group == undefined) {
319
+ group = groupIndices.length;
320
+ groupBySkeleton.set(skeleton, group);
321
+ groupIndices.push([]);
322
+ }
323
+ groupIndices[group].push(i);
324
+ oldToNew[i] = group;
325
+ }
326
+ const describeAction = (a) => a.action === "reduce" ? `reduce by production ${a.value}` : `shift to state ${a.value}`;
327
+ const conflictToken = (members) => states[members[0]].kernel.lhs;
328
+ const conflict = (g, members, reason) => ({
329
+ success: false,
330
+ reason: `LALR(1) conflict in state ${g} on ${reason} between LR(1) states ${members.join(", ")}: the grammar is not LALR(1)`,
331
+ token: conflictToken(members),
332
+ });
333
+ const newStates = [];
334
+ const newActionTable = [];
335
+ const newGotoTable = [];
336
+ for (let g = 0; g < groupIndices.length; g++) {
337
+ const members = groupIndices[g];
338
+ const actions = new Map();
339
+ const gotos = new Map();
340
+ for (const member of members) {
341
+ for (const [key, entry] of ActionTable[member].entries()) {
342
+ const value = {
343
+ action: entry.action,
344
+ value: entry.action === "shift" ? oldToNew[entry.value] : entry.value,
345
+ };
346
+ const existing = actions.get(key);
347
+ if (existing == undefined)
348
+ actions.set(key, value);
349
+ else if (existing.action !== value.action || existing.value !== value.value)
350
+ return conflict(g, members, `"${key}": ${describeAction(existing)} conflicts with ${describeAction(value)}`);
351
+ }
352
+ if (GotoTable[member] !== undefined)
353
+ for (const [key, target] of GotoTable[member].entries()) {
354
+ const value = oldToNew[target];
355
+ const existing = gotos.get(key);
356
+ if (existing == undefined)
357
+ gotos.set(key, value);
358
+ else if (existing !== value)
359
+ return conflict(g, members, `"${key}": goto to state ${existing} conflicts with goto to state ${value}`);
360
+ }
361
+ }
362
+ const itemsBySkeleton = new Map();
363
+ for (const member of members)
364
+ for (const item of states[member].itemSet) {
365
+ const skeleton = itemSkeleton(item);
366
+ const existing = itemsBySkeleton.get(skeleton);
367
+ if (existing == undefined)
368
+ itemsBySkeleton.set(skeleton, Object.assign(Object.assign({}, item), { lookahead: [...item.lookahead] }));
369
+ else
370
+ for (const lookahead of item.lookahead)
371
+ if (!existing.lookahead.includes(lookahead))
372
+ existing.lookahead.push(lookahead);
373
+ }
374
+ newStates.push({ itemSet: [...itemsBySkeleton.values()], kernel: states[members[0]].kernel, count: g });
375
+ newActionTable.push(actions);
376
+ newGotoTable.push(gotos);
377
+ }
378
+ return { success: true, value: { states: newStates, ActionTable: newActionTable, GotoTable: newGotoTable } };
379
+ }
275
380
  class GeneratorResult {
276
381
  constructor(states, ActionTable, GotoTable) {
277
382
  this.states = states;
@@ -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,4 +1,5 @@
1
1
  export { GeneratorResult, generateStates } from "./generator";
2
+ export type { GeneratorOptions } from "./generator";
2
3
  export { buildProductions, tryBuildProductions } from "./meta/selfhosted";
3
4
  export { Result } from "./utils/Result";
4
5
  export { ParserRecoveryFunction, Sparse, LR1ParserGraveError, LR1StackSymbol, ParserResult, ParserError, } from "./parser";
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;AAExC,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"}
@@ -45,15 +45,17 @@ export declare enum GrammarTokenType {
45
45
  R_PAREN = 6,
46
46
  PIPE = 7,
47
47
  QUESTION_MARK = 8,
48
- COLON = 9,
49
- SEMICOLON = 10,
50
- NUMBER = 11,
51
- EQUALS = 12,
52
- COMMA = 13,
53
- EOF = 14,
54
- SINGLE_LINE_COMMENT = 15,
55
- MULTI_LINE_COMMENT = 16,
56
- PRODUCTION_NAME = 17,
57
- TOKEN_NAME = 18
48
+ STAR = 9,
49
+ PLUS = 10,
50
+ COLON = 11,
51
+ SEMICOLON = 12,
52
+ NUMBER = 13,
53
+ EQUALS = 14,
54
+ COMMA = 15,
55
+ EOF = 16,
56
+ SINGLE_LINE_COMMENT = 17,
57
+ MULTI_LINE_COMMENT = 18,
58
+ PRODUCTION_NAME = 19,
59
+ TOKEN_NAME = 20
58
60
  }
59
61
  export type GrammarToken = Token<GrammarTokenType, GrammarTokenMetadata>;
@@ -50,15 +50,17 @@ var GrammarTokenType;
50
50
  GrammarTokenType[GrammarTokenType["R_PAREN"] = 6] = "R_PAREN";
51
51
  GrammarTokenType[GrammarTokenType["PIPE"] = 7] = "PIPE";
52
52
  GrammarTokenType[GrammarTokenType["QUESTION_MARK"] = 8] = "QUESTION_MARK";
53
- GrammarTokenType[GrammarTokenType["COLON"] = 9] = "COLON";
54
- GrammarTokenType[GrammarTokenType["SEMICOLON"] = 10] = "SEMICOLON";
55
- GrammarTokenType[GrammarTokenType["NUMBER"] = 11] = "NUMBER";
56
- GrammarTokenType[GrammarTokenType["EQUALS"] = 12] = "EQUALS";
57
- GrammarTokenType[GrammarTokenType["COMMA"] = 13] = "COMMA";
58
- GrammarTokenType[GrammarTokenType["EOF"] = 14] = "EOF";
59
- GrammarTokenType[GrammarTokenType["SINGLE_LINE_COMMENT"] = 15] = "SINGLE_LINE_COMMENT";
60
- GrammarTokenType[GrammarTokenType["MULTI_LINE_COMMENT"] = 16] = "MULTI_LINE_COMMENT";
61
- GrammarTokenType[GrammarTokenType["PRODUCTION_NAME"] = 17] = "PRODUCTION_NAME";
62
- GrammarTokenType[GrammarTokenType["TOKEN_NAME"] = 18] = "TOKEN_NAME";
53
+ GrammarTokenType[GrammarTokenType["STAR"] = 9] = "STAR";
54
+ GrammarTokenType[GrammarTokenType["PLUS"] = 10] = "PLUS";
55
+ GrammarTokenType[GrammarTokenType["COLON"] = 11] = "COLON";
56
+ GrammarTokenType[GrammarTokenType["SEMICOLON"] = 12] = "SEMICOLON";
57
+ GrammarTokenType[GrammarTokenType["NUMBER"] = 13] = "NUMBER";
58
+ GrammarTokenType[GrammarTokenType["EQUALS"] = 14] = "EQUALS";
59
+ GrammarTokenType[GrammarTokenType["COMMA"] = 15] = "COMMA";
60
+ GrammarTokenType[GrammarTokenType["EOF"] = 16] = "EOF";
61
+ GrammarTokenType[GrammarTokenType["SINGLE_LINE_COMMENT"] = 17] = "SINGLE_LINE_COMMENT";
62
+ GrammarTokenType[GrammarTokenType["MULTI_LINE_COMMENT"] = 18] = "MULTI_LINE_COMMENT";
63
+ GrammarTokenType[GrammarTokenType["PRODUCTION_NAME"] = 19] = "PRODUCTION_NAME";
64
+ GrammarTokenType[GrammarTokenType["TOKEN_NAME"] = 20] = "TOKEN_NAME";
63
65
  })(GrammarTokenType || (exports.GrammarTokenType = GrammarTokenType = {}));
64
66
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/meta/common.ts"],"names":[],"mappings":";;;AAAA,4CAAwD;AAUxD,MAAM,oBAAoB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAgB,EAAE,EAAE;IAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,KAA8C,EACC,EAAE;IACjD,OAAO,IAAI,YAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO;QACL,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;QAC9B,UAAU;QACV,IAAI;QACJ,uBAAuB;QACvB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI;YACJ,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAClC,UAAU;YACV,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,UAAiD,EAAc,EAAE;IACjG,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC;QACxC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;QAC3D,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACjC,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAGF,IAAY,gBAqBX;AArBD,WAAY,gBAAgB;IAC1B,mEAAU,CAAA;IACV,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,iEAAS,CAAA;IACT,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,uDAAI,CAAA;IACJ,yEAAa,CAAA;IACb,yDAAK,CAAA;IACL,kEAAS,CAAA;IACT,4DAAM,CAAA;IACN,4DAAM,CAAA;IACN,0DAAK,CAAA;IACL,sDAAG,CAAA;IACH,sFAAmB,CAAA;IACnB,oFAAkB,CAAA;IAElB,8EAAe,CAAA;IACf,oEAAU,CAAA;AACZ,CAAC,EArBW,gBAAgB,gCAAhB,gBAAgB,QAqB3B"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/meta/common.ts"],"names":[],"mappings":";;;AAAA,4CAAwD;AAUxD,MAAM,oBAAoB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAgB,EAAE,EAAE;IAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,KAA8C,EACC,EAAE;IACjD,OAAO,IAAI,YAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO;QACL,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;QAC9B,UAAU;QACV,IAAI;QACJ,uBAAuB;QACvB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI;YACJ,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAClC,UAAU;YACV,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,UAAiD,EAAc,EAAE;IACjG,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC;QACxC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;QAC3D,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACjC,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAGF,IAAY,gBAuBX;AAvBD,WAAY,gBAAgB;IAC1B,mEAAU,CAAA;IACV,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,iEAAS,CAAA;IACT,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,uDAAI,CAAA;IACJ,yEAAa,CAAA;IACb,uDAAI,CAAA;IACJ,wDAAI,CAAA;IACJ,0DAAK,CAAA;IACL,kEAAS,CAAA;IACT,4DAAM,CAAA;IACN,4DAAM,CAAA;IACN,0DAAK,CAAA;IACL,sDAAG,CAAA;IACH,sFAAmB,CAAA;IACnB,oFAAkB,CAAA;IAElB,8EAAe,CAAA;IACf,oEAAU,CAAA;AACZ,CAAC,EAvBW,gBAAgB,gCAAhB,gBAAgB,QAuB3B"}