effect-grammar 0.0.1 → 0.1.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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +124 -62
  3. package/dist/combinators.d.ts +64 -27
  4. package/dist/combinators.d.ts.map +1 -1
  5. package/dist/combinators.js +73 -91
  6. package/dist/combinators.js.map +1 -1
  7. package/dist/core.d.ts +85 -0
  8. package/dist/core.d.ts.map +1 -0
  9. package/dist/core.js +34 -0
  10. package/dist/core.js.map +1 -0
  11. package/dist/errors.d.ts +19 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +27 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/grammar.d.ts +7 -190
  16. package/dist/grammar.d.ts.map +1 -1
  17. package/dist/grammar.js +7 -494
  18. package/dist/grammar.js.map +1 -1
  19. package/dist/index.d.ts +7 -6
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6 -6
  22. package/dist/index.js.map +1 -1
  23. package/dist/parse.d.ts +5 -0
  24. package/dist/parse.d.ts.map +1 -0
  25. package/dist/parse.js +157 -0
  26. package/dist/parse.js.map +1 -0
  27. package/dist/print.d.ts +5 -0
  28. package/dist/print.d.ts.map +1 -0
  29. package/dist/print.js +121 -0
  30. package/dist/print.js.map +1 -0
  31. package/dist/render.d.ts +5 -0
  32. package/dist/render.d.ts.map +1 -0
  33. package/dist/render.js +64 -0
  34. package/dist/render.js.map +1 -0
  35. package/dist/schema.d.ts +6 -0
  36. package/dist/schema.d.ts.map +1 -0
  37. package/dist/schema.js +9 -0
  38. package/dist/schema.js.map +1 -0
  39. package/package.json +22 -21
  40. package/dist/error.d.ts +0 -28
  41. package/dist/error.d.ts.map +0 -1
  42. package/dist/error.js +0 -52
  43. package/dist/error.js.map +0 -1
  44. package/dist/parser.d.ts +0 -6
  45. package/dist/parser.d.ts.map +0 -1
  46. package/dist/parser.js +0 -6
  47. package/dist/parser.js.map +0 -1
  48. package/dist/run.d.ts +0 -6
  49. package/dist/run.d.ts.map +0 -1
  50. package/dist/run.js +0 -11
  51. package/dist/run.js.map +0 -1
  52. package/dist/state.d.ts +0 -51
  53. package/dist/state.d.ts.map +0 -1
  54. package/dist/state.js +0 -114
  55. package/dist/state.js.map +0 -1
  56. package/dist/stream.d.ts +0 -18
  57. package/dist/stream.d.ts.map +0 -1
  58. package/dist/stream.js +0 -38
  59. package/dist/stream.js.map +0 -1
