parser-lr 0.4.1 → 0.5.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 (197) hide show
  1. package/README.md +35 -1
  2. package/bin/parser-lr.js +340 -5802
  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 +2 -0
  13. package/dist/lib/grammar/index.d.ts.map +1 -1
  14. package/dist/lib/grammar/index.js +1 -0
  15. package/dist/lib/grammar/index.js.map +1 -1
  16. package/dist/lib/grammar/meta-grammar-table.d.ts.map +1 -1
  17. package/dist/lib/grammar/meta-grammar-table.js +4 -2
  18. package/dist/lib/grammar/meta-grammar-table.js.map +1 -1
  19. package/dist/lib/grammar/table-validator.d.ts +26 -0
  20. package/dist/lib/grammar/table-validator.d.ts.map +1 -0
  21. package/dist/lib/grammar/table-validator.js +211 -0
  22. package/dist/lib/grammar/table-validator.js.map +1 -0
  23. package/dist/lib/index.d.ts +2 -0
  24. package/dist/lib/index.d.ts.map +1 -1
  25. package/dist/lib/index.js +1 -0
  26. package/dist/lib/index.js.map +1 -1
  27. package/dist/lib/transform/cst-transformer.d.ts +14 -0
  28. package/dist/lib/transform/cst-transformer.d.ts.map +1 -1
  29. package/dist/lib/transform/cst-transformer.js +82 -11
  30. package/dist/lib/transform/cst-transformer.js.map +1 -1
  31. package/dist/lib/transform/grammar-fixture.d.ts +56 -0
  32. package/dist/lib/transform/grammar-fixture.d.ts.map +1 -0
  33. package/dist/lib/transform/grammar-fixture.js +101 -0
  34. package/dist/lib/transform/grammar-fixture.js.map +1 -0
  35. package/dist/lib-cjs/ast/ast-node.js +70 -0
  36. package/dist/lib-cjs/ast/ast-node.js.map +1 -0
  37. package/dist/lib-cjs/errors/index.js +9 -0
  38. package/dist/lib-cjs/errors/index.js.map +1 -0
  39. package/dist/lib-cjs/errors/parser-lr-error.js +52 -0
  40. package/dist/lib-cjs/errors/parser-lr-error.js.map +1 -0
  41. package/dist/lib-cjs/grammar/ast-schema.js +43 -0
  42. package/dist/lib-cjs/grammar/ast-schema.js.map +1 -0
  43. package/dist/lib-cjs/grammar/ast-type.js +3 -0
  44. package/dist/lib-cjs/grammar/ast-type.js.map +1 -0
  45. package/dist/lib-cjs/grammar/expression.js +3 -0
  46. package/dist/lib-cjs/grammar/expression.js.map +1 -0
  47. package/dist/lib-cjs/grammar/grammar-from-cst.js +641 -0
  48. package/dist/lib-cjs/grammar/grammar-from-cst.js.map +1 -0
  49. package/dist/lib-cjs/grammar/grammar-json-path.js +13 -0
  50. package/dist/lib-cjs/grammar/grammar-json-path.js.map +1 -0
  51. package/dist/lib-cjs/grammar/grammar-literals.js +71 -0
  52. package/dist/lib-cjs/grammar/grammar-literals.js.map +1 -0
  53. package/dist/lib-cjs/grammar/grammar.js +64 -0
  54. package/dist/lib-cjs/grammar/grammar.js.map +1 -0
  55. package/dist/lib-cjs/grammar/grammar.json +5760 -0
  56. package/dist/lib-cjs/grammar/index.js +19 -0
  57. package/dist/lib-cjs/grammar/index.js.map +1 -0
  58. package/dist/lib-cjs/grammar/meta-grammar-table.js +39 -0
  59. package/dist/lib-cjs/grammar/meta-grammar-table.js.map +1 -0
  60. package/dist/lib-cjs/grammar/production.js +3 -0
  61. package/dist/lib-cjs/grammar/production.js.map +1 -0
  62. package/dist/lib-cjs/grammar/read-grammar-error.js +22 -0
  63. package/dist/lib-cjs/grammar/read-grammar-error.js.map +1 -0
  64. package/dist/lib-cjs/grammar/read-grammar.js +24 -0
  65. package/dist/lib-cjs/grammar/read-grammar.js.map +1 -0
  66. package/dist/lib-cjs/grammar/table-validator.js +215 -0
  67. package/dist/lib-cjs/grammar/table-validator.js.map +1 -0
  68. package/dist/lib-cjs/grammar/token-rule.js +3 -0
  69. package/dist/lib-cjs/grammar/token-rule.js.map +1 -0
  70. package/dist/lib-cjs/grammar/transform-expression.js +3 -0
  71. package/dist/lib-cjs/grammar/transform-expression.js.map +1 -0
  72. package/dist/lib-cjs/grammar/transform-rule.js +3 -0
  73. package/dist/lib-cjs/grammar/transform-rule.js.map +1 -0
  74. package/dist/lib-cjs/grammar/transform-schema.js +43 -0
  75. package/dist/lib-cjs/grammar/transform-schema.js.map +1 -0
  76. package/dist/lib-cjs/index.js +66 -0
  77. package/dist/lib-cjs/index.js.map +1 -0
  78. package/dist/lib-cjs/lexer/index.js +32 -0
  79. package/dist/lib-cjs/lexer/index.js.map +1 -0
  80. package/dist/lib-cjs/lexer/lexer-compile-error.js +22 -0
  81. package/dist/lib-cjs/lexer/lexer-compile-error.js.map +1 -0
  82. package/dist/lib-cjs/lexer/lexer-compile.js +201 -0
  83. package/dist/lib-cjs/lexer/lexer-compile.js.map +1 -0
  84. package/dist/lib-cjs/lexer/lexer-error.js +22 -0
  85. package/dist/lib-cjs/lexer/lexer-error.js.map +1 -0
  86. package/dist/lib-cjs/lexer/lexer-input-error.js +17 -0
  87. package/dist/lib-cjs/lexer/lexer-input-error.js.map +1 -0
  88. package/dist/lib-cjs/lexer/lexer-state-error.js +19 -0
  89. package/dist/lib-cjs/lexer/lexer-state-error.js.map +1 -0
  90. package/dist/lib-cjs/lexer/lexer.js +278 -0
  91. package/dist/lib-cjs/lexer/lexer.js.map +1 -0
  92. package/dist/lib-cjs/lexer/token.js +44 -0
  93. package/dist/lib-cjs/lexer/token.js.map +1 -0
  94. package/dist/lib-cjs/package.json +3 -0
  95. package/dist/lib-cjs/parse-context-error.js +19 -0
  96. package/dist/lib-cjs/parse-context-error.js.map +1 -0
  97. package/dist/lib-cjs/parse-context.js +137 -0
  98. package/dist/lib-cjs/parse-context.js.map +1 -0
  99. package/dist/lib-cjs/parse-output-error.js +19 -0
  100. package/dist/lib-cjs/parse-output-error.js.map +1 -0
  101. package/dist/lib-cjs/parse-output.js +18 -0
  102. package/dist/lib-cjs/parse-output.js.map +1 -0
  103. package/dist/lib-cjs/parse-table/analysis/first-follow.js +294 -0
  104. package/dist/lib-cjs/parse-table/analysis/first-follow.js.map +1 -0
  105. package/dist/lib-cjs/parse-table/analysis/index.js +9 -0
  106. package/dist/lib-cjs/parse-table/analysis/index.js.map +1 -0
  107. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js +140 -0
  108. package/dist/lib-cjs/parse-table/bnf/bnf-grammar.js.map +1 -0
  109. package/dist/lib-cjs/parse-table/bnf/bnf-production.js +3 -0
  110. package/dist/lib-cjs/parse-table/bnf/bnf-production.js.map +1 -0
  111. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js +39 -0
  112. package/dist/lib-cjs/parse-table/bnf/bnf-symbol.js.map +1 -0
  113. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js +224 -0
  114. package/dist/lib-cjs/parse-table/bnf/desugar-ebnf.js.map +1 -0
  115. package/dist/lib-cjs/parse-table/bnf/index.js +13 -0
  116. package/dist/lib-cjs/parse-table/bnf/index.js.map +1 -0
  117. package/dist/lib-cjs/parse-table/build-lr-table.js +171 -0
  118. package/dist/lib-cjs/parse-table/build-lr-table.js.map +1 -0
  119. package/dist/lib-cjs/parse-table/index.js +49 -0
  120. package/dist/lib-cjs/parse-table/index.js.map +1 -0
  121. package/dist/lib-cjs/parse-table/lr-algorithm-error.js +19 -0
  122. package/dist/lib-cjs/parse-table/lr-algorithm-error.js.map +1 -0
  123. package/dist/lib-cjs/parse-table/lr-algorithm.js +31 -0
  124. package/dist/lib-cjs/parse-table/lr-algorithm.js.map +1 -0
  125. package/dist/lib-cjs/parse-table/lr0/index.js +14 -0
  126. package/dist/lib-cjs/parse-table/lr0/index.js.map +1 -0
  127. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js +286 -0
  128. package/dist/lib-cjs/parse-table/lr0/lr0-item-set.js.map +1 -0
  129. package/dist/lib-cjs/parse-table/lr1/index.js +18 -0
  130. package/dist/lib-cjs/parse-table/lr1/index.js.map +1 -0
  131. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js +432 -0
  132. package/dist/lib-cjs/parse-table/lr1/lr1-item-set.js.map +1 -0
  133. package/dist/lib-cjs/parse-table/parse-table-build-error.js +24 -0
  134. package/dist/lib-cjs/parse-table/parse-table-build-error.js.map +1 -0
  135. package/dist/lib-cjs/parse-table/parse-table-error.js +19 -0
  136. package/dist/lib-cjs/parse-table/parse-table-error.js.map +1 -0
  137. package/dist/lib-cjs/parse-table/parse-table-json.js +12 -0
  138. package/dist/lib-cjs/parse-table/parse-table-json.js.map +1 -0
  139. package/dist/lib-cjs/parse-table/parse-table.js +345 -0
  140. package/dist/lib-cjs/parse-table/parse-table.js.map +1 -0
  141. package/dist/lib-cjs/parse-table/slr/index.js +13 -0
  142. package/dist/lib-cjs/parse-table/slr/index.js.map +1 -0
  143. package/dist/lib-cjs/parse-table/slr/parse-action.js +8 -0
  144. package/dist/lib-cjs/parse-table/slr/parse-action.js.map +1 -0
  145. package/dist/lib-cjs/parse-table/slr/slr-table.js +18 -0
  146. package/dist/lib-cjs/parse-table/slr/slr-table.js.map +1 -0
  147. package/dist/lib-cjs/parse-table/table/index.js +21 -0
  148. package/dist/lib-cjs/parse-table/table/index.js.map +1 -0
  149. package/dist/lib-cjs/parse-table/table/lr-parse-table.js +192 -0
  150. package/dist/lib-cjs/parse-table/table/lr-parse-table.js.map +1 -0
  151. package/dist/lib-cjs/parse-table/table/parse-action.js +54 -0
  152. package/dist/lib-cjs/parse-table/table/parse-action.js.map +1 -0
  153. package/dist/lib-cjs/parse-table/table/table-builder-base.js +153 -0
  154. package/dist/lib-cjs/parse-table/table/table-builder-base.js.map +1 -0
  155. package/dist/lib-cjs/parse-table/token-inventory.js +18 -0
  156. package/dist/lib-cjs/parse-table/token-inventory.js.map +1 -0
  157. package/dist/lib-cjs/parser-lr.js +143 -0
  158. package/dist/lib-cjs/parser-lr.js.map +1 -0
  159. package/dist/lib-cjs/shift-reduce/index.js +11 -0
  160. package/dist/lib-cjs/shift-reduce/index.js.map +1 -0
  161. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js +224 -0
  162. package/dist/lib-cjs/shift-reduce/shift-reduce-engine.js.map +1 -0
  163. package/dist/lib-cjs/transform/binding-map.js +82 -0
  164. package/dist/lib-cjs/transform/binding-map.js.map +1 -0
  165. package/dist/lib-cjs/transform/cst-transformer.js +480 -0
  166. package/dist/lib-cjs/transform/cst-transformer.js.map +1 -0
  167. package/dist/lib-cjs/transform/grammar-fixture.js +109 -0
  168. package/dist/lib-cjs/transform/grammar-fixture.js.map +1 -0
  169. package/dist/lib-cjs/transform/index.js +12 -0
  170. package/dist/lib-cjs/transform/index.js.map +1 -0
  171. package/docs/grammar.md +80 -0
  172. package/docs/parser-lr-enhancement-proposals.md +548 -0
  173. package/grammars/6502.grammar +233 -0
  174. package/grammars/calc.grammar +30 -0
  175. package/grammars/ferrite.grammar +991 -0
  176. package/grammars/fixtures/build-optional/build-optional.grammar +32 -0
  177. package/grammars/fixtures/build-optional/input.txt +1 -0
  178. package/grammars/fixtures/comparison-op/comparison-op.grammar +28 -0
  179. package/grammars/fixtures/comparison-op/input.txt +1 -0
  180. package/grammars/fixtures/flatten-repeat/flatten-repeat.grammar +28 -0
  181. package/grammars/fixtures/flatten-repeat/input.txt +1 -0
  182. package/grammars/fixtures/help-topic/help-topic.grammar +28 -0
  183. package/grammars/fixtures/help-topic/input.txt +1 -0
  184. package/grammars/fixtures/let-target/input.txt +1 -0
  185. package/grammars/fixtures/let-target/let-target.grammar +33 -0
  186. package/grammars/fixtures/pass-preserves-production/bare-terminal/bare-terminal.grammar +24 -0
  187. package/grammars/fixtures/pass-preserves-production/bare-terminal/input.txt +1 -0
  188. package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end-if.txt +1 -0
  189. package/grammars/fixtures/pass-preserves-production/labeled-variant/input-end.txt +1 -0
  190. package/grammars/fixtures/pass-preserves-production/labeled-variant/labeled-variant.grammar +24 -0
  191. package/grammars/fixtures/pass-preserves-production/optional-absent/input.txt +1 -0
  192. package/grammars/fixtures/pass-preserves-production/optional-absent/optional-absent.grammar +24 -0
  193. package/grammars/fixtures/pass-preserves-production/optional-present/input.txt +1 -0
  194. package/grammars/fixtures/pass-preserves-production/optional-present/optional-present.grammar +24 -0
  195. package/grammars/grammar.grammar +428 -0
  196. package/grammars/lisp.grammar +95 -0
  197. package/package.json +9 -4
