@scinorandex/sparse 0.1.2 → 0.1.3

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 CHANGED
@@ -54,7 +54,7 @@ README.md is the user-facing doc (grammar syntax, reducer contract, recovery gui
54
54
  - `src/meta/selfhosted.ts` — grammar-file parser + production unrolling
55
55
  - `src/meta/common.ts` — `Production` type + `validateProductions`
56
56
  - `src/table/selfhosted.ts` — table-file parser (`tryBuildStates`), `src/table/validate.ts` — table validation
57
- - `src/cli.ts` — `--input/--output/--lalr/--check/--stdout/--quiet/--help`
57
+ - `src/cli.ts` — `--input/--output/--lalr/--check/--stdout/--help`
58
58
  - `example/` — `math` (prebuilt table), `kleene-test` (`*`/`+`), `LoLang` (large grammar + recovery, exports
59
59
  its lexer for the tests), `selfhosted` (codegen)
60
60
  - `test/` — `grammar`, `table`, `parser`, `lalr`, `codegen`, `cli`
package/README.md CHANGED
@@ -11,15 +11,21 @@ Sparse allows developers to easily create LR(1) parsers and LR(1) parsing tables
11
11
 
12
12
  ## Table of contents
13
13
 
14
+ - [Sparse - Scin's Parsing Library](#sparse---scins-parsing-library)
15
+ - [Table of contents](#table-of-contents)
14
16
  - [Getting started](#getting-started)
15
17
  - [Grammar syntax reference](#grammar-syntax-reference)
16
- - [Building a parser](#building-a-parser)
18
+ - [What Sparse checks for you](#what-sparse-checks-for-you)
17
19
  - [Reducers](#reducers)
18
20
  - [Repetition with `*` and `+`](#repetition-with--and-)
19
21
  - [Error recovery](#error-recovery)
20
22
  - [Generating and shipping the parsing table](#generating-and-shipping-the-parsing-table)
21
23
  - [API reference](#api-reference)
24
+ - [Reading and writing grammars](#reading-and-writing-grammars)
25
+ - [Building parsers](#building-parsers)
26
+ - [Helpers](#helpers)
22
27
  - [Known limitations](#known-limitations)
28
+ - [AI Disclaimer](#ai-disclaimer)
23
29
 
24
30
  ## Getting started
25
31
 
@@ -139,16 +145,16 @@ async function main() {
139
145
 
140
146
  A grammar file is a list of productions. Whitespace is insignificant, `//` starts a line comment, and `/* ... */` spans lines.
141
147
 
142
- | Syntax | Meaning |
143
- | --- | --- |
144
- | `<A>: <B> [C];` | `A` is made of one `B` followed by one `C` |
145
- | `<A: name>: ...;` | The production is *named*: its reducer is looked up under `name` |
146
- | `[TOK: name]` | Names the terminal on the right hand side so it shows up on the reducer's `bag` |
147
- | `<VAR: name>` | Same, for a variable |
148
- | `[A | B]` | Alternatives: unrolled into one production per alternative |
149
- | `<A | B>` | Same, for variables |
150
- | `([A] [B])?` | Optional group, unrolled into one production with and one without it |
151
- | `// comment`, `/* comment */` | Comments |
148
+ | Syntax | Meaning |
149
+ | ----------------------------- | ------------------------------------------------------------------------------- |
150
+ | `<A>: <B> [C];` | `A` is made of one `B` followed by one `C` |
151
+ | `<A: name>: ...;` | The production is *named*: its reducer is looked up under `name` |
152
+ | `[TOK: name]` | Names the terminal on the right hand side so it shows up on the reducer's `bag` |
153
+ | `<VAR: name>` | Same, for a variable |
154
+ | `[A | B]` | Alternatives: unrolled into one production per alternative |
155
+ | `<A | B>` | Same, for variables |
156
+ | `([A] [B])?` | Optional group, unrolled into one production with and one without it |
157
+ | `// comment`, `/* comment */` | Comments |
152
158
 
153
159
  Identifiers may contain letters, digits, `_` and `-`, and must start with a letter or `_`.
154
160
 
@@ -258,13 +264,13 @@ try {
258
264
  Pass a `recover` function to decide what happens instead. It receives the lexer, both stacks, the table,
259
265
  and these helpers:
260
266
 
261
- | Helper | What it does |
262
- | --- | --- |
263
- | `addError(reason)` | Records an error, keeps parsing, and returns it in `parse().errors` |
264
- | `crash(reason)` | Stops parsing and throws a `LR1ParserGraveError` |
265
- | `finish(options?)` | Stops recovery and carries on parsing from the current state |
266
- | `insertToken(token)` | Shifts a token the input did not have, e.g. a synthesized `;` |
267
- | `isSafe()` | True when the current state can consume the next real token |
267
+ | Helper | What it does |
268
+ | -------------------- | ------------------------------------------------------------------- |
269
+ | `addError(reason)` | Records an error, keeps parsing, and returns it in `parse().errors` |
270
+ | `crash(reason)` | Stops parsing and throws a `LR1ParserGraveError` |
271
+ | `finish(options?)` | Stops recovery and carries on parsing from the current state |
272
+ | `insertToken(token)` | Shifts a token the input did not have, e.g. a synthesized `;` |
273
+ | `isSafe()` | True when the current state can consume the next real token |
268
274
 
269
275
  ```ts
270
276
  const parser = parserGenerator.generate(lexer, {
@@ -306,15 +312,15 @@ generate the table once at build time and commit it:
306
312
  npx sparse --input=grammar.txt --output=table.txt
307
313
  ```
308
314
 
309
- | Flag | Meaning |
310
- | --- | --- |
311
- | `--input=<file>` | Grammar to read (required) |
312
- | `--output=<file>` | Table to write; missing directories are created |
313
- | `--lalr` | Generate LALR(1) states instead of LR(1) |
314
- | `--check` | Write nothing; verify that `<output>` already matches the grammar |
315
- | `--stdout` | Print the table instead of writing it |
316
- | `--quiet` | Hide warnings about suspicious rules |
317
- | `--help` | Usage |
315
+ | Flag | Meaning |
316
+ | ----------------- | ----------------------------------------------------------------- |
317
+ | `--input=<file>` | Grammar to read (required) |
318
+ | `--output=<file>` | Table to write; missing directories are created |
319
+ | `--lalr` | Generate LALR(1) states instead of LR(1) |
320
+ | `--check` | Write nothing; verify that `<output>` already matches the grammar |
321
+ | `--stdout` | Print the table instead of writing it |
322
+ | `--quiet` | Hide warnings about suspicious rules |
323
+ | `--help` | Usage |
318
324
 
319
325
  By default, LR(1) states are generated. You can generate LALR(1) states instead by passing the `--lalr`
320
326
  flag (or setting `mode: "lalr1"` in `Sparse.fromProductions`): the resulting table is never larger than
@@ -333,42 +339,42 @@ Then load the table with `Sparse.fromGrammarFile`, as shown in [Getting started]
333
339
 
334
340
  ### Reading and writing grammars
335
341
 
336
- | Function | Returns |
337
- | --- | --- |
342
+ | Function | Returns |
343
+ | ---------------------------------------------------------- | -------------------------------------------------------------------------------------- |
338
344
  | `buildProductions(source)` / `tryBuildProductions(source)` | The unrolled productions. Throws / returns a `Result` failure with the offending token |
339
- | `loadGrammar(path)` | Same, but reads the file, turning missing files into failures too |
340
- | `buildStates(table)` / `tryBuildStates(table)` | `TableState[]` from a table file, validating action syntax and state numbers |
341
- | `loadTable(path)` | Same, but reads the file |
342
- | `generateStates(productions, options?)` | `GeneratorResult`; `options` is `{ mode, onWarning, onProgress }` |
343
- | `validateProductions(productions, options?)` | Fails on a grammar that cannot generate a correct table |
344
- | `validateTable(productions, states)` | Fails when a table does not belong to the productions |
345
- | `validateTableStates(states, options?)` | Fails on a malformed table |
345
+ | `loadGrammar(path)` | Same, but reads the file, turning missing files into failures too |
346
+ | `buildStates(table)` / `tryBuildStates(table)` | `TableState[]` from a table file, validating action syntax and state numbers |
347
+ | `loadTable(path)` | Same, but reads the file |
348
+ | `generateStates(productions, options?)` | `GeneratorResult`; `options` is `{ mode, onWarning, onProgress }` |
349
+ | `validateProductions(productions, options?)` | Fails on a grammar that cannot generate a correct table |
350
+ | `validateTable(productions, states)` | Fails when a table does not belong to the productions |
351
+ | `validateTableStates(states, options?)` | Fails on a malformed table |
346
352
 
347
353
  ### Building parsers
348
354
 
349
- | Function | Returns |
350
- | --- | --- |
355
+ | Function | Returns |
356
+ | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
351
357
  | `Sparse.fromGrammarFile({ grammarPath, tablePath, toStringifiedTokenType, onWarning?, validate? })` | Loads a grammar and its prebuilt table, cross-checking them |
352
- | `Sparse.fromProductions({ productions, toStringifiedTokenType, mode?, quiet? })` | Generates states at startup |
353
- | `Sparse.tryFromProductions(...)` | Same, as a `Result` |
354
- | `new Sparse({ productions, states, toStringifiedTokenType, validate?, source? })` | Use when you already hold the states |
355
- | `generator.generate(lexer, { reducer, recover? })` | A parser |
356
- | `parser.parse()` | `{ result, errors }` |
357
- | `parser.reset()` | Clears the stacks and errors |
358
+ | `Sparse.fromProductions({ productions, toStringifiedTokenType, mode?, quiet? })` | Generates states at startup |
359
+ | `Sparse.tryFromProductions(...)` | Same, as a `Result` |
360
+ | `new Sparse({ productions, states, toStringifiedTokenType, validate?, source? })` | Use when you already hold the states |
361
+ | `generator.generate(lexer, { reducer, recover? })` | A parser |
362
+ | `parser.parse()` | `{ result, errors }` |
363
+ | `parser.reset()` | Clears the stacks and errors |
358
364
 
359
365
  ### Helpers
360
366
 
361
- | Export | Purpose |
362
- | --- | --- |
363
- | `enumToString(TokenType)` | The `toStringifiedTokenType` every example used to write by hand |
364
- | `defineReducers(reducers)` | Turns a map of named reducers into a reducer |
365
- | `assertReducersCoverGrammar(productions, reducers)` | Fails up front when a named production has no reducer |
366
- | `missingReducerNames(productions, reducers)` / `missingReducerMessage(...)` | Same, as data |
367
- | `namedProductions(productions)` | Every production the grammar names |
368
- | `TableState.fromJSObject(json)` / `GeneratorResult.toJSObject()` | Round trip a table through JSON |
369
- | `hydrateProduction(json)` / `dehydateProduction(production)` | Round trip productions through JSON |
370
- | `buildErrorWindow(source, token)` | Renders the window around a token |
371
- | `Stack` | `push`, `pop`, `peek`, `peekAt`, `size`, `isEmpty`, `toArray` |
367
+ | Export | Purpose |
368
+ | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
369
+ | `enumToString(TokenType)` | The `toStringifiedTokenType` every example used to write by hand |
370
+ | `defineReducers(reducers)` | Turns a map of named reducers into a reducer |
371
+ | `assertReducersCoverGrammar(productions, reducers)` | Fails up front when a named production has no reducer |
372
+ | `missingReducerNames(productions, reducers)` / `missingReducerMessage(...)` | Same, as data |
373
+ | `namedProductions(productions)` | Every production the grammar names |
374
+ | `TableState.fromJSObject(json)` / `GeneratorResult.toJSObject()` | Round trip a table through JSON |
375
+ | `hydrateProduction(json)` / `dehydateProduction(production)` | Round trip productions through JSON |
376
+ | `buildErrorWindow(source, token)` | Renders the window around a token |
377
+ | `Stack` | `push`, `pop`, `peek`, `peekAt`, `size`, `isEmpty`, `toArray` |
372
378
 
373
379
  ## Known limitations
374
380
 
package/dist/parser.d.ts CHANGED
@@ -45,7 +45,6 @@ export type FromProductionsOptions<TokenType> = {
45
45
  productions: Production[];
46
46
  toStringifiedTokenType: (tokenType: TokenType) => string;
47
47
  mode?: "lr1" | "lalr1";
48
- quiet?: boolean;
49
48
  onWarning?: (warning: ProductionWarning) => void;
50
49
  onProgress?: (statesGenerated: number) => void;
51
50
  };
package/dist/parser.js CHANGED
@@ -66,11 +66,6 @@ class Sparse {
66
66
  states: states.toStates(),
67
67
  toStringifiedTokenType: options.toStringifiedTokenType,
68
68
  });
69
- if (options.quiet !== true) {
70
- const elapsed = Date.now() - startedAt;
71
- const label = options.mode === "lalr1" ? "LALR(1)" : "LR(1)";
72
- console.error(`Sparse generated ${sparse.options.states.length} ${label} states in ${elapsed}ms`);
73
- }
74
69
  return { success: true, value: sparse };
75
70
  }
76
71
  static fromProductions(options) {
@@ -244,7 +239,7 @@ class LR1Parser {
244
239
  const expected = state.getTerminalKeys();
245
240
  const got = this.options.toStringifiedTokenType(token.type);
246
241
  const lexeme = token.lexeme === "" ? "" : ` ("${token.lexeme}")`;
247
- return (`Invalid syntax at ${token.line}:${token.column}: got ${got}${lexeme}, but expected ${expected.length === 0 ? "the end of the input" : `one of [${expected.join("], [")}]`}`);
242
+ return `Invalid syntax at ${token.line}:${token.column}: got ${got}${lexeme}, but expected ${expected.length === 0 ? "the end of the input" : `one of [${expected.join("], [")}]`}`;
248
243
  }
249
244
  }
250
245
  exports.LR1Parser = LR1Parser;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;;AACA,2CAA6C;AAC7C,yCAAsC;AAGtC,iDAA2D;AAC3D,+CAAiD;AAIjD,MAAa,UAAU;IASrB,YAAY,UAAU,IAAI,GAAG,EAAuB,EAAE,aAAa,IAAI,GAAG,EAAkB;QAC1F,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAC3C,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAGM,eAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAGM,eAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,OAAO,CAAC,MAAc,EAAE,MAAc;QAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,UAAU;QACR,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAA0C;QAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAClC,GAAG;YACH,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE;SACrG,CAAC,CACH,CAAC;QACF,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF;AAtDD,gCAsDC;AAiCD,MAAa,MAAM;IACjB,YAAmC,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAA,wBAAa,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9F,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,OAA0C;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,YAAY,GAAG,IAAA,0BAAc,EAAC,OAAO,CAAC,WAAW,EAAE;YACvD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,YAAY,CAAC;QACxD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;QAElC,MAAM,MAAM,GAAG,IAAI,MAAM,CAA4B;YACnD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;YACzB,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;SACvD,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,eAAe,CAA4B,OAA0C;QACjG,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAA4B,OAAO,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAGM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAA4B,OAOjE;QACC,MAAM,iBAAiB,GAAG,MAAM,IAAA,uBAAW,EAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACnG,IAAI,iBAAiB,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,iBAAiB,CAAC;QAElE,MAAM,YAAY,GAAG,MAAM,IAAA,qBAAS,EAAC,OAAO,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC;QAClG,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,YAAY,CAAC;QAExD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAA,wBAAa,EAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE;gBAC7E,MAAM,EAAE,OAAO,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,IAAI,WAAW,CAAC,OAAO,KAAK,KAAK;gBAAE,OAAO,WAAW,CAAC;QACxD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,MAAM,CAA4B;gBAC3C,WAAW,EAAE,iBAAiB,CAAC,KAAK;gBACpC,MAAM,EAAE,YAAY,CAAC,KAAK;gBAC1B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,MAAM,EAAE,OAAO,CAAC,WAAW;aAC5B,CAAC;SACH,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe,CAA4B,OAM9D;QACC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAA4B,OAAO,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,QAAQ,CACb,KAAwD,EACxD,OAGC;;QAED,OAAO,IAAI,SAAS,CAA4B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IACjH,CAAC;CACF;AA1FD,wBA0FC;AA4BD,MAAa,SAAS;IAKpB,YACkB,OAAiC,EACjC,OAA+C,EAC/C,OAAiE,EACjE,KAAwD;QAHxD,YAAO,GAAP,OAAO,CAA0B;QACjC,YAAO,GAAP,OAAO,CAAwC;QAC/C,YAAO,GAAP,OAAO,CAA0D;QACjE,UAAK,GAAL,KAAK,CAAmD;QAR1E,gBAAW,GAAkB,IAAI,aAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,iBAAY,GAAqD,IAAI,aAAK,EAAE,CAAC;QAC7E,eAAU,GAAuC,EAAE,CAAC;IAOjD,CAAC;IAOG,KAAK;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,aAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,IAAI,aAAK,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAEM,KAAK;;QACV,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAErE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,MAAM,IAAI,mBAAmB,CAAC,uDAAuD,EAAE,IAAW,CAAC,CAAC;QAEtG,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,IAAI;gBACf,MAAM,IAAI,mBAAmB,CAC3B,4DAA4D,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,kCAAkC,MAAM,CAAC,MAAM,UAAU,EAC5I,IAAW,CACZ,CAAC;YACJ,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE9G,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;oBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM;oBACN,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC1G,KAAK,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;oBACvD,MAAM,EAAE,CAAC,OAAkD,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;oBAC7G,WAAW,EAAE,CAAC,QAAoC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;oBACjF,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC1G,CAAC,CAAC;gBAEH,IAAI,cAAc,CAAC,OAAO,KAAK,KAAK;oBAAE,MAAM,IAAI,mBAAmB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAElG,KAAK,GAAG,MAAA,cAAc,CAAC,KAAK,mCAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3D,YAAY,GAAG,aAAa,EAAE,CAAC;gBAC/B,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE5E,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YACzG,CAAC;YAED,MAAM,WAAW,GAAG,MAAqB,CAAC;YAC1C,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAEjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAGI,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvC,IAAI,WAAW,CAAC,KAAK,KAAK,CAAC;oBAAE,MAAM;gBACnC,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAElD,IAAI,UAAU,IAAI,IAAI;oBACpB,MAAM,IAAI,mBAAmB,CAC3B,+EAA+E,WAAW,CAAC,KAAK,8BAA8B,WAAW,CAAC,MAAM,cAAc,EAC9J,KAAK,CACN,CAAC;gBAGJ,MAAM,MAAM,GAAgD,EAAE,CAAC;gBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBACzB,CAAC;gBAGD,MAAM,eAAe,GAAG,UAAU,CAAC,uBAAuB,CAAC;gBAE3D,IAAI,CAAC;oBAEH,MAAM,GAAG,GAAG,EAA0D,CAAC;oBAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC7B,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;4BACtB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;oBACzF,CAAC;oBAED,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;oBAE3D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpD,MAAM,IAAI,mBAAmB,CAC3B,uDAAuD,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAK,KAAK,sBAAsB,KAAK,EAAE,EAC9I,KAAK,EACL,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;gBACJ,CAAC;gBAGD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAE5E,IAAI,UAAU,IAAI,SAAS;oBACzB,MAAM,IAAI,mBAAmB,CAC3B,iCAAiC,OAAO,oBAAoB,UAAU,CAAC,UAAU,mCAAmC,eAAe,EAAE,EACrI,KAAK,CACN,CAAC;qBACC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM;oBACjC,MAAM,IAAI,mBAAmB,CAC3B,mCAAmC,OAAO,oBAAoB,UAAU,CAAC,UAAU,mCAAmC,eAAe,eAAe,UAAU,CAAC,IAAI,EAAE,EACrK,KAAK,CACN,CAAC;gBAEJ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAID,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhF,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpF,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI;YAC3D,MAAM,IAAI,mBAAmB,CAC3B,yEAAyE,KAAK,4BAA4B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,EAC7I,IAAW,CACZ,CAAC;QACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAGO,WAAW,CAAC,KAAiC;;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzF,IAAI,MAAM,IAAI,IAAI;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,iBAAiB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iCAAiC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,mCAAI,SAAS,EAAE;aACnM,CAAC;QAEJ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,iBAAiB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAC1D,KAAK,CAAC,IAAI,CACX,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,uCAAuC;aAChF,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,KAAiB,EAAE,KAAiC;QAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC;QACjE,OAAO,qBAAqB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,SAAS,GAAG,GAAG,MAAM,kBACzE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GACnF,EAAE,CAAC;IACL,CAAC;CACF;AA/LD,8BA+LC;AAED,MAAa,mBAAyC,SAAQ,KAAK;IACjE,YACkB,MAAc,EACd,YAA+C,EAC/D,GAAW;QAEX,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAJ9C,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAAmC;QAI/D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AATD,kDASC;AAGD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YACkB,MAAc,EACd,KAAmB;QAEnC,KAAK,CAAC,sBAAsB,MAAM,QAAQ,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAHxD,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QAGnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AARD,gDAQC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAC9C,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,KAAK,CAAC,MAAM,cAAc,CAAC;AAEzF,MAAM,kBAAkB,GAAG,CAAC,UAAsB,EAAE,EAAE,CACpD,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scinorandex/sparse",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Yet another parser generator",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/parser.ts CHANGED
@@ -17,10 +17,7 @@ export class TableState {
17
17
  */
18
18
  public readonly rawActions: Map<string, string>;
19
19
 
20
- constructor(
21
- actions = new Map<string, TableAction>(),
22
- rawActions = new Map<string, string>(),
23
- ) {
20
+ constructor(actions = new Map<string, TableAction>(), rawActions = new Map<string, string>()) {
24
21
  this.actions = actions;
25
22
  this.rawActions = rawActions;
26
23
  }
@@ -94,19 +91,15 @@ export type FromProductionsOptions<TokenType> = {
94
91
  toStringifiedTokenType: (tokenType: TokenType) => string;
95
92
  mode?: "lr1" | "lalr1";
96
93
  /** Generating states can take a while for big grammars; set to true to silence the timing log. */
97
- quiet?: boolean;
98
94
  onWarning?: (warning: ProductionWarning) => void;
99
95
  onProgress?: (statesGenerated: number) => void;
100
96
  };
101
97
 
102
98
  export class Sparse<TokenType, Metadata, Node> {
103
- public constructor(
104
- public readonly options: SparseOptions<TokenType>,
105
- ) {
99
+ public constructor(public readonly options: SparseOptions<TokenType>) {
106
100
  if (options.validate === true) {
107
101
  const result = validateTable(options.productions, options.states, { source: options.source });
108
- if (result.success === false)
109
- throw new Error(`The parsing table does not match the grammar: ${result.reason}`);
102
+ if (result.success === false) throw new Error(`The parsing table does not match the grammar: ${result.reason}`);
110
103
  }
111
104
  }
112
105
 
@@ -129,12 +122,6 @@ export class Sparse<TokenType, Metadata, Node> {
129
122
  toStringifiedTokenType: options.toStringifiedTokenType,
130
123
  });
131
124
 
132
- if (options.quiet !== true) {
133
- const elapsed = Date.now() - startedAt;
134
- const label = options.mode === "lalr1" ? "LALR(1)" : "LR(1)";
135
- console.error(`Sparse generated ${sparse.options.states.length} ${label} states in ${elapsed}ms`);
136
- }
137
-
138
125
  return { success: true, value: sparse };
139
126
  }
140
127
 
@@ -282,8 +269,7 @@ export class LR1Parser<TokenType, Metadata, Node> {
282
269
  crash: (reason: string) => ({ success: false, reason }),
283
270
  finish: (options?: { newToken: Token<TokenType, Metadata> }) => ({ success: true, token: options?.newToken }),
284
271
  insertToken: (newToken: Token<TokenType, Metadata>) => this.insertToken(newToken),
285
- isSafe: () =>
286
- currentStates().actions.has(`[${toStringifiedTokenType(this.lexer.peekNextToken().type)}]`),
272
+ isSafe: () => currentStates().actions.has(`[${toStringifiedTokenType(this.lexer.peekNextToken().type)}]`),
287
273
  });
288
274
 
289
275
  if (recoveryResult.success === false) throw new LR1ParserGraveError(recoveryResult.reason, token);
@@ -394,9 +380,7 @@ export class LR1Parser<TokenType, Metadata, Node> {
394
380
  if (action == null)
395
381
  return {
396
382
  success: false,
397
- reason: `Cannot insert ${this.options.toStringifiedTokenType(token.type)} here: state ${
398
- this.statesStack.peek()
399
- } does not accept it. Expected ${state?.getTerminalKeys().join(", ") ?? "nothing"}`,
383
+ reason: `Cannot insert ${this.options.toStringifiedTokenType(token.type)} here: state ${this.statesStack.peek()} does not accept it. Expected ${state?.getTerminalKeys().join(", ") ?? "nothing"}`,
400
384
  };
401
385
 
402
386
  if (action.type !== "shift")
@@ -416,11 +400,9 @@ export class LR1Parser<TokenType, Metadata, Node> {
416
400
  const expected = state.getTerminalKeys();
417
401
  const got = this.options.toStringifiedTokenType(token.type);
418
402
  const lexeme = token.lexeme === "" ? "" : ` ("${token.lexeme}")`;
419
- return (
420
- `Invalid syntax at ${token.line}:${token.column}: got ${got}${lexeme}, but expected ${
421
- expected.length === 0 ? "the end of the input" : `one of [${expected.join("], [")}]`
422
- }`
423
- );
403
+ return `Invalid syntax at ${token.line}:${token.column}: got ${got}${lexeme}, but expected ${
404
+ expected.length === 0 ? "the end of the input" : `one of [${expected.join("], [")}]`
405
+ }`;
424
406
  }
425
407
  }
426
408
 
package/test/lalr.test.ts CHANGED
@@ -1,13 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import fs from "fs/promises";
3
- import {
4
- LR1StackSymbol,
5
- Sparse,
6
- buildProductions,
7
- buildStates,
8
- enumToString,
9
- generateStates,
10
- } from "../src/index";
3
+ import { LR1StackSymbol, Sparse, buildProductions, buildStates, enumToString, generateStates } from "../src/index";
11
4
  import { MathTokenType, mathLexer, readFile } from "./helpers";
12
5
  import { lexerGenerator as loLangLexerGenerator, LoLangTokenType } from "../example/LoLang/example";
13
6
 
@@ -39,7 +32,6 @@ describe("LALR(1)", () => {
39
32
  productions,
40
33
  toStringifiedTokenType,
41
34
  mode: "lalr1",
42
- quiet: true,
43
35
  });
44
36
 
45
37
  for (const expression of EXPRESSIONS) {
@@ -64,8 +56,12 @@ describe("LALR(1)", () => {
64
56
  toStringifiedTokenType: enumToString<LoLangTokenType>(LoLangTokenType),
65
57
  validate: true,
66
58
  })
67
- .generate(loLangLexerGenerator.generate(source, () => ({})), { reducer })
68
- .parse().result?.toObject();
59
+ .generate(
60
+ loLangLexerGenerator.generate(source, () => ({})),
61
+ { reducer },
62
+ )
63
+ .parse()
64
+ .result?.toObject();
69
65
 
70
66
  const fromLr1 = parse(lr1.value.toStates());
71
67
  const fromLalr = parse(lalr.value.toStates());
@@ -111,4 +107,4 @@ describe("LALR(1)", () => {
111
107
  // ...but the table file format has no way to express a state without actions.
112
108
  expect(() => result.value.toTable()).toThrow(/has no actions/);
113
109
  });
114
- });
110
+ });
@@ -15,14 +15,7 @@ import {
15
15
  missingReducerNames,
16
16
  namedProductions,
17
17
  } from "../src/index";
18
- import {
19
- MathTokenType,
20
- SemiTokenType,
21
- mathLexer,
22
- readFile,
23
- root,
24
- semiLexer,
25
- } from "./helpers";
18
+ import { MathTokenType, SemiTokenType, mathLexer, readFile, root, semiLexer } from "./helpers";
26
19
 
27
20
  type Node = { nodes: LR1StackSymbol<MathTokenType, {}, Node>[] };
28
21
 
@@ -63,7 +56,6 @@ describe("parsing", () => {
63
56
  const generator = Sparse.fromProductions<MathTokenType, {}, unknown>({
64
57
  productions,
65
58
  toStringifiedTokenType,
66
- quiet: true,
67
59
  });
68
60
 
69
61
  const seen: unknown[] = [];
@@ -89,7 +81,6 @@ describe("parsing", () => {
89
81
  const generator = Sparse.fromProductions<MathTokenType, {}, Node>({
90
82
  productions,
91
83
  toStringifiedTokenType,
92
- quiet: true,
93
84
  });
94
85
 
95
86
  try {
@@ -113,7 +104,6 @@ describe("parsing", () => {
113
104
  const generator = Sparse.fromProductions<MathTokenType, {}, Node>({
114
105
  productions,
115
106
  toStringifiedTokenType,
116
- quiet: true,
117
107
  });
118
108
 
119
109
  try {
@@ -167,7 +157,6 @@ describe("parsing", () => {
167
157
  const generator = Sparse.fromProductions<SemiTokenType, {}, unknown>({
168
158
  productions: productions as any,
169
159
  toStringifiedTokenType: toSemiStringifiedTokenType,
170
- quiet: true,
171
160
  });
172
161
 
173
162
  const parser = generator.generate(semiLexer("1"), {
@@ -198,7 +187,6 @@ describe("error recovery", () => {
198
187
  <PROGRAM: program>: [NUMBER] [SEMICOLON] [EOF];
199
188
  `),
200
189
  toStringifiedTokenType: toSemiStringifiedTokenType,
201
- quiet: true,
202
190
  });
203
191
 
204
192
  it("inserts a token that was missing from the input", () => {
@@ -246,7 +234,9 @@ describe("error recovery", () => {
246
234
  reducer: () => null,
247
235
  recover({ insertToken, crash }) {
248
236
  // NUMBER is not shiftable at this point, so inserting it has to be refused.
249
- const inserted = insertToken(new Token<SemiTokenType, {}>(SemiTokenType.NUMBER, "1", new ColumnAndRow(0, 0), {}));
237
+ const inserted = insertToken(
238
+ new Token<SemiTokenType, {}>(SemiTokenType.NUMBER, "1", new ColumnAndRow(0, 0), {}),
239
+ );
250
240
  if (inserted != null) {
251
241
  reason = inserted.reason;
252
242
  return inserted;
@@ -270,9 +260,7 @@ describe("reducer helpers", () => {
270
260
  });
271
261
 
272
262
  it("names the reducers that are missing", () => {
273
- expect(missingReducerNames(buildProductions(grammar), { program: () => null })).toEqual([
274
- "autogenerated-kleene",
275
- ]);
263
+ expect(missingReducerNames(buildProductions(grammar), { program: () => null })).toEqual(["autogenerated-kleene"]);
276
264
  });
277
265
 
278
266
  it("explains that * and + need the autogenerated-kleene reducer", () => {
@@ -289,7 +277,6 @@ describe("reducer helpers", () => {
289
277
  const generator = Sparse.fromProductions<MathTokenType, {}, string>({
290
278
  productions: buildProductions(grammar),
291
279
  toStringifiedTokenType,
292
- quiet: true,
293
280
  });
294
281
 
295
282
  const parser = generator.generate(mathLexer("1 + 2"), {
@@ -305,7 +292,6 @@ describe("reducer helpers", () => {
305
292
  <PROGRAM: program>: [NUMBER] [EOF];
306
293
  `),
307
294
  toStringifiedTokenType,
308
- quiet: true,
309
295
  });
310
296
 
311
297
  expect(() => generator.generate(mathLexer("1"), { reducer: defineReducers({}) }).parse()).toThrow(
@@ -319,7 +305,6 @@ describe("reducer helpers", () => {
319
305
  <PROGRAM: program>: [NUMBER] [EOF];
320
306
  `),
321
307
  toStringifiedTokenType,
322
- quiet: true,
323
308
  });
324
309
 
325
310
  try {
@@ -389,4 +374,4 @@ describe("loading grammars and tables from disk", () => {
389
374
  expect(productions.map((production) => production.identifier)).toContain("<FACTOR_EXPRESSION>");
390
375
  expect(productions.every((production) => production.rhs.length > 0)).toBe(true);
391
376
  });
392
- });
377
+ });