parser-lr 0.4.1 → 0.6.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 (203) hide show
  1. package/README.md +39 -1
  2. package/bin/parser-lr.js +8373 -7960
  3. package/bin/parser-lr.js.map +1 -1
  4. package/dist/lib/grammar/grammar-json-path.d.ts +2 -0
  5. package/dist/lib/grammar/grammar-json-path.d.ts.map +1 -0
  6. package/dist/lib/grammar/grammar-json-path.esm.d.ts +5 -0
  7. package/dist/lib/grammar/grammar-json-path.esm.d.ts.map +1 -0
  8. package/dist/lib/grammar/grammar-json-path.esm.js +9 -0
  9. package/dist/lib/grammar/grammar-json-path.esm.js.map +1 -0
  10. package/dist/lib/grammar/grammar-json-path.js +2 -0
  11. package/dist/lib/grammar/grammar-json-path.js.map +1 -0
  12. package/dist/lib/grammar/index.d.ts +3 -0
  13. package/dist/lib/grammar/index.d.ts.map +1 -1
  14. package/dist/lib/grammar/index.js +2 -0
  15. package/dist/lib/grammar/index.js.map +1 -1
  16. package/dist/lib/grammar/meta-grammar-table.d.ts +12 -0
  17. package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -1
  18. package/dist/lib/grammar/meta-grammar-table.js +33 -3
  19. package/dist/lib/grammar/meta-grammar-table.js.map +1 -1
  20. package/dist/lib/grammar/table-validator.d.ts +26 -0
  21. package/dist/lib/grammar/table-validator.d.ts.map +1 -0
  22. package/dist/lib/grammar/table-validator.js +258 -0
  23. package/dist/lib/grammar/table-validator.js.map +1 -0
  24. package/dist/lib/index.d.ts +2 -0
  25. package/dist/lib/index.d.ts.map +1 -1
  26. package/dist/lib/index.js +1 -0
  27. package/dist/lib/index.js.map +1 -1
  28. package/dist/lib/transform/cst-transformer.d.ts +14 -0
  29. package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
  30. package/dist/lib/transform/cst-transformer.js +82 -11
  31. package/dist/lib/transform/cst-transformer.js.map +1 -1
  32. package/dist/lib/transform/grammar-fixture.d.ts +56 -0
  33. package/dist/lib/transform/grammar-fixture.d.ts.map +1 -0
  34. package/dist/lib/transform/grammar-fixture.js +101 -0
  35. package/dist/lib/transform/grammar-fixture.js.map +1 -0
  36. package/dist/lib-cjs/ast/ast-node.js +70 -0
  37. package/dist/lib-cjs/ast/ast-node.js.map +1 -0
  38. package/dist/lib-cjs/errors/index.js +9 -0
  39. package/dist/lib-cjs/errors/index.js.map +1 -0
  40. package/dist/lib-cjs/errors/parser-lr-error.js +52 -0
  41. package/dist/lib-cjs/errors/parser-lr-error.js.map +1 -0
  42. package/dist/lib-cjs/grammar/ast-schema.js +43 -0
  43. package/dist/lib-cjs/grammar/ast-schema.js.map +1 -0
  44. package/dist/lib-cjs/grammar/ast-type.js +3 -0
  45. package/dist/lib-cjs/grammar/ast-type.js.map +1 -0
  46. package/dist/lib-cjs/grammar/expression.js +3 -0
  47. package/dist/lib-cjs/grammar/expression.js.map +1 -0
  48. package/dist/lib-cjs/grammar/grammar-from-cst.js +641 -0
  49. package/dist/lib-cjs/grammar/grammar-from-cst.js.map +1 -0
  50. package/dist/lib-cjs/grammar/grammar-json-path.js +13 -0
  51. package/dist/lib-cjs/grammar/grammar-json-path.js.map +1 -0
  52. package/dist/lib-cjs/grammar/grammar-literals.js +71 -0
  53. package/dist/lib-cjs/grammar/grammar-literals.js.map +1 -0
  54. package/dist/lib-cjs/grammar/grammar.js +64 -0
  55. package/dist/lib-cjs/grammar/grammar.js.map +1 -0
  56. package/dist/lib-cjs/grammar/grammar.json +5760 -0
  57. package/dist/lib-cjs/grammar/index.js +21 -0
  58. package/dist/lib-cjs/grammar/index.js.map +1 -0
  59. package/dist/lib-cjs/grammar/meta-grammar-table.js +68 -0
  60. package/dist/lib-cjs/grammar/meta-grammar-table.js.map +1 -0
  61. package/dist/lib-cjs/grammar/production.js +3 -0
  62. package/dist/lib-cjs/grammar/production.js.map +1 -0
  63. package/dist/lib-cjs/grammar/read-grammar-error.js +22 -0
  64. package/dist/lib-cjs/grammar/read-grammar-error.js.map +1 -0
  65. package/dist/lib-cjs/grammar/read-grammar.js +24 -0
  66. package/dist/lib-cjs/grammar/read-grammar.js.map +1 -0
  67. package/dist/lib-cjs/grammar/table-validator.js +262 -0
  68. package/dist/lib-cjs/grammar/table-validator.js.map +1 -0
  69. package/dist/lib-cjs/grammar/token-rule.js +3 -0
  70. package/dist/lib-cjs/grammar/token-rule.js.map +1 -0
  71. package/dist/lib-cjs/grammar/transform-expression.js +3 -0
  72. package/dist/lib-cjs/grammar/transform-expression.js.map +1 -0
  73. package/dist/lib-cjs/grammar/transform-rule.js +3 -0
  74. package/dist/lib-cjs/grammar/transform-rule.js.map +1 -0
  75. package/dist/lib-cjs/grammar/transform-schema.js +43 -0
  76. package/dist/lib-cjs/grammar/transform-schema.js.map +1 -0
  77. package/dist/lib-cjs/index.js +66 -0
  78. package/dist/lib-cjs/index.js.map +1 -0
  79. package/dist/lib-cjs/lexer/index.js +32 -0
  80. package/dist/lib-cjs/lexer/index.js.map +1 -0
  81. package/dist/lib-cjs/lexer/lexer-compile-error.js +22 -0
  82. package/dist/lib-cjs/lexer/lexer-compile-error.js.map +1 -0
  83. package/dist/lib-cjs/lexer/lexer-compile.js +201 -0
  84. package/dist/lib-cjs/lexer/lexer-compile.js.map +1 -0
  85. package/dist/lib-cjs/lexer/lexer-error.js +22 -0
  86. package/dist/lib-cjs/lexer/lexer-error.js.map +1 -0
  87. package/dist/lib-cjs/lexer/lexer-input-error.js +17 -0
  88. package/dist/lib-cjs/lexer/lexer-input-error.js.map +1 -0
  89. package/dist/lib-cjs/lexer/lexer-state-error.js +19 -0
  90. package/dist/lib-cjs/lexer/lexer-state-error.js.map +1 -0
  91. package/dist/lib-cjs/lexer/lexer.js +278 -0
  92. package/dist/lib-cjs/lexer/lexer.js.map +1 -0
  93. package/dist/lib-cjs/lexer/token.js +44 -0
  94. package/dist/lib-cjs/lexer/token.js.map +1 -0
  95. package/dist/lib-cjs/package.json +3 -0
  96. package/dist/lib-cjs/parse-context-error.js +19 -0
  97. package/dist/lib-cjs/parse-context-error.js.map +1 -0
  98. package/dist/lib-cjs/parse-context.js +137 -0
  99. package/dist/lib-cjs/parse-context.js.map +1 -0
  100. package/dist/lib-cjs/parse-output-error.js +19 -0
  101. package/dist/lib-cjs/parse-output-error.js.map +1 -0
  102. package/dist/lib-cjs/parse-output.js +18 -0
  103. package/dist/lib-cjs/parse-output.js.map +1 -0
  104. package/dist/lib-cjs/parse-table/analysis/first-follow.js +294 -0
  105. package/dist/lib-cjs/parse-table/analysis/first-follow.js.map +1 -0
  106. package/dist/lib-cjs/parse-table/analysis/index.js +9 -0
  107. package/dist/lib-cjs/parse-table/analysis/index.js.map +1 -0
  108. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js +140 -0
  109. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js.map +1 -0
  110. package/dist/lib-cjs/parse-table/bnf/bnf-production.js +3 -0
  111. package/dist/lib-cjs/parse-table/bnf/bnf-production.js.map +1 -0
  112. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js +39 -0
  113. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js.map +1 -0
  114. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js +224 -0
  115. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js.map +1 -0
  116. package/dist/lib-cjs/parse-table/bnf/index.js +13 -0
  117. package/dist/lib-cjs/parse-table/bnf/index.js.map +1 -0
  118. package/dist/lib-cjs/parse-table/build-lr-table.js +171 -0
  119. package/dist/lib-cjs/parse-table/build-lr-table.js.map +1 -0
  120. package/dist/lib-cjs/parse-table/index.js +49 -0
  121. package/dist/lib-cjs/parse-table/index.js.map +1 -0
  122. package/dist/lib-cjs/parse-table/lr-algorithm-error.js +19 -0
  123. package/dist/lib-cjs/parse-table/lr-algorithm-error.js.map +1 -0
  124. package/dist/lib-cjs/parse-table/lr-algorithm.js +31 -0
  125. package/dist/lib-cjs/parse-table/lr-algorithm.js.map +1 -0
  126. package/dist/lib-cjs/parse-table/lr0/index.js +14 -0
  127. package/dist/lib-cjs/parse-table/lr0/index.js.map +1 -0
  128. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js +286 -0
  129. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js.map +1 -0
  130. package/dist/lib-cjs/parse-table/lr1/index.js +18 -0
  131. package/dist/lib-cjs/parse-table/lr1/index.js.map +1 -0
  132. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js +432 -0
  133. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js.map +1 -0
  134. package/dist/lib-cjs/parse-table/parse-table-build-error.js +24 -0
  135. package/dist/lib-cjs/parse-table/parse-table-build-error.js.map +1 -0
  136. package/dist/lib-cjs/parse-table/parse-table-error.js +19 -0
  137. package/dist/lib-cjs/parse-table/parse-table-error.js.map +1 -0
  138. package/dist/lib-cjs/parse-table/parse-table-json.js +12 -0
  139. package/dist/lib-cjs/parse-table/parse-table-json.js.map +1 -0
  140. package/dist/lib-cjs/parse-table/parse-table.js +345 -0
  141. package/dist/lib-cjs/parse-table/parse-table.js.map +1 -0
  142. package/dist/lib-cjs/parse-table/slr/index.js +13 -0
  143. package/dist/lib-cjs/parse-table/slr/index.js.map +1 -0
  144. package/dist/lib-cjs/parse-table/slr/parse-action.js +8 -0
  145. package/dist/lib-cjs/parse-table/slr/parse-action.js.map +1 -0
  146. package/dist/lib-cjs/parse-table/slr/slr-table.js +18 -0
  147. package/dist/lib-cjs/parse-table/slr/slr-table.js.map +1 -0
  148. package/dist/lib-cjs/parse-table/table/index.js +21 -0
  149. package/dist/lib-cjs/parse-table/table/index.js.map +1 -0
  150. package/dist/lib-cjs/parse-table/table/lr-parse-table.js +192 -0
  151. package/dist/lib-cjs/parse-table/table/lr-parse-table.js.map +1 -0
  152. package/dist/lib-cjs/parse-table/table/parse-action.js +54 -0
  153. package/dist/lib-cjs/parse-table/table/parse-action.js.map +1 -0
  154. package/dist/lib-cjs/parse-table/table/table-builder-base.js +153 -0
  155. package/dist/lib-cjs/parse-table/table/table-builder-base.js.map +1 -0
  156. package/dist/lib-cjs/parse-table/token-inventory.js +18 -0
  157. package/dist/lib-cjs/parse-table/token-inventory.js.map +1 -0
  158. package/dist/lib-cjs/parser-lr.js +143 -0
  159. package/dist/lib-cjs/parser-lr.js.map +1 -0
  160. package/dist/lib-cjs/shift-reduce/index.js +11 -0
  161. package/dist/lib-cjs/shift-reduce/index.js.map +1 -0
  162. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js +224 -0
  163. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js.map +1 -0
  164. package/dist/lib-cjs/transform/binding-map.js +82 -0
  165. package/dist/lib-cjs/transform/binding-map.js.map +1 -0
  166. package/dist/lib-cjs/transform/cst-transformer.js +480 -0
  167. package/dist/lib-cjs/transform/cst-transformer.js.map +1 -0
  168. package/dist/lib-cjs/transform/grammar-fixture.js +109 -0
  169. package/dist/lib-cjs/transform/grammar-fixture.js.map +1 -0
  170. package/dist/lib-cjs/transform/index.js +12 -0
  171. package/dist/lib-cjs/transform/index.js.map +1 -0
  172. package/docs/grammar.md +113 -0
  173. package/docs/parser-lr-enhancement-proposals.md +337 -0
  174. package/grammars/6502.grammar +233 -0
  175. package/grammars/calc.grammar +30 -0
  176. package/grammars/ferrite.grammar +991 -0
  177. package/grammars/fixtures/build-optional/build-optional.grammar +32 -0
  178. package/grammars/fixtures/build-optional/input.txt +1 -0
  179. package/grammars/fixtures/comparison-op/comparison-op.grammar +28 -0
  180. package/grammars/fixtures/comparison-op/input.txt +1 -0
  181. package/grammars/fixtures/flatten-repeat/flatten-repeat.grammar +28 -0
  182. package/grammars/fixtures/flatten-repeat/input.txt +1 -0
  183. package/grammars/fixtures/help-topic/help-topic.grammar +28 -0
  184. package/grammars/fixtures/help-topic/input.txt +1 -0
  185. package/grammars/fixtures/let-target/input.txt +1 -0
  186. package/grammars/fixtures/let-target/let-target.grammar +33 -0
  187. package/grammars/fixtures/nested-production-repro/input.txt +1 -0
  188. package/grammars/fixtures/nested-production-repro/nested-production-repro.grammar +26 -0
  189. package/grammars/fixtures/pass-preserves-production/bare-terminal/bare-terminal.grammar +24 -0
  190. package/grammars/fixtures/pass-preserves-production/bare-terminal/input.txt +1 -0
  191. package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end-if.txt +1 -0
  192. package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end.txt +1 -0
  193. package/grammars/fixtures/pass-preserves-production/labeled-variant/labeled-variant.grammar +24 -0
  194. package/grammars/fixtures/pass-preserves-production/optional-absent/input.txt +1 -0
  195. package/grammars/fixtures/pass-preserves-production/optional-absent/optional-absent.grammar +24 -0
  196. package/grammars/fixtures/pass-preserves-production/optional-present/input.txt +1 -0
  197. package/grammars/fixtures/pass-preserves-production/optional-present/optional-present.grammar +24 -0
  198. package/grammars/fixtures/table-only-import/calc.table.json +190 -0
  199. package/grammars/fixtures/table-only-import/table-only-smoke.cjs +38 -0
  200. package/grammars/fixtures/table-only-import/table-only-smoke.mjs +18 -0
  201. package/grammars/grammar.grammar +428 -0
  202. package/grammars/lisp.grammar +95 -0
  203. package/package.json +10 -4
@@ -0,0 +1,71 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,64 @@
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
@@ -0,0 +1 @@
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"}