@@ -0,0 +1,2 @@
1
+ export { grammarJsonDirectory } from './grammar-json-path.esm.js';
2
+ //# sourceMappingURL=grammar-json-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-json-path.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns the directory containing bootstrapped `grammar.json` for the ESM build.
3
+ */
4
+ export declare function grammarJsonDirectory(): string;
5
+ //# sourceMappingURL=grammar-json-path.esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-json-path.esm.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.esm.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C"}
@@ -0,0 +1,9 @@
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ /**
4
+ * Returns the directory containing bootstrapped `grammar.json` for the ESM build.
5
+ */
6
+ export function grammarJsonDirectory() {
7
+ return dirname(fileURLToPath(import.meta.url));
8
+ }
9
+ //# sourceMappingURL=grammar-json-path.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-json-path.esm.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.esm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAEhC,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { grammarJsonDirectory } from './grammar-json-path.esm.js';
2
+ //# sourceMappingURL=grammar-json-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar-json-path.js","sourceRoot":"","sources":["../../../src/lib/grammar/grammar-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -10,4 +10,6 @@ export type { TokenRule } from './token-rule.js';
10
10
  export type { BuildTransform, DropTransform, FlattenTransform, FoldLeftTransform, FoldRightTransform, PassTransform, TransformExpression, } from './transform-expression.js';
