@thomasfosterau/effect-parse 0.0.0-stage → 0.0.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/LICENSE +21 -0
- package/README.md +550 -2
- package/dist/Ascii.d.ts +392 -0
- package/dist/Ascii.d.ts.map +1 -0
- package/dist/Ascii.js +610 -0
- package/dist/Ascii.js.map +1 -0
- package/dist/Binary.d.ts +153 -0
- package/dist/Binary.d.ts.map +1 -0
- package/dist/Binary.js +171 -0
- package/dist/Binary.js.map +1 -0
- package/dist/Bits.d.ts +60 -0
- package/dist/Bits.d.ts.map +1 -0
- package/dist/Bits.js +144 -0
- package/dist/Bits.js.map +1 -0
- package/dist/Encoding.d.ts +116 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +85 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Expression.d.ts +124 -0
- package/dist/Expression.d.ts.map +1 -0
- package/dist/Expression.js +139 -0
- package/dist/Expression.js.map +1 -0
- package/dist/Input.d.ts +301 -0
- package/dist/Input.d.ts.map +1 -0
- package/dist/Input.js +312 -0
- package/dist/Input.js.map +1 -0
- package/dist/Nom.d.ts +518 -0
- package/dist/Nom.d.ts.map +1 -0
- package/dist/Nom.js +519 -0
- package/dist/Nom.js.map +1 -0
- package/dist/ParseError.d.ts +120 -0
- package/dist/ParseError.d.ts.map +1 -0
- package/dist/ParseError.js +301 -0
- package/dist/ParseError.js.map +1 -0
- package/dist/Parser.d.ts +1312 -0
- package/dist/Parser.d.ts.map +1 -0
- package/dist/Parser.js +1936 -0
- package/dist/Parser.js.map +1 -0
- package/dist/ParserSchema.d.ts +31 -0
- package/dist/ParserSchema.d.ts.map +1 -0
- package/dist/ParserSchema.js +56 -0
- package/dist/ParserSchema.js.map +1 -0
- package/dist/ParserStream.d.ts +127 -0
- package/dist/ParserStream.d.ts.map +1 -0
- package/dist/ParserStream.js +270 -0
- package/dist/ParserStream.js.map +1 -0
- package/dist/Text.d.ts +330 -0
- package/dist/Text.d.ts.map +1 -0
- package/dist/Text.js +529 -0
- package/dist/Text.js.map +1 -0
- package/dist/Token.d.ts +225 -0
- package/dist/Token.d.ts.map +1 -0
- package/dist/Token.js +294 -0
- package/dist/Token.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/compiler/closure.d.ts +25 -0
- package/dist/internal/compiler/closure.d.ts.map +1 -0
- package/dist/internal/compiler/closure.js +1668 -0
- package/dist/internal/compiler/closure.js.map +1 -0
- package/dist/internal/compiler/entries.d.ts +19 -0
- package/dist/internal/compiler/entries.d.ts.map +1 -0
- package/dist/internal/compiler/entries.js +32 -0
- package/dist/internal/compiler/entries.js.map +1 -0
- package/dist/internal/compiler/first.d.ts +33 -0
- package/dist/internal/compiler/first.d.ts.map +1 -0
- package/dist/internal/compiler/first.js +235 -0
- package/dist/internal/compiler/first.js.map +1 -0
- package/dist/internal/compiler/jit.d.ts +20 -0
- package/dist/internal/compiler/jit.d.ts.map +1 -0
- package/dist/internal/compiler/jit.js +1030 -0
- package/dist/internal/compiler/jit.js.map +1 -0
- package/dist/internal/compiler/registry.d.ts +34 -0
- package/dist/internal/compiler/registry.d.ts.map +1 -0
- package/dist/internal/compiler/registry.js +46 -0
- package/dist/internal/compiler/registry.js.map +1 -0
- package/dist/internal/compiler/sets.d.ts +29 -0
- package/dist/internal/compiler/sets.d.ts.map +1 -0
- package/dist/internal/compiler/sets.js +85 -0
- package/dist/internal/compiler/sets.js.map +1 -0
- package/dist/internal/entries.d.ts +27 -0
- package/dist/internal/entries.d.ts.map +1 -0
- package/dist/internal/entries.js +42 -0
- package/dist/internal/entries.js.map +1 -0
- package/dist/internal/node.d.ts +251 -0
- package/dist/internal/node.d.ts.map +1 -0
- package/dist/internal/node.js +73 -0
- package/dist/internal/node.js.map +1 -0
- package/dist/internal/numbers.d.ts +41 -0
- package/dist/internal/numbers.d.ts.map +1 -0
- package/dist/internal/numbers.js +302 -0
- package/dist/internal/numbers.js.map +1 -0
- package/dist/internal/resume.d.ts +39 -0
- package/dist/internal/resume.d.ts.map +1 -0
- package/dist/internal/resume.js +37 -0
- package/dist/internal/resume.js.map +1 -0
- package/dist/internal/text.d.ts +72 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +391 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/tokens.d.ts +93 -0
- package/dist/internal/tokens.d.ts.map +1 -0
- package/dist/internal/tokens.js +400 -0
- package/dist/internal/tokens.js.map +1 -0
- package/package.json +115 -3
- package/src/Ascii.ts +741 -0
- package/src/Binary.ts +228 -0
- package/src/Bits.ts +192 -0
- package/src/Encoding.ts +128 -0
- package/src/Expression.ts +245 -0
- package/src/Input.ts +429 -0
- package/src/Nom.ts +642 -0
- package/src/ParseError.ts +378 -0
- package/src/Parser.ts +2763 -0
- package/src/ParserSchema.ts +87 -0
- package/src/ParserStream.ts +390 -0
- package/src/Text.ts +757 -0
- package/src/Token.ts +416 -0
- package/src/index.ts +16 -0
- package/src/internal/compiler/closure.ts +1583 -0
- package/src/internal/compiler/entries.ts +36 -0
- package/src/internal/compiler/first.ts +252 -0
- package/src/internal/compiler/jit.ts +1091 -0
- package/src/internal/compiler/registry.ts +79 -0
- package/src/internal/compiler/sets.ts +100 -0
- package/src/internal/entries.ts +51 -0
- package/src/internal/node.ts +207 -0
- package/src/internal/numbers.ts +291 -0
- package/src/internal/resume.ts +55 -0
- package/src/internal/text.ts +411 -0
- package/src/internal/tokens.ts +409 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Input, State } from "../Input.js";
|
|
2
|
+
/** A compiled token set. */
|
|
3
|
+
export interface Matcher {
|
|
4
|
+
/** Tests a code point (string input) or a byte (Uint8Array input). */
|
|
5
|
+
readonly code: (code: number) => boolean;
|
|
6
|
+
/** Tests an element of an array input. */
|
|
7
|
+
readonly token: (token: unknown) => boolean;
|
|
8
|
+
/** Human readable description, used in error messages. */
|
|
9
|
+
readonly description: string;
|
|
10
|
+
}
|
|
11
|
+
/** @internal */
|
|
12
|
+
export interface TokenRangeLike {
|
|
13
|
+
readonly _tag: "TokenRange";
|
|
14
|
+
readonly from: string | number;
|
|
15
|
+
readonly to: string | number;
|
|
16
|
+
}
|
|
17
|
+
/** @internal */
|
|
18
|
+
export declare const describeChar: (s: string) => string;
|
|
19
|
+
/** Renders bytes as a Rust-style byte string literal: b"GET\r\n". */
|
|
20
|
+
export declare const describeBytes: (bytes: Uint8Array) => string;
|
|
21
|
+
/**
|
|
22
|
+
* Marks a predicate over characters that also accepts a code point (a
|
|
23
|
+
* number), so string inputs can call it without allocating a string per
|
|
24
|
+
* character.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CodePointPredicate: unique symbol;
|
|
27
|
+
/**
|
|
28
|
+
* The code points accepted by a predicate, as sorted, disjoint, inclusive
|
|
29
|
+
* ranges, when they are known. The compiler turns such predicates into
|
|
30
|
+
* comparisons or tables.
|
|
31
|
+
*/
|
|
32
|
+
export declare const PredicateRanges: unique symbol;
|
|
33
|
+
/**
|
|
34
|
+
* Marks `f` as a {@link CodePointPredicate} named `name` (used in error
|
|
35
|
+
* messages), optionally recording the code point ranges it accepts.
|
|
36
|
+
*/
|
|
37
|
+
export declare const codePointPredicate: <F extends (c: never) => boolean>(name: string, f: F, ranges?: ReadonlyArray<readonly [number, number]>) => F;
|
|
38
|
+
/**
|
|
39
|
+
* Compiles a token set. Predicates for string inputs receive the token as a
|
|
40
|
+
* string, so they are wrapped here.
|
|
41
|
+
*/
|
|
42
|
+
export declare const compile: (set: unknown, kind?: "string" | "code") => Matcher;
|
|
43
|
+
/**
|
|
44
|
+
* A matcher that works for every input kind. String predicates receive the
|
|
45
|
+
* token as a string, byte predicates receive numbers.
|
|
46
|
+
*/
|
|
47
|
+
export interface AnyMatcher {
|
|
48
|
+
readonly forString: Matcher;
|
|
49
|
+
readonly forCode: Matcher;
|
|
50
|
+
readonly description: string;
|
|
51
|
+
}
|
|
52
|
+
export declare const compileAny: (set: unknown) => AnyMatcher;
|
|
53
|
+
/**
|
|
54
|
+
* Whether the string token at `i` is a high surrogate at the very end of a
|
|
55
|
+
* partial input, i.e. the first half of a code point whose second half has
|
|
56
|
+
* not arrived yet.
|
|
57
|
+
*/
|
|
58
|
+
export declare const splitSurrogate: (state: State<Input>, i: number) => boolean;
|
|
59
|
+
/** Reads the code point at `i` of a string. */
|
|
60
|
+
export declare const codePointAt: (s: string, i: number) => number;
|
|
61
|
+
/**
|
|
62
|
+
* Tests the token at the current position. Returns the token (as the input's
|
|
63
|
+
* token type) and advances, or returns `NoMatch`/`End`.
|
|
64
|
+
*/
|
|
65
|
+
export declare const NoMatch: unique symbol;
|
|
66
|
+
export declare const End: unique symbol;
|
|
67
|
+
export declare const nextIf: (state: State<Input>, m: AnyMatcher, negate: boolean) => unknown;
|
|
68
|
+
/**
|
|
69
|
+
* Scans forward while tokens satisfy the matcher (xor `negate`), up to `max`
|
|
70
|
+
* tokens. Returns the offset reached, the number of tokens matched, and
|
|
71
|
+
* whether the end of input was hit before `max` tokens.
|
|
72
|
+
*/
|
|
73
|
+
export declare const scan: (state: State<Input>, m: AnyMatcher, negate: boolean, max: number) => {
|
|
74
|
+
readonly offset: number;
|
|
75
|
+
readonly count: number;
|
|
76
|
+
readonly hitEnd: boolean;
|
|
77
|
+
};
|
|
78
|
+
/** Advances `n` tokens from `start`, returning the offset reached and the count. */
|
|
79
|
+
export declare const advance: (state: State<Input>, start: number, n: number) => {
|
|
80
|
+
offset: number;
|
|
81
|
+
count: number;
|
|
82
|
+
};
|
|
83
|
+
/** Counts tokens between two offsets. */
|
|
84
|
+
export declare const countTokens: (state: State<Input>, start: number, end: number) => number;
|
|
85
|
+
/** Finds `needle` in the input at or after `from`; returns -1 if absent. */
|
|
86
|
+
export declare const indexOf: (state: State<Input>, needle: Input, from: number) => number;
|
|
87
|
+
/**
|
|
88
|
+
* Compares the input at the current position with a literal. Returns the
|
|
89
|
+
* number of matching units if the literal matches completely (its length),
|
|
90
|
+
* -1 on mismatch, or -2 when the input ends while matching a prefix.
|
|
91
|
+
*/
|
|
92
|
+
export declare const matchLiteral: (state: State<Input>, lit: Input, caseless: boolean) => number;
|
|
93
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/internal/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
const isRange = (u) => typeof u === "object" && u !== null && u._tag === "TokenRange";
|
|
2
|
+
const toCode = (u) => typeof u === "number" ? u : u.codePointAt(0);
|
|
3
|
+
/** @internal */
|
|
4
|
+
export const describeChar = (s) => JSON.stringify(s);
|
|
5
|
+
const describeSet = (u) => {
|
|
6
|
+
if (typeof u === "string") {
|
|
7
|
+
const chars = Array.from(u);
|
|
8
|
+
return chars.length === 1 ? describeChar(u) : `one of ${JSON.stringify(u)}`;
|
|
9
|
+
}
|
|
10
|
+
if (typeof u === "number")
|
|
11
|
+
return `0x${u.toString(16).padStart(2, "0")}`;
|
|
12
|
+
if (typeof u === "function")
|
|
13
|
+
return u.name ? u.name : "a matching token";
|
|
14
|
+
if (u instanceof Uint8Array)
|
|
15
|
+
return `one of ${describeBytes(u)}`;
|
|
16
|
+
if (isRange(u))
|
|
17
|
+
return `${describeSet(u.from)}..=${describeSet(u.to)}`;
|
|
18
|
+
if (Array.isArray(u))
|
|
19
|
+
return u.map(describeSet).join(" or ");
|
|
20
|
+
return JSON.stringify(u);
|
|
21
|
+
};
|
|
22
|
+
/** Renders bytes as a Rust-style byte string literal: b"GET\r\n". */
|
|
23
|
+
export const describeBytes = (bytes) => {
|
|
24
|
+
let out = "b\"";
|
|
25
|
+
for (const b of bytes) {
|
|
26
|
+
if (b === 0x22)
|
|
27
|
+
out += "\\\"";
|
|
28
|
+
else if (b === 0x5c)
|
|
29
|
+
out += "\\\\";
|
|
30
|
+
else if (b === 0x0a)
|
|
31
|
+
out += "\\n";
|
|
32
|
+
else if (b === 0x0d)
|
|
33
|
+
out += "\\r";
|
|
34
|
+
else if (b === 0x09)
|
|
35
|
+
out += "\\t";
|
|
36
|
+
else if (b >= 0x20 && b < 0x7f)
|
|
37
|
+
out += String.fromCharCode(b);
|
|
38
|
+
else
|
|
39
|
+
out += `\\x${b.toString(16).padStart(2, "0")}`;
|
|
40
|
+
}
|
|
41
|
+
return out + "\"";
|
|
42
|
+
};
|
|
43
|
+
const compileCode = (u) => {
|
|
44
|
+
if (typeof u === "string") {
|
|
45
|
+
const codes = Array.from(u, (c) => c.codePointAt(0));
|
|
46
|
+
if (codes.length === 1) {
|
|
47
|
+
const c = codes[0];
|
|
48
|
+
return (x) => x === c;
|
|
49
|
+
}
|
|
50
|
+
return bitmap(codes);
|
|
51
|
+
}
|
|
52
|
+
if (typeof u === "number")
|
|
53
|
+
return (x) => x === u;
|
|
54
|
+
if (typeof u === "function")
|
|
55
|
+
return u;
|
|
56
|
+
if (u instanceof Uint8Array)
|
|
57
|
+
return bitmap(Array.from(u));
|
|
58
|
+
if (isRange(u)) {
|
|
59
|
+
const from = toCode(u.from);
|
|
60
|
+
const to = toCode(u.to);
|
|
61
|
+
return (x) => x >= from && x <= to;
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(u)) {
|
|
64
|
+
const tests = u.map(compileCode);
|
|
65
|
+
if (tests.length === 1)
|
|
66
|
+
return tests[0];
|
|
67
|
+
return (x) => {
|
|
68
|
+
for (let i = 0; i < tests.length; i++)
|
|
69
|
+
if (tests[i](x))
|
|
70
|
+
return true;
|
|
71
|
+
return false;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
throw new TypeError(`invalid token set: ${String(u)}`);
|
|
75
|
+
};
|
|
76
|
+
const bitmap = (codes) => {
|
|
77
|
+
const ascii = new Uint8Array(256);
|
|
78
|
+
let other;
|
|
79
|
+
for (const c of codes) {
|
|
80
|
+
if (c < 256)
|
|
81
|
+
ascii[c] = 1;
|
|
82
|
+
else
|
|
83
|
+
(other ??= new Set()).add(c);
|
|
84
|
+
}
|
|
85
|
+
if (other === undefined)
|
|
86
|
+
return (x) => x < 256 && ascii[x] === 1;
|
|
87
|
+
const set = other;
|
|
88
|
+
return (x) => x < 256 ? ascii[x] === 1 : set.has(x);
|
|
89
|
+
};
|
|
90
|
+
const compileToken = (u) => {
|
|
91
|
+
if (typeof u === "function")
|
|
92
|
+
return u;
|
|
93
|
+
if (Array.isArray(u)) {
|
|
94
|
+
const set = new Set(u);
|
|
95
|
+
return (t) => set.has(t);
|
|
96
|
+
}
|
|
97
|
+
return (t) => t === u;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Marks a predicate over characters that also accepts a code point (a
|
|
101
|
+
* number), so string inputs can call it without allocating a string per
|
|
102
|
+
* character.
|
|
103
|
+
*/
|
|
104
|
+
export const CodePointPredicate = Symbol.for("effect-parse/CodePointPredicate");
|
|
105
|
+
/**
|
|
106
|
+
* The code points accepted by a predicate, as sorted, disjoint, inclusive
|
|
107
|
+
* ranges, when they are known. The compiler turns such predicates into
|
|
108
|
+
* comparisons or tables.
|
|
109
|
+
*/
|
|
110
|
+
export const PredicateRanges = Symbol.for("effect-parse/PredicateRanges");
|
|
111
|
+
/**
|
|
112
|
+
* Marks `f` as a {@link CodePointPredicate} named `name` (used in error
|
|
113
|
+
* messages), optionally recording the code point ranges it accepts.
|
|
114
|
+
*/
|
|
115
|
+
export const codePointPredicate = (name, f, ranges) => {
|
|
116
|
+
Object.defineProperty(f, "name", { value: name });
|
|
117
|
+
f[CodePointPredicate] = true;
|
|
118
|
+
if (ranges !== undefined)
|
|
119
|
+
f[PredicateRanges] = ranges;
|
|
120
|
+
return f;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Compiles a token set. Predicates for string inputs receive the token as a
|
|
124
|
+
* string, so they are wrapped here.
|
|
125
|
+
*/
|
|
126
|
+
export const compile = (set, kind = "code") => {
|
|
127
|
+
const description = describeSet(set);
|
|
128
|
+
let code;
|
|
129
|
+
if (typeof set === "function" && kind === "string" && !(CodePointPredicate in set)) {
|
|
130
|
+
const pred = set;
|
|
131
|
+
code = (x) => pred(String.fromCodePoint(x));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
code = compileCodeSafe(set, kind);
|
|
135
|
+
}
|
|
136
|
+
return { code, token: compileToken(set), description };
|
|
137
|
+
};
|
|
138
|
+
const compileCodeSafe = (set, kind) => {
|
|
139
|
+
if (Array.isArray(set) && kind === "string") {
|
|
140
|
+
// Predicates nested in arrays also take strings
|
|
141
|
+
const tests = set.map((s) => compile(s, kind).code);
|
|
142
|
+
return (x) => {
|
|
143
|
+
for (let i = 0; i < tests.length; i++)
|
|
144
|
+
if (tests[i](x))
|
|
145
|
+
return true;
|
|
146
|
+
return false;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
return compileCode(set);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return () => false;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
export const compileAny = (set) => {
|
|
157
|
+
const forCode = compile(set, "code");
|
|
158
|
+
const needsString = typeof set === "function" || Array.isArray(set);
|
|
159
|
+
return {
|
|
160
|
+
forString: needsString ? compile(set, "string") : forCode,
|
|
161
|
+
forCode,
|
|
162
|
+
description: forCode.description
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Whether the string token at `i` is a high surrogate at the very end of a
|
|
167
|
+
* partial input, i.e. the first half of a code point whose second half has
|
|
168
|
+
* not arrived yet.
|
|
169
|
+
*/
|
|
170
|
+
export const splitSurrogate = (state, i) => {
|
|
171
|
+
if (!state.partial || i !== state.end - 1)
|
|
172
|
+
return false;
|
|
173
|
+
const c = state.input.charCodeAt(i);
|
|
174
|
+
return c >= 0xd800 && c <= 0xdbff;
|
|
175
|
+
};
|
|
176
|
+
/** Reads the code point at `i` of a string. */
|
|
177
|
+
export const codePointAt = (s, i) => {
|
|
178
|
+
const c = s.charCodeAt(i);
|
|
179
|
+
if (c >= 0xd800 && c <= 0xdbff && i + 1 < s.length) {
|
|
180
|
+
const d = s.charCodeAt(i + 1);
|
|
181
|
+
if (d >= 0xdc00 && d <= 0xdfff)
|
|
182
|
+
return ((c - 0xd800) << 10) + (d - 0xdc00) + 0x10000;
|
|
183
|
+
}
|
|
184
|
+
return c;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Tests the token at the current position. Returns the token (as the input's
|
|
188
|
+
* token type) and advances, or returns `NoMatch`/`End`.
|
|
189
|
+
*/
|
|
190
|
+
export const NoMatch = Symbol("NoMatch");
|
|
191
|
+
export const End = Symbol("End");
|
|
192
|
+
export const nextIf = (state, m, negate) => {
|
|
193
|
+
const pos = state.pos;
|
|
194
|
+
if (pos >= state.end)
|
|
195
|
+
return End;
|
|
196
|
+
switch (state.inputKind) {
|
|
197
|
+
case 0: {
|
|
198
|
+
const s = state.input;
|
|
199
|
+
if (splitSurrogate(state, pos))
|
|
200
|
+
return End;
|
|
201
|
+
const cp = codePointAt(s, pos);
|
|
202
|
+
if (m.forString.code(cp) === negate)
|
|
203
|
+
return NoMatch;
|
|
204
|
+
const len = cp > 0xffff ? 2 : 1;
|
|
205
|
+
state.pos = pos + len;
|
|
206
|
+
return len === 1 ? s[pos] : s.slice(pos, pos + 2);
|
|
207
|
+
}
|
|
208
|
+
case 1: {
|
|
209
|
+
const b = state.input[pos];
|
|
210
|
+
if (m.forCode.code(b) === negate)
|
|
211
|
+
return NoMatch;
|
|
212
|
+
state.pos = pos + 1;
|
|
213
|
+
return b;
|
|
214
|
+
}
|
|
215
|
+
default: {
|
|
216
|
+
const t = state.input[pos];
|
|
217
|
+
if (m.forCode.token(t) === negate)
|
|
218
|
+
return NoMatch;
|
|
219
|
+
state.pos = pos + 1;
|
|
220
|
+
return t;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Scans forward while tokens satisfy the matcher (xor `negate`), up to `max`
|
|
226
|
+
* tokens. Returns the offset reached, the number of tokens matched, and
|
|
227
|
+
* whether the end of input was hit before `max` tokens.
|
|
228
|
+
*/
|
|
229
|
+
export const scan = (state, m, negate, max) => {
|
|
230
|
+
let i = state.pos;
|
|
231
|
+
const end = state.end;
|
|
232
|
+
let count = 0;
|
|
233
|
+
switch (state.inputKind) {
|
|
234
|
+
case 0: {
|
|
235
|
+
const s = state.input;
|
|
236
|
+
const test = m.forString.code;
|
|
237
|
+
while (count < max) {
|
|
238
|
+
if (i >= end)
|
|
239
|
+
return { offset: i, count, hitEnd: true };
|
|
240
|
+
const c = s.charCodeAt(i);
|
|
241
|
+
if (c < 0xd800 || c > 0xdbff) {
|
|
242
|
+
if (test(c) === negate)
|
|
243
|
+
break;
|
|
244
|
+
i++;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
if (splitSurrogate(state, i))
|
|
248
|
+
return { offset: i, count, hitEnd: true };
|
|
249
|
+
const cp = codePointAt(s, i);
|
|
250
|
+
if (test(cp) === negate)
|
|
251
|
+
break;
|
|
252
|
+
i += cp > 0xffff ? 2 : 1;
|
|
253
|
+
}
|
|
254
|
+
count++;
|
|
255
|
+
}
|
|
256
|
+
return { offset: i, count, hitEnd: false };
|
|
257
|
+
}
|
|
258
|
+
case 1: {
|
|
259
|
+
const bytes = state.input;
|
|
260
|
+
const test = m.forCode.code;
|
|
261
|
+
while (count < max) {
|
|
262
|
+
if (i >= end)
|
|
263
|
+
return { offset: i, count, hitEnd: true };
|
|
264
|
+
if (test(bytes[i]) === negate)
|
|
265
|
+
break;
|
|
266
|
+
i++;
|
|
267
|
+
count++;
|
|
268
|
+
}
|
|
269
|
+
return { offset: i, count, hitEnd: false };
|
|
270
|
+
}
|
|
271
|
+
default: {
|
|
272
|
+
const arr = state.input;
|
|
273
|
+
const test = m.forCode.token;
|
|
274
|
+
while (count < max) {
|
|
275
|
+
if (i >= end)
|
|
276
|
+
return { offset: i, count, hitEnd: true };
|
|
277
|
+
if (test(arr[i]) === negate)
|
|
278
|
+
break;
|
|
279
|
+
i++;
|
|
280
|
+
count++;
|
|
281
|
+
}
|
|
282
|
+
return { offset: i, count, hitEnd: false };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
/** Advances `n` tokens from `start`, returning the offset reached and the count. */
|
|
287
|
+
export const advance = (state, start, n) => {
|
|
288
|
+
if (state.inputKind !== 0) {
|
|
289
|
+
const offset = Math.min(state.end, start + n);
|
|
290
|
+
return { offset, count: offset - start };
|
|
291
|
+
}
|
|
292
|
+
const s = state.input;
|
|
293
|
+
let i = start;
|
|
294
|
+
let count = 0;
|
|
295
|
+
while (count < n && i < state.end) {
|
|
296
|
+
if (splitSurrogate(state, i))
|
|
297
|
+
break;
|
|
298
|
+
const c = s.charCodeAt(i);
|
|
299
|
+
i += c >= 0xd800 && c <= 0xdbff && i + 1 < s.length && (s.charCodeAt(i + 1) & 0xfc00) === 0xdc00 ? 2 : 1;
|
|
300
|
+
count++;
|
|
301
|
+
}
|
|
302
|
+
return { offset: i, count };
|
|
303
|
+
};
|
|
304
|
+
/** Counts tokens between two offsets. */
|
|
305
|
+
export const countTokens = (state, start, end) => {
|
|
306
|
+
if (state.inputKind !== 0)
|
|
307
|
+
return end - start;
|
|
308
|
+
const s = state.input;
|
|
309
|
+
let count = 0;
|
|
310
|
+
for (let i = start; i < end; i++) {
|
|
311
|
+
const c = s.charCodeAt(i);
|
|
312
|
+
if (c >= 0xd800 && c <= 0xdbff && i + 1 < end && (s.charCodeAt(i + 1) & 0xfc00) === 0xdc00)
|
|
313
|
+
i++;
|
|
314
|
+
count++;
|
|
315
|
+
}
|
|
316
|
+
return count;
|
|
317
|
+
};
|
|
318
|
+
/** Finds `needle` in the input at or after `from`; returns -1 if absent. */
|
|
319
|
+
export const indexOf = (state, needle, from) => {
|
|
320
|
+
switch (state.inputKind) {
|
|
321
|
+
case 0:
|
|
322
|
+
return state.input.indexOf(needle, from);
|
|
323
|
+
case 1: {
|
|
324
|
+
const hay = state.input;
|
|
325
|
+
const n = needle;
|
|
326
|
+
if (n.length === 0)
|
|
327
|
+
return from <= hay.length ? from : -1;
|
|
328
|
+
const first = n[0];
|
|
329
|
+
let i = hay.indexOf(first, from);
|
|
330
|
+
while (i !== -1 && i + n.length <= hay.length) {
|
|
331
|
+
let j = 1;
|
|
332
|
+
while (j < n.length && hay[i + j] === n[j])
|
|
333
|
+
j++;
|
|
334
|
+
if (j === n.length)
|
|
335
|
+
return i;
|
|
336
|
+
i = hay.indexOf(first, i + 1);
|
|
337
|
+
}
|
|
338
|
+
return -1;
|
|
339
|
+
}
|
|
340
|
+
default: {
|
|
341
|
+
const hay = state.input;
|
|
342
|
+
const n = needle;
|
|
343
|
+
outer: for (let i = from; i + n.length <= hay.length; i++) {
|
|
344
|
+
for (let j = 0; j < n.length; j++)
|
|
345
|
+
if (hay[i + j] !== n[j])
|
|
346
|
+
continue outer;
|
|
347
|
+
return i;
|
|
348
|
+
}
|
|
349
|
+
return -1;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
/**
|
|
354
|
+
* Compares the input at the current position with a literal. Returns the
|
|
355
|
+
* number of matching units if the literal matches completely (its length),
|
|
356
|
+
* -1 on mismatch, or -2 when the input ends while matching a prefix.
|
|
357
|
+
*/
|
|
358
|
+
export const matchLiteral = (state, lit, caseless) => {
|
|
359
|
+
const pos = state.pos;
|
|
360
|
+
const len = lit.length;
|
|
361
|
+
const avail = state.end - pos;
|
|
362
|
+
const n = Math.min(len, avail);
|
|
363
|
+
switch (state.inputKind) {
|
|
364
|
+
case 0: {
|
|
365
|
+
const s = state.input;
|
|
366
|
+
const l = lit;
|
|
367
|
+
if (!caseless) {
|
|
368
|
+
if (avail >= len)
|
|
369
|
+
return s.startsWith(l, pos) ? len : -1;
|
|
370
|
+
return l.startsWith(s.slice(pos)) ? -2 : -1;
|
|
371
|
+
}
|
|
372
|
+
for (let i = 0; i < n; i++) {
|
|
373
|
+
if (lowerAscii(s.charCodeAt(pos + i)) !== lowerAscii(l.charCodeAt(i)))
|
|
374
|
+
return -1;
|
|
375
|
+
}
|
|
376
|
+
return n === len ? len : -2;
|
|
377
|
+
}
|
|
378
|
+
case 1: {
|
|
379
|
+
const b = state.input;
|
|
380
|
+
const l = lit;
|
|
381
|
+
for (let i = 0; i < n; i++) {
|
|
382
|
+
const x = b[pos + i];
|
|
383
|
+
const y = l[i];
|
|
384
|
+
if (caseless ? lowerAscii(x) !== lowerAscii(y) : x !== y)
|
|
385
|
+
return -1;
|
|
386
|
+
}
|
|
387
|
+
return n === len ? len : -2;
|
|
388
|
+
}
|
|
389
|
+
default: {
|
|
390
|
+
const a = state.input;
|
|
391
|
+
const l = lit;
|
|
392
|
+
for (let i = 0; i < n; i++)
|
|
393
|
+
if (a[pos + i] !== l[i])
|
|
394
|
+
return -1;
|
|
395
|
+
return n === len ? len : -2;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
const lowerAscii = (c) => c >= 65 && c <= 90 ? c + 32 : c;
|
|
400
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/internal/tokens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,118 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thomasfosterau/effect-parse",
|
|
3
|
-
"version": "0.0.0
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "Parser combinators for Effect, ported from Rust's nom and winnow: text, bytes, bits and token streams, streaming input, compiled parsers and Schema integration",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"effect",
|
|
7
|
+
"parser",
|
|
8
|
+
"parser-combinators",
|
|
9
|
+
"nom",
|
|
10
|
+
"winnow",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/thomasfosterau/effect-parse#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/thomasfosterau/effect-parse/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/thomasfosterau/effect-parse.git"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"author": "Thomas Foster <me@thomasfoster.au>",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22"
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./Input": {
|
|
34
|
+
"types": "./dist/Input.d.ts",
|
|
35
|
+
"default": "./dist/Input.js"
|
|
36
|
+
},
|
|
37
|
+
"./Parser": {
|
|
38
|
+
"types": "./dist/Parser.d.ts",
|
|
39
|
+
"default": "./dist/Parser.js"
|
|
40
|
+
},
|
|
41
|
+
"./ParseError": {
|
|
42
|
+
"types": "./dist/ParseError.d.ts",
|
|
43
|
+
"default": "./dist/ParseError.js"
|
|
44
|
+
},
|
|
45
|
+
"./Token": {
|
|
46
|
+
"types": "./dist/Token.d.ts",
|
|
47
|
+
"default": "./dist/Token.js"
|
|
48
|
+
},
|
|
49
|
+
"./Ascii": {
|
|
50
|
+
"types": "./dist/Ascii.d.ts",
|
|
51
|
+
"default": "./dist/Ascii.js"
|
|
52
|
+
},
|
|
53
|
+
"./Text": {
|
|
54
|
+
"types": "./dist/Text.d.ts",
|
|
55
|
+
"default": "./dist/Text.js"
|
|
56
|
+
},
|
|
57
|
+
"./Encoding": {
|
|
58
|
+
"types": "./dist/Encoding.d.ts",
|
|
59
|
+
"default": "./dist/Encoding.js"
|
|
60
|
+
},
|
|
61
|
+
"./Binary": {
|
|
62
|
+
"types": "./dist/Binary.d.ts",
|
|
63
|
+
"default": "./dist/Binary.js"
|
|
64
|
+
},
|
|
65
|
+
"./Bits": {
|
|
66
|
+
"types": "./dist/Bits.d.ts",
|
|
67
|
+
"default": "./dist/Bits.js"
|
|
68
|
+
},
|
|
69
|
+
"./Expression": {
|
|
70
|
+
"types": "./dist/Expression.d.ts",
|
|
71
|
+
"default": "./dist/Expression.js"
|
|
72
|
+
},
|
|
73
|
+
"./Nom": {
|
|
74
|
+
"types": "./dist/Nom.d.ts",
|
|
75
|
+
"default": "./dist/Nom.js"
|
|
76
|
+
},
|
|
77
|
+
"./ParserSchema": {
|
|
78
|
+
"types": "./dist/ParserSchema.d.ts",
|
|
79
|
+
"default": "./dist/ParserSchema.js"
|
|
80
|
+
},
|
|
81
|
+
"./ParserStream": {
|
|
82
|
+
"types": "./dist/ParserStream.d.ts",
|
|
83
|
+
"default": "./dist/ParserStream.js"
|
|
84
|
+
},
|
|
85
|
+
"./package.json": "./package.json"
|
|
86
|
+
},
|
|
87
|
+
"files": [
|
|
88
|
+
"dist",
|
|
89
|
+
"src",
|
|
90
|
+
"!dist/**/*.tsbuildinfo"
|
|
91
|
+
],
|
|
92
|
+
"publishConfig": {
|
|
93
|
+
"access": "public"
|
|
94
|
+
},
|
|
95
|
+
"peerDependencies": {
|
|
96
|
+
"effect": "^4.0.0"
|
|
97
|
+
},
|
|
98
|
+
"devDependencies": {
|
|
99
|
+
"@changesets/changelog-github": "^1.0.1",
|
|
100
|
+
"@changesets/cli": "^3.0.3",
|
|
101
|
+
"@types/node": "^26.6.5",
|
|
102
|
+
"effect": "4.0.5",
|
|
103
|
+
"typescript": "^7.0.2",
|
|
104
|
+
"vitest": "^5.0.4"
|
|
105
|
+
},
|
|
106
|
+
"scripts": {
|
|
107
|
+
"check": "tsc -p tsconfig.json",
|
|
108
|
+
"test": "vitest run",
|
|
109
|
+
"build": "tsc -p tsconfig.build.json",
|
|
110
|
+
"bench": "node --experimental-strip-types bench/json.bench.ts",
|
|
111
|
+
"bench:native": "node --experimental-strip-types bench/native.bench.ts",
|
|
112
|
+
"bench:stream": "node --experimental-strip-types bench/stream.bench.ts",
|
|
113
|
+
"check:dist": "node scripts/check-dist.mjs",
|
|
114
|
+
"changeset": "changeset",
|
|
115
|
+
"version": "changeset version && pnpm install --lockfile-only",
|
|
116
|
+
"release": "bash scripts/release.sh"
|
|
117
|
+
}
|
|
6
118
|
}
|