parseman 0.60.3 → 0.60.5
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/analysis/commitment.d.ts.map +1 -1
- package/dist/analysis/diagnostics.js +1 -1
- package/dist/cli/index.js +420 -420
- package/dist/cli/index.js.map +3 -3
- package/dist/combinators/parser.d.ts +34 -3
- package/dist/combinators/parser.d.ts.map +1 -1
- package/dist/compiler/compile-linkable-table.d.ts.map +1 -1
- package/dist/compiler/ir-serialize.d.ts +3 -1
- package/dist/compiler/ir-serialize.d.ts.map +1 -1
- package/dist/compiler/linker.d.ts +21 -3
- package/dist/compiler/linker.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -35
- package/dist/index.js.map +1 -1
- package/dist/plugin/evaluator.d.ts +11 -1
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +162 -73
- package/dist/plugin/index.js.map +2 -2
- package/dist/spec/index.js +3 -1
- package/dist/spec/index.js.map +1 -1
- package/dist/spec/model.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/analysis/commitment.ts +3 -1
- package/src/combinators/parser.ts +82 -9
- package/src/compiler/compile-linkable-table.ts +4 -1
- package/src/compiler/ir-serialize.ts +24 -7
- package/src/compiler/linker.ts +50 -24
- package/src/index.ts +1 -0
- package/src/plugin/evaluator.ts +27 -5
- package/src/plugin/index.ts +41 -100
- package/src/spec/model.ts +3 -1
- package/src/version.ts +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Combinator } from '../types.ts';
|
|
2
2
|
import type { HostMode } from '../cst/host-mode.ts';
|
|
3
|
+
import type { Runnable } from '../functional/run.ts';
|
|
3
4
|
import { NODE_TAG, NODE_TYPE, type GrammarWithReflection } from '../cst/reflection.ts';
|
|
4
5
|
/**
|
|
5
6
|
* Non-enumerable key on a `rules()` result holding the factory's declaration
|
|
@@ -7,6 +8,8 @@ import { NODE_TAG, NODE_TYPE, type GrammarWithReflection } from '../cst/reflecti
|
|
|
7
8
|
* reference-creation key order. Read by `parseman/spec` for source-order output.
|
|
8
9
|
*/
|
|
9
10
|
export declare const RULE_ORDER = "__parsemanRuleOrder";
|
|
11
|
+
/** The rule name a `prior.X` placeholder stands for (see `linkRules`), or `undefined`. */
|
|
12
|
+
export declare function priorNameOf(r: Combinator<unknown>): string | undefined;
|
|
10
13
|
/**
|
|
11
14
|
* Define named grammar rules without forward declarations.
|
|
12
15
|
*
|
|
@@ -92,8 +95,36 @@ type RuleMapNodeTag<T extends Record<string, Combinator<unknown>>> = {
|
|
|
92
95
|
[K in keyof T & string]: RuleNodeTag<T[K]>;
|
|
93
96
|
}[keyof T & string];
|
|
94
97
|
type RulesResult<T extends Record<string, Combinator<unknown>>> = T & GrammarWithReflection<RuleMapNodeType<T>, RuleMapNodeTag<T>>;
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
/**
|
|
99
|
+
* The second parameter of a `rules((g, prior) => …)` factory. `prior.X` is the
|
|
100
|
+
* definition of `X` that the grammars composed BEFORE this one gave it, with a
|
|
101
|
+
* top-level `node()` unwrapped to its body, so a composing grammar can re-reduce,
|
|
102
|
+
* wrap or extend an inherited rule without re-spelling it:
|
|
103
|
+
*
|
|
104
|
+
* rules((g, prior: PriorRules<typeof css>) => ({
|
|
105
|
+
* Value: node('Value', prior.Value, reduceValue),
|
|
106
|
+
* }))
|
|
107
|
+
*
|
|
108
|
+
* Naming the base grammar types `prior.X`, and a misspelled rule fails to compile.
|
|
109
|
+
*
|
|
110
|
+
* Its `g.X` references stay bound to the composition (open recursion). A rule's value
|
|
111
|
+
* is `unknown` here, because unwrapping a `node()` changes it. Unnamed, the parameter
|
|
112
|
+
* answers any string, which `noUncheckedIndexedAccess` reads as possibly undefined.
|
|
113
|
+
* See `docs/guide/extending.md`.
|
|
114
|
+
*/
|
|
115
|
+
export type PriorRules<Base = Record<string, Combinator<unknown>>> = [
|
|
116
|
+
KnownRuleNames<Base>
|
|
117
|
+
] extends [never] ? {
|
|
118
|
+
readonly [name: string]: Combinator<unknown>;
|
|
119
|
+
} : {
|
|
120
|
+
readonly [K in KnownRuleNames<Base>]: Combinator<unknown>;
|
|
121
|
+
};
|
|
122
|
+
/** The rule names a grammar's type spells out: not its index signature, if it has one. */
|
|
123
|
+
export type KnownRuleNames<Base> = keyof {
|
|
124
|
+
[K in keyof Base as string extends K ? never : number extends K ? never : Base[K] extends Combinator<unknown> | Runnable ? K : never]: unknown;
|
|
125
|
+
} & string;
|
|
126
|
+
export declare function rules<T extends Record<string, Combinator<unknown>>, P extends object = PriorRules>(factory: (self: any, prior: P) => T): RulesResult<T>;
|
|
127
|
+
export declare function rules<T extends Record<string, Combinator<unknown>>, P extends object = PriorRules>(options: RulesOptions, factory: (self: any, prior: P) => T): RulesResult<T>;
|
|
97
128
|
/**
|
|
98
129
|
* The recipe a `rules()` result was built from — its factory and options —
|
|
99
130
|
* non-enumerable, in piece order. Runtime `compose()` links grammars by running
|
|
@@ -103,7 +134,7 @@ export declare function rules<T extends Record<string, Combinator<unknown>>>(opt
|
|
|
103
134
|
*/
|
|
104
135
|
export declare const RULES_RECIPE: unique symbol;
|
|
105
136
|
export type RulesRecipe = {
|
|
106
|
-
readonly factory: (self: Record<string, Combinator<unknown
|
|
137
|
+
readonly factory: (self: Record<string, Combinator<unknown>>, prior: PriorRules) => Record<string, Combinator<unknown>>;
|
|
107
138
|
readonly options: RulesOptions | undefined;
|
|
108
139
|
};
|
|
109
140
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/combinators/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/combinators/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-linkable-table.d.ts","sourceRoot":"","sources":["../../src/compiler/compile-linkable-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"compile-linkable-table.d.ts","sourceRoot":"","sources":["../../src/compiler/compile-linkable-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIvF,OAAO,EAA0C,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,sEAAsE;IACtE,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,sEAAsE;IACtE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAA;IACvC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;;OAKG;IACH,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB;;;;;;;;;OASG;IACH,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9D,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,iBAAiB,CAAA;CAC9B,CAAA;AA2CD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EACjE,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,oBAAyB,GAC9B,aAAa,GAAG,IAAI,CAwDtB"}
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { Combinator } from '../types.ts';
|
|
21
21
|
type Comb = Combinator<unknown>;
|
|
22
|
-
export declare function serializeRuleMap(ruleMap: ReadonlyArray<readonly [string, Comb]>, scanSkip?: readonly Comb[] | null
|
|
22
|
+
export declare function serializeRuleMap(ruleMap: ReadonlyArray<readonly [string, Comb]>, scanSkip?: readonly Comb[] | null,
|
|
23
|
+
/** External names the factory read through `g`; any no rule body reaches is kept as `void g[name]`. */
|
|
24
|
+
accessed?: readonly string[]): string | null;
|
|
23
25
|
/**
|
|
24
26
|
* ONE plain combinator as IR — what a compiled module carries on an exported terminal
|
|
25
27
|
* so another module can import it into a grammar (the macro evaluates grammars, and a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,aAAa,CAAA;AAuB7E,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAwG/B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAC/C,QAAQ,CAAC,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,aAAa,CAAA;AAuB7E,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAwG/B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAC/C,QAAQ,CAAC,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI;AACjC,uGAAuG;AACvG,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,GAAG,IAAI,CAWf;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAE1D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type HostMode } from '../cst/host-mode.ts';
|
|
2
2
|
import { type LinkableTable } from './compile-linkable-table.ts';
|
|
3
|
+
import { type KnownRuleNames } from '../combinators/parser.ts';
|
|
3
4
|
import type { BuildHost, Combinator, CstCollapsePredicate, ParseContext, ParseResult } from '../types.ts';
|
|
4
5
|
import type { Runnable } from '../functional/run.ts';
|
|
5
6
|
export declare function linkable(rulesMap: Record<string, Combinator<unknown>>, ns?: string, trivia?: Combinator<unknown>, hostMode?: HostMode): LinkableTable;
|
|
@@ -101,6 +102,23 @@ export declare function composedCoverageRules(grammar: Record<string, unknown>):
|
|
|
101
102
|
* Lets a coverage run over ONE composed rule name its choices exactly as
|
|
102
103
|
* `composedGrammarCoverageDefinitions` does. INTERNAL: coverage tooling only. */
|
|
103
104
|
export declare function linkedWinnersOf(rule: Combinator<unknown>): Record<string, Combinator<unknown>> | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* The reason a linked map is incomplete, or `undefined` when every `g.X` some piece
|
|
107
|
+
* reads is defined by some piece. A linked namespace holds every name a factory
|
|
108
|
+
* merely ACCESSED, so a name nobody defines is a slot that stays undefined. Runtime
|
|
109
|
+
* `compose()` and the macro's build-time fuse both refuse it with these words, naming
|
|
110
|
+
* the rule that reaches the hole when one does.
|
|
111
|
+
*/
|
|
112
|
+
export declare function danglingReference(map: Record<string, Combinator<unknown>>,
|
|
113
|
+
/** Names read through `g` that `map` itself does not hold (a merge-by-name fuse drops them). */
|
|
114
|
+
accessed?: Iterable<string>): string | undefined;
|
|
115
|
+
/** The rules each item spells out. An item that spells out none, such as a plain
|
|
116
|
+
* `Record<string, …>`, could hold anything, so the whole result stays open. */
|
|
117
|
+
type ItemRuleNames<Item> = Item extends unknown ? [KnownRuleNames<Item>] extends [never] ? string : KnownRuleNames<Item> : never;
|
|
118
|
+
/** A composition's rules: every name its items spell out, plus lookup by any string. */
|
|
119
|
+
export type ComposedRules<Items extends readonly unknown[]> = Record<string, Runnable> & {
|
|
120
|
+
[K in ItemRuleNames<Items[number]>]: Runnable;
|
|
121
|
+
};
|
|
104
122
|
/**
|
|
105
123
|
* Compose grammars into ONE parser map — the only public composition entry point.
|
|
106
124
|
* `compose([base, ext, …])`: a later entry's rule WINS by name, and because every
|
|
@@ -117,7 +135,7 @@ export declare function linkedWinnersOf(rule: Combinator<unknown>): Record<strin
|
|
|
117
135
|
* costs a walk of the items' declared names. For speed, `compile()` a rule of it;
|
|
118
136
|
* `compile()` specialises when the environment allows and falls back under CSP.
|
|
119
137
|
*/
|
|
120
|
-
export declare function compose
|
|
138
|
+
export declare function compose<const Items extends ReadonlyArray<LinkableTable | Record<string, unknown>>>(items: Items,
|
|
121
139
|
/**
|
|
122
140
|
* Host mode for the composed grammar, same meaning as `compile(g, { hostMode })`.
|
|
123
141
|
* The interpreter routes by host at parse time; this records `'cst'` on every rule
|
|
@@ -125,7 +143,7 @@ export declare function compose(items: Array<LinkableTable | Record<string, unkn
|
|
|
125
143
|
*/
|
|
126
144
|
opts?: {
|
|
127
145
|
hostMode?: HostMode;
|
|
128
|
-
}):
|
|
146
|
+
}): ComposedRules<Items>;
|
|
129
147
|
/**
|
|
130
148
|
* Compose a TERMINAL grammar: a leaf parser that overlays local semantic reductions
|
|
131
149
|
* on reusable recognition rules. Under the macro it lowers to a static table exactly
|
|
@@ -134,7 +152,7 @@ opts?: {
|
|
|
134
152
|
* At runtime it is the same lazy link as `compose()`, marked terminal. The bench and
|
|
135
153
|
* differential harnesses import un-macro'd grammar modules and run this path.
|
|
136
154
|
*/
|
|
137
|
-
export declare function composeLeaf
|
|
155
|
+
export declare function composeLeaf<const Items extends ReadonlyArray<LinkableTable | Record<string, unknown>>>(items: Items): ComposedRules<Items>;
|
|
138
156
|
/** Whether `map` is a runtime composition (a combinator map) rather than a
|
|
139
157
|
* build-compiled one (a table). INTERNAL — diagnostics only. */
|
|
140
158
|
export declare function isInterpretedFuse(map: object): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../../src/compiler/linker.ts"],"names":[],"mappings":"AAeA,OAAO,EAAsC,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../../src/compiler/linker.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export type { AttemptOptions } from './combinators/attempt.ts';
|
|
|
13
13
|
export { many, oneOrMore, optional, sepBy, oneOrMoreSep, keepSeparator } from './combinators/repeat.ts';
|
|
14
14
|
export type { RepeatOptions, SepByOptions, TrailingSeparator, KeptSeparator } from './combinators/repeat.ts';
|
|
15
15
|
export { rules } from './combinators/parser.ts';
|
|
16
|
+
export type { PriorRules } from './combinators/parser.ts';
|
|
16
17
|
export { ref } from './combinators/ref.ts';
|
|
17
18
|
export { not } from './combinators/not.ts';
|
|
18
19
|
export { peek } from './combinators/peek.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4713,11 +4713,16 @@ function tagRule(r, key) {
|
|
|
4713
4713
|
function isDefinableRef(v) {
|
|
4714
4714
|
return !!v && typeof v === "object" && "_def" in v && v._def.tag === "lazy" && typeof v.define === "function";
|
|
4715
4715
|
}
|
|
4716
|
+
function priorNameOf(r) {
|
|
4717
|
+
return r._priorOf;
|
|
4718
|
+
}
|
|
4716
4719
|
function ruleNameOf(r) {
|
|
4717
4720
|
return r._ruleName;
|
|
4718
4721
|
}
|
|
4719
4722
|
function isNamedRuleRefForAnotherRule(r, key) {
|
|
4720
|
-
|
|
4723
|
+
if (r._def.tag !== "lazy") return false;
|
|
4724
|
+
if (priorNameOf(r) !== void 0) return true;
|
|
4725
|
+
const name = ruleNameOf(r);
|
|
4721
4726
|
return name !== void 0 && name !== key;
|
|
4722
4727
|
}
|
|
4723
4728
|
var claimedRules = /* @__PURE__ */ new WeakSet();
|
|
@@ -4730,6 +4735,20 @@ function ownRule(p, copies) {
|
|
|
4730
4735
|
}
|
|
4731
4736
|
return own;
|
|
4732
4737
|
}
|
|
4738
|
+
var priorUnfilled = (key) => new Error(`compose: prior.${key} is read, but no grammar composed before it defines "${key}"`);
|
|
4739
|
+
function priorHole(key) {
|
|
4740
|
+
const unfilled = priorUnfilled(key);
|
|
4741
|
+
const fail = () => {
|
|
4742
|
+
throw unfilled;
|
|
4743
|
+
};
|
|
4744
|
+
return {
|
|
4745
|
+
_tag: "lazy",
|
|
4746
|
+
_meta: { firstSet: any(), canMatchNewline: true, isTrivia: false },
|
|
4747
|
+
_def: { tag: "lazy", thunk: fail },
|
|
4748
|
+
parse: fail,
|
|
4749
|
+
_priorOf: key
|
|
4750
|
+
};
|
|
4751
|
+
}
|
|
4733
4752
|
function rules(a, b) {
|
|
4734
4753
|
const factory = typeof a === "function" ? a : b;
|
|
4735
4754
|
const options = typeof a === "function" ? b : a;
|
|
@@ -4754,8 +4773,20 @@ function linkRules(recipes, link) {
|
|
|
4754
4773
|
}
|
|
4755
4774
|
});
|
|
4756
4775
|
const winners = /* @__PURE__ */ new Map();
|
|
4776
|
+
const priorHoles = /* @__PURE__ */ new Map();
|
|
4777
|
+
const prior = new Proxy({}, {
|
|
4778
|
+
get(_target, key) {
|
|
4779
|
+
if (typeof key !== "string") return void 0;
|
|
4780
|
+
const earlier = winners.get(key)?.parser;
|
|
4781
|
+
if (earlier !== void 0) return earlier._def.tag === "node" ? earlier._def.parser : earlier;
|
|
4782
|
+
if (link !== void 0) throw priorUnfilled(key);
|
|
4783
|
+
let hole = priorHoles.get(key);
|
|
4784
|
+
if (hole === void 0) priorHoles.set(key, hole = priorHole(key));
|
|
4785
|
+
return hole;
|
|
4786
|
+
}
|
|
4787
|
+
});
|
|
4757
4788
|
for (const recipe of recipes) {
|
|
4758
|
-
const definitions = recipe.factory(proxy);
|
|
4789
|
+
const definitions = recipe.factory(proxy, prior);
|
|
4759
4790
|
for (const key of Object.keys(definitions)) {
|
|
4760
4791
|
winners.set(key, { parser: definitions[key], options: recipe.options });
|
|
4761
4792
|
}
|
|
@@ -7304,7 +7335,8 @@ function classifyRuleMap(ruleMap) {
|
|
|
7304
7335
|
resolved = void 0;
|
|
7305
7336
|
}
|
|
7306
7337
|
if (resolved === void 0) {
|
|
7307
|
-
|
|
7338
|
+
const hole = p;
|
|
7339
|
+
if (hole._ruleName !== void 0 || hole._priorOf !== void 0) externalRefs.add(p);
|
|
7308
7340
|
return;
|
|
7309
7341
|
}
|
|
7310
7342
|
scanExternal(resolved);
|
|
@@ -13871,7 +13903,7 @@ function clearOf(ranges, input, from, to) {
|
|
|
13871
13903
|
}
|
|
13872
13904
|
|
|
13873
13905
|
// src/version.ts
|
|
13874
|
-
var PARSEMAN_VERSION = "0.60.
|
|
13906
|
+
var PARSEMAN_VERSION = "0.60.5";
|
|
13875
13907
|
|
|
13876
13908
|
// src/table/assemble.ts
|
|
13877
13909
|
import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "./cst/plain.js";
|
|
@@ -18024,7 +18056,7 @@ function buildGrammarPlan(entry, winners) {
|
|
|
18024
18056
|
const dispatches = /* @__PURE__ */ new Map();
|
|
18025
18057
|
const attempts = /* @__PURE__ */ new Map();
|
|
18026
18058
|
const labels = /* @__PURE__ */ new Map();
|
|
18027
|
-
const
|
|
18059
|
+
const rules3 = /* @__PURE__ */ new Map();
|
|
18028
18060
|
const winnerNames = /* @__PURE__ */ new Map();
|
|
18029
18061
|
if (winners) {
|
|
18030
18062
|
for (const [name, winner] of Object.entries(winners)) {
|
|
@@ -18058,7 +18090,7 @@ function buildGrammarPlan(entry, winners) {
|
|
|
18058
18090
|
const ownRule2 = (parser2, rule) => {
|
|
18059
18091
|
const id = `rule:${rule}`;
|
|
18060
18092
|
definitions.set(id, { id, kind: "rule" });
|
|
18061
|
-
|
|
18093
|
+
rules3.set(parser2, id);
|
|
18062
18094
|
};
|
|
18063
18095
|
const seen = /* @__PURE__ */ new Set();
|
|
18064
18096
|
const visit = (parser2, path) => {
|
|
@@ -18098,7 +18130,7 @@ function buildGrammarPlan(entry, winners) {
|
|
|
18098
18130
|
}
|
|
18099
18131
|
visit(body ?? root, name);
|
|
18100
18132
|
}
|
|
18101
|
-
return { definitions: [...definitions.values()].sort((a, b) => a.id.localeCompare(b.id)), choices, dispatches, attempts, labels, rules:
|
|
18133
|
+
return { definitions: [...definitions.values()].sort((a, b) => a.id.localeCompare(b.id)), choices, dispatches, attempts, labels, rules: rules3 };
|
|
18102
18134
|
}
|
|
18103
18135
|
|
|
18104
18136
|
// src/analysis/duplication.ts
|
|
@@ -19867,9 +19899,9 @@ function matcherExpr(entry) {
|
|
|
19867
19899
|
return `matches(${new RegExp(entry.value, entry.flags ?? "").toString()})`;
|
|
19868
19900
|
}
|
|
19869
19901
|
}
|
|
19870
|
-
function serializeRuleMap(ruleMap, scanSkip) {
|
|
19902
|
+
function serializeRuleMap(ruleMap, scanSkip, accessed) {
|
|
19871
19903
|
try {
|
|
19872
|
-
return new Serializer(ruleMap, scanSkip ?? []).run();
|
|
19904
|
+
return new Serializer(ruleMap, scanSkip ?? [], accessed ?? []).run();
|
|
19873
19905
|
} catch (e) {
|
|
19874
19906
|
if (e instanceof Unserializable) {
|
|
19875
19907
|
if (typeof process !== "undefined" && process.env?.PARSEMAN_IR_DEBUG) console.error(`[ir] fallback: ${e.message}`);
|
|
@@ -19891,9 +19923,14 @@ var Serializer = class {
|
|
|
19891
19923
|
localRuleNames = /* @__PURE__ */ new Map();
|
|
19892
19924
|
ruleMap;
|
|
19893
19925
|
scanSkip;
|
|
19894
|
-
|
|
19926
|
+
/** Whether any rule reads a `prior.X` hole, so the factory takes `(g, prior)`. */
|
|
19927
|
+
usesPrior = false;
|
|
19928
|
+
accessed;
|
|
19929
|
+
referenced = /* @__PURE__ */ new Set();
|
|
19930
|
+
constructor(ruleMap, scanSkip = [], accessed = []) {
|
|
19895
19931
|
this.ruleMap = ruleMap;
|
|
19896
19932
|
this.scanSkip = scanSkip;
|
|
19933
|
+
this.accessed = accessed;
|
|
19897
19934
|
for (const [name, c] of ruleMap) {
|
|
19898
19935
|
this.localRuleNames.set(c, name);
|
|
19899
19936
|
this.ruleValues.add(this.body(c));
|
|
@@ -19908,7 +19945,7 @@ var Serializer = class {
|
|
|
19908
19945
|
if (seen.has(c)) return;
|
|
19909
19946
|
seen.add(c);
|
|
19910
19947
|
if (c._def.tag === "lazy") {
|
|
19911
|
-
if (ruleNameOf4(c) !== void 0) throw new Unserializable("scanSkip unit references a grammar rule");
|
|
19948
|
+
if (ruleNameOf4(c) !== void 0 || priorNameOf(c) !== void 0) throw new Unserializable("scanSkip unit references a grammar rule");
|
|
19912
19949
|
const target = lazyTarget(c);
|
|
19913
19950
|
if (target) this.assertNoRuleRef(target, seen);
|
|
19914
19951
|
return;
|
|
@@ -19969,9 +20006,13 @@ var Serializer = class {
|
|
|
19969
20006
|
}
|
|
19970
20007
|
this.decls = innerDecls;
|
|
19971
20008
|
const body = this.ruleMap.map(([name, c]) => ` ${JSON.stringify(name)}: ${this.wrap(this.body(c), [])}`).join(",\n");
|
|
19972
|
-
const
|
|
20009
|
+
for (const name of this.accessed) {
|
|
20010
|
+
if (!this.referenced.has(name)) innerDecls.push(`void g[${JSON.stringify(name)}]`);
|
|
20011
|
+
}
|
|
20012
|
+
const params = this.usesPrior ? "(g, prior)" : "(g)";
|
|
20013
|
+
const factory = innerDecls.length === 0 ? `${params} => ({
|
|
19973
20014
|
${body}
|
|
19974
|
-
})` :
|
|
20015
|
+
})` : `${params} => {
|
|
19975
20016
|
${innerDecls.map((d) => " " + d).join("\n")}
|
|
19976
20017
|
return ({
|
|
19977
20018
|
${body}
|
|
@@ -19988,6 +20029,10 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
19988
20029
|
analyze(c, active) {
|
|
19989
20030
|
const def = c._def;
|
|
19990
20031
|
if (def.tag === "lazy") {
|
|
20032
|
+
if (priorNameOf(c) !== void 0) {
|
|
20033
|
+
this.usesPrior = true;
|
|
20034
|
+
return;
|
|
20035
|
+
}
|
|
19991
20036
|
if (ruleNameOf4(c) !== void 0) return;
|
|
19992
20037
|
const target = lazyTarget(c);
|
|
19993
20038
|
if (!target) throw new Unserializable("unresolved unnamed ref");
|
|
@@ -20066,8 +20111,13 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
20066
20111
|
}
|
|
20067
20112
|
switch (def.tag) {
|
|
20068
20113
|
case "lazy": {
|
|
20114
|
+
const prior = priorNameOf(c);
|
|
20115
|
+
if (prior !== void 0) return `prior[${JSON.stringify(prior)}]`;
|
|
20069
20116
|
const name = this.localRuleNames.get(c) ?? ruleNameOf4(c);
|
|
20070
|
-
if (name !== void 0)
|
|
20117
|
+
if (name !== void 0) {
|
|
20118
|
+
this.referenced.add(name);
|
|
20119
|
+
return `g[${JSON.stringify(name)}]`;
|
|
20120
|
+
}
|
|
20071
20121
|
const target = lazyTarget(c);
|
|
20072
20122
|
for (let i = frames.length - 1; i >= 0; i--) {
|
|
20073
20123
|
const f = frames[i];
|
|
@@ -20243,7 +20293,8 @@ function externalNames(ruleMap) {
|
|
|
20243
20293
|
resolved = void 0;
|
|
20244
20294
|
}
|
|
20245
20295
|
if (resolved === void 0) {
|
|
20246
|
-
const
|
|
20296
|
+
const prior = priorNameOf(p);
|
|
20297
|
+
const name = prior === void 0 ? p._ruleName : `prior.${prior}`;
|
|
20247
20298
|
if (name !== void 0 && !out.includes(name)) out.push(name);
|
|
20248
20299
|
return;
|
|
20249
20300
|
}
|
|
@@ -20336,9 +20387,9 @@ function carriedRuleMapsDetailed(carried) {
|
|
|
20336
20387
|
const maps = [];
|
|
20337
20388
|
const opaque = [];
|
|
20338
20389
|
for (const p of carried) {
|
|
20339
|
-
const
|
|
20340
|
-
if (
|
|
20341
|
-
maps.push(
|
|
20390
|
+
const rules3 = ruleMapOfCarried(p);
|
|
20391
|
+
if (rules3 !== void 0) {
|
|
20392
|
+
maps.push(rules3);
|
|
20342
20393
|
continue;
|
|
20343
20394
|
}
|
|
20344
20395
|
opaque.push({ ns: p.ns, ruleNames: isIRPiece(p) ? [] : [...p.keys] });
|
|
@@ -20349,7 +20400,7 @@ function recoverComposedRules(grammar) {
|
|
|
20349
20400
|
const carried = composedPiecesOf(grammar);
|
|
20350
20401
|
if (carried === void 0) return void 0;
|
|
20351
20402
|
const { maps, opaque } = carriedRuleMapsDetailed(carried);
|
|
20352
|
-
const
|
|
20403
|
+
const rules3 = /* @__PURE__ */ new Map();
|
|
20353
20404
|
for (const map of maps) for (const [name, rule] of map) {
|
|
20354
20405
|
if (rule._def.tag === "lazy") {
|
|
20355
20406
|
try {
|
|
@@ -20358,9 +20409,9 @@ function recoverComposedRules(grammar) {
|
|
|
20358
20409
|
continue;
|
|
20359
20410
|
}
|
|
20360
20411
|
}
|
|
20361
|
-
|
|
20412
|
+
rules3.set(name, rule);
|
|
20362
20413
|
}
|
|
20363
|
-
return { rules:
|
|
20414
|
+
return { rules: rules3, opaque };
|
|
20364
20415
|
}
|
|
20365
20416
|
function composedCoverageRules(grammar) {
|
|
20366
20417
|
const link = grammar[LINKED];
|
|
@@ -20401,24 +20452,28 @@ function declaredNamesOf(items) {
|
|
|
20401
20452
|
}
|
|
20402
20453
|
return [...names];
|
|
20403
20454
|
}
|
|
20404
|
-
function
|
|
20405
|
-
const
|
|
20406
|
-
const missing = [];
|
|
20455
|
+
function danglingReference(map, accessed = []) {
|
|
20456
|
+
const holes = /* @__PURE__ */ new Set();
|
|
20407
20457
|
for (const [name, rule] of Object.entries(map)) {
|
|
20408
20458
|
if (rule._def.tag !== "lazy") continue;
|
|
20409
20459
|
try {
|
|
20410
20460
|
rule._def.thunk();
|
|
20411
20461
|
} catch {
|
|
20412
|
-
|
|
20462
|
+
holes.add(name);
|
|
20413
20463
|
}
|
|
20414
20464
|
}
|
|
20415
|
-
if (
|
|
20416
|
-
|
|
20417
|
-
|
|
20418
|
-
|
|
20419
|
-
}
|
|
20420
|
-
throw new Error(`compose: rule(s) ${missing.map((n) => `"${n}"`).join(", ")} are referenced but defined by no composed grammar`);
|
|
20465
|
+
for (const name of accessed) if (!Object.hasOwn(map, name)) holes.add(name);
|
|
20466
|
+
if (holes.size === 0) return void 0;
|
|
20467
|
+
const missing = [...holes];
|
|
20468
|
+
for (const [name, deps] of ruleDependencies(Object.entries(map).filter(([n]) => !holes.has(n)))) {
|
|
20469
|
+
for (const dep of deps) if (holes.has(dep)) return `rule "${name}" references missing rule "${dep}"`;
|
|
20421
20470
|
}
|
|
20471
|
+
return `rule(s) ${missing.map((n) => `"${n}"`).join(", ")} are referenced but defined by no composed grammar`;
|
|
20472
|
+
}
|
|
20473
|
+
function linkComposition(recipes, link) {
|
|
20474
|
+
const map = linkRules(recipes, link);
|
|
20475
|
+
const dangling = danglingReference(map);
|
|
20476
|
+
if (dangling !== void 0) throw new Error(`compose: ${dangling}`);
|
|
20422
20477
|
const borrowed = borrowedRuleReference(map);
|
|
20423
20478
|
if (borrowed !== void 0) throw new Error(borrowedRuleMessage("compose", borrowed));
|
|
20424
20479
|
for (const rule of Object.values(map)) LINKED_WINNERS.set(rule, map);
|
|
@@ -21269,12 +21324,12 @@ function inSet(code, fs) {
|
|
|
21269
21324
|
var TERMINAL_TAGS = /* @__PURE__ */ new Set(["literal", "regex", "keywords", "scanTo"]);
|
|
21270
21325
|
var INSTRUMENTABLE = /* @__PURE__ */ new Set(["firstMatch", "sharedPrefix"]);
|
|
21271
21326
|
function profileWastedWork(opts) {
|
|
21272
|
-
const { rules:
|
|
21273
|
-
const { walked, unresolvedRoots } = walkRules(
|
|
21274
|
-
const entryParser = typeof opts.entry === "string" ?
|
|
21327
|
+
const { rules: rules3, corpus } = opts;
|
|
21328
|
+
const { walked, unresolvedRoots } = walkRules(rules3);
|
|
21329
|
+
const entryParser = typeof opts.entry === "string" ? rules3.find(([n]) => n === opts.entry)?.[1] : opts.entry;
|
|
21275
21330
|
if (entryParser === void 0) {
|
|
21276
21331
|
throw new TypeError(
|
|
21277
|
-
`choice-cost: entry rule '${String(opts.entry)}' is not in the rule map (have: ${
|
|
21332
|
+
`choice-cost: entry rule '${String(opts.entry)}' is not in the rule map (have: ${rules3.map(([n]) => n).slice(0, 12).join(", ")}${rules3.length > 12 ? ", \u2026" : ""}).`
|
|
21278
21333
|
);
|
|
21279
21334
|
}
|
|
21280
21335
|
if (corpus.length === 0) {
|