11
11
  export type { TransformAlternative, TransformRule } from './transform-rule.js';
12
12
  export { TransformSchema } from './transform-schema.js';
13
+ export { formatTableValidationIssues, validateGrammarTable, } from './table-validator.js';
14
+ export type { TableValidationIssue, TableValidationSeverity } from './table-validator.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -4,4 +4,5 @@ export { grammarFromCst } from './grammar-from-cst.js';
4
4
  export { readGrammar } from './read-grammar.js';
5
5
  export { ReadGrammarError } from './read-grammar-error.js';
6
6
  export { TransformSchema } from './transform-schema.js';
7
+ export { formatTableValidationIssues, validateGrammarTable, } from './table-validator.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAa5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAa5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-grammar-table.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/meta-grammar-table.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAG7C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAQrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,EAAE,CAKjE"}
1
+ {"version":3,"file":"meta-grammar-table.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/meta-grammar-table.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAS5C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAG7C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAQrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,EAAE,CAKjE"}
@@ -1,8 +1,10 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
1
3
  import { Lexer } from '../lexer/lexer.js';
2
4
  import { isEofToken } from '../lexer/token.js';
3
5
  import { ParseTable } from '../parse-table/parse-table.js';
4
- import bootstrapTableJson from './grammar.json' with { type: 'json' };
5
- const bootstrapTable = bootstrapTableJson;
6
+ import { grammarJsonDirectory } from './grammar-json-path.js';
7
+ const bootstrapTable = JSON.parse(readFileSync(join(grammarJsonDirectory(), 'grammar.json'), 'utf8'));
6
8
  let bootstrapMetaGrammar = null;
