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.
Files changed (173) hide show
  1. package/README.md +14 -30
  2. package/bin/parser-lr.js +11388 -11409
  3. package/bin/parser-lr.js.map +1 -1
  4. package/dist/lib/grammar/index.d.ts +1 -1
  5. package/dist/lib/grammar/index.d.ts.map +1 -1
  6. package/dist/lib/grammar/index.js +1 -1
  7. package/dist/lib/grammar/index.js.map +1 -1
  8. package/dist/lib/grammar/meta-grammar-table.d.ts +0 -12
  9. package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -1
  10. package/dist/lib/grammar/meta-grammar-table.js +5 -22
  11. package/dist/lib/grammar/meta-grammar-table.js.map +1 -1
  12. package/dist/lib/grammar-entry.d.ts +42 -0
  13. package/dist/lib/grammar-entry.d.ts.map +1 -0
  14. package/dist/lib/grammar-entry.js +45 -0
  15. package/dist/lib/grammar-entry.js.map +1 -0
  16. package/dist/lib/index.d.ts +7 -5
  17. package/dist/lib/index.d.ts.map +1 -1
  18. package/dist/lib/index.js +0 -3
  19. package/dist/lib/index.js.map +1 -1
  20. package/dist/lib/parse-context.d.ts +4 -15
  21. package/dist/lib/parse-context.d.ts.map +1 -1
  22. package/dist/lib/parse-context.js +4 -23
  23. package/dist/lib/parse-context.js.map +1 -1
  24. package/dist/lib/transform/grammar-fixture.js +3 -3
  25. package/dist/lib/transform/grammar-fixture.js.map +1 -1
  26. package/docs/parser-lr-browser-lib-split.md +174 -0
  27. package/package.json +7 -2
  28. package/dist/lib/grammar/grammar-json-path.d.ts +0 -2
  29. package/dist/lib/grammar/grammar-json-path.d.ts.map +0 -1
  30. package/dist/lib/grammar/grammar-json-path.esm.d.ts +0 -5
  31. package/dist/lib/grammar/grammar-json-path.esm.d.ts.map +0 -1
  32. package/dist/lib/grammar/grammar-json-path.esm.js +0 -9
  33. package/dist/lib/grammar/grammar-json-path.esm.js.map +0 -1
  34. package/dist/lib/grammar/grammar-json-path.js +0 -2
  35. package/dist/lib/grammar/grammar-json-path.js.map +0 -1
  36. package/dist/lib-cjs/ast/ast-node.js +0 -70
  37. package/dist/lib-cjs/ast/ast-node.js.map +0 -1
  38. package/dist/lib-cjs/errors/index.js +0 -9
  39. package/dist/lib-cjs/errors/index.js.map +0 -1
  40. package/dist/lib-cjs/errors/parser-lr-error.js +0 -52
  41. package/dist/lib-cjs/errors/parser-lr-error.js.map +0 -1
  42. package/dist/lib-cjs/grammar/ast-schema.js +0 -43
  43. package/dist/lib-cjs/grammar/ast-schema.js.map +0 -1
  44. package/dist/lib-cjs/grammar/ast-type.js +0 -3
  45. package/dist/lib-cjs/grammar/ast-type.js.map +0 -1
  46. package/dist/lib-cjs/grammar/expression.js +0 -3
  47. package/dist/lib-cjs/grammar/expression.js.map +0 -1
  48. package/dist/lib-cjs/grammar/grammar-from-cst.js +0 -641
  49. package/dist/lib-cjs/grammar/grammar-from-cst.js.map +0 -1
  50. package/dist/lib-cjs/grammar/grammar-json-path.js +0 -13
  51. package/dist/lib-cjs/grammar/grammar-json-path.js.map +0 -1
  52. package/dist/lib-cjs/grammar/grammar-literals.js +0 -71
  53. package/dist/lib-cjs/grammar/grammar-literals.js.map +0 -1
  54. package/dist/lib-cjs/grammar/grammar.js +0 -64
  55. package/dist/lib-cjs/grammar/grammar.js.map +0 -1
  56. package/dist/lib-cjs/grammar/grammar.json +0 -5760
  57. package/dist/lib-cjs/grammar/index.js +0 -21
  58. package/dist/lib-cjs/grammar/index.js.map +0 -1
  59. package/dist/lib-cjs/grammar/meta-grammar-table.js +0 -68
  60. package/dist/lib-cjs/grammar/meta-grammar-table.js.map +0 -1
  61. package/dist/lib-cjs/grammar/production.js +0 -3
  62. package/dist/lib-cjs/grammar/production.js.map +0 -1
  63. package/dist/lib-cjs/grammar/read-grammar-error.js +0 -22
  64. package/dist/lib-cjs/grammar/read-grammar-error.js.map +0 -1
  65. package/dist/lib-cjs/grammar/read-grammar.js +0 -24
  66. package/dist/lib-cjs/grammar/read-grammar.js.map +0 -1
  67. package/dist/lib-cjs/grammar/table-validator.js +0 -262
  68. package/dist/lib-cjs/grammar/table-validator.js.map +0 -1
  69. package/dist/lib-cjs/grammar/token-rule.js +0 -3
  70. package/dist/lib-cjs/grammar/token-rule.js.map +0 -1
  71. package/dist/lib-cjs/grammar/transform-expression.js +0 -3
  72. package/dist/lib-cjs/grammar/transform-expression.js.map +0 -1
  73. package/dist/lib-cjs/grammar/transform-rule.js +0 -3
  74. package/dist/lib-cjs/grammar/transform-rule.js.map +0 -1
  75. package/dist/lib-cjs/grammar/transform-schema.js +0 -43
  76. package/dist/lib-cjs/grammar/transform-schema.js.map +0 -1
  77. package/dist/lib-cjs/index.js +0 -66
  78. package/dist/lib-cjs/index.js.map +0 -1
  79. package/dist/lib-cjs/lexer/index.js +0 -32
  80. package/dist/lib-cjs/lexer/index.js.map +0 -1
  81. package/dist/lib-cjs/lexer/lexer-compile-error.js +0 -22
  82. package/dist/lib-cjs/lexer/lexer-compile-error.js.map +0 -1
  83. package/dist/lib-cjs/lexer/lexer-compile.js +0 -201
  84. package/dist/lib-cjs/lexer/lexer-compile.js.map +0 -1
  85. package/dist/lib-cjs/lexer/lexer-error.js +0 -22
  86. package/dist/lib-cjs/lexer/lexer-error.js.map +0 -1
  87. package/dist/lib-cjs/lexer/lexer-input-error.js +0 -17
  88. package/dist/lib-cjs/lexer/lexer-input-error.js.map +0 -1
  89. package/dist/lib-cjs/lexer/lexer-state-error.js +0 -19
  90. package/dist/lib-cjs/lexer/lexer-state-error.js.map +0 -1
  91. package/dist/lib-cjs/lexer/lexer.js +0 -278
  92. package/dist/lib-cjs/lexer/lexer.js.map +0 -1
  93. package/dist/lib-cjs/lexer/token.js +0 -44
  94. package/dist/lib-cjs/lexer/token.js.map +0 -1
  95. package/dist/lib-cjs/package.json +0 -3
  96. package/dist/lib-cjs/parse-context-error.js +0 -19
  97. package/dist/lib-cjs/parse-context-error.js.map +0 -1
  98. package/dist/lib-cjs/parse-context.js +0 -137
  99. package/dist/lib-cjs/parse-context.js.map +0 -1
  100. package/dist/lib-cjs/parse-output-error.js +0 -19
  101. package/dist/lib-cjs/parse-output-error.js.map +0 -1
  102. package/dist/lib-cjs/parse-output.js +0 -18
  103. package/dist/lib-cjs/parse-output.js.map +0 -1
  104. package/dist/lib-cjs/parse-table/analysis/first-follow.js +0 -294
  105. package/dist/lib-cjs/parse-table/analysis/first-follow.js.map +0 -1
  106. package/dist/lib-cjs/parse-table/analysis/index.js +0 -9
  107. package/dist/lib-cjs/parse-table/analysis/index.js.map +0 -1
  108. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js +0 -140
  109. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js.map +0 -1
  110. package/dist/lib-cjs/parse-table/bnf/bnf-production.js +0 -3
  111. package/dist/lib-cjs/parse-table/bnf/bnf-production.js.map +0 -1
  112. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js +0 -39
  113. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js.map +0 -1
  114. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js +0 -224
  115. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js.map +0 -1
  116. package/dist/lib-cjs/parse-table/bnf/index.js +0 -13
  117. package/dist/lib-cjs/parse-table/bnf/index.js.map +0 -1
  118. package/dist/lib-cjs/parse-table/build-lr-table.js +0 -171
  119. package/dist/lib-cjs/parse-table/build-lr-table.js.map +0 -1
  120. package/dist/lib-cjs/parse-table/index.js +0 -49
  121. package/dist/lib-cjs/parse-table/index.js.map +0 -1
  122. package/dist/lib-cjs/parse-table/lr-algorithm-error.js +0 -19
  123. package/dist/lib-cjs/parse-table/lr-algorithm-error.js.map +0 -1
  124. package/dist/lib-cjs/parse-table/lr-algorithm.js +0 -31
  125. package/dist/lib-cjs/parse-table/lr-algorithm.js.map +0 -1
  126. package/dist/lib-cjs/parse-table/lr0/index.js +0 -14
  127. package/dist/lib-cjs/parse-table/lr0/index.js.map +0 -1
  128. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js +0 -286
  129. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js.map +0 -1
  130. package/dist/lib-cjs/parse-table/lr1/index.js +0 -18
  131. package/dist/lib-cjs/parse-table/lr1/index.js.map +0 -1
  132. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js +0 -432
  133. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js.map +0 -1
  134. package/dist/lib-cjs/parse-table/parse-table-build-error.js +0 -24
  135. package/dist/lib-cjs/parse-table/parse-table-build-error.js.map +0 -1
  136. package/dist/lib-cjs/parse-table/parse-table-error.js +0 -19
  137. package/dist/lib-cjs/parse-table/parse-table-error.js.map +0 -1
  138. package/dist/lib-cjs/parse-table/parse-table-json.js +0 -12
  139. package/dist/lib-cjs/parse-table/parse-table-json.js.map +0 -1
  140. package/dist/lib-cjs/parse-table/parse-table.js +0 -345
  141. package/dist/lib-cjs/parse-table/parse-table.js.map +0 -1
  142. package/dist/lib-cjs/parse-table/slr/index.js +0 -13
  143. package/dist/lib-cjs/parse-table/slr/index.js.map +0 -1
  144. package/dist/lib-cjs/parse-table/slr/parse-action.js +0 -8
  145. package/dist/lib-cjs/parse-table/slr/parse-action.js.map +0 -1
  146. package/dist/lib-cjs/parse-table/slr/slr-table.js +0 -18
  147. package/dist/lib-cjs/parse-table/slr/slr-table.js.map +0 -1
  148. package/dist/lib-cjs/parse-table/table/index.js +0 -21
  149. package/dist/lib-cjs/parse-table/table/index.js.map +0 -1
  150. package/dist/lib-cjs/parse-table/table/lr-parse-table.js +0 -192
  151. package/dist/lib-cjs/parse-table/table/lr-parse-table.js.map +0 -1
  152. package/dist/lib-cjs/parse-table/table/parse-action.js +0 -54
  153. package/dist/lib-cjs/parse-table/table/parse-action.js.map +0 -1
  154. package/dist/lib-cjs/parse-table/table/table-builder-base.js +0 -153
  155. package/dist/lib-cjs/parse-table/table/table-builder-base.js.map +0 -1
  156. package/dist/lib-cjs/parse-table/token-inventory.js +0 -18
  157. package/dist/lib-cjs/parse-table/token-inventory.js.map +0 -1
  158. package/dist/lib-cjs/parser-lr.js +0 -143
  159. package/dist/lib-cjs/parser-lr.js.map +0 -1
  160. package/dist/lib-cjs/shift-reduce/index.js +0 -11
  161. package/dist/lib-cjs/shift-reduce/index.js.map +0 -1
  162. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js +0 -224
  163. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js.map +0 -1
  164. package/dist/lib-cjs/transform/binding-map.js +0 -82
  165. package/dist/lib-cjs/transform/binding-map.js.map +0 -1
  166. package/dist/lib-cjs/transform/cst-transformer.js +0 -480
  167. package/dist/lib-cjs/transform/cst-transformer.js.map +0 -1
  168. package/dist/lib-cjs/transform/grammar-fixture.js +0 -109
  169. package/dist/lib-cjs/transform/grammar-fixture.js.map +0 -1
  170. package/dist/lib-cjs/transform/index.js +0 -12
  171. package/dist/lib-cjs/transform/index.js.map +0 -1
  172. package/docs/parser-lr-enhancement-proposals.md +0 -337
  173. package/grammars/fixtures/table-only-import/table-only-smoke.cjs +0 -38
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeStringLiteral = decodeStringLiteral;
4
- exports.splitRegexLiteral = splitRegexLiteral;
5
- const read_grammar_error_js_1 = require("./read-grammar-error.js");
6
- /**
7
- * Decodes a grammar-file string literal into its value.
8
- *
9
- * @param text - Quoted string literal text including surrounding quotes.
10
- * @returns Decoded string contents.
11
- */
12
- function decodeStringLiteral(text) {
13
- let value = '';
14
- let index = 1;
15
- // Walk the literal body, expanding escape sequences.
16
- while (index < text.length - 1) {
17
- const char = text[index];
18
- if (char === '\\') {
19
- const next = text[index + 1];
20
- switch (next) {
21
- case '"':
22
- case '\\':
23
- value += next;
24
- index += 2;
25
- continue;
26
- case 'n':
27
- value += '\n';
28
- index += 2;
29
- continue;
30
- case 'r':
31
- value += '\r';
32
- index += 2;
33
- continue;
34
- case 't':
35
- value += '\t';
36
- index += 2;
37
- continue;
38
- default:
39
- throw new read_grammar_error_js_1.ReadGrammarError(`Unsupported escape sequence \\${next ?? ''}`, index);
40
- }
41
- }
42
- value += char;
43
- index += 1;
44
- }
45
- return value;
46
- }
47
- /**
48
- * Splits a regex literal token into pattern and flag components.
49
- *
50
- * @param text - Regex literal text including slashes and optional flags.
51
- * @returns Pattern body and flag letters.
52
- */
53
- function splitRegexLiteral(text) {
54
- let index = 1;
55
- // Find the closing slash, honoring escapes.
56
- while (index < text.length) {
57
- const char = text[index];
58
- if (char === '\\') {
59
- index += 2;
60
- continue;
61
- }
62
- if (char === '/') {
63
- break;
64
- }
65
- index += 1;
66
- }
67
- const pattern = text.slice(1, index);
68
- const flags = text.slice(index + 1);
69
- return { pattern, flags };
70
- }
71
- //# sourceMappingURL=grammar-literals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grammar-literals.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-literals.ts"],"names":[],"mappings":";;AAQA,kDA8CC;AAQD,8CA2BC;AAzFD,mEAA2D;AAE3D;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAE5C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,qDAAqD;IACrD,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAC9B,CAAC;QACG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,IAAI,KAAK,IAAI,EACjB,CAAC;YACG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAE7B,QAAQ,IAAI,EACZ,CAAC;gBACG,KAAK,GAAG,CAAC;gBACT,KAAK,IAAI;oBACL,KAAK,IAAI,IAAI,CAAC;oBACd,KAAK,IAAI,CAAC,CAAC;oBACX,SAAS;gBACb,KAAK,GAAG;oBACJ,KAAK,IAAI,IAAI,CAAC;oBACd,KAAK,IAAI,CAAC,CAAC;oBACX,SAAS;gBACb,KAAK,GAAG;oBACJ,KAAK,IAAI,IAAI,CAAC;oBACd,KAAK,IAAI,CAAC,CAAC;oBACX,SAAS;gBACb,KAAK,GAAG;oBACJ,KAAK,IAAI,IAAI,CAAC;oBACd,KAAK,IAAI,CAAC,CAAC;oBACX,SAAS;gBACb;oBACI,MAAM,IAAI,wCAAgB,CACtB,iCAAiC,IAAI,IAAI,EAAE,EAAE,EAC7C,KAAK,CACR,CAAC;YACV,CAAC;QACL,CAAC;QAED,KAAK,IAAI,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAE1C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,4CAA4C;IAC5C,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAC1B,CAAC;QACG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,IAAI,KAAK,IAAI,EACjB,CAAC;YACG,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACb,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAChB,CAAC;YACG,MAAM;QACV,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Grammar = void 0;
4
- /**
5
- * Parsed `.grammar` file: lexer rules, skip rules, and parser productions.
6
- */
7
- class Grammar {
8
- name;
9
- tokenRules;
10
- skipRules;
11
- states;
12
- startSymbol;
13
- productions;
14
- astSchema;
15
- transformSchema;
16
- productionsByName;
17
- /**
18
- * Creates a grammar from its file-level sections.
19
- *
20
- * @param name - Grammar name from the `name` declaration.
21
- * @param tokenRules - Token definitions from the `tokens` section.
22
- * @param skipRules - Skip definitions from the `skip` section.
23
- * @param states - State names from the `states` section.
24
- * @param startSymbol - Entry production from the `start` declaration.
25
- * @param productions - Productions from the `grammar` section.
26
- * @param astSchema - AST types from the `ast` section, or null when omitted.
27
- * @param transformSchema - CST-to-AST rules from the `transform` section, or null when omitted.
28
- */
29
- constructor(name, tokenRules, skipRules, states, startSymbol, productions, astSchema = null, transformSchema = null) {
30
- this.name = name;
31
- this.tokenRules = tokenRules;
32
- this.skipRules = skipRules;
33
- this.states = states;
34
- this.startSymbol = startSymbol;
35
- this.productions = productions;
36
- this.astSchema = astSchema;
37
- this.transformSchema = transformSchema;
38
- // Index productions by name for lookup.
39
- const productionsByName = new Map();
40
- for (const production of productions) {
41
- productionsByName.set(production.name, production);
42
- }
43
- this.productionsByName = productionsByName;
44
- }
45
- /**
46
- * Returns a production by non-terminal name.
47
- *
48
- * @param name - Production name to look up.
49
- * @returns The matching production, or null when the name is undefined.
50
- */
51
- production(name) {
52
- return this.productionsByName.get(name) ?? null;
53
- }
54
- /**
55
- * Whether a named non-terminal is defined in this grammar.
56
- *
57
- * @param name - Production name to test.
58
- */
59
- hasProduction(name) {
60
- return this.productionsByName.has(name);
61
- }
62
- }
63
- exports.Grammar = Grammar;
64
- //# sourceMappingURL=grammar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,MAAa,OAAO;IAiBI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAtBH,iBAAiB,CAAkC;IAEpE;;;;;;;;;;;OAWG;IACH,YACoB,IAAY,EACZ,UAAgC,EAChC,SAA+B,EAC/B,MAAyB,EACzB,WAAmB,EACnB,WAAkC,EAClC,YAA8B,IAAI,EAClC,kBAA0C,IAAI;QAP9C,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAsB;QAChC,cAAS,GAAT,SAAS,CAAsB;QAC/B,WAAM,GAAN,MAAM,CAAmB;QACzB,gBAAW,GAAX,WAAW,CAAQ;QACnB,gBAAW,GAAX,WAAW,CAAuB;QAClC,cAAS,GAAT,SAAS,CAAyB;QAClC,oBAAe,GAAf,eAAe,CAA+B;QAG9D,wCAAwC;QACxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAsB,CAAC;QAExD,KAAK,MAAM,UAAU,IAAI,WAAW,EACpC,CAAC;YACG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,IAAY;QAE1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,IAAY;QAE7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACJ;AA1DD,0BA0DC"}