parseman 0.5.0 → 0.6.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/README.md +15 -11
- package/dist/combinators/choice.d.ts.map +1 -1
- package/dist/combinators/completions.d.ts +1 -1
- package/dist/combinators/completions.d.ts.map +1 -1
- package/dist/combinators/grammar.d.ts.map +1 -1
- package/dist/combinators/keywords.d.ts +22 -0
- package/dist/combinators/keywords.d.ts.map +1 -1
- package/dist/combinators/literal.d.ts.map +1 -1
- package/dist/combinators/map.d.ts +8 -2
- package/dist/combinators/map.d.ts.map +1 -1
- package/dist/combinators/node.d.ts +10 -11
- package/dist/combinators/node.d.ts.map +1 -1
- package/dist/combinators/not.d.ts +3 -3
- package/dist/combinators/not.d.ts.map +1 -1
- package/dist/combinators/recover.d.ts +2 -2
- package/dist/combinators/recover.d.ts.map +1 -1
- package/dist/combinators/regex.d.ts.map +1 -1
- package/dist/combinators/repeat.d.ts +4 -4
- package/dist/combinators/repeat.d.ts.map +1 -1
- package/dist/combinators/scanTo.d.ts.map +1 -1
- package/dist/combinators/sequence.d.ts.map +1 -1
- package/dist/combinators/trivia-skip.d.ts +16 -10
- package/dist/combinators/trivia-skip.d.ts.map +1 -1
- package/dist/combinators/withCtx.d.ts +2 -2
- package/dist/combinators/withCtx.d.ts.map +1 -1
- package/dist/compiler/codegen.d.ts +4 -2
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/compiler/inline-build.d.ts +11 -0
- package/dist/compiler/inline-build.d.ts.map +1 -0
- package/dist/compiler/inline-callback.d.ts +12 -0
- package/dist/compiler/inline-callback.d.ts.map +1 -0
- package/dist/compiler/trivia-fast-path.d.ts +24 -0
- package/dist/compiler/trivia-fast-path.d.ts.map +1 -0
- package/dist/cst/capture-buffer.d.ts +46 -0
- package/dist/cst/capture-buffer.d.ts.map +1 -0
- package/dist/cst/trivia-entries.d.ts +20 -0
- package/dist/cst/trivia-entries.d.ts.map +1 -0
- package/dist/cst/trivia-index.d.ts +11 -11
- package/dist/cst/trivia-index.d.ts.map +1 -1
- package/dist/cst/trivia-kinds.d.ts +47 -0
- package/dist/cst/trivia-kinds.d.ts.map +1 -0
- package/dist/cst/types.d.ts +9 -13
- package/dist/cst/types.d.ts.map +1 -1
- package/dist/functional/doc.d.ts +2 -20
- package/dist/functional/doc.d.ts.map +1 -1
- package/dist/index.cjs +1238 -662
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1256 -6241
- package/dist/index.js.map +4 -4
- package/dist/plugin/evaluator.d.ts +7 -0
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.cjs +1249 -369
- package/dist/plugin/index.cjs.map +4 -4
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1249 -369
- package/dist/plugin/index.js.map +4 -4
- package/dist/types.d.ts +32 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/cst/grammar.d.ts +0 -115
- package/dist/cst/grammar.d.ts.map +0 -1
- package/dist/cst/incremental.d.ts +0 -40
- package/dist/cst/incremental.d.ts.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -69,6 +69,10 @@ export type ParserDef = {
|
|
|
69
69
|
} | {
|
|
70
70
|
tag: 'trivia';
|
|
71
71
|
parser: Combinator<unknown>;
|
|
72
|
+
} | {
|
|
73
|
+
tag: 'label';
|
|
74
|
+
label: string;
|
|
75
|
+
parser: Combinator<unknown>;
|
|
72
76
|
} | {
|
|
73
77
|
tag: 'grammar';
|
|
74
78
|
parser: Combinator<unknown>;
|
|
@@ -87,7 +91,7 @@ export type ParserDef = {
|
|
|
87
91
|
build: (children: ReadonlyArray<unknown>, rawChildren: ReadonlyArray<unknown>, span: {
|
|
88
92
|
start: number;
|
|
89
93
|
end: number;
|
|
90
|
-
}) => unknown;
|
|
94
|
+
}, triviaLog: readonly number[], state: unknown) => unknown;
|
|
91
95
|
buildSrc?: string;
|
|
92
96
|
} | {
|
|
93
97
|
tag: 'guard';
|
|
@@ -119,15 +123,21 @@ export type Combinator<T> = {
|
|
|
119
123
|
readonly _def: ParserDef;
|
|
120
124
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<T>;
|
|
121
125
|
};
|
|
126
|
+
import type { CstCaptureBuf } from './cst/capture-buffer.ts';
|
|
122
127
|
export type ParseContext = {
|
|
123
128
|
trivia?: Combinator<unknown>;
|
|
129
|
+
/**
|
|
130
|
+
* Label table for the active trivia parser (`label(name, arm)` strings in
|
|
131
|
+
* choice order). When set, trivia logs include a kind index per entry.
|
|
132
|
+
*/
|
|
133
|
+
triviaKindLabels?: readonly string[];
|
|
124
134
|
/**
|
|
125
135
|
* When true (and a CST node is collecting children), trivia consumed between
|
|
126
136
|
* terms is recorded into _cstRawChildren as separate CSTTrivia tokens — one
|
|
127
137
|
* per maximal sub-match of the trivia parser (e.g. a whitespace run or a
|
|
128
138
|
* comment). When false/unset, trivia is skipped silently. Default: skip.
|
|
129
139
|
*/
|
|
130
|
-
captureTrivia?: boolean;
|
|
140
|
+
captureTrivia?: boolean | undefined;
|
|
131
141
|
trackLines: boolean;
|
|
132
142
|
/** Grammar-author-provided state, scoped with withCtx() and read in guard(). */
|
|
133
143
|
state?: unknown;
|
|
@@ -144,30 +154,41 @@ export type ParseContext = {
|
|
|
144
154
|
};
|
|
145
155
|
/**
|
|
146
156
|
* Framework-internal: current CSTNode rule's child collector.
|
|
147
|
-
* Set by
|
|
157
|
+
* Set by node() during capture; undefined outside an active node parse.
|
|
148
158
|
* CSTNode parsers append themselves here after a successful parse.
|
|
149
159
|
*/
|
|
150
|
-
_cstChildren?: unknown[];
|
|
160
|
+
_cstChildren?: unknown[] | undefined;
|
|
151
161
|
/**
|
|
152
162
|
* Framework-internal: collector for CSTLeaf terminals.
|
|
153
163
|
* Usually points to the same array as _cstChildren (both live together).
|
|
154
164
|
* literal() and regex() append a CSTLeaf here when set.
|
|
155
165
|
*/
|
|
156
|
-
_cstLeaves?: unknown[];
|
|
166
|
+
_cstLeaves?: unknown[] | undefined;
|
|
157
167
|
/**
|
|
158
168
|
* Framework-internal: collector for ALL children including trivia.
|
|
159
169
|
* Set alongside _cstChildren/_cstLeaves. Receives CSTLeaf + CSTNode entries
|
|
160
170
|
* (same as _cstChildren) PLUS CSTTrivia entries for trivia consumed between terms.
|
|
161
171
|
* Passed to buildNode() as rawChildren so grammars can inspect trivia.
|
|
162
172
|
*/
|
|
163
|
-
_cstRawChildren?: unknown[];
|
|
173
|
+
_cstRawChildren?: unknown[] | undefined;
|
|
164
174
|
/**
|
|
165
175
|
* Framework-internal: flat trivia log. When set, scanTrivia records each
|
|
166
|
-
* consumed trivia
|
|
176
|
+
* consumed trivia entry as two numbers [start, end] appended to this
|
|
167
177
|
* array instead of (or in addition to) rawChildren capture. Zero object
|
|
168
178
|
* allocations — just number pushes.
|
|
169
179
|
*/
|
|
170
180
|
_triviaLog?: number[];
|
|
181
|
+
/**
|
|
182
|
+
* Framework-internal: flat per-node trivia log for CST capture mode.
|
|
183
|
+
* When set alongside _cstRawChildren, each trivia entry is recorded as three
|
|
184
|
+
* numbers [start, end, insertIdx] appended here (one entry = three numbers) instead of allocating a
|
|
185
|
+
* CSTTrivia object. `insertIdx` is the _cstRawChildren.length at the moment
|
|
186
|
+
* the trivia was consumed, so consumers know where in rawChildren to insert it.
|
|
187
|
+
* Zero object allocations — replaces the CSTTrivia object path entirely.
|
|
188
|
+
*/
|
|
189
|
+
_cstTriviaLog?: number[] | undefined;
|
|
190
|
+
/** Framework-internal: lazy capture buffer for active node() parse. */
|
|
191
|
+
_cstBuf?: CstCaptureBuf | undefined;
|
|
171
192
|
};
|
|
172
193
|
/**
|
|
173
194
|
* Sentinel value returned by recover() when its inner parser fails.
|
|
@@ -185,6 +206,8 @@ export type ParserMeta = {
|
|
|
185
206
|
canMatchNewline: boolean;
|
|
186
207
|
/** Whether this parser is marked as trivia (auto-skip) */
|
|
187
208
|
isTrivia: boolean;
|
|
209
|
+
/** User-defined labels for labeled trivia arms (`label(name, parser)`). */
|
|
210
|
+
triviaKindLabels?: readonly string[];
|
|
188
211
|
/** choice(): true when all alternative first sets are pairwise disjoint */
|
|
189
212
|
disjoint?: boolean;
|
|
190
213
|
};
|
|
@@ -237,10 +260,10 @@ export type AutoNotCheck = {
|
|
|
237
260
|
* it is evaluated (cheaply, without parsing) before the arm is attempted.
|
|
238
261
|
* If the gate returns false the arm is skipped entirely.
|
|
239
262
|
*
|
|
240
|
-
* Usage: choice({ gate: s => (s as Ctx).inFn,
|
|
263
|
+
* Usage: choice({ gate: s => (s as Ctx).inFn, combinator: returnKw }, ident)
|
|
241
264
|
*/
|
|
242
265
|
export type GatedArm<T = unknown> = {
|
|
243
266
|
gate: (state: unknown) => boolean;
|
|
244
|
-
|
|
267
|
+
combinator: Combinator<T>;
|
|
245
268
|
};
|
|
246
269
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,oHAAoH;IACpH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,KAAK,CAAA;IACT,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AAMnD,MAAM,MAAM,SAAS,GACjB;IAAE,GAAG,EAAE,SAAS,CAAC;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,GAAG,EAAE,UAAU,CAAC;IAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;CAAE,GACpD;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAI,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;CAAE,GACtL;IAAE,GAAG,EAAE,MAAM,CAAC;IAAM,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,CAAA;CAAE,GACzD;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,CAAA;CAAE,GACzD;IAAE,GAAG,EAAE,UAAU,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACjD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACjF;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAM,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAC7E;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAI,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACjD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAChE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAG,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GACrH;IAAE,GAAG,EAAE,MAAM,CAAC;IAAK,KAAK,EAAE,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACrD;IAAE,GAAG,EAAE,KAAK,CAAC;IAAM,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAChD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAK,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChQ;IAAE,GAAG,EAAE,OAAO,CAAC;IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;CAAE,GAC3D;IAAE,GAAG,EAAE,SAAS,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAChE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/E;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAG,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/F;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrG;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;CACrE,CAAA;AAED,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACnC,UAAU,EAAE,OAAO,CAAA;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,uGAAuG;IACvG,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE,CAAA;IACnD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAClC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACvC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACpC,uEAAuE;IACvE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACpC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,gFAAgF;IAChF,QAAQ,EAAE,QAAQ,CAAA;IAClB,0DAA0D;IAC1D,eAAe,EAAE,OAAO,CAAA;IACxB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAA;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAErB,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,GAAG,EAAE,gBAAgB,CAAC;IAAO,UAAU,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,GAAG,EAAE,sBAAsB,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,GACxD;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,CAAA;AAEzB;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAG,GAAG,EAAE,QAAQ,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;IAClC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IACjC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAC1B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parseman",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Parser combinators that compile to optimized JavaScript — use as a library or as a build-time macro",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Matthew Dean <matthew-dean@users.noreply.github.com>",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"@types/node": "~26.0.0",
|
|
54
54
|
"@types/parsimmon": "~1.10.9",
|
|
55
55
|
"chevrotain": "~12.0.0",
|
|
56
|
+
"esbuild": "~0.27.7",
|
|
56
57
|
"jison": "~0.4.18",
|
|
57
58
|
"moo": "~0.5.3",
|
|
58
59
|
"nearley": "~2.20.1",
|
package/dist/cst/grammar.d.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import type { Combinator, Span } from '../types.ts';
|
|
2
|
-
import type { CSTNode, CSTLeaf, CSTError, CSTRawChild, NodeLike } from './types.ts';
|
|
3
|
-
import type { ParseDoc } from './incremental.ts';
|
|
4
|
-
type Capital = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
|
5
|
-
/** Keys of T whose names start with a capital letter (CST parser). */
|
|
6
|
-
export type RuleKeys<T> = {
|
|
7
|
-
[K in keyof T & string]: K extends `${Capital}${string}` ? K : never;
|
|
8
|
-
}[keyof T & string];
|
|
9
|
-
/**
|
|
10
|
-
* Maps each grammar property to its resolved Combinator type.
|
|
11
|
-
*
|
|
12
|
-
* Use as the parameter type in rule thunks — gives `g.*` the correct
|
|
13
|
-
* Combinator type instead of the raw function type:
|
|
14
|
-
*
|
|
15
|
-
* Expr = (g: Refs<this>) => choice(g.Atom, sequence(g.Expr, literal('+'), g.Atom))
|
|
16
|
-
*/
|
|
17
|
-
export type Refs<T> = {
|
|
18
|
-
[K in keyof T as K extends `_${string}` ? never : T[K] extends Combinator<any> ? K : T[K] extends (g: any) => Combinator<any> ? K : never]: T[K] extends Combinator<infer V> ? Combinator<V> : T[K] extends (g: any) => Combinator<infer V> ? Combinator<V> : never;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Base class for grammars that automatically produce a CST (or a custom AST
|
|
22
|
-
* if you override `buildNode`).
|
|
23
|
-
*
|
|
24
|
-
* Rules are declared as class properties:
|
|
25
|
-
* - Plain Combinator (no cross-references needed):
|
|
26
|
-
* digits = regex(/[0-9]+/)
|
|
27
|
-
* - Thunk (references other parser via `g`):
|
|
28
|
-
* Expr = (g: Refs<this>) => choice(g.Atom, sequence(g.Expr, literal('+')))
|
|
29
|
-
*
|
|
30
|
-
* Convention:
|
|
31
|
-
* Capital letter → CSTNode-producing rule (span + state + children)
|
|
32
|
-
* lowercase → transparent helper (terminals bubble up as CSTLeaf in the
|
|
33
|
-
* nearest enclosing capital rule)
|
|
34
|
-
*
|
|
35
|
-
* Mutual recursion works because thunks are collected first, ref() placeholders
|
|
36
|
-
* installed for each one, then all thunks are called with `g` (a map of refs).
|
|
37
|
-
* Initialization is lazy — triggered on the first call to rule().
|
|
38
|
-
*
|
|
39
|
-
* Grammar inheritance: subclass property initializers naturally override parent
|
|
40
|
-
* ones (they run last in construction order), so extending a grammar means only
|
|
41
|
-
* re-declaring the parser you want to change.
|
|
42
|
-
*
|
|
43
|
-
* class JSONCParser extends JSONParser {
|
|
44
|
-
* ws = jsoncWs // override just this one rule
|
|
45
|
-
* }
|
|
46
|
-
*/
|
|
47
|
-
export declare class Parser<N extends NodeLike = CSTNode> {
|
|
48
|
-
private _built;
|
|
49
|
-
/** Set in a subclass to enable automatic trivia skipping between sequence terms. */
|
|
50
|
-
protected _trivia?: Combinator<unknown>;
|
|
51
|
-
/**
|
|
52
|
-
* Set in a subclass to make the rule name optional in `parse()`.
|
|
53
|
-
* When defined, `parse(input)` is equivalent to `parse(defaultRule, input)`.
|
|
54
|
-
*/
|
|
55
|
-
protected _defaultRule?: RuleKeys<this>;
|
|
56
|
-
/**
|
|
57
|
-
* Set `true` in a subclass to record trivia (whitespace/comments) consumed
|
|
58
|
-
* between terms into each node's rawChildren as separate CSTTrivia tokens.
|
|
59
|
-
* Requires `_trivia` to be set. Default: trivia is skipped without recording.
|
|
60
|
-
*/
|
|
61
|
-
protected _captureTrivia?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* When set, makeParseDoc injects this array as ctx._triviaLog so each
|
|
64
|
-
* scanTrivia.commit() pushes [runStart, runEnd] pairs into it.
|
|
65
|
-
* Reset to [] before each parse() call in any subclass that uses it.
|
|
66
|
-
*/
|
|
67
|
-
protected _triviaLog?: number[];
|
|
68
|
-
/**
|
|
69
|
-
* Optional map of public entry-point aliases → actual rule names. Lets callers
|
|
70
|
-
* `parse('value', src)` when the grammar's rule is `ValueList`, removing
|
|
71
|
-
* per-adapter name-translation tables.
|
|
72
|
-
*/
|
|
73
|
-
protected _aliases?: Record<string, string>;
|
|
74
|
-
/** Resolve an alias to its target rule name (identity if not aliased). */
|
|
75
|
-
protected _resolveRule(name: string): string;
|
|
76
|
-
private _build;
|
|
77
|
-
/**
|
|
78
|
-
* Override to produce a custom AST node instead of a plain CSTNode.
|
|
79
|
-
* The returned object must satisfy NodeLike for IncrementalParser to work.
|
|
80
|
-
*
|
|
81
|
-
* `rawChildren` is `children` plus any trivia tokens (whitespace/comments)
|
|
82
|
-
* consumed between terms, in parse order. Use it to inspect trivia when the
|
|
83
|
-
* grammar is whitespace-sensitive (e.g. CSS descendant vs adjacent combinators).
|
|
84
|
-
* The default implementation ignores `rawChildren`.
|
|
85
|
-
*/
|
|
86
|
-
protected buildNode(type: string, span: Span, children: ReadonlyArray<N | CSTLeaf | CSTError>, state: unknown, _rawChildren: ReadonlyArray<CSTRawChild>): N;
|
|
87
|
-
/** Wrap an inner combinator so it produces a CSTNode on each match. */
|
|
88
|
-
private _makeNodeParser;
|
|
89
|
-
/** Reconstruct a node with a new children array (used by IncrementalParser). */
|
|
90
|
-
rebuild(node: N, newChildren: ReadonlyArray<N | CSTLeaf | CSTError>): N;
|
|
91
|
-
/**
|
|
92
|
-
* Parse input starting from a named rule, returning a ParseDoc.
|
|
93
|
-
* The doc carries the tree, any parse errors, and an edit() method
|
|
94
|
-
* for incremental re-parsing on subsequent changes.
|
|
95
|
-
*
|
|
96
|
-
* const doc = css.parse('Stylesheet', src)
|
|
97
|
-
* doc.tree // the CST root, or null on failure
|
|
98
|
-
* doc.errors // ParseFail[], empty on success
|
|
99
|
-
*
|
|
100
|
-
* // In an editor — just keep calling edit():
|
|
101
|
-
* const doc2 = doc.edit(newSrc, changeStart, changeEnd)
|
|
102
|
-
*
|
|
103
|
-
* If the grammar defines `_defaultRule`, the rule name may be omitted:
|
|
104
|
-
* const doc = css.parse(src) // uses _defaultRule
|
|
105
|
-
*/
|
|
106
|
-
parse(ruleName: RuleKeys<this>, input: string): ParseDoc<N>;
|
|
107
|
-
parse(input: string): ParseDoc<N>;
|
|
108
|
-
/**
|
|
109
|
-
* Get the compiled Combinator for a named rule.
|
|
110
|
-
* Triggers lazy initialization on first call.
|
|
111
|
-
*/
|
|
112
|
-
rule(name: RuleKeys<this>): Combinator<N>;
|
|
113
|
-
}
|
|
114
|
-
export {};
|
|
115
|
-
//# sourceMappingURL=grammar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../src/cst/grammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { Combinator, ParseFail } from '../types.ts';
|
|
2
|
-
import type { Parser } from './grammar.ts';
|
|
3
|
-
import type { NodeLike } from './types.ts';
|
|
4
|
-
/**
|
|
5
|
-
* The result of Parser.parse() — holds the current tree and supports
|
|
6
|
-
* incremental re-parsing via edit().
|
|
7
|
-
*
|
|
8
|
-
* const doc = css.parse('Stylesheet', src)
|
|
9
|
-
* doc.tree // CSTNode (or your N), null if parse failed
|
|
10
|
-
* doc.errors // ParseFail[], empty on success
|
|
11
|
-
* doc.input // the source string that produced this tree
|
|
12
|
-
*
|
|
13
|
-
* const doc2 = doc.edit(changeStart, changeEnd, newText) // "select from→to, type newText"
|
|
14
|
-
*/
|
|
15
|
-
export interface ParseDoc<N extends NodeLike = NodeLike> {
|
|
16
|
-
readonly tree: N | null;
|
|
17
|
-
readonly errors: ParseFail[];
|
|
18
|
-
readonly input: string;
|
|
19
|
-
/** Offset reached by the top-level rule. < input.length means input was left unconsumed. */
|
|
20
|
-
readonly consumedEnd: number;
|
|
21
|
-
/**
|
|
22
|
-
* Incrementally re-parse after a text change.
|
|
23
|
-
*
|
|
24
|
-
* Think of it as "select from → to, replace with replacement": both `from`
|
|
25
|
-
* and `to` are byte offsets in the OLD input. `replacement` is what fills
|
|
26
|
-
* that range in the new text.
|
|
27
|
-
*
|
|
28
|
-
* doc.edit(3, 7, 'hi') → old: "foo [XXXX] bar" new: "foo hi bar"
|
|
29
|
-
* ↑ ↑
|
|
30
|
-
* from to (both in old text)
|
|
31
|
-
*
|
|
32
|
-
* Maps directly to editor change events:
|
|
33
|
-
* VSCode / Monaco: doc.edit(change.rangeOffset, change.rangeOffset + change.rangeLength, change.text)
|
|
34
|
-
* CodeMirror 6: doc.edit(change.from, change.to, change.insert)
|
|
35
|
-
* LSP: doc.edit(startByte, endByte, change.text) // after line/col → byte offset
|
|
36
|
-
*/
|
|
37
|
-
edit(from: number, to: number, replacement: string): ParseDoc<N>;
|
|
38
|
-
}
|
|
39
|
-
export declare function makeParseDoc<N extends NodeLike>(parser: Parser<N>, ruleName: string, input: string, trivia?: Combinator<unknown>, captureTrivia?: boolean, triviaLog?: number[]): ParseDoc<N>;
|
|
40
|
-
//# sourceMappingURL=incremental.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/cst/incremental.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAM7D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACrD,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;CACjE;AAsHD,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,OAAO,EACvB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,QAAQ,CAAC,CAAC,CAAC,CAYb"}
|