7
9
  /**
8
10
  * Returns the bootstrapped meta-grammar table for `.grammar` files.
@@ -1 +1 @@
1
- {"version":3,"file":"meta-grammar-table.js","sourceRoot":"","sources":["../../../src/lib/grammar/meta-grammar-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,kBAAkB,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,cAAc,GAAG,kBAAoC,CAAC;AAE5D,IAAI,oBAAoB,GAAmB,IAAI,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAE5B,OAAO,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,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,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAE3C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"meta-grammar-table.js","sourceRoot":"","sources":["../../../src/lib/grammar/meta-grammar-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC7B,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACnD,CAAC;AAEpB,IAAI,oBAAoB,GAAmB,IAAI,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAE5B,OAAO,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,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,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAE3C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Grammar } from './grammar.js';
2
+ /**
3
+ * Severity of one grammar table validation issue.
4
+ */
5
+ export type TableValidationSeverity = 'error' | 'warning';
6
+ /**
7
+ * One transform or AST consistency issue found during table validation.
8
+ */
9
+ export interface TableValidationIssue {
10
+ readonly severity: TableValidationSeverity;
11
+ readonly message: string;
12
+ }
13
+ /**
14
+ * Validates transform and AST consistency for a parsed grammar.
15
+ *
16
+ * @param grammar - Parsed `.grammar` file model.
17
+ * @returns Validation errors and warnings.
18
+ */
19
+ export declare function validateGrammarTable(grammar: Grammar): TableValidationIssue[];
20
+ /**
21
+ * Formats validation issues as stderr warning or error lines.
22
+ *
23
+ * @param issues - Validation issues to format.
24
+ */
25
+ export declare function formatTableValidationIssues(issues: readonly TableValidationIssue[]): string[];
26
+ //# sourceMappingURL=table-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CA+B7E;AA2QD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAM7F"}
@@ -0,0 +1,211 @@
1
+ import { EbnfDesugarer } from '../parse-table/bnf/desugar-ebnf.js';
2
+ /**
3
+ * Validates transform and AST consistency for a parsed grammar.
4
+ *
5
+ * @param grammar - Parsed `.grammar` file model.
6
+ * @returns Validation errors and warnings.
7
+ */
8
+ export function validateGrammarTable(grammar) {
9
+ const issues = [];
10
+ const bnf = new EbnfDesugarer(grammar).desugar();
11
+ const bnfProductionNames = new Set(bnf.productions.map((production) => production.name));
12
+ if (grammar.transformSchema !== null) {
13
+ for (const rule of grammar.transformSchema.rules) {
14
+ validateTransformProductionExists(rule, bnfProductionNames, issues);
15
+ for (const alternative of rule.alternatives) {
16
+ validateTransformExpression(grammar, alternative.expression, issues);
17
+ collectPassCollapseWarnings(grammar, rule, alternative.expression, bnf.productions, issues);
18
+ }
19
+ }
20
+ }
21
+ return issues;
22
+ }
23
+ /**
24
+ * Records an error when a transform rule names an unknown production.
25
+ *
26
+ * @param rule - Transform rule to validate.
27
+ * @param bnfProductionNames - Desugared production names.
28
+ * @param issues - Issue list to append to.
29
+ */
30
+ function validateTransformProductionExists(rule, bnfProductionNames, issues) {
31
+ if (!bnfProductionNames.has(rule.production)) {
32
+ issues.push({
33
+ severity: 'error',
34
+ message: `transform rule for unknown production ${JSON.stringify(rule.production)}`,
35
+ });
36
+ }
37
+ }
38
+ /**
39
+ * Validates one transform expression against the grammar AST schema.
40
+ *
41
+ * @param grammar - Parsed grammar model.
42
+ * @param expression - Transform expression to validate.
43
+ * @param issues - Issue list to append to.
44
+ */
45
+ function validateTransformExpression(grammar, expression, issues) {
46
+ switch (expression.kind) {
47
+ case 'build':
48
+ validateAstTarget(grammar, expression.typeName, expression.variant, issues);
49
+ break;
50
+ case 'foldLeft':
51
+ case 'foldRight':
52
+ case 'flatten':
53
+ validateAstTarget(grammar, expression.typeName, expression.variant, issues);
54
+ break;
55
+ case 'drop':
56
+ case 'pass':
57
+ break;
58
+ }
59
+ }
60
+ /**
61
+ * Records an error when a transform references an undefined AST type or variant.
62
+ *
63
+ * @param grammar - Parsed grammar model.
64
+ * @param typeName - AST type name from a transform expression.
65
+ * @param variant - AST variant label from a transform expression.
66
+ * @param issues - Issue list to append to.
67
+ */
68
+ function validateAstTarget(grammar, typeName, variant, issues) {
69
+ if (grammar.astSchema === null) {
70
+ issues.push({
71
+ severity: 'error',
72
+ message: `transform references ${typeName}.${variant} but the grammar has no ast section`,
73
+ });
74
+ return;
75
+ }
76
+ const astType = grammar.astSchema.type(typeName);
77
+ if (astType === null) {
78
+ issues.push({
79
+ severity: 'error',
80
+ message: `transform references undefined ast type ${JSON.stringify(typeName)}`,
81
+ });
82
+ return;
83
+ }
84
+ const variants = collectAstVariants(astType.expression);
85
+ if (!variants.includes(variant)) {
86
+ issues.push({
87
+ severity: 'error',
88
+ message: `transform references ${typeName}.${variant} which is not declared in ast`,
89
+ });
90
+ }
91
+ }
92
+ /**
93
+ * Collects variant labels declared on one AST type expression.
94
+ *
95
+ * @param expression - AST type right-hand side expression.
96
+ */
97
+ function collectAstVariants(expression) {
98
+ if (expression.kind === 'choice') {
99
+ return expression.alternatives
100
+ .map((alternative) => alternative.label)
101
+ .filter((label) => label !== null);
102
+ }
103
+ if (expression.kind === 'sequence' || expression.kind === 'group') {
104
+ const inner = expression.kind === 'sequence'
105
+ ? expression.elements[0]
106
+ : expression.element;
107
+ if (inner === undefined) {
108
+ return [];
109
+ }
110
+ return collectAstVariants(inner);
111
+ }
112
+ return [];
113
+ }
114
+ /**
115
+ * Warns when pass(boundSlot) may collapse a single-terminal child production.
116
+ *
117
+ * @param grammar - Parsed grammar model.
118
+ * @param rule - Parent production transform rule.
119
+ * @param expression - Transform expression for one alternative.
120
+ * @param bnfProductions - Desugared BNF productions.
121
+ * @param issues - Issue list to append to.
122
+ */
123
+ function collectPassCollapseWarnings(grammar, rule, expression, bnfProductions, issues) {
124
+ if (expression.kind !== 'pass') {
125
+ return;
126
+ }
127
+ const parentProduction = grammar.production(rule.production);
128
+ if (parentProduction === null) {
129
+ return;
130
+ }
131
+ const boundSymbol = resolveBindingSymbol(parentProduction.expression, expression.reference);
132
+ if (boundSymbol === null || !grammar.hasProduction(boundSymbol)) {
133
+ return;
134
+ }
135
+ if (grammar.transformSchema?.hasRule(boundSymbol) === true) {
136
+ return;
137
+ }
138
+ if (!hasSingleTerminalAlternative(boundSymbol, bnfProductions)) {
139
+ return;
140
+ }
141
+ issues.push({
142
+ severity: 'warning',
143
+ message: `pass(${expression.reference}) on ${rule.production} binds ${boundSymbol} `
144
+ + `which has no transform rule and can match a single terminal; `
145
+ + `add a transform for ${boundSymbol} or use build`,
146
+ });
147
+ }
148
+ /**
149
+ * Returns the symbol bound to a slot name on one production expression.
150
+ *
151
+ * @param expression - Production right-hand side expression.
152
+ * @param binding - Binding name from a pass transform.
153
+ */
154
+ function resolveBindingSymbol(expression, binding) {
155
+ if (expression.kind === 'boundReference' && expression.binding === binding) {
156
+ return expression.name;
157
+ }
158
+ if (expression.kind === 'sequence') {
159
+ for (const element of expression.elements) {
160
+ const resolved = resolveBindingSymbol(element, binding);
161
+ if (resolved !== null) {
162
+ return resolved;
163
+ }
164
+ }
165
+ }
166
+ if (expression.kind === 'choice') {
167
+ for (const alternative of expression.alternatives) {
168
+ const resolved = resolveBindingSymbol(alternative.expression, binding);
169
+ if (resolved !== null) {
170
+ return resolved;
171
+ }
172
+ }
173
+ }
174
+ if (expression.kind === 'optional' || expression.kind === 'group') {
175
+ return resolveBindingSymbol(expression.element, binding);
176
+ }
177
+ if (expression.kind === 'repeat') {
178
+ return resolveBindingSymbol(expression.element, binding);
179
+ }
180
+ return null;
181
+ }
182
+ /**
183
+ * Returns whether a production has a desugared alternative of one terminal symbol.
184
+ *
185
+ * @param productionName - Non-terminal production name.
186
+ * @param bnfProductions - Desugared BNF productions.
187
+ */
188
+ function hasSingleTerminalAlternative(productionName, bnfProductions) {
189
+ return bnfProductions.some((production) => production.name === productionName
190
+ && production.rhs.length === 1
191
+ && isTerminalSymbol(production.rhs[0]));
192
+ }
193
+ /**
194
+ * Returns whether a BNF symbol is a terminal token or literal.
195
+ *
196
+ * @param symbol - Desugared right-hand side symbol.
197
+ */
198
+ function isTerminalSymbol(symbol) {
199
+ return symbol?.kind === 'terminal' || symbol?.kind === 'token';
200
+ }
201
+ /**
202
+ * Formats validation issues as stderr warning or error lines.
203
+ *
204
+ * @param issues - Validation issues to format.
205
+ */
206
+ export function formatTableValidationIssues(issues) {
207
+ return issues.map((issue) => issue.severity === 'error'
208
+ ? `error: ${issue.message}`
209
+ : `warning: ${issue.message}`);
210
+ }
211
+ //# sourceMappingURL=table-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export { AstNode } from './ast/ast-node.js';
5
5
  export type { SourceLocation } from './ast/ast-node.js';
