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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateGrammarTable = exports.formatTableValidationIssues = exports.TransformSchema = exports.ReadGrammarError = exports.readGrammar = exports.setBootstrapTableJson = exports.grammarFromCst = exports.Grammar = exports.AstSchema = void 0;
|
|
4
|
-
var ast_schema_js_1 = require("./ast-schema.js");
|
|
5
|
-
Object.defineProperty(exports, "AstSchema", { enumerable: true, get: function () { return ast_schema_js_1.AstSchema; } });
|
|
6
|
-
var grammar_js_1 = require("./grammar.js");
|
|
7
|
-
Object.defineProperty(exports, "Grammar", { enumerable: true, get: function () { return grammar_js_1.Grammar; } });
|
|
8
|
-
var grammar_from_cst_js_1 = require("./grammar-from-cst.js");
|
|
9
|
-
Object.defineProperty(exports, "grammarFromCst", { enumerable: true, get: function () { return grammar_from_cst_js_1.grammarFromCst; } });
|
|
10
|
-
var meta_grammar_table_js_1 = require("./meta-grammar-table.js");
|
|
11
|
-
Object.defineProperty(exports, "setBootstrapTableJson", { enumerable: true, get: function () { return meta_grammar_table_js_1.setBootstrapTableJson; } });
|
|
12
|
-
var read_grammar_js_1 = require("./read-grammar.js");
|
|
13
|
-
Object.defineProperty(exports, "readGrammar", { enumerable: true, get: function () { return read_grammar_js_1.readGrammar; } });
|
|
14
|
-
var read_grammar_error_js_1 = require("./read-grammar-error.js");
|
|
15
|
-
Object.defineProperty(exports, "ReadGrammarError", { enumerable: true, get: function () { return read_grammar_error_js_1.ReadGrammarError; } });
|
|
16
|
-
var transform_schema_js_1 = require("./transform-schema.js");
|
|
17
|
-
Object.defineProperty(exports, "TransformSchema", { enumerable: true, get: function () { return transform_schema_js_1.TransformSchema; } });
|
|
18
|
-
var table_validator_js_1 = require("./table-validator.js");
|
|
19
|
-
Object.defineProperty(exports, "formatTableValidationIssues", { enumerable: true, get: function () { return table_validator_js_1.formatTableValidationIssues; } });
|
|
20
|
-
Object.defineProperty(exports, "validateGrammarTable", { enumerable: true, get: function () { return table_validator_js_1.validateGrammarTable; } });
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":";;;AACA,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAalB,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAChB,6DAAuD;AAA9C,qHAAA,cAAc,OAAA;AACvB,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AACpB,iEAA2D;AAAlD,yHAAA,gBAAgB,OAAA;AAazB,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,2DAG8B;AAF1B,iIAAA,2BAA2B,OAAA;AAC3B,0HAAA,oBAAoB,OAAA"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setBootstrapTableJson = setBootstrapTableJson;
|
|
4
|
-
exports.metaGrammarTable = metaGrammarTable;
|
|
5
|
-
exports.metaGrammar = metaGrammar;
|
|
6
|
-
exports.lexGrammarSource = lexGrammarSource;
|
|
7
|
-
const node_fs_1 = require("node:fs");
|
|
8
|
-
const node_path_1 = require("node:path");
|
|
9
|
-
const lexer_js_1 = require("../lexer/lexer.js");
|
|
10
|
-
const token_js_1 = require("../lexer/token.js");
|
|
11
|
-
const parse_table_js_1 = require("../parse-table/parse-table.js");
|
|
12
|
-
const grammar_json_path_js_1 = require("./grammar-json-path.js");
|
|
13
|
-
let bootstrapTable = null;
|
|
14
|
-
let bootstrapMetaGrammar = null;
|
|
15
|
-
/**
|
|
16
|
-
* Overrides the bootstrapped meta-grammar table before any grammar file is read.
|
|
17
|
-
*
|
|
18
|
-
* @remarks
|
|
19
|
-
* The bundled CLI injects its inlined `grammar.json` here so it never depends on
|
|
20
|
-
* a `grammar.json` file on disk. Library consumers do not call this; they fall
|
|
21
|
-
* back to the lazy filesystem read in {@link bootstrapTableJson}.
|
|
22
|
-
*
|
|
23
|
-
* @param table - Serialized meta-grammar parse table.
|
|
24
|
-
*/
|
|
25
|
-
function setBootstrapTableJson(table) {
|
|
26
|
-
bootstrapTable = table;
|
|
27
|
-
bootstrapMetaGrammar = null;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Reads and caches the bootstrapped `grammar.json` on first use.
|
|
31
|
-
*
|
|
32
|
-
* @remarks
|
|
33
|
-
* Loading is deferred so that importing the parse runtime (for example
|
|
34
|
-
* {@link ParseContext.fromTableJson}) never touches the filesystem or evaluates
|
|
35
|
-
* `import.meta`. Only grammar-file consumers pay this cost.
|
|
36
|
-
*/
|
|
37
|
-
function bootstrapTableJson() {
|
|
38
|
-
if (bootstrapTable === null) {
|
|
39
|
-
bootstrapTable = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)((0, grammar_json_path_js_1.grammarJsonDirectory)(), 'grammar.json'), 'utf8'));
|
|
40
|
-
}
|
|
41
|
-
return bootstrapTable;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Returns the bootstrapped meta-grammar table for `.grammar` files.
|
|
45
|
-
*/
|
|
46
|
-
function metaGrammarTable() {
|
|
47
|
-
return parse_table_js_1.ParseTable.fromJson(bootstrapTableJson());
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Returns the bootstrapped meta-grammar model used to lex `.grammar` files.
|
|
51
|
-
*/
|
|
52
|
-
function metaGrammar() {
|
|
53
|
-
if (bootstrapMetaGrammar === null) {
|
|
54
|
-
bootstrapMetaGrammar = metaGrammarTable().toGrammar();
|
|
55
|
-
}
|
|
56
|
-
return bootstrapMetaGrammar;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Lexes a `.grammar` source file using the bootstrapped meta-grammar table.
|
|
60
|
-
*
|
|
61
|
-
* @param source - Full grammar file text.
|
|
62
|
-
* @returns Matched tokens excluding `$eof`.
|
|
63
|
-
*/
|
|
64
|
-
function lexGrammarSource(source) {
|
|
65
|
-
const tokens = new lexer_js_1.Lexer(metaGrammar()).lex(source);
|
|
66
|
-
return tokens.filter((token) => !(0, token_js_1.isEofToken)(token));
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=meta-grammar-table.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta-grammar-table.js","sourceRoot":"","sources":["../../../src/lib/grammar/meta-grammar-table.ts"],"names":[],"mappings":";;AAyBA,sDAIC;AAyBD,4CAGC;AAKD,kCAQC;AAQD,4CAKC;AAnFD,qCAAuC;AACvC,yCAAiC;AAEjC,gDAA0C;AAC1C,gDAA+C;AAE/C,kEAA2D;AAI3D,iEAA8D;AAE9D,IAAI,cAAc,GAA0B,IAAI,CAAC;AACjD,IAAI,oBAAoB,GAAmB,IAAI,CAAC;AAEhD;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,KAAqB;IAEvD,cAAc,GAAG,KAAK,CAAC;IACvB,oBAAoB,GAAG,IAAI,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB;IAEvB,IAAI,cAAc,KAAK,IAAI,EAC3B,CAAC;QACG,cAAc,GAAG,IAAI,CAAC,KAAK,CACvB,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,IAAA,2CAAoB,GAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACnD,CAAC;IACxB,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAE5B,OAAO,2BAAU,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IAEvB,IAAI,oBAAoB,KAAK,IAAI,EACjC,CAAC;QACG,oBAAoB,GAAG,gBAAgB,EAAE,CAAC,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,MAAc;IAE3C,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,qBAAU,EAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"production.js","sourceRoot":"","sources":["../../../src/lib/grammar/production.ts"],"names":[],"mappings":""}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReadGrammarError = void 0;
|
|
4
|
-
const parser_lr_error_js_1 = require("../errors/parser-lr-error.js");
|
|
5
|
-
/**
|
|
6
|
-
* Error thrown when a `.grammar` file cannot be lexed or parsed.
|
|
7
|
-
*/
|
|
8
|
-
class ReadGrammarError extends parser_lr_error_js_1.ParserLrError {
|
|
9
|
-
offset;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a grammar read error at a source offset.
|
|
12
|
-
*
|
|
13
|
-
* @param message - Human-readable failure description.
|
|
14
|
-
* @param offset - Source offset where reading failed.
|
|
15
|
-
*/
|
|
16
|
-
constructor(message, offset) {
|
|
17
|
-
super(message);
|
|
18
|
-
this.offset = offset;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.ReadGrammarError = ReadGrammarError;
|
|
22
|
-
//# sourceMappingURL=read-grammar-error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-grammar-error.js","sourceRoot":"","sources":["../../../src/lib/grammar/read-grammar-error.ts"],"names":[],"mappings":";;;AAAA,qEAA6D;AAE7D;;GAEG;AACH,MAAa,gBAAiB,SAAQ,kCAAa;IAU3B;IARpB;;;;;OAKG;IACH,YACI,OAAe,EACC,MAAc;QAG9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;IAIlC,CAAC;CACJ;AAfD,4CAeC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.readGrammar = readGrammar;
|
|
4
|
-
const lexer_js_1 = require("../lexer/lexer.js");
|
|
5
|
-
const shift_reduce_engine_js_1 = require("../shift-reduce/shift-reduce-engine.js");
|
|
6
|
-
const grammar_from_cst_js_1 = require("./grammar-from-cst.js");
|
|
7
|
-
const meta_grammar_table_js_1 = require("./meta-grammar-table.js");
|
|
8
|
-
const read_grammar_error_js_1 = require("./read-grammar-error.js");
|
|
9
|
-
/**
|
|
10
|
-
* Parses a `.grammar` source string into a {@link Grammar} model.
|
|
11
|
-
*
|
|
12
|
-
* @param source - Full grammar file text.
|
|
13
|
-
* @returns Parsed grammar file model.
|
|
14
|
-
*/
|
|
15
|
-
function readGrammar(source) {
|
|
16
|
-
const table = (0, meta_grammar_table_js_1.metaGrammarTable)();
|
|
17
|
-
const tokens = new lexer_js_1.Lexer((0, meta_grammar_table_js_1.metaGrammar)()).lex(source);
|
|
18
|
-
const result = (0, shift_reduce_engine_js_1.parseWithTableResult)(table, tokens);
|
|
19
|
-
if (result.cst === null) {
|
|
20
|
-
throw new read_grammar_error_js_1.ReadGrammarError(result.errorMessage ?? 'Grammar parse failed', result.errorOffset ?? 0);
|
|
21
|
-
}
|
|
22
|
-
return (0, grammar_from_cst_js_1.grammarFromCst)(result.cst);
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=read-grammar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-grammar.js","sourceRoot":"","sources":["../../../src/lib/grammar/read-grammar.ts"],"names":[],"mappings":";;AAcA,kCAeC;AA7BD,gDAA0C;AAC1C,mFAA8E;AAE9E,+DAAuD;AAEvD,mEAAwE;AACxE,mEAA2D;AAE3D;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,MAAc;IAEtC,MAAM,KAAK,GAAG,IAAA,wCAAgB,GAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,IAAA,mCAAW,GAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAA,6CAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,EACvB,CAAC;QACG,MAAM,IAAI,wCAAgB,CACtB,MAAM,CAAC,YAAY,IAAI,sBAAsB,EAC7C,MAAM,CAAC,WAAW,IAAI,CAAC,CAC1B,CAAC;IACN,CAAC;IAED,OAAO,IAAA,oCAAc,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateGrammarTable = validateGrammarTable;
|
|
4
|
-
exports.formatTableValidationIssues = formatTableValidationIssues;
|
|
5
|
-
const desugar_ebnf_js_1 = require("../parse-table/bnf/desugar-ebnf.js");
|
|
6
|
-
/**
|
|
7
|
-
* Validates transform and AST consistency for a parsed grammar.
|
|
8
|
-
*
|
|
9
|
-
* @param grammar - Parsed `.grammar` file model.
|
|
10
|
-
* @returns Validation errors and warnings.
|
|
11
|
-
*/
|
|
12
|
-
function validateGrammarTable(grammar) {
|
|
13
|
-
const issues = [];
|
|
14
|
-
const bnf = new desugar_ebnf_js_1.EbnfDesugarer(grammar).desugar();
|
|
15
|
-
const bnfProductionNames = new Set(bnf.productions.map((production) => production.name));
|
|
16
|
-
collectDuplicateDefinitionWarnings(grammar, issues);
|
|
17
|
-
if (grammar.transformSchema !== null) {
|
|
18
|
-
for (const rule of grammar.transformSchema.rules) {
|
|
19
|
-
validateTransformProductionExists(rule, bnfProductionNames, issues);
|
|
20
|
-
for (const alternative of rule.alternatives) {
|
|
21
|
-
validateTransformExpression(grammar, alternative.expression, issues);
|
|
22
|
-
collectPassCollapseWarnings(grammar, rule, alternative.expression, bnf.productions, issues);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return issues;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Warns when a grammar redeclares a production, ast type, or transform rule.
|
|
30
|
-
*
|
|
31
|
-
* @remarks
|
|
32
|
-
* Later definitions silently replace earlier ones during grammar loading, so a
|
|
33
|
-
* duplicate almost always signals a copy-paste mistake (for example EduBASIC's
|
|
34
|
-
* duplicated statement blocks).
|
|
35
|
-
*
|
|
36
|
-
* @param grammar - Parsed grammar model.
|
|
37
|
-
* @param issues - Issue list to append to.
|
|
38
|
-
*/
|
|
39
|
-
function collectDuplicateDefinitionWarnings(grammar, issues) {
|
|
40
|
-
// Flag repeated production names in the grammar section.
|
|
41
|
-
reportDuplicateNames(grammar.productions.map((production) => production.name), 'grammar', 'production', issues);
|
|
42
|
-
// Flag repeated ast type names.
|
|
43
|
-
if (grammar.astSchema !== null) {
|
|
44
|
-
reportDuplicateNames(grammar.astSchema.types.map((type) => type.name), 'ast', 'type', issues);
|
|
45
|
-
}
|
|
46
|
-
// Flag repeated transform rules for the same production.
|
|
47
|
-
if (grammar.transformSchema !== null) {
|
|
48
|
-
reportDuplicateNames(grammar.transformSchema.rules.map((rule) => rule.production), 'transform', 'rule', issues);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Records a warning for each name that appears more than once.
|
|
53
|
-
*
|
|
54
|
-
* @param names - Declared names in source order.
|
|
55
|
-
* @param section - Grammar section name for the message.
|
|
56
|
-
* @param kind - Declaration kind for the message.
|
|
57
|
-
* @param issues - Issue list to append to.
|
|
58
|
-
*/
|
|
59
|
-
function reportDuplicateNames(names, section, kind, issues) {
|
|
60
|
-
const seen = new Set();
|
|
61
|
-
const reported = new Set();
|
|
62
|
-
for (const name of names) {
|
|
63
|
-
if (seen.has(name) && !reported.has(name)) {
|
|
64
|
-
issues.push({
|
|
65
|
-
severity: 'warning',
|
|
66
|
-
message: `duplicate ${section} ${kind} ${JSON.stringify(name)}; `
|
|
67
|
-
+ `the later definition overrides the earlier one`,
|
|
68
|
-
});
|
|
69
|
-
reported.add(name);
|
|
70
|
-
}
|
|
71
|
-
seen.add(name);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Records an error when a transform rule names an unknown production.
|
|
76
|
-
*
|
|
77
|
-
* @param rule - Transform rule to validate.
|
|
78
|
-
* @param bnfProductionNames - Desugared production names.
|
|
79
|
-
* @param issues - Issue list to append to.
|
|
80
|
-
*/
|
|
81
|
-
function validateTransformProductionExists(rule, bnfProductionNames, issues) {
|
|
82
|
-
if (!bnfProductionNames.has(rule.production)) {
|
|
83
|
-
issues.push({
|
|
84
|
-
severity: 'error',
|
|
85
|
-
message: `transform rule for unknown production ${JSON.stringify(rule.production)}`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Validates one transform expression against the grammar AST schema.
|
|
91
|
-
*
|
|
92
|
-
* @param grammar - Parsed grammar model.
|
|
93
|
-
* @param expression - Transform expression to validate.
|
|
94
|
-
* @param issues - Issue list to append to.
|
|
95
|
-
*/
|
|
96
|
-
function validateTransformExpression(grammar, expression, issues) {
|
|
97
|
-
switch (expression.kind) {
|
|
98
|
-
case 'build':
|
|
99
|
-
validateAstTarget(grammar, expression.typeName, expression.variant, issues);
|
|
100
|
-
break;
|
|
101
|
-
case 'foldLeft':
|
|
102
|
-
case 'foldRight':
|
|
103
|
-
case 'flatten':
|
|
104
|
-
validateAstTarget(grammar, expression.typeName, expression.variant, issues);
|
|
105
|
-
break;
|
|
106
|
-
case 'drop':
|
|
107
|
-
case 'pass':
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Records an error when a transform references an undefined AST type or variant.
|
|
113
|
-
*
|
|
114
|
-
* @param grammar - Parsed grammar model.
|
|
115
|
-
* @param typeName - AST type name from a transform expression.
|
|
116
|
-
* @param variant - AST variant label from a transform expression.
|
|
117
|
-
* @param issues - Issue list to append to.
|
|
118
|
-
*/
|
|
119
|
-
function validateAstTarget(grammar, typeName, variant, issues) {
|
|
120
|
-
if (grammar.astSchema === null) {
|
|
121
|
-
issues.push({
|
|
122
|
-
severity: 'error',
|
|
123
|
-
message: `transform references ${typeName}.${variant} but the grammar has no ast section`,
|
|
124
|
-
});
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const astType = grammar.astSchema.type(typeName);
|
|
128
|
-
if (astType === null) {
|
|
129
|
-
issues.push({
|
|
130
|
-
severity: 'error',
|
|
131
|
-
message: `transform references undefined ast type ${JSON.stringify(typeName)}`,
|
|
132
|
-
});
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
const variants = collectAstVariants(astType.expression);
|
|
136
|
-
if (!variants.includes(variant)) {
|
|
137
|
-
issues.push({
|
|
138
|
-
severity: 'error',
|
|
139
|
-
message: `transform references ${typeName}.${variant} which is not declared in ast`,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Collects variant labels declared on one AST type expression.
|
|
145
|
-
*
|
|
146
|
-
* @param expression - AST type right-hand side expression.
|
|
147
|
-
*/
|
|
148
|
-
function collectAstVariants(expression) {
|
|
149
|
-
if (expression.kind === 'choice') {
|
|
150
|
-
return expression.alternatives
|
|
151
|
-
.map((alternative) => alternative.label)
|
|
152
|
-
.filter((label) => label !== null);
|
|
153
|
-
}
|
|
154
|
-
if (expression.kind === 'sequence' || expression.kind === 'group') {
|
|
155
|
-
const inner = expression.kind === 'sequence'
|
|
156
|
-
? expression.elements[0]
|
|
157
|
-
: expression.element;
|
|
158
|
-
if (inner === undefined) {
|
|
159
|
-
return [];
|
|
160
|
-
}
|
|
161
|
-
return collectAstVariants(inner);
|
|
162
|
-
}
|
|
163
|
-
return [];
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Warns when pass(boundSlot) may collapse a single-terminal child production.
|
|
167
|
-
*
|
|
168
|
-
* @param grammar - Parsed grammar model.
|
|
169
|
-
* @param rule - Parent production transform rule.
|
|
170
|
-
* @param expression - Transform expression for one alternative.
|
|
171
|
-
* @param bnfProductions - Desugared BNF productions.
|
|
172
|
-
* @param issues - Issue list to append to.
|
|
173
|
-
*/
|
|
174
|
-
function collectPassCollapseWarnings(grammar, rule, expression, bnfProductions, issues) {
|
|
175
|
-
if (expression.kind !== 'pass') {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
const parentProduction = grammar.production(rule.production);
|
|
179
|
-
if (parentProduction === null) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
const boundSymbol = resolveBindingSymbol(parentProduction.expression, expression.reference);
|
|
183
|
-
if (boundSymbol === null || !grammar.hasProduction(boundSymbol)) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
if (grammar.transformSchema?.hasRule(boundSymbol) === true) {
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
if (!hasSingleTerminalAlternative(boundSymbol, bnfProductions)) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
issues.push({
|
|
193
|
-
severity: 'warning',
|
|
194
|
-
message: `pass(${expression.reference}) on ${rule.production} binds ${boundSymbol} `
|
|
195
|
-
+ `which has no transform rule and can match a single terminal; `
|
|
196
|
-
+ `add a transform for ${boundSymbol} or use build`,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Returns the symbol bound to a slot name on one production expression.
|
|
201
|
-
*
|
|
202
|
-
* @param expression - Production right-hand side expression.
|
|
203
|
-
* @param binding - Binding name from a pass transform.
|
|
204
|
-
*/
|
|
205
|
-
function resolveBindingSymbol(expression, binding) {
|
|
206
|
-
if (expression.kind === 'boundReference' && expression.binding === binding) {
|
|
207
|
-
return expression.name;
|
|
208
|
-
}
|
|
209
|
-
if (expression.kind === 'sequence') {
|
|
210
|
-
for (const element of expression.elements) {
|
|
211
|
-
const resolved = resolveBindingSymbol(element, binding);
|
|
212
|
-
if (resolved !== null) {
|
|
213
|
-
return resolved;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (expression.kind === 'choice') {
|
|
218
|
-
for (const alternative of expression.alternatives) {
|
|
219
|
-
const resolved = resolveBindingSymbol(alternative.expression, binding);
|
|
220
|
-
if (resolved !== null) {
|
|
221
|
-
return resolved;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (expression.kind === 'optional' || expression.kind === 'group') {
|
|
226
|
-
return resolveBindingSymbol(expression.element, binding);
|
|
227
|
-
}
|
|
228
|
-
if (expression.kind === 'repeat') {
|
|
229
|
-
return resolveBindingSymbol(expression.element, binding);
|
|
230
|
-
}
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Returns whether a production has a desugared alternative of one terminal symbol.
|
|
235
|
-
*
|
|
236
|
-
* @param productionName - Non-terminal production name.
|
|
237
|
-
* @param bnfProductions - Desugared BNF productions.
|
|
238
|
-
*/
|
|
239
|
-
function hasSingleTerminalAlternative(productionName, bnfProductions) {
|
|
240
|
-
return bnfProductions.some((production) => production.name === productionName
|
|
241
|
-
&& production.rhs.length === 1
|
|
242
|
-
&& isTerminalSymbol(production.rhs[0]));
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Returns whether a BNF symbol is a terminal token or literal.
|
|
246
|
-
*
|
|
247
|
-
* @param symbol - Desugared right-hand side symbol.
|
|
248
|
-
*/
|
|
249
|
-
function isTerminalSymbol(symbol) {
|
|
250
|
-
return symbol?.kind === 'terminal' || symbol?.kind === 'token';
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Formats validation issues as stderr warning or error lines.
|
|
254
|
-
*
|
|
255
|
-
* @param issues - Validation issues to format.
|
|
256
|
-
*/
|
|
257
|
-
function formatTableValidationIssues(issues) {
|
|
258
|
-
return issues.map((issue) => issue.severity === 'error'
|
|
259
|
-
? `error: ${issue.message}`
|
|
260
|
-
: `warning: ${issue.message}`);
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=table-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-rule.js","sourceRoot":"","sources":["../../../src/lib/grammar/token-rule.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-expression.js","sourceRoot":"","sources":["../../../src/lib/grammar/transform-expression.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-rule.js","sourceRoot":"","sources":["../../../src/lib/grammar/transform-rule.ts"],"names":[],"mappings":""}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TransformSchema = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* CST-to-AST rules from the `transform` section of a `.grammar` file.
|
|
6
|
-
*/
|
|
7
|
-
class TransformSchema {
|
|
8
|
-
rules;
|
|
9
|
-
rulesByProduction;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a transform schema from declared rules.
|
|
12
|
-
*
|
|
13
|
-
* @param rules - Production transform rules from the `transform` section.
|
|
14
|
-
*/
|
|
15
|
-
constructor(rules) {
|
|
16
|
-
this.rules = rules;
|
|
17
|
-
// Index rules by CST production name for lookup.
|
|
18
|
-
const rulesByProduction = new Map();
|
|
19
|
-
for (const rule of rules) {
|
|
20
|
-
rulesByProduction.set(rule.production, rule);
|
|
21
|
-
}
|
|
22
|
-
this.rulesByProduction = rulesByProduction;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Returns transform rules for a CST production.
|
|
26
|
-
*
|
|
27
|
-
* @param production - Production name to look up.
|
|
28
|
-
* @returns The matching rule, or null when the production is undefined.
|
|
29
|
-
*/
|
|
30
|
-
rule(production) {
|
|
31
|
-
return this.rulesByProduction.get(production) ?? null;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Whether a CST production has transform rules defined.
|
|
35
|
-
*
|
|
36
|
-
* @param production - Production name to test.
|
|
37
|
-
*/
|
|
38
|
-
hasRule(production) {
|
|
39
|
-
return this.rulesByProduction.has(production);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.TransformSchema = TransformSchema;
|
|
43
|
-
//# sourceMappingURL=transform-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-schema.js","sourceRoot":"","sources":["../../../src/lib/grammar/transform-schema.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,eAAe;IASW;IAPlB,iBAAiB,CAAqC;IAEvE;;;;OAIG;IACH,YAAmC,KAA+B;QAA/B,UAAK,GAAL,KAAK,CAA0B;QAE9D,iDAAiD;QACjD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,KAAK,EACxB,CAAC;YACG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAC,UAAkB;QAE1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,UAAkB;QAE7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;CACJ;AA1CD,0CA0CC"}
|
package/dist/lib-cjs/index.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Public library entry point for parser-lr.
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CstTransformer = exports.transformCst = exports.ShiftReduceEngine = exports.parseWithTableResult = exports.parseWithTable = exports.ParserLr = exports.formatParseOutput = exports.ParseContext = exports.ParseOutputError = exports.ParseContextError = exports.ParserLrError = exports.messageContainsStackTrace = exports.isParserLrError = exports.formatUserError = exports.tokenInventory = exports.parseLrAlgorithm = exports.isLrAlgorithm = exports.ParseTableError = exports.ParseTable = exports.PARSE_TABLE_VERSION = exports.LrAlgorithmError = exports.token = exports.isEofToken = exports.eofToken = exports.compileLexerRules = exports.LexerError = exports.EOF_TOKEN_NAME = exports.DEFAULT_LEXER_STATE = exports.lexChunksAsync = exports.lexChunks = exports.lexChunkStreamAsync = exports.lexChunkStream = exports.LexerStateError = exports.LexerInputError = exports.LexerCompileError = exports.Lexer = exports.readGrammar = exports.ReadGrammarError = exports.validateGrammarTable = exports.formatTableValidationIssues = exports.TransformSchema = exports.Grammar = exports.AstSchema = exports.AstNode = void 0;
|
|
7
|
-
var ast_node_js_1 = require("./ast/ast-node.js");
|
|
8
|
-
Object.defineProperty(exports, "AstNode", { enumerable: true, get: function () { return ast_node_js_1.AstNode; } });
|
|
9
|
-
var index_js_1 = require("./grammar/index.js");
|
|
10
|
-
Object.defineProperty(exports, "AstSchema", { enumerable: true, get: function () { return index_js_1.AstSchema; } });
|
|
11
|
-
Object.defineProperty(exports, "Grammar", { enumerable: true, get: function () { return index_js_1.Grammar; } });
|
|
12
|
-
Object.defineProperty(exports, "TransformSchema", { enumerable: true, get: function () { return index_js_1.TransformSchema; } });
|
|
13
|
-
var index_js_2 = require("./grammar/index.js");
|
|
14
|
-
Object.defineProperty(exports, "formatTableValidationIssues", { enumerable: true, get: function () { return index_js_2.formatTableValidationIssues; } });
|
|
15
|
-
Object.defineProperty(exports, "validateGrammarTable", { enumerable: true, get: function () { return index_js_2.validateGrammarTable; } });
|
|
16
|
-
var index_js_3 = require("./grammar/index.js");
|
|
17
|
-
Object.defineProperty(exports, "ReadGrammarError", { enumerable: true, get: function () { return index_js_3.ReadGrammarError; } });
|
|
18
|
-
Object.defineProperty(exports, "readGrammar", { enumerable: true, get: function () { return index_js_3.readGrammar; } });
|
|
19
|
-
var index_js_4 = require("./lexer/index.js");
|
|
20
|
-
Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return index_js_4.Lexer; } });
|
|
21
|
-
Object.defineProperty(exports, "LexerCompileError", { enumerable: true, get: function () { return index_js_4.LexerCompileError; } });
|
|
22
|
-
Object.defineProperty(exports, "LexerInputError", { enumerable: true, get: function () { return index_js_4.LexerInputError; } });
|
|
23
|
-
Object.defineProperty(exports, "LexerStateError", { enumerable: true, get: function () { return index_js_4.LexerStateError; } });
|
|
24
|
-
Object.defineProperty(exports, "lexChunkStream", { enumerable: true, get: function () { return index_js_4.lexChunkStream; } });
|
|
25
|
-
Object.defineProperty(exports, "lexChunkStreamAsync", { enumerable: true, get: function () { return index_js_4.lexChunkStreamAsync; } });
|
|
26
|
-
Object.defineProperty(exports, "lexChunks", { enumerable: true, get: function () { return index_js_4.lexChunks; } });
|
|
27
|
-
Object.defineProperty(exports, "lexChunksAsync", { enumerable: true, get: function () { return index_js_4.lexChunksAsync; } });
|
|
28
|
-
var index_js_5 = require("./lexer/index.js");
|
|
29
|
-
Object.defineProperty(exports, "DEFAULT_LEXER_STATE", { enumerable: true, get: function () { return index_js_5.DEFAULT_LEXER_STATE; } });
|
|
30
|
-
Object.defineProperty(exports, "EOF_TOKEN_NAME", { enumerable: true, get: function () { return index_js_5.EOF_TOKEN_NAME; } });
|
|
31
|
-
Object.defineProperty(exports, "LexerError", { enumerable: true, get: function () { return index_js_5.LexerError; } });
|
|
32
|
-
Object.defineProperty(exports, "compileLexerRules", { enumerable: true, get: function () { return index_js_5.compileLexerRules; } });
|
|
33
|
-
Object.defineProperty(exports, "eofToken", { enumerable: true, get: function () { return index_js_5.eofToken; } });
|
|
34
|
-
Object.defineProperty(exports, "isEofToken", { enumerable: true, get: function () { return index_js_5.isEofToken; } });
|
|
35
|
-
Object.defineProperty(exports, "token", { enumerable: true, get: function () { return index_js_5.token; } });
|
|
36
|
-
var index_js_6 = require("./parse-table/index.js");
|
|
37
|
-
Object.defineProperty(exports, "LrAlgorithmError", { enumerable: true, get: function () { return index_js_6.LrAlgorithmError; } });
|
|
38
|
-
Object.defineProperty(exports, "PARSE_TABLE_VERSION", { enumerable: true, get: function () { return index_js_6.PARSE_TABLE_VERSION; } });
|
|
39
|
-
Object.defineProperty(exports, "ParseTable", { enumerable: true, get: function () { return index_js_6.ParseTable; } });
|
|
40
|
-
Object.defineProperty(exports, "ParseTableError", { enumerable: true, get: function () { return index_js_6.ParseTableError; } });
|
|
41
|
-
Object.defineProperty(exports, "isLrAlgorithm", { enumerable: true, get: function () { return index_js_6.isLrAlgorithm; } });
|
|
42
|
-
Object.defineProperty(exports, "parseLrAlgorithm", { enumerable: true, get: function () { return index_js_6.parseLrAlgorithm; } });
|
|
43
|
-
Object.defineProperty(exports, "tokenInventory", { enumerable: true, get: function () { return index_js_6.tokenInventory; } });
|
|
44
|
-
var index_js_7 = require("./errors/index.js");
|
|
45
|
-
Object.defineProperty(exports, "formatUserError", { enumerable: true, get: function () { return index_js_7.formatUserError; } });
|
|
46
|
-
Object.defineProperty(exports, "isParserLrError", { enumerable: true, get: function () { return index_js_7.isParserLrError; } });
|
|
47
|
-
Object.defineProperty(exports, "messageContainsStackTrace", { enumerable: true, get: function () { return index_js_7.messageContainsStackTrace; } });
|
|
48
|
-
Object.defineProperty(exports, "ParserLrError", { enumerable: true, get: function () { return index_js_7.ParserLrError; } });
|
|
49
|
-
var parse_context_error_js_1 = require("./parse-context-error.js");
|
|
50
|
-
Object.defineProperty(exports, "ParseContextError", { enumerable: true, get: function () { return parse_context_error_js_1.ParseContextError; } });
|
|
51
|
-
var parse_output_error_js_1 = require("./parse-output-error.js");
|
|
52
|
-
Object.defineProperty(exports, "ParseOutputError", { enumerable: true, get: function () { return parse_output_error_js_1.ParseOutputError; } });
|
|
53
|
-
var parse_context_js_1 = require("./parse-context.js");
|
|
54
|
-
Object.defineProperty(exports, "ParseContext", { enumerable: true, get: function () { return parse_context_js_1.ParseContext; } });
|
|
55
|
-
var parse_output_js_1 = require("./parse-output.js");
|
|
56
|
-
Object.defineProperty(exports, "formatParseOutput", { enumerable: true, get: function () { return parse_output_js_1.formatParseOutput; } });
|
|
57
|
-
var parser_lr_js_1 = require("./parser-lr.js");
|
|
58
|
-
Object.defineProperty(exports, "ParserLr", { enumerable: true, get: function () { return parser_lr_js_1.ParserLr; } });
|
|
59
|
-
var index_js_8 = require("./shift-reduce/index.js");
|
|
60
|
-
Object.defineProperty(exports, "parseWithTable", { enumerable: true, get: function () { return index_js_8.parseWithTable; } });
|
|
61
|
-
Object.defineProperty(exports, "parseWithTableResult", { enumerable: true, get: function () { return index_js_8.parseWithTableResult; } });
|
|
62
|
-
Object.defineProperty(exports, "ShiftReduceEngine", { enumerable: true, get: function () { return index_js_8.ShiftReduceEngine; } });
|
|
63
|
-
var index_js_9 = require("./transform/index.js");
|
|
64
|
-
Object.defineProperty(exports, "transformCst", { enumerable: true, get: function () { return index_js_9.transformCst; } });
|
|
65
|
-
Object.defineProperty(exports, "CstTransformer", { enumerable: true, get: function () { return index_js_9.CstTransformer; } });
|
|
66
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA4C;AAAnC,sGAAA,OAAO,OAAA;AA0BhB,+CAAyE;AAAhE,qGAAA,SAAS,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,2GAAA,eAAe,OAAA;AAC5C,+CAG4B;AAFxB,uHAAA,2BAA2B,OAAA;AAC3B,gHAAA,oBAAoB,OAAA;AAGxB,+CAAmE;AAA1D,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,6CAA8J;AAArJ,iGAAA,KAAK,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAAE,qGAAA,SAAS,OAAA;AAAE,0GAAA,cAAc,OAAA;AACnI,6CAQ0B;AAPtB,+GAAA,mBAAmB,OAAA;AACnB,0GAAA,cAAc,OAAA;AACd,sGAAA,UAAU,OAAA;AACV,6GAAA,iBAAiB,OAAA;AACjB,oGAAA,QAAQ,OAAA;AACR,sGAAA,UAAU,OAAA;AACV,iGAAA,KAAK,OAAA;AAGT,mDAA6J;AAApJ,4GAAA,gBAAgB,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAAE,sGAAA,UAAU,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAE5H,8CAA+G;AAAtG,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,qHAAA,yBAAyB,OAAA;AAAE,yGAAA,aAAa,OAAA;AACnF,mEAA6D;AAApD,2HAAA,iBAAiB,OAAA;AAC1B,iEAA2D;AAAlD,yHAAA,gBAAgB,OAAA;AACzB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AAErB,qDAAsD;AAA7C,oHAAA,iBAAiB,OAAA;AAC1B,+CAA0C;AAAjC,wGAAA,QAAQ,OAAA;AACjB,oDAAkG;AAAzF,0GAAA,cAAc,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAEhE,iDAAoE;AAA3D,wGAAA,YAAY,OAAA;AAAE,0GAAA,cAAc,OAAA"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.token = exports.isEofToken = exports.eofToken = exports.EOF_TOKEN_NAME = exports.lexChunksAsync = exports.lexChunks = exports.lexChunkStreamAsync = exports.lexChunkStream = exports.Lexer = exports.LexerError = exports.rulesForState = exports.resolveLexerStates = exports.matchRule = exports.hasLongerPossibleMatchCrossRule = exports.hasLongerPossibleMatch = exports.findLongestMatch = exports.compileLexerRules = exports.DEFAULT_LEXER_STATE = exports.LexerStateError = exports.LexerInputError = exports.LexerCompileError = void 0;
|
|
4
|
-
var lexer_compile_error_js_1 = require("./lexer-compile-error.js");
|
|
5
|
-
Object.defineProperty(exports, "LexerCompileError", { enumerable: true, get: function () { return lexer_compile_error_js_1.LexerCompileError; } });
|
|
6
|
-
var lexer_input_error_js_1 = require("./lexer-input-error.js");
|
|
7
|
-
Object.defineProperty(exports, "LexerInputError", { enumerable: true, get: function () { return lexer_input_error_js_1.LexerInputError; } });
|
|
8
|
-
var lexer_state_error_js_1 = require("./lexer-state-error.js");
|
|
9
|
-
Object.defineProperty(exports, "LexerStateError", { enumerable: true, get: function () { return lexer_state_error_js_1.LexerStateError; } });
|
|
10
|
-
var lexer_compile_js_1 = require("./lexer-compile.js");
|
|
11
|
-
Object.defineProperty(exports, "DEFAULT_LEXER_STATE", { enumerable: true, get: function () { return lexer_compile_js_1.DEFAULT_LEXER_STATE; } });
|
|
12
|
-
Object.defineProperty(exports, "compileLexerRules", { enumerable: true, get: function () { return lexer_compile_js_1.compileLexerRules; } });
|
|
13
|
-
Object.defineProperty(exports, "findLongestMatch", { enumerable: true, get: function () { return lexer_compile_js_1.findLongestMatch; } });
|
|
14
|
-
Object.defineProperty(exports, "hasLongerPossibleMatch", { enumerable: true, get: function () { return lexer_compile_js_1.hasLongerPossibleMatch; } });
|
|
15
|
-
Object.defineProperty(exports, "hasLongerPossibleMatchCrossRule", { enumerable: true, get: function () { return lexer_compile_js_1.hasLongerPossibleMatchCrossRule; } });
|
|
16
|
-
Object.defineProperty(exports, "matchRule", { enumerable: true, get: function () { return lexer_compile_js_1.matchRule; } });
|
|
17
|
-
Object.defineProperty(exports, "resolveLexerStates", { enumerable: true, get: function () { return lexer_compile_js_1.resolveLexerStates; } });
|
|
18
|
-
Object.defineProperty(exports, "rulesForState", { enumerable: true, get: function () { return lexer_compile_js_1.rulesForState; } });
|
|
19
|
-
var lexer_error_js_1 = require("./lexer-error.js");
|
|
20
|
-
Object.defineProperty(exports, "LexerError", { enumerable: true, get: function () { return lexer_error_js_1.LexerError; } });
|
|
21
|
-
var lexer_js_1 = require("./lexer.js");
|
|
22
|
-
Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return lexer_js_1.Lexer; } });
|
|
23
|
-
Object.defineProperty(exports, "lexChunkStream", { enumerable: true, get: function () { return lexer_js_1.lexChunkStream; } });
|
|
24
|
-
Object.defineProperty(exports, "lexChunkStreamAsync", { enumerable: true, get: function () { return lexer_js_1.lexChunkStreamAsync; } });
|
|
25
|
-
Object.defineProperty(exports, "lexChunks", { enumerable: true, get: function () { return lexer_js_1.lexChunks; } });
|
|
26
|
-
Object.defineProperty(exports, "lexChunksAsync", { enumerable: true, get: function () { return lexer_js_1.lexChunksAsync; } });
|
|
27
|
-
var token_js_1 = require("./token.js");
|
|
28
|
-
Object.defineProperty(exports, "EOF_TOKEN_NAME", { enumerable: true, get: function () { return token_js_1.EOF_TOKEN_NAME; } });
|
|
29
|
-
Object.defineProperty(exports, "eofToken", { enumerable: true, get: function () { return token_js_1.eofToken; } });
|
|
30
|
-
Object.defineProperty(exports, "isEofToken", { enumerable: true, get: function () { return token_js_1.isEofToken; } });
|
|
31
|
-
Object.defineProperty(exports, "token", { enumerable: true, get: function () { return token_js_1.token; } });
|
|
32
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/lexer/index.ts"],"names":[],"mappings":";;;AAAA,mEAA6D;AAApD,2HAAA,iBAAiB,OAAA;AAC1B,+DAAyD;AAAhD,uHAAA,eAAe,OAAA;AACxB,+DAAyD;AAAhD,uHAAA,eAAe,OAAA;AACxB,uDAS4B;AARxB,uHAAA,mBAAmB,OAAA;AACnB,qHAAA,iBAAiB,OAAA;AACjB,oHAAA,gBAAgB,OAAA;AAChB,0HAAA,sBAAsB,OAAA;AACtB,mIAAA,+BAA+B,OAAA;AAC/B,6GAAA,SAAS,OAAA;AACT,sHAAA,kBAAkB,OAAA;AAClB,iHAAA,aAAa,OAAA;AAGjB,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AACnB,uCAMoB;AALhB,iGAAA,KAAK,OAAA;AACL,0GAAA,cAAc,OAAA;AACd,+GAAA,mBAAmB,OAAA;AACnB,qGAAA,SAAS,OAAA;AACT,0GAAA,cAAc,OAAA;AAElB,uCAAyE;AAAhE,0GAAA,cAAc,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,sGAAA,UAAU,OAAA;AAAE,iGAAA,KAAK,OAAA"}
|