parseman 0.21.0 → 0.22.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.
- package/dist/combinators/grammar.d.ts.map +1 -1
- package/dist/combinators/parser.d.ts +12 -0
- package/dist/combinators/parser.d.ts.map +1 -1
- package/dist/compiler/codegen.d.ts +3 -1
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/functional/run.d.ts.map +1 -1
- package/dist/index.cjs +16 -2
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +16 -2
- package/dist/index.js.map +2 -2
- package/dist/plugin/index.cjs +33 -7
- package/dist/plugin/index.cjs.map +2 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +33 -7
- package/dist/plugin/index.js.map +2 -2
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAuBA,OAAO,WAAW,MAAM,cAAc,CAAA;AAiBtC,MAAM,MAAM,uBAAuB,GAAG;IACpC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;;;AA4MD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3C,kFAAkF;IAClF,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,aAAa,cAA6B,EAC1C,kBAAkB,UAAQ,GACzB,oBAAoB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAuBA,OAAO,WAAW,MAAM,cAAc,CAAA;AAiBtC,MAAM,MAAM,uBAAuB,GAAG;IACpC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;;;AA4MD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3C,kFAAkF;IAClF,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,aAAa,cAA6B,EAC1C,kBAAkB,UAAQ,GACzB,oBAAoB,GAAG,IAAI,CA0oB7B"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -1694,7 +1694,9 @@ function tagRule(r, key) {
|
|
|
1694
1694
|
r._ruleName = key;
|
|
1695
1695
|
if (r._def.tag === "node" && r._def.type === void 0) r._def.type = key;
|
|
1696
1696
|
}
|
|
1697
|
-
function rules(
|
|
1697
|
+
function rules(a, b) {
|
|
1698
|
+
const factory = typeof a === "function" ? a : b;
|
|
1699
|
+
const options = typeof a === "function" ? b : a;
|
|
1698
1700
|
const cache = {};
|
|
1699
1701
|
const proxy = new Proxy(cache, {
|
|
1700
1702
|
get(target, key) {
|
|
@@ -1722,6 +1724,12 @@ function rules(factory) {
|
|
|
1722
1724
|
cache[key] = parser2;
|
|
1723
1725
|
}
|
|
1724
1726
|
}
|
|
1727
|
+
if (options?.trivia !== void 0) {
|
|
1728
|
+
for (const key of Object.keys(definitions)) {
|
|
1729
|
+
const rule = cache[key];
|
|
1730
|
+
if (rule && !rule._meta.isTrivia) rule._meta.grammarTrivia = options.trivia;
|
|
1731
|
+
}
|
|
1732
|
+
}
|
|
1725
1733
|
for (const key of Object.keys(definitions)) {
|
|
1726
1734
|
markUnusedValues(cache[key]);
|
|
1727
1735
|
}
|
|
@@ -5316,6 +5324,7 @@ function ruleDependencies(ruleMap) {
|
|
|
5316
5324
|
}
|
|
5317
5325
|
function compile(combinator, mapFnSources) {
|
|
5318
5326
|
markUnusedValues(combinator);
|
|
5327
|
+
const grammarTrivia = combinator._meta.grammarTrivia;
|
|
5319
5328
|
const ctx = {
|
|
5320
5329
|
vars: 0,
|
|
5321
5330
|
indent: 1,
|
|
@@ -5334,7 +5343,8 @@ function compile(combinator, mapFnSources) {
|
|
|
5334
5343
|
triviaFnNames: /* @__PURE__ */ new Map(),
|
|
5335
5344
|
namedFnDecls: [],
|
|
5336
5345
|
capturing: hasNodeDef(combinator),
|
|
5337
|
-
lazyUsage: analyzeLazyUsage(combinator)
|
|
5346
|
+
lazyUsage: analyzeLazyUsage(combinator),
|
|
5347
|
+
...grammarTrivia ? { activeTrivia: grammarTrivia, triviaKindLabels: grammarTrivia._meta.triviaKindLabels } : {}
|
|
5338
5348
|
};
|
|
5339
5349
|
const r = emit(combinator, ctx, "_pos");
|
|
5340
5350
|
const namedPrelude = ctx.namedFnDecls.length > 0 ? [...namedFnPrelude(), ""] : [];
|
|
@@ -5410,8 +5420,9 @@ function publicRuleWrapperSource(rule, fnSource) {
|
|
|
5410
5420
|
if (labels === void 0) return fnSource;
|
|
5411
5421
|
return `Object.assign(${fnSource}, { _meta: { triviaKindLabels: ${JSON.stringify(labels)} } })`;
|
|
5412
5422
|
}
|
|
5413
|
-
function compileRuleMap(ruleMap) {
|
|
5423
|
+
function compileRuleMap(ruleMap, opts) {
|
|
5414
5424
|
for (const [, rule] of ruleMap) markUnusedValues(rule);
|
|
5425
|
+
const grammarTrivia = opts?.trivia;
|
|
5415
5426
|
const ctx = {
|
|
5416
5427
|
vars: 0,
|
|
5417
5428
|
indent: 1,
|
|
@@ -5430,7 +5441,8 @@ function compileRuleMap(ruleMap) {
|
|
|
5430
5441
|
triviaFnNames: /* @__PURE__ */ new Map(),
|
|
5431
5442
|
namedFnDecls: [],
|
|
5432
5443
|
capturing: ruleMap.some(([, rule]) => hasNodeDef(rule)),
|
|
5433
|
-
lazyUsage: analyzeLazyUsageMulti(ruleMap.map(([, rule]) => rule))
|
|
5444
|
+
lazyUsage: analyzeLazyUsageMulti(ruleMap.map(([, rule]) => rule)),
|
|
5445
|
+
...grammarTrivia ? { activeTrivia: grammarTrivia, triviaKindLabels: grammarTrivia._meta.triviaKindLabels } : {}
|
|
5434
5446
|
};
|
|
5435
5447
|
const seenNames = /* @__PURE__ */ new Map();
|
|
5436
5448
|
const ruleNames = /* @__PURE__ */ new Map();
|
|
@@ -5442,7 +5454,13 @@ function compileRuleMap(ruleMap) {
|
|
|
5442
5454
|
ruleNames.set(rule, n === 0 ? base : `${base}$${n}`);
|
|
5443
5455
|
}
|
|
5444
5456
|
ctx.ruleNames = ruleNames;
|
|
5445
|
-
const perEntry = ruleMap.map(([key, rule]) =>
|
|
5457
|
+
const perEntry = ruleMap.map(([key, rule]) => {
|
|
5458
|
+
const savedTrivia = ctx.activeTrivia;
|
|
5459
|
+
if (rule._meta.isTrivia) ctx.activeTrivia = void 0;
|
|
5460
|
+
const r = emit(rule, ctx, "_pos");
|
|
5461
|
+
ctx.activeTrivia = savedTrivia;
|
|
5462
|
+
return { key, rule, r };
|
|
5463
|
+
});
|
|
5446
5464
|
const derivedSrcs = ctx.mapFnSrcs.length === ctx.mapFns.length && ctx.mapFnSrcs.every((s) => s !== null) ? ctx.mapFnSrcs : void 0;
|
|
5447
5465
|
const buildCovered = ctx.buildFns.length === 0 || ctx.buildSrcs.every((s) => s !== null);
|
|
5448
5466
|
const buildSources = ctx.buildFns.length === 0 ? void 0 : ctx.buildSrcs;
|
|
@@ -6821,7 +6839,10 @@ function transformMacro(code, id, moduleAliases = /* @__PURE__ */ new Set([PARSE
|
|
|
6821
6839
|
};
|
|
6822
6840
|
const compileRulesFactory = (init, label2) => {
|
|
6823
6841
|
const args = init.arguments;
|
|
6824
|
-
const
|
|
6842
|
+
const arg0 = args[0];
|
|
6843
|
+
const arg1 = args[1];
|
|
6844
|
+
const optionsFirst = arg0?.type === "ObjectExpression";
|
|
6845
|
+
const factoryArg = optionsFirst ? arg1 : arg0;
|
|
6825
6846
|
if (!factoryArg) {
|
|
6826
6847
|
warn(init.start, `${label2}: rules() needs a factory argument`);
|
|
6827
6848
|
return null;
|
|
@@ -6831,7 +6852,12 @@ function transformMacro(code, id, moduleAliases = /* @__PURE__ */ new Set([PARSE
|
|
|
6831
6852
|
warn(init.start, `${label2}: rules(...) factory isn't statically evaluable`);
|
|
6832
6853
|
return null;
|
|
6833
6854
|
}
|
|
6834
|
-
const
|
|
6855
|
+
const optionsArg = optionsFirst ? arg0 : arg1;
|
|
6856
|
+
const triviaValue = optionsArg?.type === "ObjectExpression" ? (optionsArg.properties ?? []).find(
|
|
6857
|
+
(p) => p.key?.name === "trivia"
|
|
6858
|
+
)?.value : void 0;
|
|
6859
|
+
const gTrivia = triviaValue ? evaluateExpr(triviaValue, scope, code, []) : void 0;
|
|
6860
|
+
const compiled = compileRuleMap([...ruleMap], gTrivia ? { trivia: gTrivia } : void 0);
|
|
6835
6861
|
if (!compiled) {
|
|
6836
6862
|
warn(init.start, `${label2}: rule map couldn't be inlined`);
|
|
6837
6863
|
return null;
|