6
6
  export type { Alternative, AstType, BoundReferenceExpression, BuildTransform, ChoiceExpression, DropTransform, Expression, FlattenTransform, FoldLeftTransform, FoldRightTransform, GroupExpression, OptionalExpression, PassTransform, Production, ReferenceExpression, RepeatExpression, SequenceExpression, TerminalExpression, TokenRule, TransformAlternative, TransformExpression, TransformRule, } from './grammar/index.js';
7
7
  export { AstSchema, Grammar, TransformSchema } from './grammar/index.js';
8
+ export { formatTableValidationIssues, validateGrammarTable, } from './grammar/index.js';
9
+ export type { TableValidationIssue, TableValidationSeverity } from './grammar/index.js';
8
10
  export { ReadGrammarError, readGrammar } from './grammar/index.js';
9
11
  export { Lexer, LexerCompileError, LexerInputError, LexerStateError, lexChunkStream, lexChunkStreamAsync, lexChunks, lexChunksAsync } from './lexer/index.js';
10
12
  export { DEFAULT_LEXER_STATE, EOF_TOKEN_NAME, LexerError, compileLexerRules, eofToken, isEofToken, token, } from './lexer/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EACR,WAAW,EACX,OAAO,EACP,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7J,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EACR,WAAW,EACX,OAAO,EACP,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7J,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/lib/index.js CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export { AstNode } from './ast/ast-node.js';
