parser-lr 0.0.0 → 0.2.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 (261) hide show
  1. package/README.md +48 -1
  2. package/bin/parser-lr.js +12502 -16
  3. package/bin/parser-lr.js.map +1 -1
  4. package/dist/lib/ast/ast-node.d.ts +59 -0
  5. package/dist/lib/ast/ast-node.d.ts.map +1 -0
  6. package/dist/lib/ast/ast-node.js +66 -0
  7. package/dist/lib/ast/ast-node.js.map +1 -0
  8. package/dist/lib/errors/index.d.ts +2 -0
  9. package/dist/lib/errors/index.d.ts.map +1 -0
  10. package/dist/lib/errors/index.js +2 -0
  11. package/dist/lib/errors/index.js.map +1 -0
  12. package/dist/lib/errors/parser-lr-error.d.ts +30 -0
  13. package/dist/lib/errors/parser-lr-error.d.ts.map +1 -0
  14. package/dist/lib/errors/parser-lr-error.js +45 -0
  15. package/dist/lib/errors/parser-lr-error.js.map +1 -0
  16. package/dist/lib/grammar/ast-schema.d.ts +28 -0
  17. package/dist/lib/grammar/ast-schema.d.ts.map +1 -0
  18. package/dist/lib/grammar/ast-schema.js +39 -0
  19. package/dist/lib/grammar/ast-schema.js.map +1 -0
  20. package/dist/lib/grammar/ast-type.d.ts +12 -0
  21. package/dist/lib/grammar/ast-type.d.ts.map +1 -0
  22. package/dist/lib/grammar/ast-type.js +2 -0
  23. package/dist/lib/grammar/ast-type.js.map +1 -0
  24. package/dist/lib/grammar/expression.d.ts +69 -0
  25. package/dist/lib/grammar/expression.d.ts.map +1 -0
  26. package/dist/lib/grammar/expression.js +2 -0
  27. package/dist/lib/grammar/expression.js.map +1 -0
  28. package/dist/lib/grammar/grammar-from-cst.d.ts +10 -0
  29. package/dist/lib/grammar/grammar-from-cst.d.ts.map +1 -0
  30. package/dist/lib/grammar/grammar-from-cst.js +638 -0
  31. package/dist/lib/grammar/grammar-from-cst.js.map +1 -0
  32. package/dist/lib/grammar/grammar-literals.d.ts +18 -0
  33. package/dist/lib/grammar/grammar-literals.d.ts.map +1 -0
  34. package/dist/lib/grammar/grammar-literals.js +67 -0
  35. package/dist/lib/grammar/grammar-literals.js.map +1 -0
  36. package/dist/lib/grammar/grammar.d.ts +45 -0
  37. package/dist/lib/grammar/grammar.d.ts.map +1 -0
  38. package/dist/lib/grammar/grammar.js +60 -0
  39. package/dist/lib/grammar/grammar.js.map +1 -0
  40. package/dist/lib/grammar/grammar.json +7950 -0
  41. package/dist/lib/grammar/index.d.ts +13 -0
  42. package/dist/lib/grammar/index.d.ts.map +1 -0
  43. package/dist/lib/grammar/index.js +7 -0
  44. package/dist/lib/grammar/index.js.map +1 -0
  45. package/dist/lib/grammar/meta-grammar-table.d.ts +19 -0
  46. package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -0
  47. package/dist/lib/grammar/meta-grammar-table.js +32 -0
  48. package/dist/lib/grammar/meta-grammar-table.js.map +1 -0
  49. package/dist/lib/grammar/production.d.ts +9 -0
  50. package/dist/lib/grammar/production.d.ts.map +1 -0
  51. package/dist/lib/grammar/production.js +2 -0
  52. package/dist/lib/grammar/production.js.map +1 -0
  53. package/dist/lib/grammar/read-grammar-error.d.ts +15 -0
  54. package/dist/lib/grammar/read-grammar-error.d.ts.map +1 -0
  55. package/dist/lib/grammar/read-grammar-error.js +18 -0
  56. package/dist/lib/grammar/read-grammar-error.js.map +1 -0
  57. package/dist/lib/grammar/read-grammar.d.ts +9 -0
  58. package/dist/lib/grammar/read-grammar.d.ts.map +1 -0
  59. package/dist/lib/grammar/read-grammar.js +21 -0
  60. package/dist/lib/grammar/read-grammar.js.map +1 -0
  61. package/dist/lib/grammar/token-rule.d.ts +11 -0
  62. package/dist/lib/grammar/token-rule.d.ts.map +1 -0
  63. package/dist/lib/grammar/token-rule.js +2 -0
  64. package/dist/lib/grammar/token-rule.js.map +1 -0
  65. package/dist/lib/grammar/transform-expression.d.ts +55 -0
  66. package/dist/lib/grammar/transform-expression.d.ts.map +1 -0
  67. package/dist/lib/grammar/transform-expression.js +2 -0
  68. package/dist/lib/grammar/transform-expression.js.map +1 -0
  69. package/dist/lib/grammar/transform-rule.d.ts +16 -0
  70. package/dist/lib/grammar/transform-rule.d.ts.map +1 -0
  71. package/dist/lib/grammar/transform-rule.js +2 -0
  72. package/dist/lib/grammar/transform-rule.js.map +1 -0
  73. package/dist/lib/grammar/transform-schema.d.ts +28 -0
  74. package/dist/lib/grammar/transform-schema.d.ts.map +1 -0
  75. package/dist/lib/grammar/transform-schema.js +39 -0
  76. package/dist/lib/grammar/transform-schema.js.map +1 -0
  77. package/dist/lib/index.d.ts +19 -0
  78. package/dist/lib/index.d.ts.map +1 -1
  79. package/dist/lib/index.js +13 -0
  80. package/dist/lib/index.js.map +1 -1
  81. package/dist/lib/lexer/index.d.ts +10 -0
  82. package/dist/lib/lexer/index.d.ts.map +1 -0
  83. package/dist/lib/lexer/index.js +8 -0
  84. package/dist/lib/lexer/index.js.map +1 -0
  85. package/dist/lib/lexer/lexer-compile-error.d.ts +15 -0
  86. package/dist/lib/lexer/lexer-compile-error.d.ts.map +1 -0
  87. package/dist/lib/lexer/lexer-compile-error.js +18 -0
  88. package/dist/lib/lexer/lexer-compile-error.js.map +1 -0
  89. package/dist/lib/lexer/lexer-compile.d.ts +94 -0
  90. package/dist/lib/lexer/lexer-compile.d.ts.map +1 -0
  91. package/dist/lib/lexer/lexer-compile.js +189 -0
  92. package/dist/lib/lexer/lexer-compile.js.map +1 -0
  93. package/dist/lib/lexer/lexer-error.d.ts +15 -0
  94. package/dist/lib/lexer/lexer-error.d.ts.map +1 -0
  95. package/dist/lib/lexer/lexer-error.js +18 -0
  96. package/dist/lib/lexer/lexer-error.js.map +1 -0
  97. package/dist/lib/lexer/lexer-input-error.d.ts +11 -0
  98. package/dist/lib/lexer/lexer-input-error.d.ts.map +1 -0
  99. package/dist/lib/lexer/lexer-input-error.js +13 -0
  100. package/dist/lib/lexer/lexer-input-error.js.map +1 -0
  101. package/dist/lib/lexer/lexer-state-error.d.ts +13 -0
  102. package/dist/lib/lexer/lexer-state-error.d.ts.map +1 -0
  103. package/dist/lib/lexer/lexer-state-error.js +15 -0
  104. package/dist/lib/lexer/lexer-state-error.js.map +1 -0
  105. package/dist/lib/lexer/lexer.d.ts +111 -0
  106. package/dist/lib/lexer/lexer.d.ts.map +1 -0
  107. package/dist/lib/lexer/lexer.js +270 -0
  108. package/dist/lib/lexer/lexer.js.map +1 -0
  109. package/dist/lib/lexer/token.d.ts +34 -0
  110. package/dist/lib/lexer/token.d.ts.map +1 -0
  111. package/dist/lib/lexer/token.js +38 -0
  112. package/dist/lib/lexer/token.js.map +1 -0
  113. package/dist/lib/parse-context-error.d.ts +13 -0
  114. package/dist/lib/parse-context-error.d.ts.map +1 -0
  115. package/dist/lib/parse-context-error.js +15 -0
  116. package/dist/lib/parse-context-error.js.map +1 -0
  117. package/dist/lib/parse-context.d.ts +106 -0
  118. package/dist/lib/parse-context.d.ts.map +1 -0
  119. package/dist/lib/parse-context.js +133 -0
  120. package/dist/lib/parse-context.js.map +1 -0
  121. package/dist/lib/parse-output-error.d.ts +13 -0
  122. package/dist/lib/parse-output-error.d.ts.map +1 -0
  123. package/dist/lib/parse-output-error.js +15 -0
  124. package/dist/lib/parse-output-error.js.map +1 -0
  125. package/dist/lib/parse-output.d.ts +10 -0
  126. package/dist/lib/parse-output.d.ts.map +1 -0
  127. package/dist/lib/parse-output.js +15 -0
  128. package/dist/lib/parse-output.js.map +1 -0
  129. package/dist/lib/parse-table/analysis/first-follow.d.ts +124 -0
  130. package/dist/lib/parse-table/analysis/first-follow.d.ts.map +1 -0
  131. package/dist/lib/parse-table/analysis/first-follow.js +274 -0
  132. package/dist/lib/parse-table/analysis/first-follow.js.map +1 -0
  133. package/dist/lib/parse-table/analysis/index.d.ts +2 -0
  134. package/dist/lib/parse-table/analysis/index.d.ts.map +1 -0
  135. package/dist/lib/parse-table/analysis/index.js +2 -0
  136. package/dist/lib/parse-table/analysis/index.js.map +1 -0
  137. package/dist/lib/parse-table/bnf/bnf-grammar.d.ts +65 -0
  138. package/dist/lib/parse-table/bnf/bnf-grammar.d.ts.map +1 -0
  139. package/dist/lib/parse-table/bnf/bnf-grammar.js +136 -0
  140. package/dist/lib/parse-table/bnf/bnf-grammar.js.map +1 -0
  141. package/dist/lib/parse-table/bnf/bnf-production.d.ts +12 -0
  142. package/dist/lib/parse-table/bnf/bnf-production.d.ts.map +1 -0
  143. package/dist/lib/parse-table/bnf/bnf-production.js +2 -0
  144. package/dist/lib/parse-table/bnf/bnf-production.js.map +1 -0
  145. package/dist/lib/parse-table/bnf/bnf-symbol.d.ts +40 -0
  146. package/dist/lib/parse-table/bnf/bnf-symbol.d.ts.map +1 -0
  147. package/dist/lib/parse-table/bnf/bnf-symbol.js +35 -0
  148. package/dist/lib/parse-table/bnf/bnf-symbol.js.map +1 -0
  149. package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts +104 -0
  150. package/dist/lib/parse-table/bnf/desugar-ebnf.d.ts.map +1 -0
  151. package/dist/lib/parse-table/bnf/desugar-ebnf.js +217 -0
  152. package/dist/lib/parse-table/bnf/desugar-ebnf.js.map +1 -0
  153. package/dist/lib/parse-table/bnf/index.d.ts +6 -0
  154. package/dist/lib/parse-table/bnf/index.d.ts.map +1 -0
  155. package/dist/lib/parse-table/bnf/index.js +4 -0
  156. package/dist/lib/parse-table/bnf/index.js.map +1 -0
  157. package/dist/lib/parse-table/build-lr-table.d.ts +11 -0
  158. package/dist/lib/parse-table/build-lr-table.d.ts.map +1 -0
  159. package/dist/lib/parse-table/build-lr-table.js +158 -0
  160. package/dist/lib/parse-table/build-lr-table.js.map +1 -0
  161. package/dist/lib/parse-table/index.d.ts +22 -0
  162. package/dist/lib/parse-table/index.d.ts.map +1 -0
  163. package/dist/lib/parse-table/index.js +15 -0
  164. package/dist/lib/parse-table/index.js.map +1 -0
  165. package/dist/lib/parse-table/lr-algorithm-error.d.ts +13 -0
  166. package/dist/lib/parse-table/lr-algorithm-error.d.ts.map +1 -0
  167. package/dist/lib/parse-table/lr-algorithm-error.js +15 -0
  168. package/dist/lib/parse-table/lr-algorithm-error.js.map +1 -0
  169. package/dist/lib/parse-table/lr-algorithm.d.ts +19 -0
  170. package/dist/lib/parse-table/lr-algorithm.d.ts.map +1 -0
  171. package/dist/lib/parse-table/lr-algorithm.js +27 -0
  172. package/dist/lib/parse-table/lr-algorithm.js.map +1 -0
  173. package/dist/lib/parse-table/lr0/index.d.ts +3 -0
  174. package/dist/lib/parse-table/lr0/index.d.ts.map +1 -0
  175. package/dist/lib/parse-table/lr0/index.js +2 -0
  176. package/dist/lib/parse-table/lr0/index.js.map +1 -0
  177. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts +106 -0
  178. package/dist/lib/parse-table/lr0/lr0-item-set.d.ts.map +1 -0
  179. package/dist/lib/parse-table/lr0/lr0-item-set.js +235 -0
  180. package/dist/lib/parse-table/lr0/lr0-item-set.js.map +1 -0
  181. package/dist/lib/parse-table/lr1/index.d.ts +3 -0
  182. package/dist/lib/parse-table/lr1/index.d.ts.map +1 -0
  183. package/dist/lib/parse-table/lr1/index.js +2 -0
  184. package/dist/lib/parse-table/lr1/index.js.map +1 -0
  185. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts +157 -0
  186. package/dist/lib/parse-table/lr1/lr1-item-set.d.ts.map +1 -0
  187. package/dist/lib/parse-table/lr1/lr1-item-set.js +380 -0
  188. package/dist/lib/parse-table/lr1/lr1-item-set.js.map +1 -0
  189. package/dist/lib/parse-table/parse-table-build-error.d.ts +17 -0
  190. package/dist/lib/parse-table/parse-table-build-error.d.ts.map +1 -0
  191. package/dist/lib/parse-table/parse-table-build-error.js +20 -0
  192. package/dist/lib/parse-table/parse-table-build-error.js.map +1 -0
  193. package/dist/lib/parse-table/parse-table-error.d.ts +13 -0
  194. package/dist/lib/parse-table/parse-table-error.d.ts.map +1 -0
  195. package/dist/lib/parse-table/parse-table-error.js +15 -0
  196. package/dist/lib/parse-table/parse-table-error.js.map +1 -0
  197. package/dist/lib/parse-table/parse-table-json.d.ts +50 -0
  198. package/dist/lib/parse-table/parse-table-json.d.ts.map +1 -0
  199. package/dist/lib/parse-table/parse-table-json.js +9 -0
  200. package/dist/lib/parse-table/parse-table-json.js.map +1 -0
  201. package/dist/lib/parse-table/parse-table.d.ts +154 -0
  202. package/dist/lib/parse-table/parse-table.d.ts.map +1 -0
  203. package/dist/lib/parse-table/parse-table.js +314 -0
  204. package/dist/lib/parse-table/parse-table.js.map +1 -0
  205. package/dist/lib/parse-table/slr/index.d.ts +4 -0
  206. package/dist/lib/parse-table/slr/index.d.ts.map +1 -0
  207. package/dist/lib/parse-table/slr/index.js +3 -0
  208. package/dist/lib/parse-table/slr/index.js.map +1 -0
  209. package/dist/lib/parse-table/slr/parse-action.d.ts +3 -0
  210. package/dist/lib/parse-table/slr/parse-action.d.ts.map +1 -0
  211. package/dist/lib/parse-table/slr/parse-action.js +2 -0
  212. package/dist/lib/parse-table/slr/parse-action.js.map +1 -0
  213. package/dist/lib/parse-table/slr/slr-table.d.ts +14 -0
  214. package/dist/lib/parse-table/slr/slr-table.d.ts.map +1 -0
  215. package/dist/lib/parse-table/slr/slr-table.js +14 -0
  216. package/dist/lib/parse-table/slr/slr-table.js.map +1 -0
  217. package/dist/lib/parse-table/table/index.d.ts +5 -0
  218. package/dist/lib/parse-table/table/index.d.ts.map +1 -0
  219. package/dist/lib/parse-table/table/index.js +4 -0
  220. package/dist/lib/parse-table/table/index.js.map +1 -0
  221. package/dist/lib/parse-table/table/lr-parse-table.d.ts +92 -0
  222. package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -0
  223. package/dist/lib/parse-table/table/lr-parse-table.js +144 -0
  224. package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -0
  225. package/dist/lib/parse-table/table/parse-action.d.ts +47 -0
  226. package/dist/lib/parse-table/table/parse-action.d.ts.map +1 -0
  227. package/dist/lib/parse-table/table/parse-action.js +49 -0
  228. package/dist/lib/parse-table/table/parse-action.js.map +1 -0
  229. package/dist/lib/parse-table/table/table-builder-base.d.ts +63 -0
  230. package/dist/lib/parse-table/table/table-builder-base.d.ts.map +1 -0
  231. package/dist/lib/parse-table/table/table-builder-base.js +129 -0
  232. package/dist/lib/parse-table/table/table-builder-base.js.map +1 -0
  233. package/dist/lib/parse-table/token-inventory.d.ts +9 -0
  234. package/dist/lib/parse-table/token-inventory.d.ts.map +1 -0
  235. package/dist/lib/parse-table/token-inventory.js +15 -0
  236. package/dist/lib/parse-table/token-inventory.js.map +1 -0
  237. package/dist/lib/parser-lr.d.ts +96 -2
  238. package/dist/lib/parser-lr.d.ts.map +1 -1
  239. package/dist/lib/parser-lr.js +130 -2
  240. package/dist/lib/parser-lr.js.map +1 -1
  241. package/dist/lib/shift-reduce/index.d.ts +3 -0
  242. package/dist/lib/shift-reduce/index.d.ts.map +1 -0
  243. package/dist/lib/shift-reduce/index.js +2 -0
  244. package/dist/lib/shift-reduce/index.js.map +1 -0
  245. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts +82 -0
  246. package/dist/lib/shift-reduce/shift-reduce-engine.d.ts.map +1 -0
  247. package/dist/lib/shift-reduce/shift-reduce-engine.js +204 -0
  248. package/dist/lib/shift-reduce/shift-reduce-engine.js.map +1 -0
  249. package/dist/lib/transform/binding-map.d.ts +32 -0
  250. package/dist/lib/transform/binding-map.d.ts.map +1 -0
  251. package/dist/lib/transform/binding-map.js +59 -0
  252. package/dist/lib/transform/binding-map.js.map +1 -0
  253. package/dist/lib/transform/cst-transformer.d.ts +158 -0
  254. package/dist/lib/transform/cst-transformer.d.ts.map +1 -0
  255. package/dist/lib/transform/cst-transformer.js +381 -0
  256. package/dist/lib/transform/cst-transformer.js.map +1 -0
  257. package/dist/lib/transform/index.d.ts +4 -0
  258. package/dist/lib/transform/index.d.ts.map +1 -0
  259. package/dist/lib/transform/index.js +3 -0
  260. package/dist/lib/transform/index.js.map +1 -0
  261. package/package.json +10 -3
