parseman 0.42.0 → 0.43.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 (42) hide show
  1. package/dist/combinators/node.d.ts +21 -7
  2. package/dist/combinators/node.d.ts.map +1 -1
  3. package/dist/combinators/parser.d.ts +23 -2
  4. package/dist/combinators/parser.d.ts.map +1 -1
  5. package/dist/compiler/codegen.d.ts +6 -0
  6. package/dist/compiler/codegen.d.ts.map +1 -1
  7. package/dist/compiler/ir-serialize.d.ts.map +1 -1
  8. package/dist/compiler/linker.d.ts +7 -1
  9. package/dist/compiler/linker.d.ts.map +1 -1
  10. package/dist/cst/reflection.d.ts +24 -0
  11. package/dist/cst/reflection.d.ts.map +1 -0
  12. package/dist/cst/types.d.ts +2 -0
  13. package/dist/cst/types.d.ts.map +1 -1
  14. package/dist/cst/walk.d.ts +27 -62
  15. package/dist/cst/walk.d.ts.map +1 -1
  16. package/dist/index.cjs +375 -195
  17. package/dist/index.cjs.map +4 -4
  18. package/dist/index.d.ts +4 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +375 -195
  21. package/dist/index.js.map +4 -4
  22. package/dist/language-service/index.cjs +25 -33
  23. package/dist/language-service/index.cjs.map +4 -4
  24. package/dist/language-service/index.d.ts +1 -1
  25. package/dist/language-service/index.d.ts.map +1 -1
  26. package/dist/language-service/index.js +25 -33
  27. package/dist/language-service/index.js.map +4 -4
  28. package/dist/plugin/evaluator.d.ts +1 -0
  29. package/dist/plugin/evaluator.d.ts.map +1 -1
  30. package/dist/plugin/index.cjs +654 -173
  31. package/dist/plugin/index.cjs.map +4 -4
  32. package/dist/plugin/index.d.ts.map +1 -1
  33. package/dist/plugin/index.js +654 -173
  34. package/dist/plugin/index.js.map +4 -4
  35. package/dist/spec/index.cjs +429 -313
  36. package/dist/spec/index.cjs.map +4 -4
  37. package/dist/spec/index.js +429 -313
  38. package/dist/spec/index.js.map +4 -4
  39. package/dist/types.d.ts +8 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/version.d.ts +1 -1
  42. package/package.json +1 -1
@@ -16,7 +16,7 @@
16
16
  * consumer's config, never in the grammar.
17
17
  */
18
18
  import type { Combinator, ParseContext, ParseResult, Span, ParseError } from '../types.ts';
19
- import { type Walkable } from '../cst/walk.ts';
19
+ import type { Walkable } from '../cst/walk.ts';
20
20
  import { type Registry } from '../functional/doc.ts';
21
21
  import type { NodeLike } from '../cst/types.ts';
22
22
  export type Severity = 'error' | 'warning' | 'info';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/language-service/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/language-service/index.ts"],"names":[],"mappings":"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"}
@@ -450,15 +450,16 @@ function normalizeCstCollapse(collapse) {
450
450
  }
451
451
  return typeof collapse === "function" ? collapse : void 0;
452
452
  }