5
5
  export { AstSchema, Grammar, TransformSchema } from './grammar/index.js';
6
+ export { formatTableValidationIssues, validateGrammarTable, } from './grammar/index.js';
6
7
  export { ReadGrammarError, readGrammar } from './grammar/index.js';
7
8
  export { Lexer, LexerCompileError, LexerInputError, LexerStateError, lexChunkStream, lexChunkStreamAsync, lexChunks, lexChunksAsync } from './lexer/index.js';
8
9
  export { DEFAULT_LEXER_STATE, EOF_TOKEN_NAME, LexerError, compileLexerRules, eofToken, isEofToken, token, } from './lexer/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA0B5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7J,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA0B5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7J,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -44,6 +44,13 @@ export declare class CstTransformer {
44
44
  * @param expression - Transform expression for the matched alternative.
45
45
  */
46
46
  private applyExpression;
47
+ /**
48
+ * Passes one referenced child through the transform pipeline.
49
+ *
50
+ * @param node - CST node supplying the referenced child.
51
+ * @param reference - Binding or symbol name from a transform expression.
52
+ */
53
+ private applyPass;
47
54
  /**
48
55
  * Builds an AST node from a `type.#variant(arg, …)` transform.
49
56
  *
@@ -72,6 +79,13 @@ export declare class CstTransformer {
72
79
  * @param expression - Flatten transform expression.
73
80
  */
