parser-lr 0.6.1 → 0.8.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 +12759 -13493
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/grammar/grammar-from-cst.js +4 -1
- package/dist/lib/grammar/grammar-from-cst.js.map +1 -1
- package/dist/lib/grammar/grammar.json +86 -820
- 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/table-validator.d.ts.map +1 -1
- package/dist/lib/grammar/table-validator.js +19 -1
- package/dist/lib/grammar/table-validator.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/The Ferrite Programming Language.md +568 -0
- package/docs/grammar.md +55 -3
- package/docs/parser-lr-browser-lib-split.md +174 -0
- package/grammars/6502.grammar +2 -2
- package/grammars/ferrite.grammar +107 -97
- package/grammars/grammar.grammar +19 -140
- package/grammars/lisp.grammar +3 -2
- 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/grammars/grammar.grammar
CHANGED
|
@@ -236,193 +236,72 @@ grammar
|
|
|
236
236
|
|
|
237
237
|
ast
|
|
238
238
|
grammar_file =
|
|
239
|
-
|
|
240
|
-
{ section }
|
|
241
|
-
start_decl
|
|
242
|
-
grammar_section
|
|
243
|
-
[ ast_section ]
|
|
244
|
-
[ transform_section ]
|
|
245
|
-
;
|
|
246
|
-
|
|
247
|
-
name_decl =
|
|
248
|
-
name_kw grammar_name semicolon
|
|
249
|
-
;
|
|
250
|
-
|
|
251
|
-
grammar_name =
|
|
252
|
-
identifier
|
|
253
|
-
| string_literal
|
|
254
|
-
;
|
|
255
|
-
|
|
256
|
-
section =
|
|
257
|
-
token_section
|
|
258
|
-
| skip_section
|
|
259
|
-
| states_section
|
|
239
|
+
#sections { section }
|
|
260
240
|
;
|
|
261
241
|
|
|
262
242
|
token_section =
|
|
263
|
-
|
|
243
|
+
#definitions { token_def }
|
|
264
244
|
;
|
|
265
245
|
|
|
266
246
|
skip_section =
|
|
267
|
-
|
|
268
|
-
;
|
|
269
|
-
|
|
270
|
-
states_section =
|
|
271
|
-
states_kw state_name { comma state_name } semicolon
|
|
272
|
-
;
|
|
273
|
-
|
|
274
|
-
token_def =
|
|
275
|
-
identifier equal regex_literal semicolon
|
|
276
|
-
;
|
|
277
|
-
|
|
278
|
-
state_name =
|
|
279
|
-
identifier
|
|
280
|
-
;
|
|
281
|
-
|
|
282
|
-
start_decl =
|
|
283
|
-
start_kw identifier semicolon
|
|
247
|
+
#definitions { token_def }
|
|
284
248
|
;
|
|
285
249
|
|
|
286
250
|
grammar_section =
|
|
287
|
-
|
|
251
|
+
#productions { production }
|
|
288
252
|
;
|
|
289
253
|
|
|
290
254
|
ast_section =
|
|
291
|
-
|
|
255
|
+
#types { ast_type }
|
|
292
256
|
;
|
|
293
257
|
|
|
294
258
|
transform_section =
|
|
295
|
-
|
|
296
|
-
;
|
|
297
|
-
|
|
298
|
-
production =
|
|
299
|
-
identifier equal expression semicolon
|
|
300
|
-
;
|
|
301
|
-
|
|
302
|
-
ast_type =
|
|
303
|
-
identifier equal expression semicolon
|
|
259
|
+
#rules { transform_rule }
|
|
304
260
|
;
|
|
305
261
|
|
|
306
262
|
transform_rule =
|
|
307
|
-
|
|
308
|
-
;
|
|
309
|
-
|
|
310
|
-
labeled_transform =
|
|
311
|
-
hash identifier transform_expr
|
|
312
|
-
;
|
|
313
|
-
|
|
314
|
-
transform_expr =
|
|
315
|
-
drop_kw
|
|
316
|
-
| pass_expr
|
|
317
|
-
| fold_left_expr
|
|
318
|
-
| fold_right_expr
|
|
319
|
-
| flatten_expr
|
|
320
|
-
| build_expr
|
|
321
|
-
;
|
|
322
|
-
|
|
323
|
-
pass_expr =
|
|
324
|
-
pass_kw lpar reference rpar
|
|
325
|
-
;
|
|
326
|
-
|
|
327
|
-
fold_left_expr =
|
|
328
|
-
fold_left_kw lpar build_target comma reference_list rpar
|
|
329
|
-
;
|
|
330
|
-
|
|
331
|
-
fold_right_expr =
|
|
332
|
-
fold_right_kw lpar build_target comma reference_list rpar
|
|
333
|
-
;
|
|
334
|
-
|
|
335
|
-
flatten_expr =
|
|
336
|
-
flatten_kw lpar build_target comma reference comma reference rpar
|
|
337
|
-
;
|
|
338
|
-
|
|
339
|
-
build_expr =
|
|
340
|
-
build_target [ lpar reference_list rpar ]
|
|
341
|
-
;
|
|
342
|
-
|
|
343
|
-
build_target =
|
|
344
|
-
identifier dot hash identifier
|
|
263
|
+
#alternatives { labeled_transform }
|
|
345
264
|
;
|
|
346
265
|
|
|
347
266
|
reference_list =
|
|
348
|
-
|
|
349
|
-
;
|
|
350
|
-
|
|
351
|
-
reference =
|
|
352
|
-
identifier
|
|
353
|
-
;
|
|
354
|
-
|
|
355
|
-
expression =
|
|
356
|
-
choice
|
|
267
|
+
#references { reference }
|
|
357
268
|
;
|
|
358
269
|
|
|
359
270
|
choice =
|
|
360
|
-
|
|
361
|
-
;
|
|
362
|
-
|
|
363
|
-
alternative =
|
|
364
|
-
labeled_alternative
|
|
365
|
-
;
|
|
366
|
-
|
|
367
|
-
labeled_alternative =
|
|
368
|
-
[ hash identifier ] sequence
|
|
271
|
+
#alternatives { alternative }
|
|
369
272
|
;
|
|
370
273
|
|
|
371
274
|
sequence =
|
|
372
|
-
|
|
373
|
-
;
|
|
374
|
-
|
|
375
|
-
factor =
|
|
376
|
-
bracketed
|
|
377
|
-
| repeat
|
|
378
|
-
| group
|
|
379
|
-
| primary
|
|
380
|
-
;
|
|
381
|
-
|
|
382
|
-
bracketed =
|
|
383
|
-
lbracket expression rbracket [ colon identifier ]
|
|
384
|
-
;
|
|
385
|
-
|
|
386
|
-
repeat =
|
|
387
|
-
lbrace expression rbrace
|
|
388
|
-
;
|
|
389
|
-
|
|
390
|
-
group =
|
|
391
|
-
lpar expression rpar
|
|
392
|
-
;
|
|
393
|
-
|
|
394
|
-
primary =
|
|
395
|
-
string_literal
|
|
396
|
-
| identifier
|
|
275
|
+
#factors { factor }
|
|
397
276
|
;
|
|
398
277
|
|
|
399
278
|
transform
|
|
400
279
|
grammar_file$repeat_0 ->
|
|
401
280
|
#main flatten(grammar_file.#sections, section, grammar_file$repeat_0) ;
|
|
402
281
|
|
|
403
|
-
token_section
|
|
282
|
+
token_section ->
|
|
404
283
|
#main flatten(token_section.#definitions, token_def, token_section$repeat_1) ;
|
|
405
284
|
|
|
406
|
-
skip_section
|
|
285
|
+
skip_section ->
|
|
407
286
|
#main flatten(skip_section.#definitions, token_def, skip_section$repeat_2) ;
|
|
408
287
|
|
|
409
|
-
grammar_section
|
|
288
|
+
grammar_section ->
|
|
410
289
|
#main flatten(grammar_section.#productions, production, grammar_section$repeat_4) ;
|
|
411
290
|
|
|
412
|
-
ast_section
|
|
291
|
+
ast_section ->
|
|
413
292
|
#main flatten(ast_section.#types, ast_type, ast_section$repeat_5) ;
|
|
414
293
|
|
|
415
|
-
transform_section
|
|
294
|
+
transform_section ->
|
|
416
295
|
#main flatten(transform_section.#rules, transform_rule, transform_section$repeat_6) ;
|
|
417
296
|
|
|
418
|
-
transform_rule
|
|
297
|
+
transform_rule ->
|
|
419
298
|
#main flatten(transform_rule.#alternatives, labeled_transform, transform_rule$repeat_7) ;
|
|
420
299
|
|
|
421
|
-
reference_list
|
|
300
|
+
reference_list ->
|
|
422
301
|
#main flatten(reference_list.#references, reference, reference_list$repeat_8) ;
|
|
423
302
|
|
|
424
|
-
choice
|
|
303
|
+
choice ->
|
|
425
304
|
#main flatten(choice.#alternatives, alternative, choice$repeat_9) ;
|
|
426
305
|
|
|
427
|
-
sequence
|
|
306
|
+
sequence ->
|
|
428
307
|
#main flatten(sequence.#factors, factor, sequence$repeat_10) ;
|
package/grammars/lisp.grammar
CHANGED
|
@@ -51,16 +51,17 @@ grammar
|
|
|
51
51
|
|
|
52
52
|
ast
|
|
53
53
|
program =
|
|
54
|
-
{ form }
|
|
54
|
+
#program { form }
|
|
55
55
|
;
|
|
56
56
|
|
|
57
57
|
form =
|
|
58
58
|
#list list
|
|
59
59
|
| #atom atom
|
|
60
|
+
| #elements { form }
|
|
60
61
|
;
|
|
61
62
|
|
|
62
63
|
list =
|
|
63
|
-
[open]:lpar
|
|
64
|
+
#list [open]:lpar
|
|
64
65
|
{ [element]:form }
|
|
65
66
|
[close]:rpar
|
|
66
67
|
;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parser-lr",
|
|
3
3
|
"author": "Adam R Moss <adamrmoss@gmail.com>",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.8.0",
|
|
5
5
|
"description": "Shift-reduce parser library for EBNF grammars with LR table generation, lexing, and CST-to-AST transforms",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"ast",
|
|
@@ -41,8 +41,12 @@
|
|
|
41
41
|
".": {
|
|
42
42
|
"types": "./dist/lib/index.d.ts",
|
|
43
43
|
"import": "./dist/lib/index.js",
|
|
44
|
-
"require": "./dist/lib-cjs/index.js",
|
|
45
44
|
"default": "./dist/lib/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./grammar": {
|
|
47
|
+
"types": "./dist/lib/grammar-entry.d.ts",
|
|
48
|
+
"import": "./dist/lib/grammar-entry.js",
|
|
49
|
+
"default": "./dist/lib/grammar-entry.js"
|
|
46
50
|
}
|
|
47
51
|
},
|
|
48
52
|
"bin": {
|
|
@@ -82,6 +86,7 @@
|
|
|
82
86
|
"@types/jest": "29.x",
|
|
83
87
|
"@types/node": "22.x",
|
|
84
88
|
"commander": "12.x",
|
|
89
|
+
"esbuild": "0.x",
|
|
85
90
|
"jest": "29.x",
|
|
86
91
|
"rollup": "4.x",
|
|
87
92
|
"ts-jest": "29.x",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-json-path.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-json-path.esm.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.esm.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { dirname } from 'node:path';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
|
-
/**
|
|
4
|
-
* Returns the directory containing bootstrapped `grammar.json` for the ESM build.
|
|
5
|
-
*/
|
|
6
|
-
export function grammarJsonDirectory() {
|
|
7
|
-
return dirname(fileURLToPath(import.meta.url));
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=grammar-json-path.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-json-path.esm.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.esm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAEhC,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-json-path.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AstNode = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Tree node used for both parse (CST) and abstract (AST) phases.
|
|
6
|
-
*
|
|
7
|
-
* After parsing, {@link symbol} is a grammar production and {@link variant}
|
|
8
|
-
* is the matched `#` label. After transform, {@link symbol} is an AST type
|
|
9
|
-
* name and {@link variant} is the AST alternative label.
|
|
10
|
-
*/
|
|
11
|
-
class AstNode {
|
|
12
|
-
symbol;
|
|
13
|
-
children;
|
|
14
|
-
text;
|
|
15
|
-
location;
|
|
16
|
-
variant;
|
|
17
|
-
productionId;
|
|
18
|
-
origin;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a tree node.
|
|
21
|
-
*
|
|
22
|
-
* @param symbol - Production or AST type name.
|
|
23
|
-
* @param children - Child subtrees.
|
|
24
|
-
* @param text - Lexeme or literal text for leaves; null for interior nodes.
|
|
25
|
-
* @param location - Optional source span.
|
|
26
|
-
* @param variant - `#` alternative label when present.
|
|
27
|
-
* @param productionId - Parse table production id for CST nodes, or null after transform.
|
|
28
|
-
* @param origin - Source production or synthetic construct name for CST nodes.
|
|
29
|
-
*/
|
|
30
|
-
constructor(symbol, children = [], text = null, location = null, variant = null, productionId = null, origin = null) {
|
|
31
|
-
this.symbol = symbol;
|
|
32
|
-
this.children = children;
|
|
33
|
-
this.text = text;
|
|
34
|
-
this.location = location;
|
|
35
|
-
this.variant = variant;
|
|
36
|
-
this.productionId = productionId;
|
|
37
|
-
this.origin = origin;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Whether this node is a terminal leaf with lexeme text.
|
|
41
|
-
*/
|
|
42
|
-
get isTerminal() {
|
|
43
|
-
return this.text !== null;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Builds an interior node from a grammar or AST reduction.
|
|
47
|
-
*
|
|
48
|
-
* @param symbol - Production or AST type name.
|
|
49
|
-
* @param children - Reduced child subtrees.
|
|
50
|
-
* @param location - Optional source span covering the full production.
|
|
51
|
-
* @param variant - `#` alternative label when present.
|
|
52
|
-
* @param productionId - Parse table production id for CST nodes.
|
|
53
|
-
* @param origin - Source production or synthetic construct name for CST nodes.
|
|
54
|
-
*/
|
|
55
|
-
static rule(symbol, children, location = null, variant = null, productionId = null, origin = null) {
|
|
56
|
-
return new AstNode(symbol, children, null, location, variant, productionId, origin);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Builds a terminal leaf node.
|
|
60
|
-
*
|
|
61
|
-
* @param symbol - Terminal symbol name.
|
|
62
|
-
* @param text - Matched lexeme text.
|
|
63
|
-
* @param location - Optional source span for the lexeme.
|
|
64
|
-
*/
|
|
65
|
-
static terminal(symbol, text, location = null) {
|
|
66
|
-
return new AstNode(symbol, [], text, location, null);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
exports.AstNode = AstNode;
|
|
70
|
-
//# sourceMappingURL=ast-node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-node.js","sourceRoot":"","sources":["../../../src/lib/ast/ast-node.ts"],"names":[],"mappings":";;;AASA;;;;;;GAMG;AACH,MAAa,OAAO;IAcI;IACA;IACA;IACA;IACA;IACA;IACA;IAlBpB;;;;;;;;;;OAUG;IACH,YACoB,MAAc,EACd,WAA+B,EAAE,EACjC,OAAsB,IAAI,EAC1B,WAAkC,IAAI,EACtC,UAAyB,IAAI,EAC7B,eAA8B,IAAI,EAClC,SAAwB,IAAI;QAN5B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAyB;QACjC,SAAI,GAAJ,IAAI,CAAsB;QAC1B,aAAQ,GAAR,QAAQ,CAA8B;QACtC,YAAO,GAAP,OAAO,CAAsB;QAC7B,iBAAY,GAAZ,YAAY,CAAsB;QAClC,WAAM,GAAN,MAAM,CAAsB;IAGhD,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QAEjB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,IAAI,CACd,MAAc,EACd,QAA4B,EAC5B,WAAkC,IAAI,EACtC,UAAyB,IAAI,EAC7B,eAA8B,IAAI,EAClC,SAAwB,IAAI;QAG5B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,QAAQ,CAClB,MAAc,EACd,IAAY,EACZ,WAAkC,IAAI;QAGtC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CACJ;AAtED,0BAsEC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParserLrError = exports.messageContainsStackTrace = exports.isParserLrError = exports.formatUserError = void 0;
|
|
4
|
-
var parser_lr_error_js_1 = require("./parser-lr-error.js");
|
|
5
|
-
Object.defineProperty(exports, "formatUserError", { enumerable: true, get: function () { return parser_lr_error_js_1.formatUserError; } });
|
|
6
|
-
Object.defineProperty(exports, "isParserLrError", { enumerable: true, get: function () { return parser_lr_error_js_1.isParserLrError; } });
|
|
7
|
-
Object.defineProperty(exports, "messageContainsStackTrace", { enumerable: true, get: function () { return parser_lr_error_js_1.messageContainsStackTrace; } });
|
|
8
|
-
Object.defineProperty(exports, "ParserLrError", { enumerable: true, get: function () { return parser_lr_error_js_1.ParserLrError; } });
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/errors/index.ts"],"names":[],"mappings":";;;AAAA,2DAK8B;AAJ1B,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AACf,+HAAA,yBAAyB,OAAA;AACzB,mHAAA,aAAa,OAAA"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParserLrError = void 0;
|
|
4
|
-
exports.isParserLrError = isParserLrError;
|
|
5
|
-
exports.formatUserError = formatUserError;
|
|
6
|
-
exports.messageContainsStackTrace = messageContainsStackTrace;
|
|
7
|
-
/**
|
|
8
|
-
* Base class for library errors surfaced to callers and the CLI.
|
|
9
|
-
*/
|
|
10
|
-
class ParserLrError extends Error {
|
|
11
|
-
/**
|
|
12
|
-
* Creates a parser-lr error with a caller-safe message.
|
|
13
|
-
*
|
|
14
|
-
* @param message - Human-readable failure description without stack frames.
|
|
15
|
-
*/
|
|
16
|
-
constructor(message) {
|
|
17
|
-
super(message);
|
|
18
|
-
this.name = new.target.name;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.ParserLrError = ParserLrError;
|
|
22
|
-
/**
|
|
23
|
-
* Returns whether a value is a parser-lr domain error.
|
|
24
|
-
*
|
|
25
|
-
* @param error - Value to test.
|
|
26
|
-
*/
|
|
27
|
-
function isParserLrError(error) {
|
|
28
|
-
return error instanceof ParserLrError;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns a user-facing message for an error value.
|
|
32
|
-
*
|
|
33
|
-
* @param error - Thrown value or Error instance.
|
|
34
|
-
*/
|
|
35
|
-
function formatUserError(error) {
|
|
36
|
-
if (error instanceof ParserLrError) {
|
|
37
|
-
return error.message;
|
|
38
|
-
}
|
|
39
|
-
if (error instanceof Error) {
|
|
40
|
-
return error.message;
|
|
41
|
-
}
|
|
42
|
-
return String(error);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns whether a message contains embedded stack trace frames.
|
|
46
|
-
*
|
|
47
|
-
* @param message - Error message text to inspect.
|
|
48
|
-
*/
|
|
49
|
-
function messageContainsStackTrace(message) {
|
|
50
|
-
return /\n\s+at .+/.test(message);
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=parser-lr-error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser-lr-error.js","sourceRoot":"","sources":["../../../src/lib/errors/parser-lr-error.ts"],"names":[],"mappings":";;;AAsBA,0CAGC;AAOD,0CAaC;AAOD,8DAGC;AAvDD;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK;IAEpC;;;;OAIG;IACH,YAAmB,OAAe;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAChC,CAAC;CACJ;AAZD,sCAYC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAE1C,OAAO,KAAK,YAAY,aAAa,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAE1C,IAAI,KAAK,YAAY,aAAa,EAClC,CAAC;QACG,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAC1B,CAAC;QACG,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,OAAe;IAErD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AstSchema = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* AST shape declared in the `ast` section of a `.grammar` file.
|
|
6
|
-
*/
|
|
7
|
-
class AstSchema {
|
|
8
|
-
types;
|
|
9
|
-
typesByName;
|
|
10
|
-
/**
|
|
11
|
-
* Creates an AST schema from declared types.
|
|
12
|
-
*
|
|
13
|
-
* @param types - Named AST types from the `ast` section.
|
|
14
|
-
*/
|
|
15
|
-
constructor(types) {
|
|
16
|
-
this.types = types;
|
|
17
|
-
// Index types by name for lookup.
|
|
18
|
-
const typesByName = new Map();
|
|
19
|
-
for (const type of types) {
|
|
20
|
-
typesByName.set(type.name, type);
|
|
21
|
-
}
|
|
22
|
-
this.typesByName = typesByName;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Returns an AST type by name.
|
|
26
|
-
*
|
|
27
|
-
* @param name - Type name to look up.
|
|
28
|
-
* @returns The matching type, or null when the name is undefined.
|
|
29
|
-
*/
|
|
30
|
-
type(name) {
|
|
31
|
-
return this.typesByName.get(name) ?? null;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Whether a named AST type is defined in this schema.
|
|
35
|
-
*
|
|
36
|
-
* @param name - Type name to test.
|
|
37
|
-
*/
|
|
38
|
-
hasType(name) {
|
|
39
|
-
return this.typesByName.has(name);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.AstSchema = AstSchema;
|
|
43
|
-
//# sourceMappingURL=ast-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-schema.js","sourceRoot":"","sources":["../../../src/lib/grammar/ast-schema.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,SAAS;IASiB;IAPlB,WAAW,CAA+B;IAE3D;;;;OAIG;IACH,YAAmC,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;QAExD,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EACxB,CAAC;YACG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAC,IAAY;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,IAAY;QAEvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AA1CD,8BA0CC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-type.js","sourceRoot":"","sources":["../../../src/lib/grammar/ast-type.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/lib/grammar/expression.ts"],"names":[],"mappings":""}
|