package/dist/core.d.ts ADDED
@@ -0,0 +1,85 @@
1
+ import { Pipeable, type Types } from "effect";
2
+ export type Part = Field<string, any> | Grammar<any>;
3
+ export interface Bounds {
4
+ readonly min: number;
5
+ readonly max: number;
6
+ }
7
+ export type Node = {
8
+ readonly _tag: "Literal";
9
+ readonly value: string;
10
+ } | {
11
+ readonly _tag: "Regex";
12
+ readonly re: RegExp;
13
+ readonly whole: RegExp;
14
+ readonly name: string;
15
+ } | {
16
+ readonly _tag: "Seq";
17
+ readonly parts: ReadonlyArray<Part>;
18
+ } | {
19
+ readonly _tag: "Gen";
20
+ readonly run: () => Generator<Part, any, any>;
21
+ } | {
22
+ readonly _tag: "Wrap";
23
+ readonly open: Silent;
24
+ readonly inner: Grammar<any>;
25
+ readonly close: Silent;
26
+ } | {
27
+ readonly _tag: "Choice";
28
+ readonly options: ReadonlyArray<Grammar<any>>;
29
+ } | ({
30
+ readonly _tag: "Many";
31
+ readonly inner: Grammar<any>;
32
+ readonly sep: Silent;
33
+ } & Bounds) | {
34
+ readonly _tag: "Optional";
35
+ readonly inner: Grammar<any>;
36
+ } | {
37
+ readonly _tag: "Transform";
38
+ readonly inner: Grammar<any>;
39
+ readonly decode: (a: any) => any;
40
+ readonly encode: (b: any) => any;
41
+ readonly is?: ((value: any) => boolean) | undefined;
42
+ readonly name?: string | undefined;
43
+ } | {
44
+ readonly _tag: "Skip";
45
+ readonly inner: Grammar<any>;
46
+ readonly printAs: any;
47
+ readonly show: boolean;
48
+ } | {
49
+ readonly _tag: "Label";
50
+ readonly inner: Grammar<any>;
51
+ readonly name: string;
52
+ } | {
53
+ readonly _tag: "Suspend";
54
+ readonly thunk: () => Grammar<any>;
55
+ readonly name?: string | undefined;
56
+ resolved?: Grammar<any> | undefined;
57
+ };
58
+ export interface Grammar<out A> extends Pipeable.Pipeable {
59
+ readonly _A: Types.Covariant<A>;
60
+ readonly node: Node;
61
+ }
62
+ export interface Silent extends Grammar<void> {
63
+ [Symbol.iterator](): Iterator<Silent, void>;
64
+ }
65
+ export interface Field<K extends string, A> {
66
+ readonly name: K;
67
+ readonly grammar: Grammar<A>;
68
+ [Symbol.iterator](): Iterator<Field<K, A>, A>;
69
+ }
70
+ export declare const make: <A>(node: Node) => Grammar<A>;
71
+ export declare const silent: (node: Node) => Silent;
72
+ export declare const field: <const K extends string, G extends Grammar<any>>(name: K, grammar: G) => Field<K, Type<G>>;
73
+ export declare const isGrammar: (value: any) => value is Grammar<any>;
74
+ export declare const isSilent: (g: Grammar<any>) => g is Silent;
75
+ export declare const isField: (p: Part) => p is Field<string, any>;
76
+ export declare const resolve: (n: Extract<Node, {
77
+ _tag: "Suspend";
78
+ }>) => Grammar<any>;
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
+ };
84
+ export {};
85
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js ADDED
@@ -0,0 +1,34 @@
1
+ import { Pipeable, Utils } from "effect";
2
+ class GrammarImpl {
3
+ node;
4
+ constructor(node) {
5
+ this.node = node;
6
+ }
7
+ pipe() {
8
+ return Pipeable.pipeArguments(this, arguments);
9
+ }
10
+ }
11
+ class SilentImpl extends GrammarImpl {
12
+ [Symbol.iterator]() {
13
+ return new Utils.SingleShotGen(this);
14
+ }
15
+ }
16
+ class FieldImpl {
17
+ name;
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
+ }
26
+ }
27
+ export const make = (node) => new GrammarImpl(node);
28
+ export const silent = (node) => new SilentImpl(node);
29
+ export const field = (name, grammar) => new FieldImpl(name, grammar);
30
+ export const isGrammar = (value) => value instanceof GrammarImpl;
31
+ export const isSilent = (g) => g instanceof SilentImpl;
32
+ export const isField = (p) => p instanceof FieldImpl;
33
+ export const resolve = (n) => (n.resolved ??= n.thunk());
34
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,KAAK,EAAE,MAAM,QAAQ,CAAA;AAoEpD,MAAM,WAAW;IAEN,IAAI,CAAM;IACnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,IAAI;QACF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;CACF;AAED,MAAM,UAAW,SAAQ,WAAiB;IACxC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAe,IAAI,CAAC,CAAA;IACpD,CAAC;CACF;AAED,MAAM,SAAS;IACJ,IAAI,CAAG;IACP,OAAO,CAAY;IAC5B,YAAY,IAAO,EAAE,OAAmB;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IACD,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAiB,IAAI,CAAC,CAAA;IACtD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,IAAU,EAAc,EAAE,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,CAAA;AAC3E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAO,EACP,OAAU,EACS,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAU,EAAyB,EAAE,CAAC,KAAK,YAAY,WAAW,CAAA;AAC5F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAe,EAAE,CAAC,CAAC,YAAY,UAAU,CAAA;AACjF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAO,EAA2B,EAAE,CAAC,CAAC,YAAY,SAAS,CAAA;AAEnF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAqC,EAAgB,EAAE,CAC7E,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { Schema } from "effect";
2
+ declare const ParseError_base: Schema.Class<ParseError, Schema.TaggedStruct<"ParseError", {
3
+ readonly pos: Schema.Finite;
4
+ readonly line: Schema.Finite;
5
+ readonly column: Schema.Finite;
6
+ readonly expected: Schema.$Array<Schema.String>;
7
+ readonly found: Schema.UndefinedOr<Schema.String>;
8
+ }>, import("effect/Cause").YieldableError>;
9
+ export declare class ParseError extends ParseError_base {
10
+ get message(): string;
11
+ }
12
+ declare const PrintError_base: Schema.Class<PrintError, Schema.TaggedStruct<"PrintError", {
13
+ readonly message: Schema.String;
14
+ }>, import("effect/Cause").YieldableError>;
15
+ export declare class PrintError extends PrintError_base {
16
+ }
17
+ export declare const preview: <T>(value: T) => string;
18
+ export {};
19
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;;;;;;;;AAE/B,qBAAa,UAAW,SAAQ,eAM9B;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED,qBAAa,UAAW,SAAQ,eAE9B;CAAG;AAEL,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,CAAC,KAAG,MAMrC,CAAA"}
package/dist/errors.js ADDED
@@ -0,0 +1,27 @@
1
+ import { Schema } from "effect";
2
+ export class ParseError extends Schema.TaggedErrorClass()("ParseError", {
3
+ pos: Schema.Finite,
4
+ line: Schema.Finite,
5
+ column: Schema.Finite,
6
+ expected: Schema.Array(Schema.String),
7
+ found: Schema.UndefinedOr(Schema.String),
8
+ }) {
9
+ get message() {
10
+ const found = this.found === undefined ? "end of input" : JSON.stringify(this.found);
11
+ const expected = this.expected.length === 1 ? this.expected[0] : `one of ${this.expected.join(", ")}`;
12
+ return `line ${this.line}, column ${this.column}: expected ${expected}, found ${found}`;
13
+ }
14
+ }
15
+ export class PrintError extends Schema.TaggedErrorClass()("PrintError", {
16
+ message: Schema.String,
17
+ }) {
18
+ }
19
+ export const preview = (value) => {
20
+ try {
21
+ return JSON.stringify(value) ?? String(value);
22
+ }
23
+ catch {
24
+ return String(value);
25
+ }
26
+ };
27
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,gBAAgB,EAAc,CAAC,YAAY,EAAE;IAClF,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC;IACA,IAAa,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpF,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACtF,OAAO,QAAQ,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,cAAc,QAAQ,WAAW,KAAK,EAAE,CAAA;IACzF,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,gBAAgB,EAAc,CAAC,YAAY,EAAE;IAClF,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAQ,EAAU,EAAE;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
package/dist/grammar.d.ts CHANGED
@@ -1,191 +1,8 @@
1
- import { Effect, Schema, Scope, Stream } from "effect";
2
- import { ParseError, UpstreamError } from "./error.ts";
3
- import { ParseState } from "./state.ts";
4
- declare const PrintError_base: Schema.Class<PrintError, Schema.TaggedStruct<"PrintError", {
5
- readonly message: Schema.String;
6
- }>, import("effect/Cause").YieldableError>;
7
- export declare class PrintError extends PrintError_base {
8
- }
9
- declare const RoundTripError_base: Schema.Class<RoundTripError, Schema.TaggedStruct<"RoundTripError", {
10
- readonly stage: Schema.Literals<readonly ["print", "parse", "equal"]>;
11
- readonly message: Schema.String;
12
- }>, import("effect/Cause").YieldableError>;
13
- /**
14
- * Failure of {@link checkRoundTrip}. `stage` names which step broke:
15
- * - `"print"` — the value could not be printed
16
- * - `"parse"` — the printed string failed to re-parse
17
- * - `"equal"` — re-parse succeeded but the value differed
18
- */
19
- export declare class RoundTripError extends RoundTripError_base {
20
- }
21
- declare const typeId: unique symbol;
22
- export interface Literal {
23
- readonly _tag: "Literal";
24
- readonly value: string;
25
- }
26
- export interface Regex {
27
- readonly _tag: "Regex";
28
- readonly re: RegExp;
29
- readonly expected: string;
30
- }
31
- export interface MapNode {
32
- readonly _tag: "Map";
33
- readonly inner: Grammar<any>;
34
- readonly to: (a: any) => any;
35
- readonly from: ((b: any) => any) | undefined;
36
- }
37
- export interface StructNode {
38
- readonly _tag: "Struct";
39
- readonly fields: Record<string, Grammar<any>>;
40
- }
41
- export interface Choice {
42
- readonly _tag: "Choice";
43
- readonly options: ReadonlyArray<Grammar<any>>;
44
- }
45
- export interface Many {
46
- readonly _tag: "Many";
47
- readonly inner: Grammar<any>;
48
- readonly atLeast: number;
49
- }
50
- export interface SepBy {
51
- readonly _tag: "SepBy";
52
- readonly inner: Grammar<any>;
53
- readonly sep: Grammar<any>;
54
- readonly atLeast: number;
55
- }
56
- export interface Optional {
57
- readonly _tag: "Optional";
58
- readonly inner: Grammar<any>;
59
- }
60
- export interface Attempt {
61
- readonly _tag: "Attempt";
62
- readonly inner: Grammar<any>;
63
- }
64
- export interface FromEffect {
65
- readonly _tag: "FromEffect";
66
- readonly eff: Effect.Effect<any, ParseError, ParseState>;
67
- readonly expected: string;
68
- }
69
- export interface Lazy {
70
- readonly _tag: "Lazy";
71
- readonly thunk: () => Grammar<any>;
72
- readonly name: string | undefined;
73
- /** Memoized `thunk()` result, filled in on first use. */
74
- resolved?: Grammar<any>;
75
- }
76
- export interface End {
77
- readonly _tag: "End";
78
- }
79
- export interface Bind {
80
- readonly _tag: "Bind";
81
- readonly inner: Grammar<any>;
82
- readonly to: (a: any) => Grammar<any>;
83
- readonly from: ((b: any) => any) | undefined;
84
- }
85
- export interface Count {
86
- readonly _tag: "Count";
87
- readonly inner: Grammar<any>;
88
- readonly n: number;
89
- }
90
- export interface Guard {
91
- readonly _tag: "Guard";
92
- readonly inner: Grammar<any>;
93
- readonly pred: (value: any) => boolean;
94
- }
95
- export interface Label {
96
- readonly _tag: "Label";
97
- readonly expected: string;
98
- readonly inner: Grammar<any>;
99
- }
100
- export type Node = Literal | Regex | MapNode | StructNode | Choice | Many | SepBy | Optional | Attempt | FromEffect | Lazy | End | Bind | Count | Guard | Label;
101
- export type Grammar<A> = Node & {
102
- readonly [typeId]?: A;
103
- };
104
- export type GrammarType<G> = G extends Grammar<infer A> ? A : never;
105
- export declare const literal: <L extends string>(value: L) => Grammar<L>;
106
- /** Clone the pattern and drop `g`/`y` so `lastIndex` and sticky start never affect matching. */
107
- export declare const regex: (re: RegExp, expected: string) => Grammar<string>;
108
- export declare const map: <A, B>(inner: Grammar<A>, f: {
109
- readonly to: (a: A) => B;
110
- readonly from?: (b: B) => A;
111
- }) => Grammar<B>;
112
- export declare const struct: <F extends Record<string, Grammar<any>>>(fields: F) => Grammar<{ [K in keyof F]: GrammarType<F[K]>; }>;
113
- export declare const choice: <Gs extends readonly [Grammar<any>, ...Array<Grammar<any>>]>(...options: Gs) => Grammar<GrammarType<Gs[number]>>;
114
- export declare const many: <A>(inner: Grammar<A>, opts?: {
115
- readonly atLeast?: number;
116
- }) => Grammar<Array<A>>;
117
- export declare const sepBy: <A, S>(inner: Grammar<A>, sep: Grammar<S>) => Grammar<Array<A>>;
118
- /** Like `sepBy`, but requires at least one element — the first failure propagates. */
119
- export declare const sepBy1: <A, S>(inner: Grammar<A>, sep: Grammar<S>) => Grammar<Array<A>>;
120
- export declare const optional: <A>(inner: Grammar<A>) => Grammar<A | undefined>;
121
- /**
122
- * Rewind on failure: if `inner` fails after consuming input, restore the
123
- * position so an enclosing `choice` tries its next option.
124
- */
125
- export declare const attempt: <A>(inner: Grammar<A>) => Grammar<A>;
126
- /**
127
- * Print-time filter: parse runs `inner` unchanged, but printing fails with
128
- * `PrintError` when `pred(value)` is false — so an enclosing `choice` moves
129
- * on to its next option.
130
- */
131
- export declare const guard: <A>(inner: Grammar<A>, pred: (value: A) => boolean) => Grammar<A>;
132
- /**
133
- * Name a grammar for error messages. Replaces `expected` only when `inner`
134
- * fails without consuming input. Print is transparent; render shows
135
- * `<expected>` when `inner` is a raw regex.
136
- */
137
- export declare const label: <A>(expected: string, inner: Grammar<A>) => Grammar<A>;
138
- export declare const fromEffect: <A>(eff: Effect.Effect<A, ParseError, ParseState>, expected: string) => Grammar<A>;
139
- /**
140
- * Defer grammar construction to first use — the building block for recursive
141
- * grammars. The thunk result is memoized on the node. `name` is what `render`
142
- * shows at the recursion point.
143
- */
144
- export declare const lazy: <A>(thunk: () => Grammar<A>, opts?: {
145
- readonly name?: string;
146
- }) => Grammar<A>;
147
- /** Zero-width assertion: succeeds only at end of input. Prints as "". */
148
- export declare const end: Grammar<void>;
149
- /**
150
- * Dependent parsing: the grammar that runs next is computed from the value
151
- * just parsed (e.g. a length prefix deciding how many chars to read).
152
- * Printable when `from` recovers the intermediate value from the result.
153
- */
154
- export declare const bind: <A, B>(inner: Grammar<A>, f: {
155
- readonly to: (a: A) => Grammar<B>;
156
- readonly from?: (b: B) => A;
157
- }) => Grammar<B>;
158
- /** Run `inner` exactly `n` times, collecting the results. */
159
- export declare const count: <A>(inner: Grammar<A>, n: number) => Grammar<Array<A>>;
160
- export declare const integer: Grammar<number>;
161
- /** Run `inner`, then skip trailing whitespace. Printing emits one canonical space. */
162
- export declare const lexeme: <A>(inner: Grammar<A>) => Grammar<A>;
163
- /** A literal that skips trailing whitespace. */
164
- export declare const symbol: <L extends string>(s: L) => Grammar<L>;
165
- /**
166
- * Run `open`, `inner`, `close` in sequence, keeping only `inner`'s value.
167
- * Print supplies `undefined` for open/close — they must be value-ignoring
168
- * printers (`literal`, `symbol`, `end`, or a transparent wrapper around those).
169
- */
170
- export declare const between: <O, C, A>(open: Grammar<O>, close: Grammar<C>, inner: Grammar<A>) => Grammar<A>;
171
- export declare const parse: <A>(input: string, grammar: Grammar<A>) => Effect.Effect<A, ParseError>;
172
- /** Like `parse`, but leaves the cursor wherever the grammar stopped — trailing input is allowed. */
173
- export declare const parsePrefix: <A>(input: string, grammar: Grammar<A>) => Effect.Effect<A, ParseError>;
174
- /** Run a grammar once over a stream of chunks. See `parseStream` in `stream.ts`. */
175
- export declare const parseStream: <A, E2, R2>(input: Stream.Stream<string, E2, R2>, grammar: Grammar<A>) => Effect.Effect<A, ParseError | UpstreamError, Exclude<R2, Scope.Scope>>;
176
- /** Parse a stream of chunks into a stream of values, one per grammar run. */
177
- export declare const streamElements: <A, E2, R2>(input: Stream.Stream<string, E2, R2>, grammar: Grammar<A>) => Stream.Stream<A, ParseError | UpstreamError, Exclude<R2, Scope.Scope>>;
178
- export declare const print: <A>(grammar: Grammar<A>, value: A) => Effect.Effect<string, PrintError>;
179
- /**
180
- * Law: `parse(print(value))` equals `value` (structurally).
181
- *
182
- * Prints, re-parses with strict EOF, then compares with `Equal.equals`.
183
- * Fails with {@link RoundTripError} naming the stage that broke.
184
- */
185
- export declare const checkRoundTrip: <A>(grammar: Grammar<A>, value: A) => Effect.Effect<void, RoundTripError>;
186
- export declare const render: (g: Grammar<any>) => string;
187
- export declare const toSchema: <S extends Schema.Top>(grammar: Grammar<S["Encoded"]>, target: S, options?: {
188
- readonly identifier?: string;
189
- }) => Schema.decodeTo<S, Schema.String, never, never>;
190
- export {};
1
+ export * from "./errors.ts";
2
+ export * from "./core.ts";
3
+ export * from "./combinators.ts";
4
+ export * from "./parse.ts";
5
+ export * from "./print.ts";
6
+ export * from "./render.ts";
7
+ export * from "./schema.ts";
191
8
  //# sourceMappingURL=grammar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}