74
81
  private applyFlatten;
82
+ /**
83
+ * Resolves the head item for one flatten iteration.
84
+ *
85
+ * @param node - CST node for one list segment or repeat tail.
86
+ * @param headRef - Primary head binding from the flatten expression.
87
+ */
88
+ private transformFlattenHead;
75
89
  /**
76
90
  * Transforms a CST node without explicit transform rules.
77
91
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cst-transformer.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhH;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC;;;;;OAKG;gBACgB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;IAM7D;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IAUrD;;;;;;OAMG;WACW,SAAS,CACnB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI;IAUjB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA2BlB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2DrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAsEtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI,CAGhB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,wBAAwB,GACrC,SAAS,cAAc,EAAE,CAG3B"}
1
+ {"version":3,"file":"cst-transformer.d.ts","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhH;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC;;;;;OAKG;gBACgB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;IAM7D;;;;;OAKG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IAUrD;;;;;;OAMG;WACW,SAAS,CACnB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI;IAUjB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAiElB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2DrB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAsEtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAoCpB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAcvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,GAClB,OAAO,GAAG,IAAI,CAGhB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,wBAAwB,GACrC,SAAS,cAAc,EAAE,CAG3B"}
@@ -78,7 +78,7 @@ export class CstTransformer {
78
78
  case 'drop':
79
79
  return null;
80
80
  case 'pass':
81
- return this.transformReference(node, expression.reference);
81
+ return this.applyPass(node, expression.reference);
82
82
  case 'build':
83
83
  return this.applyBuild(node, expression);
84
84
  case 'foldLeft':
@@ -89,6 +89,15 @@ export class CstTransformer {
89
89
  return this.applyFlatten(node, expression);
90
90
  }
91
91
  }
92
+ /**
93
+ * Passes one referenced child through the transform pipeline.
94
+ *
95
+ * @param node - CST node supplying the referenced child.
96
+ * @param reference - Binding or symbol name from a transform expression.
97
+ */
98
+ applyPass(node, reference) {
99
+ return this.transformReference(node, reference);
100
+ }
92
101
  /**
93
102
  * Builds an AST node from a `type.#variant(arg, …)` transform.
94
103
  *
@@ -97,12 +106,36 @@ export class CstTransformer {
97
106
  */
