effect-grammar 0.3.0 → 0.5.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 +168 -229
- package/dist/binary.d.ts +64 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +246 -0
- package/dist/binary.js.map +1 -0
- package/dist/codec.d.ts +17 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +14 -0
- package/dist/codec.js.map +1 -0
- package/dist/combinators.d.ts +112 -6
- package/dist/combinators.d.ts.map +1 -1
- package/dist/combinators.js +218 -28
- package/dist/combinators.js.map +1 -1
- package/dist/compile.d.ts +36 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +228 -0
- package/dist/compile.js.map +1 -0
- package/dist/core.d.ts +34 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +51 -1
- package/dist/core.js.map +1 -1
- package/dist/env.d.ts +5 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +20 -1
- package/dist/env.js.map +1 -1
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +40 -4
- package/dist/errors.js.map +1 -1
- package/dist/gen.d.ts.map +1 -1
- package/dist/gen.js +5 -7
- package/dist/gen.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts +10 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +81 -19
- package/dist/parse.js.map +1 -1
- package/dist/pattern.d.ts +2 -1
- package/dist/pattern.d.ts.map +1 -1
- package/dist/pattern.js +46 -2
- package/dist/pattern.js.map +1 -1
- package/dist/print.d.ts +8 -0
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +136 -18
- package/dist/print.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +33 -6
- package/dist/render.js.map +1 -1
- package/dist/schema.d.ts +8 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -13
- package/dist/schema.js.map +1 -1
- package/dist/testing.d.ts +18 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +72 -0
- package/dist/testing.js.map +1 -0
- package/package.json +9 -3
- package/dist/grammar.d.ts +0 -8
- package/dist/grammar.d.ts.map +0 -1
- package/dist/grammar.js +0 -8
- package/dist/grammar.js.map +0 -1
- package/dist/recovery.d.ts +0 -10
- package/dist/recovery.d.ts.map +0 -1
- package/dist/recovery.js +0 -296
- package/dist/recovery.js.map +0 -1
package/dist/combinators.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import { Equal, Function as F, Predicate, Result, Schema } from "effect";
|
|
2
|
-
import { isGrammar, isSilent, make, silent, } from "./core.js";
|
|
2
|
+
import { isGrammar, isSilent, make, nodeOf, silent, } from "./core.js";
|
|
3
3
|
import { isCount } from "./env.js";
|
|
4
4
|
import { exceptionMessage, preview } from "./errors.js";
|
|
5
|
-
import { assertInScope } from "./gen.js";
|
|
5
|
+
import { assertInScope, gen } from "./gen.js";
|
|
6
|
+
import { describe } from "./render.js";
|
|
6
7
|
export { gen, get, seq } from "./gen.js";
|
|
7
8
|
export const literal = (value) => silent({ _tag: "Literal", value });
|
|
8
9
|
export const empty = literal("");
|
|
10
|
+
/**
|
|
11
|
+
* Match at the parser's current cursor using JavaScript `RegExp` semantics.
|
|
12
|
+
* Parsing uses a fresh sticky matcher against the original full input; printing
|
|
13
|
+
* requires the supplied string to match in full. `g`, `y`, and the caller's
|
|
14
|
+
* `lastIndex` are ignored, and the caller's expression is never mutated.
|
|
15
|
+
*/
|
|
9
16
|
export const regex = (expression, name) => {
|
|
10
17
|
const flags = expression.flags.replace(/[gy]/g, "");
|
|
11
|
-
return make({ _tag: "Regex",
|
|
18
|
+
return make({ _tag: "Regex", source: expression.source, flags, name });
|
|
12
19
|
};
|
|
13
20
|
const toSilent = (value) => Predicate.isString(value) ? literal(value) : value;
|
|
14
21
|
const preserveSilence = (inner, node) => {
|
|
@@ -31,7 +38,6 @@ export function between(open, innerOrClose, close) {
|
|
|
31
38
|
close: toSilent(close),
|
|
32
39
|
});
|
|
33
40
|
}
|
|
34
|
-
export const wrap = between;
|
|
35
41
|
export function prefix(open, inner) {
|
|
36
42
|
return inner === undefined
|
|
37
43
|
? (value) => between(open, value, empty)
|
|
@@ -45,7 +51,19 @@ export function suffix(innerOrClose, close) {
|
|
|
45
51
|
// SAFETY: the two-argument overload requires a Grammar as its first argument.
|
|
46
52
|
return between(empty, innerOrClose, close);
|
|
47
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Ordered alternatives. Parsing tries each branch in order and keeps the
|
|
56
|
+
* first that matches. Printing keeps the first branch whose printer accepts
|
|
57
|
+
* the value; use `checkedChoice` to keep the first branch whose text also
|
|
58
|
+
* parses back.
|
|
59
|
+
*/
|
|
48
60
|
export const choice = (...options) => make({ _tag: "Choice", options });
|
|
61
|
+
/**
|
|
62
|
+
* {@link choice} whose printer selects the first branch that reads back to an
|
|
63
|
+
* equal value. Each checked choice reparses its candidate output; nesting can
|
|
64
|
+
* multiply that work, so keep it off hot paths.
|
|
65
|
+
*/
|
|
66
|
+
export const checkedChoice = (...options) => make({ _tag: "Choice", options, checked: true });
|
|
49
67
|
export function optional(inner) {
|
|
50
68
|
if (inner === undefined)
|
|
51
69
|
return (value) => optional(value);
|
|
@@ -63,7 +81,9 @@ const bounds = (name, options) => {
|
|
|
63
81
|
};
|
|
64
82
|
const dataFirst = (args) => isGrammar(args[0]);
|
|
65
83
|
const repeatNode = (name, inner, separator, options) => make({ _tag: "Many", inner, sep: separator, ...bounds(name, options) });
|
|
84
|
+
/** Repeat an item within bounds. Each successful parse must consume input. */
|
|
66
85
|
export const many = F.dual(dataFirst, (inner, options) => repeatNode("many", inner, empty, options));
|
|
86
|
+
/** Repeat an item with a silent separator. Each successful item parse must consume input. */
|
|
67
87
|
export const sepBy = F.dual(dataFirst, (inner, separator, options) => repeatNode("sepBy", inner, toSilent(separator), options));
|
|
68
88
|
export const match = (scrutinee, cases) => make({
|
|
69
89
|
_tag: "Match",
|
|
@@ -71,13 +91,26 @@ export const match = (scrutinee, cases) => make({
|
|
|
71
91
|
// SAFETY: Object.keys returns only keys from the closed Cases record.
|
|
72
92
|
cases: Object.keys(cases).map((key) => ({ key, grammar: cases[key] })),
|
|
73
93
|
});
|
|
94
|
+
const uniqueCases = (entries) => {
|
|
95
|
+
assertUniqueKeys(entries.map(([key]) => key), "matchValue");
|
|
96
|
+
return entries.map(([key, grammar]) => ({ key, grammar }));
|
|
97
|
+
};
|
|
74
98
|
export const matchValue = (scrutinee, entries) => make({
|
|
75
99
|
_tag: "Match",
|
|
76
100
|
scrutinee: assertInScope(scrutinee, "matchValue"),
|
|
77
|
-
cases: entries
|
|
101
|
+
cases: uniqueCases(entries),
|
|
78
102
|
});
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
const countExpr = (count, where) => {
|
|
104
|
+
if (!Predicate.isNumber(count))
|
|
105
|
+
return assertInScope(count, where);
|
|
106
|
+
if (!isCount(count))
|
|
107
|
+
throw new RangeError(`${where}: count must be a non-negative safe integer`);
|
|
108
|
+
return { _tag: "Count", value: count };
|
|
109
|
+
};
|
|
110
|
+
export const take = (count) => make({ _tag: "Take", count: countExpr(count, "take"), unit: "char" });
|
|
111
|
+
export const takeBytes = (count, name) => make({ _tag: "Take", count: countExpr(count, "bytes"), unit: "byte", name });
|
|
112
|
+
/** Repeat an item a constant or bound number of times. Each successful parse must consume input. */
|
|
113
|
+
export const repeat = F.dual(dataFirst, (inner, count) => make({ _tag: "RepeatExact", count: countExpr(count, "repeat"), inner }));
|
|
81
114
|
const attempt = (decode) => (a) => {
|
|
82
115
|
try {
|
|
83
116
|
return Result.succeed(decode(a));
|
|
@@ -86,36 +119,81 @@ const attempt = (decode) => (a) => {
|
|
|
86
119
|
return Result.fail({ message: exceptionMessage(error) });
|
|
87
120
|
}
|
|
88
121
|
};
|
|
89
|
-
|
|
122
|
+
const plainTransform = (inner, options, fidelity, total) => make({
|
|
90
123
|
_tag: "Transform",
|
|
91
124
|
inner,
|
|
92
125
|
decode: attempt(options.decode),
|
|
93
126
|
encode: attempt(options.encode),
|
|
94
127
|
is: options.is,
|
|
95
128
|
name: options.name,
|
|
96
|
-
|
|
97
|
-
|
|
129
|
+
fidelity,
|
|
130
|
+
total,
|
|
131
|
+
});
|
|
132
|
+
const resultTransform = (inner, options, fidelity) => make({ _tag: "Transform", inner, ...options, fidelity });
|
|
133
|
+
/**
|
|
134
|
+
* Map a grammar's value with a pair of functions. No law is claimed: the
|
|
135
|
+
* two directions need not be inverse, so a value may print as text that
|
|
136
|
+
* parses back to something else. Use `iso` when you mean to claim inverses.
|
|
137
|
+
*/
|
|
138
|
+
export const transform = F.dual(2, (inner, options) => plainTransform(inner, options, "unchecked"));
|
|
139
|
+
/** {@link transform} with directions that return a `Result`. No law is claimed. */
|
|
140
|
+
export const transformOrFail = F.dual(2, (inner, options) => resultTransform(inner, options, "unchecked"));
|
|
141
|
+
/**
|
|
142
|
+
* Like {@link transform}, but the author claims the two directions are
|
|
143
|
+
* inverse. The claim is recorded, not proved; `Grammar.auditFidelity` reports
|
|
144
|
+
* only the transforms that make no such claim.
|
|
145
|
+
*/
|
|
146
|
+
export const iso = F.dual(2, (inner, options) => plainTransform(inner, options, "claimed-iso"));
|
|
147
|
+
/** An {@link iso} whose two directions may each fail; they must agree where both succeed. */
|
|
148
|
+
export const partialIso = F.dual(2, (inner, options) => resultTransform(inner, options, "partial"));
|
|
149
|
+
export const filter = F.dual(3, (inner, predicate, name) => withKeys(iso(inner, { decode: F.identity, encode: F.identity, is: predicate, name }), keysOf(inner)));
|
|
98
150
|
export const decodeTo = (schema) => (options) => (inner) => {
|
|
99
151
|
let guard;
|
|
100
|
-
return
|
|
152
|
+
return iso(inner, {
|
|
101
153
|
...options,
|
|
102
154
|
is: options.is ?? ((value) => (guard ??= Schema.is(schema))(value)),
|
|
103
155
|
});
|
|
104
156
|
};
|
|
105
|
-
export const as = F.dual(2, (inner, value) =>
|
|
157
|
+
export const as = F.dual(2, (inner, value) => plainTransform(inner, {
|
|
106
158
|
decode: () => value,
|
|
107
159
|
encode: () => undefined,
|
|
108
160
|
is: (input) => Equal.equals(input, value),
|
|
109
161
|
name: preview(value),
|
|
110
|
-
}));
|
|
162
|
+
}, "claimed-iso", true));
|
|
163
|
+
/**
|
|
164
|
+
* String alternatives whose value is the matched string. Longer strings are
|
|
165
|
+
* tried first whatever order they are listed in, so a string is never shadowed
|
|
166
|
+
* by one of its own prefixes; strings of equal length keep their listed order.
|
|
167
|
+
*/
|
|
168
|
+
export const literals = (...values) => {
|
|
169
|
+
if (values.length === 0)
|
|
170
|
+
throw new RangeError("literals: at least one value is required");
|
|
171
|
+
const longestFirst = values.toSorted((left, right) => right.length - left.length);
|
|
172
|
+
return make({ _tag: "Choice", options: longestFirst.map((value) => as(literal(value), value)) });
|
|
173
|
+
};
|
|
111
174
|
export const flag = (value) => choice(as(toSilent(value), true), as(empty, false));
|
|
112
175
|
export const skip = F.dual(2, (inner, printAs) => silent({ _tag: "Skip", inner, printAs, show: true }));
|
|
113
176
|
export const label = F.dual(2, (inner, name) => make({ _tag: "Label", inner, name }));
|
|
177
|
+
/**
|
|
178
|
+
* Defer a grammar for recursive definitions. The thunk runs on first resolution
|
|
179
|
+
* and its result is cached. Parsing rejects recursion at the same input position;
|
|
180
|
+
* printing rejects recursion that reaches the same suspension without consuming
|
|
181
|
+
* a value, so recursive definitions must be productive.
|
|
182
|
+
*/
|
|
114
183
|
export const suspend = (thunk, name) => make({ _tag: "Suspend", thunk, name });
|
|
115
|
-
|
|
116
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Replace an absent (`undefined`) inner value when parsing, and omit a value
|
|
186
|
+
* equal to the default when printing. Parsing leaves every other value,
|
|
187
|
+
* including `null`, unchanged.
|
|
188
|
+
*/
|
|
189
|
+
export const defaulted = F.dual(dataFirst, (inner, value) => iso(inner, {
|
|
190
|
+
decode: (input) => (input === undefined ? value : input),
|
|
117
191
|
encode: (input) => (Equal.equals(input, value) ? undefined : input),
|
|
118
192
|
}));
|
|
193
|
+
/**
|
|
194
|
+
* Sequence fields and return an object. Printing requires exactly these own
|
|
195
|
+
* keys: missing, extra, and symbol keys are rejected.
|
|
196
|
+
*/
|
|
119
197
|
export const struct = (fields) => {
|
|
120
198
|
const scope = { _tag: "ScopeId" };
|
|
121
199
|
const entries = Object.entries(fields);
|
|
@@ -130,6 +208,54 @@ export const struct = (fields) => {
|
|
|
130
208
|
},
|
|
131
209
|
});
|
|
132
210
|
};
|
|
211
|
+
const keysOf = (grammar) => {
|
|
212
|
+
const node = nodeOf(grammar);
|
|
213
|
+
switch (node._tag) {
|
|
214
|
+
case "Gen":
|
|
215
|
+
return node.result._tag === "Object" ? node.result.fields.map(([key]) => key) : undefined;
|
|
216
|
+
case "Transform":
|
|
217
|
+
return node.keys;
|
|
218
|
+
case "Merge":
|
|
219
|
+
return node.parts.flatMap((part) => part.keys);
|
|
220
|
+
case "Wrap":
|
|
221
|
+
case "Label":
|
|
222
|
+
return keysOf(node.inner);
|
|
223
|
+
default:
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
export const withKeys = (grammar, keys) => {
|
|
228
|
+
const node = nodeOf(grammar);
|
|
229
|
+
return keys === undefined || node._tag !== "Transform" ? grammar : make({ ...node, keys });
|
|
230
|
+
};
|
|
231
|
+
export const merge = (...grammars) => {
|
|
232
|
+
const parts = grammars.map((grammar, index) => {
|
|
233
|
+
const keys = keysOf(grammar);
|
|
234
|
+
if (keys === undefined) {
|
|
235
|
+
throw new TypeError(`merge: part ${index + 1} (${describe(grammar)}) has no known fields; pass a struct, a gen that returns an object, another merge, or Binary.bits`);
|
|
236
|
+
}
|
|
237
|
+
return { grammar, keys };
|
|
238
|
+
});
|
|
239
|
+
assertUniqueKeys(parts.flatMap((part) => part.keys), "merge");
|
|
240
|
+
return make({ _tag: "Merge", parts });
|
|
241
|
+
};
|
|
242
|
+
export const prefixedBy = (length, take) => gen(function* () {
|
|
243
|
+
const size = yield* length;
|
|
244
|
+
const body = yield* take(size);
|
|
245
|
+
return { size, body };
|
|
246
|
+
}).pipe(iso({
|
|
247
|
+
decode: ({ body }) => body,
|
|
248
|
+
encode: (body) => ({ size: body.length, body }),
|
|
249
|
+
}));
|
|
250
|
+
export const lengthPrefixed = (length) => prefixedBy(length, take);
|
|
251
|
+
export const countPrefixed = F.dual(2, (item, count) => gen(function* () {
|
|
252
|
+
const size = yield* count;
|
|
253
|
+
const items = yield* repeat(item, size);
|
|
254
|
+
return { size, items };
|
|
255
|
+
}).pipe(iso({
|
|
256
|
+
decode: ({ items }) => items,
|
|
257
|
+
encode: (items) => ({ size: items.length, items }),
|
|
258
|
+
})));
|
|
133
259
|
export const tuple = (...elements) => {
|
|
134
260
|
const scope = { _tag: "ScopeId" };
|
|
135
261
|
return make({
|
|
@@ -143,22 +269,86 @@ export const tuple = (...elements) => {
|
|
|
143
269
|
},
|
|
144
270
|
});
|
|
145
271
|
};
|
|
272
|
+
const isArrayIndexKey = (key) => {
|
|
273
|
+
const index = Number(key);
|
|
274
|
+
return Number.isInteger(index) && index >= 0 && index < 4_294_967_295 && String(index) === key;
|
|
275
|
+
};
|
|
276
|
+
const assertUniqueKeys = (keys, where) => {
|
|
277
|
+
const seen = new Set();
|
|
278
|
+
for (const key of keys) {
|
|
279
|
+
if (seen.has(key))
|
|
280
|
+
throw new RangeError(`${where}: duplicate key ${preview(key)}`);
|
|
281
|
+
seen.add(key);
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
const dispatchedChoice = (tag, entries, where) => {
|
|
285
|
+
if (entries.length === 0)
|
|
286
|
+
throw new RangeError(`${where}: at least one case is required`);
|
|
287
|
+
const keys = entries.map(([key]) => key);
|
|
288
|
+
assertUniqueKeys(keys, where);
|
|
289
|
+
return make({
|
|
290
|
+
_tag: "Choice",
|
|
291
|
+
options: entries.map(([, grammar]) => grammar),
|
|
292
|
+
on: { tag, keys },
|
|
293
|
+
});
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Alternatives dispatched by a discriminant field. Parsing tries the branches
|
|
297
|
+
* in order; printing reads `value[tag]` and prints with the branch of that key,
|
|
298
|
+
* so it never picks the wrong printer. It does not remove parse ambiguity: two
|
|
299
|
+
* branches may still parse the same text.
|
|
300
|
+
*
|
|
301
|
+
* The cases are an object keyed by the tag's string values. Integer-like keys
|
|
302
|
+
* are rejected, since JavaScript reorders them; use `choiceOnEntries` for
|
|
303
|
+
* those, and for number or boolean discriminants.
|
|
304
|
+
*/
|
|
305
|
+
export const choiceOn = (tag, cases) => {
|
|
306
|
+
const entries = Object.keys(cases).map((key) => {
|
|
307
|
+
if (isArrayIndexKey(key)) {
|
|
308
|
+
throw new RangeError(`choiceOn: key ${JSON.stringify(key)} looks like an integer; JavaScript reorders such keys, so parse order would not match the source. Use choiceOnEntries instead.`);
|
|
309
|
+
}
|
|
310
|
+
return [key, cases[key]];
|
|
311
|
+
});
|
|
312
|
+
return dispatchedChoice(tag, entries, "choiceOn");
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* `choiceOn` with the cases as an array of `[key, grammar]` entries: the parse
|
|
316
|
+
* order is the array order, and keys may be numbers or booleans as well as
|
|
317
|
+
* strings.
|
|
318
|
+
*/
|
|
319
|
+
export const choiceOnEntries = (tag, entries) => dispatchedChoice(tag, entries, "choiceOnEntries");
|
|
146
320
|
export const taggedChoice = (tag, cases) => {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
321
|
+
if (tag === "value")
|
|
322
|
+
throw new RangeError('taggedChoice: tag name "value" is reserved');
|
|
323
|
+
const keys = Object.keys(cases);
|
|
324
|
+
if (keys.length === 0)
|
|
325
|
+
throw new RangeError("taggedChoice: at least one case is required");
|
|
326
|
+
for (const key of keys) {
|
|
327
|
+
if (isArrayIndexKey(key)) {
|
|
328
|
+
throw new RangeError(`taggedChoice: key ${JSON.stringify(key)} is an array index; JavaScript reorders such keys, so parse order would not match the source`);
|
|
329
|
+
}
|
|
330
|
+
if (!isGrammar(cases[key])) {
|
|
331
|
+
throw new TypeError(`taggedChoice: case ${JSON.stringify(key)} must be a grammar`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
const branches = keys.map((key) => resultTransform(
|
|
335
|
+
// SAFETY: taggedChoice's Cases constraint and the runtime check above require grammars.
|
|
336
|
+
cases[key], {
|
|
150
337
|
decode: (value) => Result.succeed({ [tag]: key, value }),
|
|
151
|
-
encode: (value) =>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
338
|
+
encode: (value) => {
|
|
339
|
+
if (!Predicate.isObject(value) || !Object.hasOwn(value, tag) || value[tag] !== key) {
|
|
340
|
+
return Result.fail({
|
|
341
|
+
message: `expected an object with ${tag} equal to ${preview(key)}`,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
if (!Object.hasOwn(value, "value")) {
|
|
345
|
+
return Result.fail({ message: "expected an object with a value field" });
|
|
346
|
+
}
|
|
347
|
+
return Result.succeed(value.value);
|
|
156
348
|
},
|
|
157
349
|
name: `${tag}=${preview(key)}`,
|
|
158
|
-
}));
|
|
159
|
-
|
|
160
|
-
throw new RangeError("taggedChoice: at least one case is required");
|
|
161
|
-
return make({ _tag: "Choice", options: branches });
|
|
350
|
+
}, "claimed-iso"));
|
|
351
|
+
return make({ _tag: "Choice", options: branches, on: { tag, keys } });
|
|
162
352
|
};
|
|
163
353
|
const hiddenWhitespace = (expression, name, printAs) => silent({ _tag: "Skip", inner: regex(expression, name), printAs, show: false });
|
|
164
354
|
export const trivia = hiddenWhitespace(/\s*/, "trivia", "");
|
|
@@ -168,7 +358,7 @@ export function lexeme(inner) {
|
|
|
168
358
|
return suffix(inner, trivia);
|
|
169
359
|
}
|
|
170
360
|
export const symbol = (value) => lexeme(literal(value));
|
|
171
|
-
export const integer = regex(/-?\d+/, "integer").pipe(
|
|
361
|
+
export const integer = regex(/-?\d+/, "integer").pipe(iso({
|
|
172
362
|
decode: (text) => {
|
|
173
363
|
const value = Number(text);
|
|
174
364
|
return Object.is(value, -0) ? 0 : value;
|
package/dist/combinators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Result } from "effect";
|
|
2
|
+
import type { Fidelity, Grammar, GrammarInternal, GrammarIssue } from "./core.ts";
|
|
3
|
+
import type { ParseError, PrintError } from "./errors.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Check a grammar for staged errors that `parse` and `print` would otherwise
|
|
6
|
+
* only report when they run: refs used outside their gen and any nonzero
|
|
7
|
+
* repetition of a grammar proven to match empty input. Resolving suspensions
|
|
8
|
+
* may evaluate and cache their thunks. Returns the issues these checks find;
|
|
9
|
+
* an empty array is not proof of all runtime behavior.
|
|
10
|
+
*/
|
|
11
|
+
export declare const validate: (grammar: GrammarInternal) => ReadonlyArray<GrammarIssue>;
|
|
12
|
+
export interface FidelityEntry {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly fidelity: Fidelity;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* List the transforms in a grammar that do not claim a full inverse law
|
|
18
|
+
* (`transform`, `transformOrFail`, `partialIso`). An empty result means each
|
|
19
|
+
* transform makes that claim; it does not prove the claim or a round trip.
|
|
20
|
+
*/
|
|
21
|
+
export declare const auditFidelity: (grammar: GrammarInternal) => ReadonlyArray<FidelityEntry>;
|
|
22
|
+
export interface Prepared<A> {
|
|
23
|
+
readonly parse: (text: string) => Result.Result<A, ParseError>;
|
|
24
|
+
readonly print: (value: A) => Result.Result<string, PrintError>;
|
|
25
|
+
readonly printChecked: (value: A) => Result.Result<string, PrintError>;
|
|
26
|
+
readonly render: string;
|
|
27
|
+
readonly fidelity: ReadonlyArray<FidelityEntry>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate a grammar once, then return interpreter functions bound to it.
|
|
31
|
+
* This does not compile or optimize the grammar. Validation can resolve and
|
|
32
|
+
* cache suspended thunks, and throws if {@link validate} finds an issue. Other
|
|
33
|
+
* input, value, callback, and round-trip failures can still occur at runtime.
|
|
34
|
+
*/
|
|
35
|
+
export declare const prepare: <A>(grammar: Grammar<A>) => Prepared<A>;
|
|
36
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,KAAK,EAEV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,YAAY,EAGb,MAAM,WAAW,CAAA;AAElB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAqMzD;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,YAAa,eAAe,KAAG,aAAa,CAAC,YAAY,CAI7E,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,YAAa,eAAe,KAAG,aAAa,CAAC,aAAa,CAYnF,CAAA;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC9D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC/D,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAChD;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,CAgB1D,CAAA"}
|