453
- function buildCstNode(type, children, _fields, span, _rawChildren, _triviaLog, state) {
454
- return { _tag: "node", type, span: { ...span }, state: state ?? null, children: [...children] };
453
+ function buildCstNode(type, children, _fields, span, _rawChildren, _triviaLog, state, tags) {
454
+ return tags !== void 0 && tags.length > 0 ? { _tag: "node", type, tags, span: { ...span }, state: state ?? null, children: [...children] } : { _tag: "node", type, span: { ...span }, state: state ?? null, children: [...children] };
455
455
  }
456
- function cstBuildHost(typeOrOptions, children, _fields, span, rawChildren, triviaLog, state) {
456
+ function cstBuildHost(typeOrOptions, children, _fields, span, rawChildren, triviaLog, state, _tags) {
457
457
  if (typeof typeOrOptions === "string") {
458
458
  return buildCstNode(typeOrOptions, children ?? [], _fields, span ?? { start: 0, end: 0 }, rawChildren, triviaLog, state);
459
459
  }
460
460
  const collapse = normalizeCstCollapse(typeOrOptions?.collapse);
461
- const host = (type, children2, fields, span2, rawChildren2, triviaLog2, state2) => buildCstNode(type, children2 ?? [], fields, span2, rawChildren2, triviaLog2, state2);
461
+ const materializeTags = typeOrOptions?.tags === true;
462
+ const host = (type, children2, fields, span2, rawChildren2, triviaLog2, state2, tags) => buildCstNode(type, children2 ?? [], fields, span2, rawChildren2, triviaLog2, state2, materializeTags ? tags : void 0);
462
463
  host._parsemanCstOutput = true;
463
464
  if (collapse) host._parsemanCstCollapse = collapse;
464
465
  return host;
@@ -472,19 +473,6 @@ function fusedHostElidedOf(registry) {
472
473
  return registry[FUSED_HOST_ELIDED] === true;
473
474
  }
474
475
 
475
- // src/cst/walk.ts
476
- function walk(root, visitor, ctx = void 0) {
477
- const go = (node2, parent) => {
478
- const descend = visitor.enter ? visitor.enter(node2, parent, ctx) : void 0;
479
- const children = node2.children;
480
- if (descend !== false && Array.isArray(children)) {
481
- for (const child of children) go(child, node2);
482
- }
483
- visitor.leave?.(node2, parent, ctx);
484
- };
485
- go(root, null);
486
- }
487
-
488
476
  // src/cst/relative-spans.ts
489
477
  function relativizeCST(node2, parentBase = 0) {
490
478
  const span = { start: node2.span.start - parentBase, end: node2.span.end - parentBase };
@@ -927,6 +915,14 @@ function parseDoc(registry, rootRule, input, opts = {}) {
927
915
 
928
916
  // src/language-service/index.ts
929
917
  var errorMessage = (expected) => expected.length ? `Unexpected input; expected ${expected.join(" or ")}` : "Unexpected input";
918
+ function visitTree(root, enter) {
919
+ const go = (node2) => {
920
+ enter(node2);
921
+ const children = node2.children;
922
+ if (Array.isArray(children)) for (const child of children) go(child);
923
+ };
924
+ go(root);
925
+ }
930
926
  function mergeDiagnostics(tree, flat, unconsumedFrom, inputLength, config) {
931
927
  const out = [];
932
928
  const seen = /* @__PURE__ */ new Set();
@@ -946,17 +942,15 @@ function mergeDiagnostics(tree, flat, unconsumedFrom, inputLength, config) {
946
942
  function diagnoseTree(root, config) {
947
943
  const out = [];
948
944
  const rules2 = config.diagnostics;
949
- walk(root, {
950
- enter(node2) {
951
- if (node2._tag === "parseError") {
952
- out.push({ severity: "error", message: errorMessage(node2.expected ?? []), span: node2.span });
953
- return;
954
- }
955
- const h = rules2 && node2.type !== void 0 ? rules2[node2.type] : void 0;
956
- if (h) {
957
- const d = h(node2);
958
- if (d) out.push(...Array.isArray(d) ? d : [d]);
959
- }
945
+ visitTree(root, (node2) => {
946
+ if (node2._tag === "parseError") {
947
+ out.push({ severity: "error", message: errorMessage(node2.expected ?? []), span: node2.span });
948
+ return;
949
+ }
950
+ const h = rules2 && node2.type !== void 0 ? rules2[node2.type] : void 0;
951
+ if (h) {
952
+ const d = h(node2);
953
+ if (d) out.push(...Array.isArray(d) ? d : [d]);
960
954
  }
961
955
  });
962
956
  return out;
@@ -1014,11 +1008,9 @@ function languageService(grammar, config = {}) {
1014
1008
  function ruleAtCursor(root, offset) {
1015
1009
  if (!root || typeof root !== "object") return null;
1016
1010
  let best = null;
1017
- walk(root, {
1018
- enter(node2) {
1019
- const s = node2.span;
1020
- if (s && s.start <= offset && offset <= s.end && node2.type !== void 0) best = node2.type;
1021
- }
1011
+ visitTree(root, (node2) => {
1012
+ const s = node2.span;
1013
+ if (s && s.start <= offset && offset <= s.end && node2.type !== void 0) best = node2.type;
1022
1014
  });
1023
1015
  return best;
1024
1016
  }