98
107
  applyBuild(node, expression) {
99
108
  const children = [];
100
- for (const reference of expression.arguments) {
101
- const child = this.transformReference(node, reference);
102
- if (child === null) {
103
- return null;
109
+ const production = this.productionFor(node);
110
+ if (production === null) {
111
+ for (const reference of expression.arguments) {
112
+ const child = this.transformReference(node, reference);
113
+ if (child === null) {
114
+ return null;
115
+ }
116
+ children.push(child);
117
+ }
118
+ }
119
+ else {
120
+ for (const reference of expression.arguments) {
121
+ const slotIndex = referenceSlotIndex(production, reference);
122
+ // Skip optional bindings absent from the matched alternative.
123
+ if (slotIndex === null) {
124
+ continue;
125
+ }
126
+ const childNode = node.children[slotIndex] ?? null;
127
+ if (childNode === null) {
128
+ return null;
129
+ }
130
+ if (this.isEpsilonNode(childNode)) {
131
+ continue;
132
+ }
133
+ const child = this.transformNode(childNode);
134
+ if (child === null) {
135
+ return null;
136
+ }
137
+ children.push(child);
104
138
  }
105
- children.push(child);
106
139
  }
107
140
  return AstNode.rule(expression.typeName, children, mergeChildLocations(children) ?? node.location, expression.variant);
108
141
  }
@@ -193,15 +226,49 @@ export class CstTransformer {
193
226
  const items = [];
194
227
  let current = node;
195
228
  while (current !== null && !this.isEpsilonNode(current)) {
196
- const head = this.transformReference(current, expression.head);
229
+ const head = this.transformFlattenHead(current, expression.head);
197
230
  if (head === null) {
198
231
  return null;
199
232
  }
200
233
  items.push(head);
201
- current = this.resolveReferenceNode(current, expression.tail);
234
+ const tail = this.resolveReferenceNode(current, expression.tail);
235
+ if (tail === null || this.isEpsilonNode(tail)) {
236
+ break;
237
+ }
238
+ current = tail;
202
239
  }
203
240
  return AstNode.rule(expression.typeName, items, mergeChildLocations(items) ?? node.location, expression.variant);
204
241
  }
242
+ /**
243
+ * Resolves the head item for one flatten iteration.
244
+ *
245
+ * @param node - CST node for one list segment or repeat tail.
246
+ * @param headRef - Primary head binding from the flatten expression.
247
+ */
248
+ transformFlattenHead(node, headRef) {
249
+ const head = this.transformReference(node, headRef);
250
+ if (head !== null) {
251
+ return head;
252
+ }
253
+ const production = this.productionFor(node);
254
+ if (production === null || repeatSymbolPrefix(production.name) === null) {
255
+ return null;
256
+ }
257
+ // Repeat tail segments bind repeated elements under names like `rest`.
258
+ for (const slot of productionSlots(production)) {
259
+ if (slot.binding === null || slot.binding === headRef) {
260
+ continue;
261
+ }
262
+ if (repeatSymbolPrefix(slot.symbol) !== null) {
263
+ continue;
264
+ }
265
+ const repeated = this.transformReference(node, slot.binding);
266
+ if (repeated !== null) {
267
+ return repeated;
268
+ }
269
+ }
270
+ return null;
271
+ }
205
272
  /**
206
273
  * Transforms a CST node without explicit transform rules.
207
274
  *
@@ -212,12 +279,16 @@ export class CstTransformer {
212
279
  return null;
213
280
  }
214
281
  const children = this.transformChildren(node.children);
215
- if (children.length === 1) {
216
- return children[0];
217
- }
218
282
  if (children.length === 0) {
219
283
  return null;
220
284
  }
285
+ // Preserve parse-table productions even when a single child would collapse.
286
+ if (node.productionId !== null) {
287
+ return AstNode.rule(node.symbol, children, mergeChildLocations(children) ?? node.location, node.variant);
288
+ }
289
+ if (children.length === 1) {
290
+ return children[0];
291
+ }
221
292
  return AstNode.rule(node.symbol, children, mergeChildLocations(children) ?? node.location, node.variant);
222
293
  }
223
294
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cst-transformer.js","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cst-transformer.js","sourceRoot":"","sources":["../../../src/lib/transform/cst-transformer.ts"],"names":[],"mappings":"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"}