effect-grammar 0.0.1

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.
@@ -0,0 +1,495 @@
1
+ import { Effect, Equal, Option, Schema, SchemaIssue, SchemaTransformation, Scope, Stream, } from "effect";
2
+ import { locateParseError, ParseError, UpstreamError } from "./error.js";
3
+ import { failHere, getPos, isEof, makeStringState, matchRegex, ParseState, seek, startsWith, } from "./state.js";
4
+ import { parseStream as parseStreamEffect, streamElements as streamElementsEffect, } from "./stream.js";
5
+ export class PrintError extends Schema.TaggedErrorClass()("PrintError", {
6
+ message: Schema.String,
7
+ }) {
8
+ }
9
+ /**
10
+ * Failure of {@link checkRoundTrip}. `stage` names which step broke:
11
+ * - `"print"` — the value could not be printed
12
+ * - `"parse"` — the printed string failed to re-parse
13
+ * - `"equal"` — re-parse succeeded but the value differed
14
+ */
15
+ export class RoundTripError extends Schema.TaggedErrorClass()("RoundTripError", {
16
+ stage: Schema.Literals(["print", "parse", "equal"]),
17
+ message: Schema.String,
18
+ }) {
19
+ }
20
+ export const literal = (value) => ({ _tag: "Literal", value });
21
+ /** Clone the pattern and drop `g`/`y` so `lastIndex` and sticky start never affect matching. */
22
+ export const regex = (re, expected) => ({
23
+ _tag: "Regex",
24
+ re: new RegExp(re.source, re.flags.replace(/[gy]/g, "")),
25
+ expected,
26
+ });
27
+ export const map = (inner, f) => ({ _tag: "Map", inner, to: f.to, from: f.from });
28
+ export const struct = (fields) => ({ _tag: "Struct", fields });
29
+ export const choice = (...options) => ({ _tag: "Choice", options });
30
+ export const many = (inner, opts) => ({ _tag: "Many", inner, atLeast: opts?.atLeast ?? 0 });
31
+ export const sepBy = (inner, sep) => ({
32
+ _tag: "SepBy",
33
+ inner,
34
+ sep,
35
+ atLeast: 0,
36
+ });
37
+ /** Like `sepBy`, but requires at least one element — the first failure propagates. */
38
+ export const sepBy1 = (inner, sep) => ({
39
+ _tag: "SepBy",
40
+ inner,
41
+ sep,
42
+ atLeast: 1,
43
+ });
44
+ export const optional = (inner) => ({
45
+ _tag: "Optional",
46
+ inner,
47
+ });
48
+ /**
49
+ * Rewind on failure: if `inner` fails after consuming input, restore the
50
+ * position so an enclosing `choice` tries its next option.
51
+ */
52
+ export const attempt = (inner) => ({ _tag: "Attempt", inner });
53
+ /**
54
+ * Print-time filter: parse runs `inner` unchanged, but printing fails with
55
+ * `PrintError` when `pred(value)` is false — so an enclosing `choice` moves
56
+ * on to its next option.
57
+ */
58
+ export const guard = (inner, pred) => ({
59
+ _tag: "Guard",
60
+ inner,
61
+ pred,
62
+ });
63
+ /**
64
+ * Name a grammar for error messages. Replaces `expected` only when `inner`
65
+ * fails without consuming input. Print is transparent; render shows
66
+ * `<expected>` when `inner` is a raw regex.
67
+ */
68
+ export const label = (expected, inner) => ({
69
+ _tag: "Label",
70
+ expected,
71
+ inner,
72
+ });
73
+ export const fromEffect = (eff, expected) => ({ _tag: "FromEffect", eff, expected });
74
+ /**
75
+ * Defer grammar construction to first use — the building block for recursive
76
+ * grammars. The thunk result is memoized on the node. `name` is what `render`
77
+ * shows at the recursion point.
78
+ */
79
+ export const lazy = (thunk, opts) => ({
80
+ _tag: "Lazy",
81
+ thunk,
82
+ name: opts?.name,
83
+ });
84
+ /** Zero-width assertion: succeeds only at end of input. Prints as "". */
85
+ export const end = { _tag: "End" };
86
+ /**
87
+ * Dependent parsing: the grammar that runs next is computed from the value
88
+ * just parsed (e.g. a length prefix deciding how many chars to read).
89
+ * Printable when `from` recovers the intermediate value from the result.
90
+ */
91
+ export const bind = (inner, f) => ({ _tag: "Bind", inner, to: f.to, from: f.from });
92
+ /** Run `inner` exactly `n` times, collecting the results. */
93
+ export const count = (inner, n) => ({
94
+ _tag: "Count",
95
+ inner,
96
+ n,
97
+ });
98
+ export const integer = map(label("integer", regex(/-?\d+/, "integer")), {
99
+ to: Number,
100
+ from: String,
101
+ });
102
+ /** Run `inner`, then skip trailing whitespace. Printing emits one canonical space. */
103
+ export const lexeme = (inner) => map(struct({ value: inner, ws: label("whitespace", regex(/\s*/, "whitespace")) }), {
104
+ to: ({ value }) => value,
105
+ from: (value) => ({ value, ws: " " }),
106
+ });
107
+ /** A literal that skips trailing whitespace. */
108
+ export const symbol = (s) => lexeme(literal(s));
109
+ /**
110
+ * Run `open`, `inner`, `close` in sequence, keeping only `inner`'s value.
111
+ * Print supplies `undefined` for open/close — they must be value-ignoring
112
+ * printers (`literal`, `symbol`, `end`, or a transparent wrapper around those).
113
+ */
114
+ export const between = (open, close, inner) => map(struct({ open, inner, close }), {
115
+ to: ({ inner }) => inner,
116
+ from: (value) => ({ open: undefined, inner: value, close: undefined }),
117
+ });
118
+ /** Quote a string the way JSON would, for expected-token messages. */
119
+ const quote = Schema.encodeSync(Schema.fromJsonString(Schema.String));
120
+ const interpret = (g) => Effect.gen(function* () {
121
+ switch (g._tag) {
122
+ case "Literal": {
123
+ const pos = yield* getPos;
124
+ if (!(yield* startsWith(g.value)))
125
+ return yield* failHere(quote(g.value));
126
+ yield* seek(pos + g.value.length);
127
+ return g.value;
128
+ }
129
+ case "Regex": {
130
+ const pos = yield* getPos;
131
+ const m = yield* matchRegex(g.re);
132
+ if (Option.isNone(m))
133
+ return yield* failHere(g.expected);
134
+ yield* seek(pos + m.value.length);
135
+ return m.value;
136
+ }
137
+ case "Map": {
138
+ return g.to(yield* interpret(g.inner));
139
+ }
140
+ case "Struct": {
141
+ const out = {};
142
+ for (const [key, field] of Object.entries(g.fields)) {
143
+ out[key] = yield* interpret(field);
144
+ }
145
+ return out;
146
+ }
147
+ case "Choice": {
148
+ let furthest;
149
+ for (const option of g.options) {
150
+ const mark = yield* getPos;
151
+ const r = yield* Effect.result(interpret(option));
152
+ if (r._tag === "Success")
153
+ return r.success;
154
+ if (!Schema.is(ParseError)(r.failure))
155
+ return yield* r.failure;
156
+ if ((yield* getPos) > mark)
157
+ return yield* r.failure;
158
+ yield* seek(mark);
159
+ if (furthest === undefined || r.failure.pos >= furthest.pos)
160
+ furthest = r.failure;
161
+ }
162
+ return yield* (furthest ?? new ParseError({ pos: yield* getPos, expected: "choice", found: undefined }));
163
+ }
164
+ case "Many": {
165
+ const out = [];
166
+ for (let i = 0; i < g.atLeast; i++)
167
+ out.push(yield* interpret(g.inner));
168
+ while (true) {
169
+ const mark = yield* getPos;
170
+ const r = yield* Effect.result(interpret(g.inner));
171
+ if (r._tag === "Failure") {
172
+ if (!Schema.is(ParseError)(r.failure))
173
+ return yield* r.failure;
174
+ if ((yield* getPos) > mark)
175
+ return yield* r.failure;
176
+ yield* seek(mark);
177
+ return out;
178
+ }
179
+ if ((yield* getPos) === mark) {
180
+ return yield* Effect.die(new Error("Grammar.many: inner parser succeeded without consuming input"));
181
+ }
182
+ out.push(r.success);
183
+ }
184
+ }
185
+ case "SepBy": {
186
+ const start = yield* getPos;
187
+ const first = yield* Effect.result(interpret(g.inner));
188
+ if (first._tag === "Failure") {
189
+ if (!Schema.is(ParseError)(first.failure))
190
+ return yield* first.failure;
191
+ if ((yield* getPos) > start || g.atLeast >= 1)
192
+ return yield* first.failure;
193
+ return [];
194
+ }
195
+ const out = [first.success];
196
+ while (true) {
197
+ const mark = yield* getPos;
198
+ const r = yield* Effect.result(interpret(g.sep).pipe(Effect.andThen(interpret(g.inner))));
199
+ if (r._tag === "Failure") {
200
+ if (!Schema.is(ParseError)(r.failure))
201
+ return yield* r.failure;
202
+ if ((yield* getPos) > mark)
203
+ return yield* r.failure;
204
+ yield* seek(mark);
205
+ return out;
206
+ }
207
+ if ((yield* getPos) === mark) {
208
+ return yield* Effect.die(new Error("Grammar.sepBy: separator+element succeeded without consuming input"));
209
+ }
210
+ out.push(r.success);
211
+ }
212
+ }
213
+ case "Optional": {
214
+ const mark = yield* getPos;
215
+ const r = yield* Effect.result(interpret(g.inner));
216
+ if (r._tag === "Failure") {
217
+ if (!Schema.is(ParseError)(r.failure))
218
+ return yield* r.failure;
219
+ if ((yield* getPos) > mark)
220
+ return yield* r.failure;
221
+ yield* seek(mark);
222
+ return undefined;
223
+ }
224
+ return r.success;
225
+ }
226
+ case "Attempt": {
227
+ const mark = yield* getPos;
228
+ const r = yield* Effect.result(interpret(g.inner));
229
+ if (r._tag === "Failure") {
230
+ if (!Schema.is(ParseError)(r.failure))
231
+ return yield* r.failure;
232
+ yield* seek(mark);
233
+ return yield* r.failure;
234
+ }
235
+ return r.success;
236
+ }
237
+ case "FromEffect": {
238
+ return yield* g.eff;
239
+ }
240
+ case "Lazy": {
241
+ return yield* interpret((g.resolved ??= g.thunk()));
242
+ }
243
+ case "End": {
244
+ if (!(yield* isEof))
245
+ return yield* failHere("end of input");
246
+ return undefined;
247
+ }
248
+ case "Bind": {
249
+ const a = yield* interpret(g.inner);
250
+ return yield* interpret(g.to(a));
251
+ }
252
+ case "Count": {
253
+ const out = [];
254
+ for (let i = 0; i < g.n; i++)
255
+ out.push(yield* interpret(g.inner));
256
+ return out;
257
+ }
258
+ case "Guard": {
259
+ return yield* interpret(g.inner);
260
+ }
261
+ case "Label": {
262
+ const mark = yield* getPos;
263
+ const r = yield* Effect.result(interpret(g.inner));
264
+ if (r._tag === "Success")
265
+ return r.success;
266
+ if (!Schema.is(ParseError)(r.failure))
267
+ return yield* r.failure;
268
+ if ((yield* getPos) === mark) {
269
+ return yield* new ParseError({
270
+ pos: r.failure.pos,
271
+ expected: g.expected,
272
+ found: r.failure.found,
273
+ });
274
+ }
275
+ return yield* r.failure;
276
+ }
277
+ }
278
+ });
279
+ const printNode = (g, value) => {
280
+ switch (g._tag) {
281
+ case "Literal":
282
+ return Effect.succeed(g.value);
283
+ case "Regex": {
284
+ const flags = g.re.flags.replace(/[gy]/g, "");
285
+ const anchored = new RegExp(`^(?:${g.re.source})$`, flags);
286
+ return anchored.test(value)
287
+ ? Effect.succeed(value)
288
+ : Effect.fail(new PrintError({
289
+ message: `cannot print ${JSON.stringify(value)}: does not match ${g.expected}`,
290
+ }));
291
+ }
292
+ case "Map":
293
+ return g.from === undefined
294
+ ? Effect.fail(new PrintError({
295
+ message: `cannot print: this grammar is parse-only (map is missing \`from\`)`,
296
+ }))
297
+ : printNode(g.inner, g.from(value));
298
+ case "Struct":
299
+ return Effect.forEach(Object.entries(g.fields), ([key, field]) => printNode(field, value[key])).pipe(Effect.map((parts) => parts.join("")));
300
+ case "Choice": {
301
+ const tryOptions = (options) => {
302
+ const [head, ...rest] = options;
303
+ return head === undefined
304
+ ? Effect.fail(new PrintError({ message: `cannot print: no choice option accepts the value` }))
305
+ : Effect.result(printNode(head, value)).pipe(Effect.flatMap((r) => r._tag === "Success" ? Effect.succeed(r.success) : tryOptions(rest)));
306
+ };
307
+ return tryOptions(g.options);
308
+ }
309
+ case "Many": {
310
+ const items = value;
311
+ return items.length < g.atLeast
312
+ ? Effect.fail(new PrintError({
313
+ message: `cannot print: expected at least ${g.atLeast} items, got ${items.length}`,
314
+ }))
315
+ : Effect.forEach(items, (v) => printNode(g.inner, v)).pipe(Effect.map((parts) => parts.join("")));
316
+ }
317
+ case "SepBy": {
318
+ const items = value;
319
+ if (items.length < g.atLeast) {
320
+ return Effect.fail(new PrintError({
321
+ message: `cannot print: expected at least ${g.atLeast} items, got ${items.length}`,
322
+ }));
323
+ }
324
+ // Separator is printed with `undefined` — same contract as `between` delimiters.
325
+ return Effect.forEach(items, (v) => printNode(g.inner, v)).pipe(Effect.flatMap((printed) => printed.length <= 1
326
+ ? Effect.succeed(printed.join(""))
327
+ : Effect.map(Effect.forEach(printed.slice(1), (item) => Effect.map(printNode(g.sep, undefined), (s) => s + item)), (rest) => printed[0] + rest.join(""))));
328
+ }
329
+ case "Optional":
330
+ return value === undefined ? Effect.succeed("") : printNode(g.inner, value);
331
+ case "Attempt":
332
+ return printNode(g.inner, value);
333
+ case "FromEffect":
334
+ return Effect.fail(new PrintError({
335
+ message: `cannot print: grammar contains an effect-only fragment (${g.expected})`,
336
+ }));
337
+ case "Lazy":
338
+ return Effect.suspend(() => printNode((g.resolved ??= g.thunk()), value));
339
+ case "End":
340
+ return Effect.succeed("");
341
+ case "Bind": {
342
+ if (g.from === undefined) {
343
+ return Effect.fail(new PrintError({
344
+ message: `cannot print: this grammar is parse-only (bind is missing \`from\`)`,
345
+ }));
346
+ }
347
+ const a = g.from(value);
348
+ return Effect.zipWith(printNode(g.inner, a), printNode(g.to(a), value), (l, r) => l + r);
349
+ }
350
+ case "Count":
351
+ return value.length !== g.n
352
+ ? Effect.fail(new PrintError({
353
+ message: `cannot print: expected exactly ${g.n} items, got ${value.length}`,
354
+ }))
355
+ : Effect.forEach(value, (v) => printNode(g.inner, v)).pipe(Effect.map((parts) => parts.join("")));
356
+ case "Guard":
357
+ return g.pred(value)
358
+ ? printNode(g.inner, value)
359
+ : Effect.fail(new PrintError({ message: `cannot print: value rejected by guard` }));
360
+ case "Label":
361
+ return printNode(g.inner, value);
362
+ }
363
+ };
364
+ export const parse = (input, grammar) => Effect.gen(function* () {
365
+ const state = yield* makeStringState(input);
366
+ return yield* Effect.gen(function* () {
367
+ const a = yield* interpret(grammar);
368
+ if (!(yield* isEof))
369
+ return yield* failHere("end of input");
370
+ return a;
371
+ }).pipe(Effect.provideService(ParseState, state),
372
+ // String input has no upstream; this can never fire.
373
+ Effect.catchIf(Schema.is(UpstreamError), (e) => Effect.die(e)), Effect.mapError((e) => locateParseError(input, e)));
374
+ });
375
+ /** Like `parse`, but leaves the cursor wherever the grammar stopped — trailing input is allowed. */
376
+ export const parsePrefix = (input, grammar) => Effect.gen(function* () {
377
+ const state = yield* makeStringState(input);
378
+ return yield* interpret(grammar).pipe(Effect.provideService(ParseState, state),
379
+ // String input has no upstream; this can never fire.
380
+ Effect.catchIf(Schema.is(UpstreamError), (e) => Effect.die(e)), Effect.mapError((e) => locateParseError(input, e)));
381
+ });
382
+ /** Run a grammar once over a stream of chunks. See `parseStream` in `stream.ts`. */
383
+ export const parseStream = (input, grammar) => parseStreamEffect(input, Effect.gen(function* () {
384
+ const a = yield* interpret(grammar);
385
+ if (!(yield* isEof))
386
+ return yield* failHere("end of input");
387
+ return a;
388
+ }));
389
+ /** Parse a stream of chunks into a stream of values, one per grammar run. */
390
+ export const streamElements = (input, grammar) => streamElementsEffect(input, interpret(grammar));
391
+ export const print = (grammar, value) => printNode(grammar, value);
392
+ /**
393
+ * Law: `parse(print(value))` equals `value` (structurally).
394
+ *
395
+ * Prints, re-parses with strict EOF, then compares with `Equal.equals`.
396
+ * Fails with {@link RoundTripError} naming the stage that broke.
397
+ */
398
+ export const checkRoundTrip = (grammar, value) => Effect.gen(function* () {
399
+ const printed = yield* print(grammar, value).pipe(Effect.mapError((e) => new RoundTripError({
400
+ stage: "print",
401
+ message: `checkRoundTrip: print failed: ${e.message}`,
402
+ })));
403
+ const reparsed = yield* parse(printed, grammar).pipe(Effect.mapError((e) => new RoundTripError({
404
+ stage: "parse",
405
+ message: `checkRoundTrip: re-parse failed: ${e.message}` +
406
+ `\n printed: ${quote(printed)}` +
407
+ `\n original: ${preview(value)}`,
408
+ })));
409
+ if (!Equal.equals(reparsed, value)) {
410
+ return yield* new RoundTripError({
411
+ stage: "equal",
412
+ message: `checkRoundTrip: value mismatch` +
413
+ `\n original: ${preview(value)}` +
414
+ `\n reparsed: ${preview(reparsed)}` +
415
+ `\n printed: ${quote(printed)}`,
416
+ });
417
+ }
418
+ });
419
+ /** Best-effort value preview for error messages (not a full pretty-printer). */
420
+ const preview = (value) => {
421
+ try {
422
+ return Schema.encodeSync(Schema.UnknownFromJsonString)(value);
423
+ }
424
+ catch {
425
+ return String(value);
426
+ }
427
+ };
428
+ export const render = (g) => renderInner(g, new Set());
429
+ const renderRepetition = (atLeast) => {
430
+ const minimum = Math.ceil(atLeast);
431
+ if (minimum <= 0)
432
+ return "*";
433
+ if (minimum === 1)
434
+ return "+";
435
+ return `{${minimum},}`;
436
+ };
437
+ const renderInner = (g, inProgress) => {
438
+ switch (g._tag) {
439
+ case "Literal":
440
+ return JSON.stringify(g.value);
441
+ case "Regex":
442
+ return `/${g.re.source}/${g.re.flags}`;
443
+ case "Map":
444
+ return renderInner(g.inner, inProgress);
445
+ case "Struct":
446
+ return Object.entries(g.fields)
447
+ .map(([key, field]) => `${key}: ${renderInner(field, inProgress)}`)
448
+ .join(" ");
449
+ case "Choice":
450
+ return g.options.map((option) => renderInner(option, inProgress)).join(" | ");
451
+ case "Many":
452
+ return `(${renderInner(g.inner, inProgress)})${renderRepetition(g.atLeast)}`;
453
+ case "SepBy": {
454
+ const inner = renderInner(g.inner, inProgress);
455
+ const sep = renderInner(g.sep, inProgress);
456
+ const sequence = `${inner} (${sep} ${inner})${renderRepetition(Math.max(0, g.atLeast - 1))}`;
457
+ return g.atLeast <= 0 ? `(${sequence})?` : sequence;
458
+ }
459
+ case "Optional":
460
+ return `(${renderInner(g.inner, inProgress)})?`;
461
+ case "Attempt":
462
+ return `attempt(${renderInner(g.inner, inProgress)})`;
463
+ case "FromEffect":
464
+ return `<${g.expected}>`;
465
+ case "Lazy": {
466
+ if (inProgress.has(g))
467
+ return g.name ?? "…";
468
+ inProgress.add(g);
469
+ const out = renderInner((g.resolved ??= g.thunk()), inProgress);
470
+ inProgress.delete(g);
471
+ return out;
472
+ }
473
+ case "End":
474
+ return "<end>";
475
+ case "Bind":
476
+ return `${renderInner(g.inner, inProgress)} >>= <bind>`;
477
+ case "Count":
478
+ return `(${renderInner(g.inner, inProgress)}){${g.n}}`;
479
+ case "Guard":
480
+ return renderInner(g.inner, inProgress);
481
+ case "Label":
482
+ return g.inner._tag === "Regex" ? `<${g.expected}>` : renderInner(g.inner, inProgress);
483
+ }
484
+ };
485
+ const parseIssue = (input) => (e) => new SchemaIssue.InvalidValue(Option.some(input), {
486
+ message: locateParseError(input, e).message,
487
+ });
488
+ export const toSchema = (grammar, target, options) => Schema.String.pipe(Schema.decodeTo(target, SchemaTransformation.transformOrFail({
489
+ decode: (s) => parse(s, grammar).pipe(Effect.mapError(parseIssue(s))),
490
+ encode: (a) => print(grammar, a).pipe(Effect.mapError((e) => new SchemaIssue.InvalidValue(Option.some(a), { message: e.message }))),
491
+ })), Schema.annotate({
492
+ ...(options?.identifier === undefined ? {} : { identifier: options.identifier }),
493
+ description: render(grammar),
494
+ }));
495
+ //# sourceMappingURL=grammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Primary entry: the bidirectional Grammar layer.
3
+ * Parse-only Effect combinators live at `effect-grammar/parser`
4
+ * (avoids a second top-level `parse` with a different return type).
5
+ */
6
+ export * as Grammar from "./grammar.ts";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Primary entry: the bidirectional Grammar layer.
3
+ * Parse-only Effect combinators live at `effect-grammar/parser`
4
+ * (avoids a second top-level `parse` with a different return type).
5
+ */
6
+ export * as Grammar from "./grammar.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from "./error.ts";
2
+ export * from "./state.ts";
3
+ export * from "./combinators.ts";
4
+ export * from "./run.ts";
5
+ export * from "./stream.ts";
6
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
package/dist/parser.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./error.js";
2
+ export * from "./state.js";
3
+ export * from "./combinators.js";
4
+ export * from "./run.js";
5
+ export * from "./stream.js";
6
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { Effect } from "effect";
2
+ import { ParseError, UpstreamError } from "./error.ts";
3
+ import { ParseState } from "./state.ts";
4
+ /** Run a parse-only Effect over a whole string. Attaches line/column on `ParseError`. */
5
+ export declare const parse: <A, E>(input: string, p: Effect.Effect<A, E, ParseState>) => Effect.Effect<import("effect/Result").Result<A, ParseError | Exclude<E, import("effect/Types").NoInfer<E> & UpstreamError>>, never, never>;
6
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAoB,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAmB,UAAU,EAAE,MAAM,YAAY,CAAA;AAExD,yFAAyF;AACzF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,+IASrD,CAAA"}
package/dist/run.js ADDED
@@ -0,0 +1,11 @@
1
+ import { Effect, Schema } from "effect";
2
+ import { locateParseError, ParseError, UpstreamError } from "./error.js";
3
+ import { makeStringState, ParseState } from "./state.js";
4
+ /** Run a parse-only Effect over a whole string. Attaches line/column on `ParseError`. */
5
+ export const parse = (input, p) => Effect.gen(function* () {
6
+ const state = yield* makeStringState(input);
7
+ return yield* p.pipe(Effect.provideService(ParseState, state),
8
+ // String input has no upstream; this can never fire.
9
+ Effect.catchIf(Schema.is(UpstreamError), (e) => Effect.die(e)), Effect.mapError((e) => (Schema.is(ParseError)(e) ? locateParseError(input, e) : e)));
10
+ }).pipe(Effect.result);
11
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExD,yFAAyF;AACzF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAO,KAAa,EAAE,CAAkC,EAAE,EAAE,CAC/E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;IACxC,qDAAqD;IACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpF,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA"}