@@ -0,0 +1,638 @@
1
+ import { AstSchema } from './ast-schema.js';
2
+ import { decodeStringLiteral, splitRegexLiteral } from './grammar-literals.js';
3
+ import { Grammar } from './grammar.js';
4
+ import { ReadGrammarError } from './read-grammar-error.js';
5
+ import { TransformSchema } from './transform-schema.js';
6
+ /**
7
+ * Builds a {@link Grammar} model from a meta-grammar concrete syntax tree.
8
+ *
9
+ * @param root - `grammar_file` CST root from the meta-grammar parser.
10
+ * @returns Parsed grammar file model.
11
+ */
12
+ export function grammarFromCst(root) {
13
+ if (root.symbol !== 'grammar_file') {
14
+ throw grammarError('Expected grammar file', root);
15
+ }
16
+ const name = parseNameDecl(requireChild(root, 'name_decl'));
17
+ const tokenRules = [];
18
+ const skipRules = [];
19
+ const states = [];
20
+ // Walk optional top-level sections from the desugared repeat subtree.
21
+ for (const section of collectSections(root)) {
22
+ if (section.symbol === 'token_section') {
23
+ tokenRules.push(...parseTokenSection(section));
24
+ continue;
25
+ }
26
+ if (section.symbol === 'skip_section') {
27
+ skipRules.push(...parseSkipSection(section));
28
+ continue;
29
+ }
30
+ if (section.symbol === 'states_section') {
31
+ states.push(...parseStatesSection(section));
32
+ }
33
+ }
34
+ const startSymbol = parseStartDecl(requireChild(root, 'start_decl'));
35
+ const productions = parseGrammarSection(requireChild(root, 'grammar_section'));
36
+ const astTypes = parseOptionalAstSection(findChild(root, 'ast_section'));
37
+ const transformRules = parseOptionalTransformSection(findChild(root, 'transform_section'));
38
+ return new Grammar(name, tokenRules, skipRules, states, startSymbol, productions, astTypes === null ? null : new AstSchema(astTypes), transformRules === null ? null : new TransformSchema(transformRules));
39
+ }
40
+ /**
41
+ * Returns the first direct child with a matching symbol.
42
+ *
43
+ * @param node - Parent CST node.
44
+ * @param symbol - Child production name.
45
+ */
46
+ function findChild(node, symbol) {
47
+ return node.children.find((child) => child.symbol === symbol) ?? null;
48
+ }
49
+ /**
50
+ * Returns the first direct child with a matching symbol.
51
+ *
52
+ * @param node - Parent CST node.
53
+ * @param symbol - Child production name.
54
+ */
55
+ function requireChild(node, symbol) {
56
+ const child = findChild(node, symbol);
57
+ if (child === null) {
58
+ throw grammarError(`Expected ${symbol}`, node);
59
+ }
60
+ return child;
61
+ }
62
+ /**
63
+ * Collects top-level `token_section`, `skip_section`, and `states_section` nodes.
64
+ *
65
+ * @param root - `grammar_file` CST root.
66
+ */
67
+ function collectSections(root) {
68
+ const sectionSymbols = new Set(['token_section', 'skip_section', 'states_section']);
69
+ const sections = [];
70
+ // Unwrap a `section` node into its concrete section production.
71
+ const unwrapSection = (node) => {
72
+ if (sectionSymbols.has(node.symbol)) {
73
+ sections.push(node);
74
+ return;
75
+ }
76
+ if (node.symbol === 'section') {
77
+ for (const child of node.children) {
78
+ unwrapSection(child);
79
+ }
80
+ }
81
+ };
82
+ // Walk nested `{ section }` repeat tails.
83
+ const walkRepeat = (node) => {
84
+ for (const child of node.children) {
85
+ if (child.symbol === 'section') {
86
+ unwrapSection(child);
87
+ continue;
88
+ }
89
+ if (isRepeatContainer(child)) {
90
+ walkRepeat(child);
91
+ }
92
+ }
93
+ };
94
+ for (const child of root.children) {
95
+ if (child.symbol === 'section') {
96
+ unwrapSection(child);
97
+ continue;
98
+ }
99
+ if (isRepeatContainer(child)) {
100
+ walkRepeat(child);
101
+ }
102
+ }
103
+ return sections;
104
+ }
105
+ /**
106
+ * Returns whether a CST node is a desugared `{ … }` repeat container.
107
+ *
108
+ * @param node - Candidate repeat node.
109
+ */
110
+ function isRepeatContainer(node) {
111
+ return node.variant !== null || node.symbol.includes('$repeat_');
112
+ }
113
+ /**
114
+ * Collects repeated item nodes from a desugared `{ item }` CST subtree.
115
+ *
116
+ * @param parent - Parent production node.
117
+ * @param itemSymbol - Repeated child production name.
118
+ */
119
+ function collectRepeated(parent, itemSymbol) {
120
+ const items = [];
121
+ for (const child of parent.children) {
122
+ if (child.symbol === itemSymbol) {
123
+ items.push(child);
124
+ continue;
125
+ }
126
+ if (isRepeatContainer(child)) {
127
+ items.push(...collectRepeated(child, itemSymbol));
128
+ }
129
+ }
130
+ return items;
131
+ }
132
+ /**
133
+ * Parses `name … ;`.
134
+ *
135
+ * @param node - `name_decl` CST node.
136
+ */
137
+ function parseNameDecl(node) {
138
+ return parseGrammarName(node);
139
+ }
140
+ /**
141
+ * Parses a grammar name as an identifier or string literal.
142
+ *
143
+ * @param node - `name_decl` or `grammar_name` CST node.
144
+ */
145
+ function parseGrammarName(node) {
146
+ const grammarName = findChild(node, 'grammar_name');
147
+ if (grammarName !== null) {
148
+ return parseGrammarName(grammarName);
149
+ }
150
+ const identifier = findChild(node, 'identifier');
151
+ if (identifier !== null) {
152
+ return terminalText(identifier);
153
+ }
154
+ const stringLiteral = findChild(node, 'string_literal');
155
+ if (stringLiteral !== null) {
156
+ return decodeStringLiteral(terminalText(stringLiteral));
157
+ }
158
+ throw grammarError('Expected grammar name', node);
159
+ }
160
+ /**
161
+ * Parses a `tokens` section.
162
+ *
163
+ * @param node - `token_section` CST node.
164
+ */
165
+ function parseTokenSection(node) {
166
+ return collectRepeated(node, 'token_def').map(parseTokenDef);
167
+ }
168
+ /**
169
+ * Parses a `skip` section.
170
+ *
171
+ * @param node - `skip_section` CST node.
172
+ */
173
+ function parseSkipSection(node) {
174
+ return collectRepeated(node, 'token_def').map(parseTokenDef);
175
+ }
176
+ /**
177
+ * Parses one token definition (`identifier = /…/ ;`).
178
+ *
179
+ * @param node - `token_def` CST node.
180
+ */
181
+ function parseTokenDef(node) {
182
+ const name = identifierText(requireChild(node, 'identifier'));
183
+ const regexLiteral = terminalText(requireChild(node, 'regex_literal'));
184
+ const { pattern, flags } = splitRegexLiteral(regexLiteral);
185
+ return { name, pattern, flags };
186
+ }
187
+ /**
188
+ * Parses a `states` section.
189
+ *
190
+ * @param node - `states_section` CST node.
191
+ */
192
+ function parseStatesSection(node) {
193
+ return collectRepeated(node, 'state_name').map(parseStateName);
194
+ }
195
+ /**
196
+ * Parses one state name.
197
+ *
198
+ * @param node - `state_name` CST node.
199
+ */
200
+ function parseStateName(node) {
201
+ return identifierText(requireChild(node, 'identifier'));
202
+ }
203
+ /**
204
+ * Parses `start identifier ;`.
205
+ *
206
+ * @param node - `start_decl` CST node.
207
+ */
208
+ function parseStartDecl(node) {
209
+ return identifierText(requireChild(node, 'identifier'));
210
+ }
211
+ /**
212
+ * Parses a `grammar` section.
213
+ *
214
+ * @param node - `grammar_section` CST node.
215
+ */
216
+ function parseGrammarSection(node) {
217
+ return collectRepeated(node, 'production').map(parseProduction);
218
+ }
219
+ /**
220
+ * Parses an optional `ast` section.
221
+ *
222
+ * @param node - `ast_section` CST node, or null when omitted.
223
+ */
224
+ function parseOptionalAstSection(node) {
225
+ if (node === null) {
226
+ return null;
227
+ }
228
+ return collectRepeated(node, 'ast_type').map(parseAstType);
229
+ }
230
+ /**
231
+ * Parses an optional `transform` section.
232
+ *
233
+ * @param node - `transform_section` CST node, or null when omitted.
234
+ */
235
+ function parseOptionalTransformSection(node) {
236
+ if (node === null) {
237
+ return null;
238
+ }
239
+ return collectRepeated(node, 'transform_rule').map(parseTransformRule);
240
+ }
241
+ /**
242
+ * Parses one production (`identifier = expression ;`).
243
+ *
244
+ * @param node - `production` CST node.
245
+ */
246
+ function parseProduction(node) {
247
+ const name = identifierText(requireChild(node, 'identifier'));
248
+ const expression = parseExpressionNode(findExpressionChild(node));
249
+ return { name, expression };
250
+ }
251
+ /**
252
+ * Parses one AST type (`identifier = expression ;`).
253
+ *
254
+ * @param node - `ast_type` CST node.
255
+ */
256
+ function parseAstType(node) {
257
+ const name = identifierText(requireChild(node, 'identifier'));
258
+ const expression = parseExpressionNode(findExpressionChild(node));
259
+ return { name, expression };
260
+ }
261
+ /**
262
+ * Parses one transform rule.
263
+ *
264
+ * @param node - `transform_rule` CST node.
265
+ */
266
+ function parseTransformRule(node) {
267
+ const production = identifierText(requireChild(node, 'identifier'));
268
+ return {
269
+ production,
270
+ alternatives: collectRepeated(node, 'labeled_transform').map(parseLabeledTransform),
271
+ };
272
+ }
273
+ /**
274
+ * Parses `# label transform_expr`.
275
+ *
276
+ * @param node - `labeled_transform` CST node.
277
+ */
278
+ function parseLabeledTransform(node) {
279
+ const label = identifierText(requireChild(node, 'identifier'));
280
+ const expression = parseTransformExpr(requireChild(node, 'transform_expr'));
281
+ return { label, expression };
282
+ }
283
+ /**
284
+ * Parses a transform expression.
285
+ *
286
+ * @param node - `transform_expr` CST node.
287
+ */
288
+ function parseTransformExpr(node) {
289
+ const passExpr = findChild(node, 'pass_expr');
290
+ if (passExpr !== null) {
291
+ return parsePassExpr(passExpr);
292
+ }
293
+ const foldLeftExpr = findChild(node, 'fold_left_expr');
294
+ if (foldLeftExpr !== null) {
295
+ return parseFoldLeftExpr(foldLeftExpr);
296
+ }
297
+ const foldRightExpr = findChild(node, 'fold_right_expr');
298
+ if (foldRightExpr !== null) {
299
+ return parseFoldRightExpr(foldRightExpr);
300
+ }
301
+ const flattenExpr = findChild(node, 'flatten_expr');
302
+ if (flattenExpr !== null) {
303
+ return parseFlattenExpr(flattenExpr);
304
+ }
305
+ const buildExpr = findChild(node, 'build_expr');
306
+ if (buildExpr !== null) {
307
+ return parseBuildExpr(buildExpr);
308
+ }
309
+ if (findChild(node, 'drop_kw') !== null) {
310
+ return { kind: 'drop' };
311
+ }
312
+ throw grammarError('Expected transform expression', node);
313
+ }
314
+ /**
315
+ * Parses `pass(reference)`.
316
+ *
317
+ * @param node - `pass_expr` CST node.
318
+ */
319
+ function parsePassExpr(node) {
320
+ return {
321
+ kind: 'pass',
322
+ reference: parseReference(requireChild(node, 'reference')),
323
+ };
324
+ }
325
+ /**
326
+ * Parses `fold-left(type.#variant, references…)`.
327
+ *
328
+ * @param node - `fold_left_expr` CST node.
329
+ */
330
+ function parseFoldLeftExpr(node) {
331
+ const target = parseBuildTarget(requireChild(node, 'build_target'));
332
+ return {
333
+ kind: 'foldLeft',
334
+ typeName: target.typeName,
335
+ variant: target.variant,
336
+ references: parseReferenceList(requireChild(node, 'reference_list')),
337
+ };
338
+ }
339
+ /**
340
+ * Parses `fold-right(type.#variant, references…)`.
341
+ *
342
+ * @param node - `fold_right_expr` CST node.
343
+ */
344
+ function parseFoldRightExpr(node) {
345
+ const target = parseBuildTarget(requireChild(node, 'build_target'));
346
+ return {
347
+ kind: 'foldRight',
348
+ typeName: target.typeName,
349
+ variant: target.variant,
350
+ references: parseReferenceList(requireChild(node, 'reference_list')),
351
+ };
352
+ }
353
+ /**
354
+ * Parses `flatten(type.#variant, head, tail)`.
355
+ *
356
+ * @param node - `flatten_expr` CST node.
357
+ */
358
+ function parseFlattenExpr(node) {
359
+ const target = parseBuildTarget(requireChild(node, 'build_target'));
360
+ const references = node.children.filter((child) => child.symbol === 'reference');
361
+ if (references.length < 2) {
362
+ throw grammarError('Expected flatten head and tail references', node);
363
+ }
364
+ return {
365
+ kind: 'flatten',
366
+ typeName: target.typeName,
367
+ variant: target.variant,
368
+ head: parseReference(references[0]),
369
+ tail: parseReference(references[1]),
370
+ };
371
+ }
372
+ /**
373
+ * Parses `type.#variant` with an optional argument list.
374
+ *
375
+ * @param node - `build_expr` CST node.
376
+ */
377
+ function parseBuildExpr(node) {
378
+ const target = parseBuildTarget(requireChild(node, 'build_target'));
379
+ const referenceList = findChild(node, 'reference_list');
380
+ return {
381
+ kind: 'build',
382
+ typeName: target.typeName,
383
+ variant: target.variant,
384
+ arguments: referenceList === null ? [] : parseReferenceList(referenceList),
385
+ };
386
+ }
387
+ /**
388
+ * Parses `type.#variant`.
389
+ *
390
+ * @param node - `build_target` CST node.
391
+ */
392
+ function parseBuildTarget(node) {
393
+ const identifiers = collectRepeated(node, 'identifier');
394
+ if (identifiers.length < 2) {
395
+ throw grammarError('Expected build target type and variant', node);
396
+ }
397
+ return {
398
+ typeName: identifierText(identifiers[0]),
399
+ variant: identifierText(identifiers[1]),
400
+ };
401
+ }
402
+ /**
403
+ * Parses a comma-separated reference list.
404
+ *
405
+ * @param node - `reference_list` CST node.
406
+ */
407
+ function parseReferenceList(node) {
408
+ return collectRepeated(node, 'reference').map(parseReference);
409
+ }
410
+ /**
411
+ * Parses one reference name.
412
+ *
413
+ * @param node - `reference` CST node.
414
+ */
415
+ function parseReference(node) {
416
+ return identifierText(requireChild(node, 'identifier'));
417
+ }
418
+ /**
419
+ * Returns the expression subtree from a production-like CST node.
420
+ *
421
+ * @param node - Production, AST type, or similar CST node.
422
+ */
423
+ function findExpressionChild(node) {
424
+ const expression = findChild(node, 'expression')
425
+ ?? findChild(node, 'choice');
426
+ if (expression === null) {
427
+ throw grammarError('Expected expression', node);
428
+ }
429
+ return expression;
430
+ }
431
+ /**
432
+ * Collects `alternative` nodes and unwraps their `labeled_alternative` children.
433
+ *
434
+ * @param choice - `choice` CST node.
435
+ */
436
+ function collectAlternatives(choice) {
437
+ return collectRepeated(choice, 'alternative').map((alternative) => requireChild(alternative, 'labeled_alternative'));
438
+ }
439
+ /**
440
+ * Parses a production or AST expression.
441
+ *
442
+ * @param node - `expression` or `choice` CST node.
443
+ */
444
+ function parseExpressionNode(node) {
445
+ if (node.symbol === 'choice') {
446
+ return parseChoice(node);
447
+ }
448
+ if (node.symbol === 'expression') {
449
+ return parseExpressionNode(requireChild(node, 'choice'));
450
+ }
451
+ throw grammarError('Expected expression', node);
452
+ }
453
+ /**
454
+ * Parses an alternation expression.
455
+ *
456
+ * @param node - `choice` CST node.
457
+ */
458
+ function parseChoice(node) {
459
+ const alternatives = collectAlternatives(node).map(parseLabeledAlternative);
460
+ if (alternatives.length === 1) {
461
+ return alternatives[0].expression;
462
+ }
463
+ return {
464
+ kind: 'choice',
465
+ alternatives,
466
+ };
467
+ }
468
+ /**
469
+ * Parses one labeled or unlabeled alternative.
470
+ *
471
+ * @param node - `labeled_alternative` CST node.
472
+ */
473
+ function parseLabeledAlternative(node) {
474
+ const labelNode = findChild(node, 'identifier');
475
+ const label = labelNode === null || findChild(node, 'hash') === null
476
+ ? null
477
+ : identifierText(labelNode);
478
+ const sequence = requireChild(node, 'sequence');
479
+ return {
480
+ label,
481
+ expression: parseSequence(sequence),
482
+ };
483
+ }
484
+ /**
485
+ * Parses a concatenated sequence expression.
486
+ *
487
+ * @param node - `sequence` CST node.
488
+ */
489
+ function parseSequence(node) {
490
+ const elements = collectFactorNodes(node).map((factor) => parseFactor(unwrapFactorContent(factor)));
491
+ if (elements.length === 1) {
492
+ return elements[0];
493
+ }
494
+ return {
495
+ kind: 'sequence',
496
+ elements,
497
+ };
498
+ }
499
+ /**
500
+ * Collects `factor` nodes from a `sequence` subtree, including repeat tails.
501
+ *
502
+ * @param parent - `sequence` or repeat container node.
503
+ */
504
+ function collectFactorNodes(parent) {
505
+ const factors = [];
506
+ for (const child of parent.children) {
507
+ if (child.symbol === 'factor') {
508
+ factors.push(child);
509
+ continue;
510
+ }
511
+ if (isRepeatContainer(child)) {
512
+ factors.push(...collectFactorNodes(child));
513
+ }
514
+ }
515
+ return factors;
516
+ }
517
+ /**
518
+ * Unwraps a `factor` node to its bracketed, repeat, group, or primary content.
519
+ *
520
+ * @param factor - `factor` CST node.
521
+ */
522
+ function unwrapFactorContent(factor) {
523
+ const content = factor.children[0];
524
+ if (content === undefined) {
525
+ throw grammarError('Expected factor content', factor);
526
+ }
527
+ if (content.symbol === 'primary') {
528
+ const primary = content.children[0];
529
+ if (primary === undefined) {
530
+ throw grammarError('Expected primary content', content);
531
+ }
532
+ return primary;
533
+ }
534
+ return content;
535
+ }
536
+ /**
537
+ * Parses one expression factor.
538
+ *
539
+ * @param node - Factor CST node.
540
+ */
541
+ function parseFactor(node) {
542
+ if (node.symbol === 'bracketed') {
543
+ return parseBracketed(node);
544
+ }
545
+ if (node.symbol === 'repeat') {
546
+ return {
547
+ kind: 'repeat',
548
+ element: parseExpressionNode(findExpressionChild(node)),
549
+ };
550
+ }
551
+ if (node.symbol === 'group') {
552
+ return {
553
+ kind: 'group',
554
+ element: parseExpressionNode(findExpressionChild(node)),
555
+ };
556
+ }
557
+ if (node.symbol === 'string_literal') {
558
+ return {
559
+ kind: 'terminal',
560
+ value: decodeStringLiteral(terminalText(node)),
561
+ };
562
+ }
563
+ if (node.symbol === 'identifier') {
564
+ return {
565
+ kind: 'reference',
566
+ name: terminalText(node),
567
+ };
568
+ }
569
+ throw grammarError('Expected expression factor', node);
570
+ }
571
+ /**
572
+ * Parses a bracketed optional or bound reference.
573
+ *
574
+ * @param node - `bracketed` CST node.
575
+ */
576
+ function parseBracketed(node) {
577
+ const expression = parseExpressionNode(findExpressionChild(node));
578
+ const bindingReference = findChild(node, 'identifier');
579
+ if (findChild(node, 'colon') !== null) {
580
+ if (bindingReference === null) {
581
+ throw grammarError('Expected bound reference name', node);
582
+ }
583
+ const binding = bindingNameFromExpression(expression, node);
584
+ return {
585
+ kind: 'boundReference',
586
+ binding,
587
+ name: identifierText(bindingReference),
588
+ };
589
+ }
590
+ return {
591
+ kind: 'optional',
592
+ element: expression,
593
+ };
594
+ }
595
+ /**
596
+ * Returns the binding identifier from a bracketed bound-reference expression.
597
+ *
598
+ * @param expression - Inner expression of a bound reference.
599
+ * @param node - `bracketed` CST node for error reporting.
600
+ */
601
+ function bindingNameFromExpression(expression, node) {
602
+ if (expression.kind === 'reference') {
603
+ return expression.name;
604
+ }
605
+ if (expression.kind === 'sequence' && expression.elements.length === 1) {
606
+ return bindingNameFromExpression(expression.elements[0], node);
607
+ }
608
+ throw grammarError('Expected binding identifier in bound reference', node);
609
+ }
610
+ /**
611
+ * Returns lexeme text from a terminal CST node.
612
+ *
613
+ * @param node - Terminal CST node.
614
+ */
615
+ function terminalText(node) {
616
+ if (node.text === null) {
617
+ throw grammarError(`Expected terminal text for ${node.symbol}`, node);
618
+ }
619
+ return node.text;
620
+ }
621
+ /**
622
+ * Returns an identifier terminal's name text.
623
+ *
624
+ * @param node - `identifier` CST node.
625
+ */
626
+ function identifierText(node) {
627
+ return terminalText(node);
628
+ }
629
+ /**
630
+ * Builds a {@link ReadGrammarError} from a CST node location.
631
+ *
632
+ * @param message - Human-readable failure description.
633
+ * @param node - CST node where reading failed.
634
+ */
635
+ function grammarError(message, node) {
636
+ return new ReadGrammarError(message, node.location?.offset ?? 0);
637
+ }
638
+ //# sourceMappingURL=grammar-from-cst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-from-cst.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-from-cst.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Decodes a grammar-file string literal into its value.
3
+ *
4
+ * @param text - Quoted string literal text including surrounding quotes.
5
+ * @returns Decoded string contents.
6
+ */
7
+ export declare function decodeStringLiteral(text: string): string;
8
+ /**
9
+ * Splits a regex literal token into pattern and flag components.
10
+ *
11
+ * @param text - Regex literal text including slashes and optional flags.
12
+ * @returns Pattern body and flag letters.
13
+ */
14
+ export declare function splitRegexLiteral(text: string): {
15
+ pattern: string;
16
+ flags: string;
17
+ };
18
+ //# sourceMappingURL=grammar-literals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-literals.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-literals.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8CxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2BlF"}