parser-lr 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -30
- package/bin/parser-lr.js +11388 -11409
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/grammar/index.d.ts +1 -1
- package/dist/lib/grammar/index.d.ts.map +1 -1
- package/dist/lib/grammar/index.js +1 -1
- package/dist/lib/grammar/index.js.map +1 -1
- package/dist/lib/grammar/meta-grammar-table.d.ts +0 -12
- package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -1
- package/dist/lib/grammar/meta-grammar-table.js +5 -22
- package/dist/lib/grammar/meta-grammar-table.js.map +1 -1
- package/dist/lib/grammar-entry.d.ts +42 -0
- package/dist/lib/grammar-entry.d.ts.map +1 -0
- package/dist/lib/grammar-entry.js +45 -0
- package/dist/lib/grammar-entry.js.map +1 -0
- package/dist/lib/index.d.ts +7 -5
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +0 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parse-context.d.ts +4 -15
- package/dist/lib/parse-context.d.ts.map +1 -1
- package/dist/lib/parse-context.js +4 -23
- package/dist/lib/parse-context.js.map +1 -1
- package/dist/lib/transform/grammar-fixture.js +3 -3
- package/dist/lib/transform/grammar-fixture.js.map +1 -1
- package/docs/parser-lr-browser-lib-split.md +174 -0
- package/package.json +7 -2
- package/dist/lib/grammar/grammar-json-path.d.ts +0 -2
- package/dist/lib/grammar/grammar-json-path.d.ts.map +0 -1
- package/dist/lib/grammar/grammar-json-path.esm.d.ts +0 -5
- package/dist/lib/grammar/grammar-json-path.esm.d.ts.map +0 -1
- package/dist/lib/grammar/grammar-json-path.esm.js +0 -9
- package/dist/lib/grammar/grammar-json-path.esm.js.map +0 -1
- package/dist/lib/grammar/grammar-json-path.js +0 -2
- package/dist/lib/grammar/grammar-json-path.js.map +0 -1
- package/dist/lib-cjs/ast/ast-node.js +0 -70
- package/dist/lib-cjs/ast/ast-node.js.map +0 -1
- package/dist/lib-cjs/errors/index.js +0 -9
- package/dist/lib-cjs/errors/index.js.map +0 -1
- package/dist/lib-cjs/errors/parser-lr-error.js +0 -52
- package/dist/lib-cjs/errors/parser-lr-error.js.map +0 -1
- package/dist/lib-cjs/grammar/ast-schema.js +0 -43
- package/dist/lib-cjs/grammar/ast-schema.js.map +0 -1
- package/dist/lib-cjs/grammar/ast-type.js +0 -3
- package/dist/lib-cjs/grammar/ast-type.js.map +0 -1
- package/dist/lib-cjs/grammar/expression.js +0 -3
- package/dist/lib-cjs/grammar/expression.js.map +0 -1
- package/dist/lib-cjs/grammar/grammar-from-cst.js +0 -641
- package/dist/lib-cjs/grammar/grammar-from-cst.js.map +0 -1
- package/dist/lib-cjs/grammar/grammar-json-path.js +0 -13
- package/dist/lib-cjs/grammar/grammar-json-path.js.map +0 -1
- package/dist/lib-cjs/grammar/grammar-literals.js +0 -71
- package/dist/lib-cjs/grammar/grammar-literals.js.map +0 -1
- package/dist/lib-cjs/grammar/grammar.js +0 -64
- package/dist/lib-cjs/grammar/grammar.js.map +0 -1
- package/dist/lib-cjs/grammar/grammar.json +0 -5760
- package/dist/lib-cjs/grammar/index.js +0 -21
- package/dist/lib-cjs/grammar/index.js.map +0 -1
- package/dist/lib-cjs/grammar/meta-grammar-table.js +0 -68
- package/dist/lib-cjs/grammar/meta-grammar-table.js.map +0 -1
- package/dist/lib-cjs/grammar/production.js +0 -3
- package/dist/lib-cjs/grammar/production.js.map +0 -1
- package/dist/lib-cjs/grammar/read-grammar-error.js +0 -22
- package/dist/lib-cjs/grammar/read-grammar-error.js.map +0 -1
- package/dist/lib-cjs/grammar/read-grammar.js +0 -24
- package/dist/lib-cjs/grammar/read-grammar.js.map +0 -1
- package/dist/lib-cjs/grammar/table-validator.js +0 -262
- package/dist/lib-cjs/grammar/table-validator.js.map +0 -1
- package/dist/lib-cjs/grammar/token-rule.js +0 -3
- package/dist/lib-cjs/grammar/token-rule.js.map +0 -1
- package/dist/lib-cjs/grammar/transform-expression.js +0 -3
- package/dist/lib-cjs/grammar/transform-expression.js.map +0 -1
- package/dist/lib-cjs/grammar/transform-rule.js +0 -3
- package/dist/lib-cjs/grammar/transform-rule.js.map +0 -1
- package/dist/lib-cjs/grammar/transform-schema.js +0 -43
- package/dist/lib-cjs/grammar/transform-schema.js.map +0 -1
- package/dist/lib-cjs/index.js +0 -66
- package/dist/lib-cjs/index.js.map +0 -1
- package/dist/lib-cjs/lexer/index.js +0 -32
- package/dist/lib-cjs/lexer/index.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer-compile-error.js +0 -22
- package/dist/lib-cjs/lexer/lexer-compile-error.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer-compile.js +0 -201
- package/dist/lib-cjs/lexer/lexer-compile.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer-error.js +0 -22
- package/dist/lib-cjs/lexer/lexer-error.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer-input-error.js +0 -17
- package/dist/lib-cjs/lexer/lexer-input-error.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer-state-error.js +0 -19
- package/dist/lib-cjs/lexer/lexer-state-error.js.map +0 -1
- package/dist/lib-cjs/lexer/lexer.js +0 -278
- package/dist/lib-cjs/lexer/lexer.js.map +0 -1
- package/dist/lib-cjs/lexer/token.js +0 -44
- package/dist/lib-cjs/lexer/token.js.map +0 -1
- package/dist/lib-cjs/package.json +0 -3
- package/dist/lib-cjs/parse-context-error.js +0 -19
- package/dist/lib-cjs/parse-context-error.js.map +0 -1
- package/dist/lib-cjs/parse-context.js +0 -137
- package/dist/lib-cjs/parse-context.js.map +0 -1
- package/dist/lib-cjs/parse-output-error.js +0 -19
- package/dist/lib-cjs/parse-output-error.js.map +0 -1
- package/dist/lib-cjs/parse-output.js +0 -18
- package/dist/lib-cjs/parse-output.js.map +0 -1
- package/dist/lib-cjs/parse-table/analysis/first-follow.js +0 -294
- package/dist/lib-cjs/parse-table/analysis/first-follow.js.map +0 -1
- package/dist/lib-cjs/parse-table/analysis/index.js +0 -9
- package/dist/lib-cjs/parse-table/analysis/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js +0 -140
- package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js.map +0 -1
- package/dist/lib-cjs/parse-table/bnf/bnf-production.js +0 -3
- package/dist/lib-cjs/parse-table/bnf/bnf-production.js.map +0 -1
- package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js +0 -39
- package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js.map +0 -1
- package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js +0 -224
- package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js.map +0 -1
- package/dist/lib-cjs/parse-table/bnf/index.js +0 -13
- package/dist/lib-cjs/parse-table/bnf/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/build-lr-table.js +0 -171
- package/dist/lib-cjs/parse-table/build-lr-table.js.map +0 -1
- package/dist/lib-cjs/parse-table/index.js +0 -49
- package/dist/lib-cjs/parse-table/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr-algorithm-error.js +0 -19
- package/dist/lib-cjs/parse-table/lr-algorithm-error.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr-algorithm.js +0 -31
- package/dist/lib-cjs/parse-table/lr-algorithm.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr0/index.js +0 -14
- package/dist/lib-cjs/parse-table/lr0/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js +0 -286
- package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr1/index.js +0 -18
- package/dist/lib-cjs/parse-table/lr1/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js +0 -432
- package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js.map +0 -1
- package/dist/lib-cjs/parse-table/parse-table-build-error.js +0 -24
- package/dist/lib-cjs/parse-table/parse-table-build-error.js.map +0 -1
- package/dist/lib-cjs/parse-table/parse-table-error.js +0 -19
- package/dist/lib-cjs/parse-table/parse-table-error.js.map +0 -1
- package/dist/lib-cjs/parse-table/parse-table-json.js +0 -12
- package/dist/lib-cjs/parse-table/parse-table-json.js.map +0 -1
- package/dist/lib-cjs/parse-table/parse-table.js +0 -345
- package/dist/lib-cjs/parse-table/parse-table.js.map +0 -1
- package/dist/lib-cjs/parse-table/slr/index.js +0 -13
- package/dist/lib-cjs/parse-table/slr/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/slr/parse-action.js +0 -8
- package/dist/lib-cjs/parse-table/slr/parse-action.js.map +0 -1
- package/dist/lib-cjs/parse-table/slr/slr-table.js +0 -18
- package/dist/lib-cjs/parse-table/slr/slr-table.js.map +0 -1
- package/dist/lib-cjs/parse-table/table/index.js +0 -21
- package/dist/lib-cjs/parse-table/table/index.js.map +0 -1
- package/dist/lib-cjs/parse-table/table/lr-parse-table.js +0 -192
- package/dist/lib-cjs/parse-table/table/lr-parse-table.js.map +0 -1
- package/dist/lib-cjs/parse-table/table/parse-action.js +0 -54
- package/dist/lib-cjs/parse-table/table/parse-action.js.map +0 -1
- package/dist/lib-cjs/parse-table/table/table-builder-base.js +0 -153
- package/dist/lib-cjs/parse-table/table/table-builder-base.js.map +0 -1
- package/dist/lib-cjs/parse-table/token-inventory.js +0 -18
- package/dist/lib-cjs/parse-table/token-inventory.js.map +0 -1
- package/dist/lib-cjs/parser-lr.js +0 -143
- package/dist/lib-cjs/parser-lr.js.map +0 -1
- package/dist/lib-cjs/shift-reduce/index.js +0 -11
- package/dist/lib-cjs/shift-reduce/index.js.map +0 -1
- package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js +0 -224
- package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js.map +0 -1
- package/dist/lib-cjs/transform/binding-map.js +0 -82
- package/dist/lib-cjs/transform/binding-map.js.map +0 -1
- package/dist/lib-cjs/transform/cst-transformer.js +0 -480
- package/dist/lib-cjs/transform/cst-transformer.js.map +0 -1
- package/dist/lib-cjs/transform/grammar-fixture.js +0 -109
- package/dist/lib-cjs/transform/grammar-fixture.js.map +0 -1
- package/dist/lib-cjs/transform/index.js +0 -12
- package/dist/lib-cjs/transform/index.js.map +0 -1
- package/docs/parser-lr-enhancement-proposals.md +0 -337
- package/grammars/fixtures/table-only-import/table-only-smoke.cjs +0 -38
package/README.md
CHANGED
|
@@ -82,59 +82,43 @@ Output is a JSON object `{ "ast": … }`. On a syntax error, `ast` is `null`.
|
|
|
82
82
|
|
|
83
83
|
## Library
|
|
84
84
|
|
|
85
|
-
The package ships
|
|
85
|
+
The package ships an ESM library at `dist/lib/` with TypeScript types in `dist/lib/index.d.ts`. Import with `import { … } from 'parser-lr'`.
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|--------|------|-----|
|
|
89
|
-
| ESM (default) | `dist/lib/` | `import { … } from 'parser-lr'` |
|
|
90
|
-
| CommonJS | `dist/lib-cjs/` | `require('parser-lr')` in CJS tools and Jest |
|
|
87
|
+
The main entry is browser-safe for table-only parsing. Grammar-file APIs live on the Node-only subpath `parser-lr/grammar`.
|
|
91
88
|
|
|
92
|
-
|
|
89
|
+
After `npm install parser-lr`, the tarball also includes [`docs/`](docs/grammar.md) and example [`grammars/`](grammars/calc.grammar) for offline reference.
|
|
93
90
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### ESM (Node and bundlers)
|
|
91
|
+
### Table-only runtime (browser and Node)
|
|
97
92
|
|
|
98
93
|
```typescript
|
|
99
94
|
import { readFile } from 'node:fs/promises';
|
|
100
95
|
import { ParseContext } from 'parser-lr';
|
|
101
96
|
|
|
102
|
-
const
|
|
103
|
-
const context = ParseContext.
|
|
97
|
+
const tableJson = await readFile('mylang.json', 'utf8');
|
|
98
|
+
const context = ParseContext.fromTableJson(tableJson);
|
|
104
99
|
|
|
105
100
|
const source = await readFile('program.txt', 'utf8');
|
|
106
101
|
const ast = context.parseSource(source);
|
|
107
102
|
```
|
|
108
103
|
|
|
109
|
-
###
|
|
110
|
-
|
|
111
|
-
```javascript
|
|
112
|
-
const { ParseContext } = require('parser-lr');
|
|
113
|
-
|
|
114
|
-
const context = ParseContext.fromGrammar(grammarSource, 'lr1');
|
|
115
|
-
const ast = context.parseSource(source);
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
When testing this package from a clone, run `npm run build` first so `dist/lib-cjs/` exists. Published installs include both trees via `prepack`.
|
|
119
|
-
|
|
120
|
-
### Serialized parse tables
|
|
121
|
-
|
|
122
|
-
Load a pre-built table instead of a grammar file:
|
|
104
|
+
### Grammar-file path (Node only)
|
|
123
105
|
|
|
124
106
|
```typescript
|
|
125
107
|
import { readFile } from 'node:fs/promises';
|
|
126
|
-
import {
|
|
108
|
+
import { parseContextFromGrammar } from 'parser-lr/grammar';
|
|
127
109
|
|
|
128
|
-
const
|
|
129
|
-
const context =
|
|
110
|
+
const grammarSource = await readFile('mylang.grammar', 'utf8');
|
|
111
|
+
const context = parseContextFromGrammar(grammarSource, 'lr1');
|
|
130
112
|
|
|
131
113
|
const source = await readFile('program.txt', 'utf8');
|
|
132
114
|
const ast = context.parseSource(source);
|
|
133
115
|
```
|
|
134
116
|
|
|
135
|
-
|
|
117
|
+
When testing this package from a clone, run `npm run build` first so `dist/lib/` exists. Published installs build automatically via `prepack`.
|
|
118
|
+
|
|
119
|
+
Table-only consumers never load the meta-grammar module graph: `ParseContext.fromTableJson` does not import `grammar.json` or any Node built-ins.
|
|
136
120
|
|
|
137
|
-
The published CLI (`bin/parser-lr.js`)
|
|
121
|
+
The published CLI (`bin/parser-lr.js`) bundles grammar reading and the meta-grammar table for offline table generation and validation.
|
|
138
122
|
|
|
139
123
|
`ParseContext` exposes `lex`, `parse`, and `createLexer` for finer control. See the [library API overview](https://github.com/adamrmoss/parser-lr/blob/main/src/lib/README.md).
|
|
140
124
|
|