effect-grammar 0.2.0 → 0.3.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 +164 -76
- package/dist/combinators.d.ts +66 -21
- package/dist/combinators.d.ts.map +1 -1
- package/dist/combinators.js +150 -47
- package/dist/combinators.js.map +1 -1
- package/dist/core.d.ts +111 -39
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +24 -20
- package/dist/core.js.map +1 -1
- package/dist/env.d.ts +20 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +63 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.d.ts +34 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +37 -4
- package/dist/errors.js.map +1 -1
- package/dist/gen.d.ts +7 -0
- package/dist/gen.d.ts.map +1 -0
- package/dist/gen.js +200 -0
- package/dist/gen.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +152 -114
- package/dist/parse.js.map +1 -1
- package/dist/pattern.d.ts +5 -0
- package/dist/pattern.d.ts.map +1 -0
- package/dist/pattern.js +46 -0
- package/dist/pattern.js.map +1 -0
- package/dist/print.d.ts +2 -1
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +201 -89
- package/dist/print.js.map +1 -1
- package/dist/recovery.d.ts +10 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +296 -0
- package/dist/recovery.js.map +1 -0
- package/dist/render.d.ts +4 -4
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +133 -42
- package/dist/render.js.map +1 -1
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -4
- package/dist/schema.js.map +1 -1
- package/package.json +32 -16
package/dist/combinators.js
CHANGED
|
@@ -1,77 +1,180 @@
|
|
|
1
|
-
import { Equal, Function as F, Schema } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { Equal, Function as F, Predicate, Result, Schema } from "effect";
|
|
2
|
+
import { isGrammar, isSilent, make, silent, } from "./core.js";
|
|
3
|
+
import { isCount } from "./env.js";
|
|
4
|
+
import { exceptionMessage, preview } from "./errors.js";
|
|
5
|
+
import { assertInScope } from "./gen.js";
|
|
6
|
+
export { gen, get, seq } from "./gen.js";
|
|
5
7
|
export const literal = (value) => silent({ _tag: "Literal", value });
|
|
6
8
|
export const empty = literal("");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return make({
|
|
11
|
-
_tag: "Regex",
|
|
12
|
-
re: new RegExp(re.source, `${flags}y`),
|
|
13
|
-
whole: new RegExp(`^(?:${re.source})$`, flags),
|
|
14
|
-
name,
|
|
15
|
-
});
|
|
9
|
+
export const regex = (expression, name) => {
|
|
10
|
+
const flags = expression.flags.replace(/[gy]/g, "");
|
|
11
|
+
return make({ _tag: "Regex", re: new RegExp(expression.source, `${flags}y`), name });
|
|
16
12
|
};
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export function
|
|
24
|
-
|
|
13
|
+
const toSilent = (value) => Predicate.isString(value) ? literal(value) : value;
|
|
14
|
+
const preserveSilence = (inner, node) => {
|
|
15
|
+
if (isSilent(inner))
|
|
16
|
+
return silent(node);
|
|
17
|
+
return make(node);
|
|
18
|
+
};
|
|
19
|
+
export function between(open, innerOrClose, close) {
|
|
20
|
+
if (close === undefined) {
|
|
21
|
+
// SAFETY: the two-argument overload accepts only a Silent or string here.
|
|
22
|
+
const closing = toSilent(innerOrClose);
|
|
23
|
+
return (inner) => between(open, inner, closing);
|
|
24
|
+
}
|
|
25
|
+
// SAFETY: the three-argument overload requires a Grammar as its second argument.
|
|
26
|
+
const inner = innerOrClose;
|
|
27
|
+
return preserveSilence(inner, {
|
|
25
28
|
_tag: "Wrap",
|
|
26
|
-
open:
|
|
29
|
+
open: toSilent(open),
|
|
27
30
|
inner,
|
|
28
|
-
close:
|
|
31
|
+
close: toSilent(close),
|
|
29
32
|
});
|
|
30
33
|
}
|
|
34
|
+
export const wrap = between;
|
|
31
35
|
export function prefix(open, inner) {
|
|
32
|
-
return
|
|
36
|
+
return inner === undefined
|
|
37
|
+
? (value) => between(open, value, empty)
|
|
38
|
+
: between(open, inner, empty);
|
|
33
39
|
}
|
|
34
|
-
export function suffix(
|
|
35
|
-
|
|
40
|
+
export function suffix(innerOrClose, close) {
|
|
41
|
+
if (close === undefined) {
|
|
42
|
+
// SAFETY: the one-argument overload accepts only a Silent or string here.
|
|
43
|
+
return (inner) => between(empty, inner, innerOrClose);
|
|
44
|
+
}
|
|
45
|
+
// SAFETY: the two-argument overload requires a Grammar as its first argument.
|
|
46
|
+
return between(empty, innerOrClose, close);
|
|
36
47
|
}
|
|
37
48
|
export const choice = (...options) => make({ _tag: "Choice", options });
|
|
38
49
|
export function optional(inner) {
|
|
39
|
-
|
|
50
|
+
if (inner === undefined)
|
|
51
|
+
return (value) => optional(value);
|
|
52
|
+
return preserveSilence(inner, { _tag: "Optional", inner });
|
|
40
53
|
}
|
|
41
|
-
const bounds = (name,
|
|
42
|
-
const min =
|
|
43
|
-
const max =
|
|
44
|
-
if (!
|
|
54
|
+
const bounds = (name, options) => {
|
|
55
|
+
const min = options?.min ?? 0;
|
|
56
|
+
const max = options?.max ?? Number.POSITIVE_INFINITY;
|
|
57
|
+
if (!isCount(min))
|
|
45
58
|
throw new RangeError(`${name}: min must be a non-negative safe integer`);
|
|
46
|
-
|
|
47
|
-
if (max !== Number.POSITIVE_INFINITY && !(Number.isSafeInteger(max) && max >= min)) {
|
|
59
|
+
if (max !== Number.POSITIVE_INFINITY && (!isCount(max) || max < min)) {
|
|
48
60
|
throw new RangeError(`${name}: max must be a safe integer >= min`);
|
|
49
61
|
}
|
|
50
62
|
return { min, max };
|
|
51
63
|
};
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
export const
|
|
55
|
-
export const
|
|
56
|
-
export const
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
const dataFirst = (args) => isGrammar(args[0]);
|
|
65
|
+
const repeatNode = (name, inner, separator, options) => make({ _tag: "Many", inner, sep: separator, ...bounds(name, options) });
|
|
66
|
+
export const many = F.dual(dataFirst, (inner, options) => repeatNode("many", inner, empty, options));
|
|
67
|
+
export const sepBy = F.dual(dataFirst, (inner, separator, options) => repeatNode("sepBy", inner, toSilent(separator), options));
|
|
68
|
+
export const match = (scrutinee, cases) => make({
|
|
69
|
+
_tag: "Match",
|
|
70
|
+
scrutinee: assertInScope(scrutinee, "match"),
|
|
71
|
+
// SAFETY: Object.keys returns only keys from the closed Cases record.
|
|
72
|
+
cases: Object.keys(cases).map((key) => ({ key, grammar: cases[key] })),
|
|
73
|
+
});
|
|
74
|
+
export const matchValue = (scrutinee, entries) => make({
|
|
75
|
+
_tag: "Match",
|
|
76
|
+
scrutinee: assertInScope(scrutinee, "matchValue"),
|
|
77
|
+
cases: entries.map(([key, grammar]) => ({ key, grammar })),
|
|
78
|
+
});
|
|
79
|
+
export const take = (count) => make({ _tag: "Take", count: assertInScope(count, "take") });
|
|
80
|
+
export const repeat = F.dual(dataFirst, (inner, count) => make({ _tag: "RepeatExact", count: assertInScope(count, "repeat"), inner }));
|
|
81
|
+
const attempt = (decode) => (a) => {
|
|
82
|
+
try {
|
|
83
|
+
return Result.succeed(decode(a));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return Result.fail({ message: exceptionMessage(error) });
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export const transform = F.dual(2, (inner, options) => make({
|
|
90
|
+
_tag: "Transform",
|
|
91
|
+
inner,
|
|
92
|
+
decode: attempt(options.decode),
|
|
93
|
+
encode: attempt(options.encode),
|
|
94
|
+
is: options.is,
|
|
95
|
+
name: options.name,
|
|
96
|
+
}));
|
|
97
|
+
export const transformOrFail = F.dual(2, (inner, options) => make({ _tag: "Transform", inner, ...options }));
|
|
98
|
+
export const decodeTo = (schema) => (options) => (inner) => {
|
|
99
|
+
let guard;
|
|
100
|
+
return transform(inner, {
|
|
101
|
+
...options,
|
|
102
|
+
is: options.is ?? ((value) => (guard ??= Schema.is(schema))(value)),
|
|
103
|
+
});
|
|
59
104
|
};
|
|
60
105
|
export const as = F.dual(2, (inner, value) => transform(inner, {
|
|
61
106
|
decode: () => value,
|
|
62
107
|
encode: () => undefined,
|
|
63
|
-
is: (
|
|
108
|
+
is: (input) => Equal.equals(input, value),
|
|
64
109
|
name: preview(value),
|
|
65
110
|
}));
|
|
66
|
-
export const flag = (
|
|
111
|
+
export const flag = (value) => choice(as(toSilent(value), true), as(empty, false));
|
|
67
112
|
export const skip = F.dual(2, (inner, printAs) => silent({ _tag: "Skip", inner, printAs, show: true }));
|
|
68
113
|
export const label = F.dual(2, (inner, name) => make({ _tag: "Label", inner, name }));
|
|
69
114
|
export const suspend = (thunk, name) => make({ _tag: "Suspend", thunk, name });
|
|
70
|
-
const
|
|
71
|
-
|
|
115
|
+
export const defaulted = F.dual(dataFirst, (inner, value) => transform(inner, {
|
|
116
|
+
decode: (input) => input ?? value,
|
|
117
|
+
encode: (input) => (Equal.equals(input, value) ? undefined : input),
|
|
118
|
+
}));
|
|
119
|
+
export const struct = (fields) => {
|
|
120
|
+
const scope = { _tag: "ScopeId" };
|
|
121
|
+
const entries = Object.entries(fields);
|
|
122
|
+
return make({
|
|
123
|
+
_tag: "Gen",
|
|
124
|
+
scope,
|
|
125
|
+
slotCount: entries.length,
|
|
126
|
+
steps: entries.map(([, grammar], slot) => ({ _tag: "Bind", slot, grammar })),
|
|
127
|
+
result: {
|
|
128
|
+
_tag: "Object",
|
|
129
|
+
fields: entries.map(([key], slot) => [key, { _tag: "Ref", scope, slot }]),
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
export const tuple = (...elements) => {
|
|
134
|
+
const scope = { _tag: "ScopeId" };
|
|
135
|
+
return make({
|
|
136
|
+
_tag: "Gen",
|
|
137
|
+
scope,
|
|
138
|
+
slotCount: elements.length,
|
|
139
|
+
steps: elements.map((grammar, slot) => ({ _tag: "Bind", slot, grammar })),
|
|
140
|
+
result: {
|
|
141
|
+
_tag: "Array",
|
|
142
|
+
items: elements.map((_, slot) => ({ _tag: "Ref", scope, slot })),
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
export const taggedChoice = (tag, cases) => {
|
|
147
|
+
const branches = Object.entries(cases).map(([key, grammar]) => make({
|
|
148
|
+
_tag: "Transform",
|
|
149
|
+
inner: grammar,
|
|
150
|
+
decode: (value) => Result.succeed({ [tag]: key, value }),
|
|
151
|
+
encode: (value) => Result.succeed(Object(value).value),
|
|
152
|
+
is: (value) => {
|
|
153
|
+
if (!Predicate.isObject(value) || !Object.hasOwn(value, tag))
|
|
154
|
+
return false;
|
|
155
|
+
return Object.is(value[tag], key) && Object.hasOwn(value, "value");
|
|
156
|
+
},
|
|
157
|
+
name: `${tag}=${preview(key)}`,
|
|
158
|
+
}));
|
|
159
|
+
if (branches.length === 0)
|
|
160
|
+
throw new RangeError("taggedChoice: at least one case is required");
|
|
161
|
+
return make({ _tag: "Choice", options: branches });
|
|
162
|
+
};
|
|
163
|
+
const hiddenWhitespace = (expression, name, printAs) => silent({ _tag: "Skip", inner: regex(expression, name), printAs, show: false });
|
|
164
|
+
export const trivia = hiddenWhitespace(/\s*/, "trivia", "");
|
|
165
|
+
export const space = literal(" ");
|
|
166
|
+
export const spaces = hiddenWhitespace(/\s+/, "whitespace", " ");
|
|
72
167
|
export function lexeme(inner) {
|
|
73
|
-
return suffix(inner,
|
|
168
|
+
return suffix(inner, trivia);
|
|
74
169
|
}
|
|
75
|
-
export const symbol = (
|
|
76
|
-
export const integer = regex(/-?\d+/, "integer").pipe(transform({
|
|
170
|
+
export const symbol = (value) => lexeme(literal(value));
|
|
171
|
+
export const integer = regex(/-?\d+/, "integer").pipe(transform({
|
|
172
|
+
decode: (text) => {
|
|
173
|
+
const value = Number(text);
|
|
174
|
+
return Object.is(value, -0) ? 0 : value;
|
|
175
|
+
},
|
|
176
|
+
encode: String,
|
|
177
|
+
is: Number.isSafeInteger,
|
|
178
|
+
name: "integer",
|
|
179
|
+
}));
|
|
77
180
|
//# sourceMappingURL=combinators.js.map
|
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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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -1,85 +1,157 @@
|
|
|
1
|
-
import { Pipeable, type Types } from "effect";
|
|
2
|
-
|
|
1
|
+
import { Pipeable, Result, type Types } from "effect";
|
|
2
|
+
declare const GrammarTypeId: unique symbol;
|
|
3
|
+
declare const SilentTypeId: unique symbol;
|
|
4
|
+
declare const NodeTypeId: unique symbol;
|
|
5
|
+
export declare const RefTypeId: unique symbol;
|
|
6
|
+
/** Every JavaScript value; `{}` is TypeScript's non-nullish top type. */
|
|
7
|
+
export type Value = {} | null | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Bridges an erased node callback with the runtime value produced for that
|
|
10
|
+
* node. Node callbacks are stored as `never`-argument functions so the
|
|
11
|
+
* public combinator types stay precise; this is the single choke point where
|
|
12
|
+
* the runtime value is passed to them.
|
|
13
|
+
*/
|
|
14
|
+
export declare const unsafeToNever: (value: Value) => never;
|
|
15
|
+
export interface ScopeId {
|
|
16
|
+
readonly _tag: "ScopeId";
|
|
17
|
+
}
|
|
3
18
|
export interface Bounds {
|
|
4
19
|
readonly min: number;
|
|
5
20
|
readonly max: number;
|
|
6
21
|
}
|
|
22
|
+
export interface RefExpr {
|
|
23
|
+
readonly _tag: "Ref";
|
|
24
|
+
readonly scope: ScopeId;
|
|
25
|
+
readonly slot: number;
|
|
26
|
+
}
|
|
27
|
+
export type Expr = RefExpr | {
|
|
28
|
+
readonly _tag: "Prop";
|
|
29
|
+
readonly object: Expr;
|
|
30
|
+
readonly key: PropertyKey;
|
|
31
|
+
};
|
|
32
|
+
export type Pattern = RefExpr | {
|
|
33
|
+
readonly _tag: "Const";
|
|
34
|
+
readonly value: Value;
|
|
35
|
+
} | {
|
|
36
|
+
readonly _tag: "Object";
|
|
37
|
+
readonly fields: ReadonlyArray<readonly [string, Pattern]>;
|
|
38
|
+
} | {
|
|
39
|
+
readonly _tag: "Array";
|
|
40
|
+
readonly items: ReadonlyArray<Pattern>;
|
|
41
|
+
};
|
|
42
|
+
export type MatchKey = string | number | boolean;
|
|
43
|
+
export interface GrammarIssue {
|
|
44
|
+
readonly message: string;
|
|
45
|
+
}
|
|
46
|
+
export interface GrammarInternal extends Pipeable.Pipeable {
|
|
47
|
+
readonly [NodeTypeId]: Node;
|
|
48
|
+
}
|
|
49
|
+
export interface Case {
|
|
50
|
+
readonly key: MatchKey;
|
|
51
|
+
readonly grammar: GrammarInternal;
|
|
52
|
+
}
|
|
53
|
+
export type Step = {
|
|
54
|
+
readonly _tag: "Silent";
|
|
55
|
+
readonly grammar: Silent;
|
|
56
|
+
} | {
|
|
57
|
+
readonly _tag: "Bind";
|
|
58
|
+
readonly slot: number;
|
|
59
|
+
readonly grammar: GrammarInternal;
|
|
60
|
+
};
|
|
7
61
|
export type Node = {
|
|
8
62
|
readonly _tag: "Literal";
|
|
9
63
|
readonly value: string;
|
|
10
64
|
} | {
|
|
11
65
|
readonly _tag: "Regex";
|
|
12
66
|
readonly re: RegExp;
|
|
13
|
-
readonly whole: RegExp;
|
|
14
67
|
readonly name: string;
|
|
15
|
-
} | {
|
|
16
|
-
readonly _tag: "Seq";
|
|
17
|
-
readonly parts: ReadonlyArray<Part>;
|
|
18
68
|
} | {
|
|
19
69
|
readonly _tag: "Gen";
|
|
20
|
-
readonly
|
|
70
|
+
readonly scope: ScopeId;
|
|
71
|
+
readonly slotCount: number;
|
|
72
|
+
readonly steps: ReadonlyArray<Step>;
|
|
73
|
+
readonly result: Pattern;
|
|
21
74
|
} | {
|
|
22
75
|
readonly _tag: "Wrap";
|
|
23
76
|
readonly open: Silent;
|
|
24
|
-
readonly inner:
|
|
77
|
+
readonly inner: GrammarInternal;
|
|
25
78
|
readonly close: Silent;
|
|
26
79
|
} | {
|
|
27
80
|
readonly _tag: "Choice";
|
|
28
|
-
readonly options: ReadonlyArray<
|
|
81
|
+
readonly options: ReadonlyArray<GrammarInternal>;
|
|
29
82
|
} | ({
|
|
30
83
|
readonly _tag: "Many";
|
|
31
|
-
readonly inner:
|
|
84
|
+
readonly inner: GrammarInternal;
|
|
32
85
|
readonly sep: Silent;
|
|
33
86
|
} & Bounds) | {
|
|
34
87
|
readonly _tag: "Optional";
|
|
35
|
-
readonly inner:
|
|
88
|
+
readonly inner: GrammarInternal;
|
|
36
89
|
} | {
|
|
37
90
|
readonly _tag: "Transform";
|
|
38
|
-
readonly inner:
|
|
39
|
-
readonly decode: (a:
|
|
40
|
-
readonly encode: (b:
|
|
41
|
-
readonly is?: ((value:
|
|
91
|
+
readonly inner: GrammarInternal;
|
|
92
|
+
readonly decode: (a: never) => Result.Result<Value, GrammarIssue>;
|
|
93
|
+
readonly encode: (b: never) => Result.Result<Value, GrammarIssue>;
|
|
94
|
+
readonly is?: ((value: never) => boolean) | undefined;
|
|
42
95
|
readonly name?: string | undefined;
|
|
43
96
|
} | {
|
|
44
97
|
readonly _tag: "Skip";
|
|
45
|
-
readonly inner:
|
|
46
|
-
readonly printAs:
|
|
98
|
+
readonly inner: GrammarInternal;
|
|
99
|
+
readonly printAs: Value;
|
|
47
100
|
readonly show: boolean;
|
|
48
101
|
} | {
|
|
49
102
|
readonly _tag: "Label";
|
|
50
|
-
readonly inner:
|
|
103
|
+
readonly inner: GrammarInternal;
|
|
51
104
|
readonly name: string;
|
|
52
105
|
} | {
|
|
53
106
|
readonly _tag: "Suspend";
|
|
54
|
-
readonly thunk: () =>
|
|
107
|
+
readonly thunk: () => GrammarInternal;
|
|
55
108
|
readonly name?: string | undefined;
|
|
56
|
-
resolved?:
|
|
109
|
+
resolved?: GrammarInternal | undefined;
|
|
110
|
+
} | {
|
|
111
|
+
readonly _tag: "Match";
|
|
112
|
+
readonly scrutinee: Expr;
|
|
113
|
+
readonly cases: ReadonlyArray<Case>;
|
|
114
|
+
} | {
|
|
115
|
+
readonly _tag: "Take";
|
|
116
|
+
readonly count: Expr;
|
|
117
|
+
} | {
|
|
118
|
+
readonly _tag: "RepeatExact";
|
|
119
|
+
readonly count: Expr;
|
|
120
|
+
readonly inner: GrammarInternal;
|
|
57
121
|
};
|
|
58
|
-
export
|
|
59
|
-
|
|
60
|
-
|
|
122
|
+
export type Bound<A> = [A] extends [void] ? void : Ref<A>;
|
|
123
|
+
export interface GrammarIterator<A> {
|
|
124
|
+
next(...args: ReadonlyArray<unknown>): IteratorResult<Grammar<A>, Bound<A>>;
|
|
125
|
+
}
|
|
126
|
+
export interface Grammar<in out A> extends GrammarInternal {
|
|
127
|
+
readonly [GrammarTypeId]: Types.Invariant<A>;
|
|
128
|
+
[Symbol.iterator](): GrammarIterator<A>;
|
|
61
129
|
}
|
|
62
130
|
export interface Silent extends Grammar<void> {
|
|
63
|
-
[
|
|
131
|
+
readonly [SilentTypeId]: true;
|
|
64
132
|
}
|
|
65
|
-
export interface
|
|
66
|
-
readonly
|
|
67
|
-
readonly grammar: Grammar<A>;
|
|
68
|
-
[Symbol.iterator](): Iterator<Field<K, A>, A>;
|
|
133
|
+
export interface RefBase<out A> {
|
|
134
|
+
readonly [RefTypeId]: Types.Covariant<A>;
|
|
69
135
|
}
|
|
136
|
+
type RefProps<A> = [A] extends [ReadonlyArray<unknown>] ? {
|
|
137
|
+
readonly length: Ref<number>;
|
|
138
|
+
} : [A] extends [object] ? {
|
|
139
|
+
readonly [K in keyof A & string]-?: Ref<A[K]>;
|
|
140
|
+
} : {};
|
|
141
|
+
export type Ref<A> = RefBase<A> & RefProps<A>;
|
|
142
|
+
export type Denote<T> = T extends RefBase<infer A> ? A : T extends ReadonlyArray<unknown> ? {
|
|
143
|
+
-readonly [K in keyof T]: Denote<T[K]>;
|
|
144
|
+
} : T extends object ? {
|
|
145
|
+
-readonly [K in keyof T]: Denote<T[K]>;
|
|
146
|
+
} : T;
|
|
147
|
+
export type Type<G> = G extends Grammar<infer A> ? A : never;
|
|
148
|
+
export declare const nodeOf: (grammar: GrammarInternal) => Node;
|
|
70
149
|
export declare const make: <A>(node: Node) => Grammar<A>;
|
|
71
150
|
export declare const silent: (node: Node) => Silent;
|
|
72
|
-
export declare const
|
|
73
|
-
export declare const
|
|
74
|
-
export declare const
|
|
75
|
-
export declare const isField: (p: Part) => p is Field<string, any>;
|
|
76
|
-
export declare const resolve: (n: Extract<Node, {
|
|
151
|
+
export declare const isGrammar: <T>(value: T) => value is T & GrammarInternal;
|
|
152
|
+
export declare const isSilent: (grammar: GrammarInternal) => grammar is Silent;
|
|
153
|
+
export declare const resolve: (node: Extract<Node, {
|
|
77
154
|
_tag: "Suspend";
|
|
78
|
-
}>) =>
|
|
79
|
-
export type Type<G> = G extends Grammar<infer A> ? A : never;
|
|
80
|
-
type Names<Y> = Y extends Field<infer K, any> ? K : never;
|
|
81
|
-
export type Fields<Y> = {
|
|
82
|
-
[K in Names<Y>]: Y extends Field<K, infer A> ? A : never;
|
|
83
|
-
};
|
|
155
|
+
}>) => GrammarInternal;
|
|
84
156
|
export {};
|
|
85
157
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAS,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
import { Pipeable, Utils } from "effect";
|
|
1
|
+
import { Pipeable, Predicate, Result, Utils } from "effect";
|
|
2
|
+
const GrammarTypeId = Symbol.for("effect-grammar/Grammar");
|
|
3
|
+
const SilentTypeId = Symbol.for("effect-grammar/Silent");
|
|
4
|
+
const NodeTypeId = Symbol("effect-grammar/Node");
|
|
5
|
+
export const RefTypeId = Symbol.for("effect-grammar/Ref");
|
|
6
|
+
/**
|
|
7
|
+
* Bridges an erased node callback with the runtime value produced for that
|
|
8
|
+
* node. Node callbacks are stored as `never`-argument functions so the
|
|
9
|
+
* public combinator types stay precise; this is the single choke point where
|
|
10
|
+
* the runtime value is passed to them.
|
|
11
|
+
*/
|
|
12
|
+
export const unsafeToNever = (value) => {
|
|
13
|
+
// SAFETY: erased Node callbacks accept the runtime value produced for that node.
|
|
14
|
+
return value;
|
|
15
|
+
};
|
|
2
16
|
class GrammarImpl {
|
|
3
|
-
|
|
17
|
+
[NodeTypeId];
|
|
4
18
|
constructor(node) {
|
|
5
|
-
this
|
|
19
|
+
this[NodeTypeId] = node;
|
|
6
20
|
}
|
|
7
21
|
pipe() {
|
|
8
22
|
return Pipeable.pipeArguments(this, arguments);
|
|
9
23
|
}
|
|
10
|
-
}
|
|
11
|
-
class SilentImpl extends GrammarImpl {
|
|
12
24
|
[Symbol.iterator]() {
|
|
13
25
|
return new Utils.SingleShotGen(this);
|
|
14
26
|
}
|
|
15
27
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
grammar;
|
|
19
|
-
constructor(name, grammar) {
|
|
20
|
-
this.name = name;
|
|
21
|
-
this.grammar = grammar;
|
|
22
|
-
}
|
|
23
|
-
[Symbol.iterator]() {
|
|
24
|
-
return new Utils.SingleShotGen(this);
|
|
25
|
-
}
|
|
28
|
+
Object.defineProperty(GrammarImpl.prototype, GrammarTypeId, { value: GrammarTypeId });
|
|
29
|
+
class SilentImpl extends GrammarImpl {
|
|
26
30
|
}
|
|
31
|
+
Object.defineProperty(SilentImpl.prototype, SilentTypeId, { value: true });
|
|
32
|
+
export const nodeOf = (grammar) => grammar[NodeTypeId];
|
|
27
33
|
export const make = (node) => new GrammarImpl(node);
|
|
28
34
|
export const silent = (node) => new SilentImpl(node);
|
|
29
|
-
export const
|
|
30
|
-
export const
|
|
31
|
-
export const
|
|
32
|
-
export const isField = (p) => p instanceof FieldImpl;
|
|
33
|
-
export const resolve = (n) => (n.resolved ??= n.thunk());
|
|
35
|
+
export const isGrammar = (value) => Predicate.hasProperty(value, GrammarTypeId);
|
|
36
|
+
export const isSilent = (grammar) => Predicate.hasProperty(grammar, SilentTypeId);
|
|
37
|
+
export const resolve = (node) => (node.resolved ??= node.thunk());
|
|
34
38
|
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,KAAK,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAc,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEvE,MAAM,aAAa,GAAkB,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACzE,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACvE,MAAM,UAAU,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAKxE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAS,EAAE;IACnD,iFAAiF;IACjF,OAAO,KAAc,CAAA;AACvB,CAAC,CAAA;AAgID,MAAM,WAAW;IAEN,CAAC,UAAU,CAAC,CAAM;IAE3B,YAAY,IAAU;QACpB,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAuB,IAAI,CAAC,CAAA;IAC5D,CAAC;CACF;AAED,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;AAErF,MAAM,UAAW,SAAQ,WAAiB;CAEzC;AAED,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAwB,EAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,IAAU,EAAc,EAAE,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAgC,EAAE,CACrE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAwB,EAAqB,EAAE,CACtE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAwC,EAAmB,EAAE,CACnF,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA"}
|
package/dist/env.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Case, Expr, Pattern, RefExpr, ScopeId, Value } from "./core.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Sentinel for "no value has been bound here". Distinguished from `undefined`
|
|
4
|
+
* because slots can legitimately hold `undefined` (e.g. `optional`).
|
|
5
|
+
*/
|
|
6
|
+
export declare const Unbound: unique symbol;
|
|
7
|
+
export type BoundValue = Value | typeof Unbound;
|
|
8
|
+
export interface Frame {
|
|
9
|
+
readonly scope: ScopeId;
|
|
10
|
+
readonly parent: Frame | undefined;
|
|
11
|
+
readonly values: Array<Value>;
|
|
12
|
+
}
|
|
13
|
+
export declare const frame: (scope: ScopeId, slotCount: number, parent: Frame | undefined) => Frame;
|
|
14
|
+
export declare const bind: (target: Frame, slot: number, value: Value) => void;
|
|
15
|
+
export declare const lookup: (env: Frame | undefined, ref: RefExpr) => BoundValue;
|
|
16
|
+
export declare const evaluate: (expr: Expr, env: Frame | undefined) => BoundValue;
|
|
17
|
+
export declare const materialize: (pattern: Pattern, env: Frame) => BoundValue;
|
|
18
|
+
export declare const caseFor: (cases: ReadonlyArray<Case>, value: Value) => Case | undefined;
|
|
19
|
+
export declare const isCount: (value: Value) => value is number;
|
|
20
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAE7E;;;GAGG;AACH,eAAO,MAAM,OAAO,eAAmC,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,OAAO,CAAA;AAE/C,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAC9B;AAED,eAAO,MAAM,KAAK,UAAW,OAAO,aAAa,MAAM,UAAU,KAAK,GAAG,SAAS,KAAG,KAKpF,CAAA;AAED,eAAO,MAAM,IAAI,WAAY,KAAK,QAAQ,MAAM,SAAS,KAAK,KAAG,IAEhE,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,KAAK,GAAG,SAAS,OAAO,OAAO,KAAG,UAM7D,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,IAAI,OAAO,KAAK,GAAG,SAAS,KAAG,UAM7D,CAAA;AAED,eAAO,MAAM,WAAW,YAAa,OAAO,OAAO,KAAK,KAAG,UAyB1D,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,aAAa,CAAC,IAAI,CAAC,SAAS,KAAK,qBACJ,CAAA;AAE5D,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,IAAI,MACwB,CAAA"}
|