@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,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The error type produced when running a parser.
|
|
3
|
+
*
|
|
4
|
+
* `ParseError` merges winnow's `ContextError`/`ParseError` and nom's
|
|
5
|
+
* `VerboseError`. It records where parsing failed, what was expected there,
|
|
6
|
+
* the context labels that were active, and an optional typed `cause`
|
|
7
|
+
* produced by `Parser.fail`, `Parser.tryMap` and friends. Its `message`
|
|
8
|
+
* shows the failing position in the input:
|
|
9
|
+
*
|
|
10
|
+
* ```text
|
|
11
|
+
* Parse error at line 1, column 4:
|
|
12
|
+
* 1 | [1,,2]
|
|
13
|
+
* | ^
|
|
14
|
+
* expected digit
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* `ParseError` is a `Data.TaggedError`, so it can be yielded directly inside
|
|
18
|
+
* `Effect.gen`.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
*/
|
|
22
|
+
import * as Data from "effect/Data";
|
|
23
|
+
import * as Option from "effect/Option";
|
|
24
|
+
import * as text from "./internal/text.js";
|
|
25
|
+
/**
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
* @category type ids
|
|
28
|
+
*/
|
|
29
|
+
export const TypeId = "~effect-parse/ParseError";
|
|
30
|
+
/**
|
|
31
|
+
* An error produced by running a parser.
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category models
|
|
35
|
+
*/
|
|
36
|
+
export class ParseError extends Data.TaggedError("ParseError") {
|
|
37
|
+
/**
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
*/
|
|
40
|
+
[TypeId] = TypeId;
|
|
41
|
+
/**
|
|
42
|
+
* The 1-based line and column of the failure (for strings and encoded
|
|
43
|
+
* text; for other inputs the line is 1 and the column is `offset + 1`).
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
*/
|
|
47
|
+
get position() {
|
|
48
|
+
return lineColumn(this.input, this.offset, this.encoding);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The rendered, human-readable error message.
|
|
52
|
+
*
|
|
53
|
+
* @since 0.1.0
|
|
54
|
+
*/
|
|
55
|
+
get message() {
|
|
56
|
+
return render(this);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @since 0.1.0
|
|
60
|
+
*/
|
|
61
|
+
toString() {
|
|
62
|
+
return `ParseError: ${this.message}`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @since 0.1.0
|
|
67
|
+
* @category guards
|
|
68
|
+
*/
|
|
69
|
+
export const isParseError = (u) => typeof u === "object" && u !== null && TypeId in u;
|
|
70
|
+
/**
|
|
71
|
+
* Builds a `ParseError` from the failure details recorded while parsing.
|
|
72
|
+
*
|
|
73
|
+
* @since 0.1.0
|
|
74
|
+
* @category constructors
|
|
75
|
+
*/
|
|
76
|
+
export const fromFailure = (input, failure, mode, encoding) => new ParseError({
|
|
77
|
+
input,
|
|
78
|
+
offset: failure.offset,
|
|
79
|
+
kind: failure.kind,
|
|
80
|
+
mode,
|
|
81
|
+
expected: failure.expected,
|
|
82
|
+
context: failure.context,
|
|
83
|
+
cause: failure.hasCause ? failure.cause : undefined,
|
|
84
|
+
description: failure.message,
|
|
85
|
+
encoding: input instanceof Uint8Array ? encoding : undefined
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* The user supplied cause of an error, if any.
|
|
89
|
+
*
|
|
90
|
+
* @since 0.1.0
|
|
91
|
+
* @category getters
|
|
92
|
+
*/
|
|
93
|
+
export const getCause = (self) => self.cause === undefined ? Option.none() : Option.some(self.cause);
|
|
94
|
+
/**
|
|
95
|
+
* Computes the 1-based line and column (in code points) of an offset. Lines
|
|
96
|
+
* are separated by `\n`. Byte inputs are read as text when an `encoding`
|
|
97
|
+
* is given. For other inputs the line is always 1 and the column is
|
|
98
|
+
* `offset + 1`.
|
|
99
|
+
*
|
|
100
|
+
* @since 0.1.0
|
|
101
|
+
* @category utils
|
|
102
|
+
*/
|
|
103
|
+
export const lineColumn = (input, offset, encoding) => {
|
|
104
|
+
if (encoding !== undefined && input instanceof Uint8Array) {
|
|
105
|
+
let line = 1;
|
|
106
|
+
let column = 1;
|
|
107
|
+
text.walk(encoding, input, 0, Math.min(offset, input.length), (cp) => {
|
|
108
|
+
if (cp === 10) {
|
|
109
|
+
line++;
|
|
110
|
+
column = 1;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
column++;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return { line, column };
|
|
117
|
+
}
|
|
118
|
+
if (typeof input !== "string")
|
|
119
|
+
return { line: 1, column: offset + 1 };
|
|
120
|
+
let line = 1;
|
|
121
|
+
let lineStart = 0;
|
|
122
|
+
for (let i = 0; i < offset && i < input.length; i++) {
|
|
123
|
+
if (input.charCodeAt(i) === 10) {
|
|
124
|
+
line++;
|
|
125
|
+
lineStart = i + 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { line, column: codePointCount(input, lineStart, Math.min(offset, input.length)) + 1 };
|
|
129
|
+
};
|
|
130
|
+
const codePointCount = (s, start, end) => {
|
|
131
|
+
let n = 0;
|
|
132
|
+
for (let i = start; i < end; i++) {
|
|
133
|
+
const c = s.charCodeAt(i);
|
|
134
|
+
if (c >= 0xd800 && c <= 0xdbff && i + 1 < end) {
|
|
135
|
+
const d = s.charCodeAt(i + 1);
|
|
136
|
+
if (d >= 0xdc00 && d <= 0xdfff)
|
|
137
|
+
i++;
|
|
138
|
+
}
|
|
139
|
+
n++;
|
|
140
|
+
}
|
|
141
|
+
return n;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Formats a list of expectations: `a`, `a or b`, `a, b or c`.
|
|
145
|
+
*
|
|
146
|
+
* @since 0.1.0
|
|
147
|
+
* @category utils
|
|
148
|
+
*/
|
|
149
|
+
export const formatExpected = (expected) => {
|
|
150
|
+
if (expected.length === 0)
|
|
151
|
+
return "";
|
|
152
|
+
if (expected.length === 1)
|
|
153
|
+
return expected[0];
|
|
154
|
+
return `${expected.slice(0, -1).join(", ")} or ${expected[expected.length - 1]}`;
|
|
155
|
+
};
|
|
156
|
+
const hexBytes = (bytes) => Array.from(bytes, (b) => `0x${b.toString(16).padStart(2, "0")}`).join(" ");
|
|
157
|
+
const describeFound = (input, offset, encoding) => {
|
|
158
|
+
if (offset >= input.length)
|
|
159
|
+
return "end of input";
|
|
160
|
+
if (encoding !== undefined && input instanceof Uint8Array) {
|
|
161
|
+
const cp = encoding.decode(input, offset, input.length);
|
|
162
|
+
if (cp >= 0)
|
|
163
|
+
return JSON.stringify(String.fromCodePoint(cp));
|
|
164
|
+
const bad = input.subarray(offset, Math.min(input.length, offset + Math.max(encoding.unit, 1)));
|
|
165
|
+
return cp === text.Truncated
|
|
166
|
+
? `incomplete ${encoding.name} sequence ${hexBytes(input.subarray(offset))}`
|
|
167
|
+
: `invalid ${encoding.name} ${hexBytes(bad)}`;
|
|
168
|
+
}
|
|
169
|
+
if (typeof input === "string") {
|
|
170
|
+
const cp = input.codePointAt(offset);
|
|
171
|
+
return JSON.stringify(String.fromCodePoint(cp));
|
|
172
|
+
}
|
|
173
|
+
if (input instanceof Uint8Array) {
|
|
174
|
+
return `0x${input[offset].toString(16).padStart(2, "0")}`;
|
|
175
|
+
}
|
|
176
|
+
return inspectToken(input[offset]);
|
|
177
|
+
};
|
|
178
|
+
/** @internal */
|
|
179
|
+
export const inspectToken = (u) => {
|
|
180
|
+
if (typeof u === "string")
|
|
181
|
+
return JSON.stringify(u);
|
|
182
|
+
if (typeof u === "object" && u !== null) {
|
|
183
|
+
try {
|
|
184
|
+
return JSON.stringify(u);
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return String(u);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return String(u);
|
|
191
|
+
};
|
|
192
|
+
const causeMessage = (cause) => {
|
|
193
|
+
if (cause === undefined)
|
|
194
|
+
return undefined;
|
|
195
|
+
if (typeof cause === "string")
|
|
196
|
+
return cause;
|
|
197
|
+
if (cause instanceof Error)
|
|
198
|
+
return cause.message;
|
|
199
|
+
if (typeof cause === "object" && cause !== null && "message" in cause && typeof cause.message === "string") {
|
|
200
|
+
return cause.message;
|
|
201
|
+
}
|
|
202
|
+
return inspectToken(cause);
|
|
203
|
+
};
|
|
204
|
+
const renderSnippet = (input, offset, encoding) => {
|
|
205
|
+
if (encoding !== undefined && input instanceof Uint8Array) {
|
|
206
|
+
// Find the line containing `offset`, then decode it
|
|
207
|
+
let lineStart = 0;
|
|
208
|
+
let end = input.length;
|
|
209
|
+
let column = 1;
|
|
210
|
+
text.walk(encoding, input, 0, input.length, (cp, i, w) => {
|
|
211
|
+
if (i >= offset && cp === 10) {
|
|
212
|
+
end = i;
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
if (i < offset) {
|
|
216
|
+
if (cp === 10) {
|
|
217
|
+
lineStart = i + w;
|
|
218
|
+
column = 1;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
column++;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
let line = text.lenientText(encoding, input, lineStart, end);
|
|
226
|
+
if (line.endsWith("\r"))
|
|
227
|
+
line = line.slice(0, -1);
|
|
228
|
+
const gutter = String(lineColumn(input, offset, encoding).line);
|
|
229
|
+
const pad = " ".repeat(gutter.length);
|
|
230
|
+
return [
|
|
231
|
+
`${gutter} | ${line}`,
|
|
232
|
+
`${pad} | ${" ".repeat(column - 1)}^`
|
|
233
|
+
];
|
|
234
|
+
}
|
|
235
|
+
if (typeof input === "string") {
|
|
236
|
+
const { column, line } = lineColumn(input, offset);
|
|
237
|
+
let start = offset;
|
|
238
|
+
while (start > 0 && input.charCodeAt(start - 1) !== 10)
|
|
239
|
+
start--;
|
|
240
|
+
let end = offset;
|
|
241
|
+
while (end < input.length && input.charCodeAt(end) !== 10)
|
|
242
|
+
end++;
|
|
243
|
+
let text = input.slice(start, end);
|
|
244
|
+
if (text.endsWith("\r"))
|
|
245
|
+
text = text.slice(0, -1);
|
|
246
|
+
const gutter = String(line);
|
|
247
|
+
const pad = " ".repeat(gutter.length);
|
|
248
|
+
return [
|
|
249
|
+
`${gutter} | ${text}`,
|
|
250
|
+
`${pad} | ${" ".repeat(column - 1)}^`
|
|
251
|
+
];
|
|
252
|
+
}
|
|
253
|
+
if (input instanceof Uint8Array) {
|
|
254
|
+
const start = Math.max(0, offset - 8);
|
|
255
|
+
const end = Math.min(input.length, offset + 8);
|
|
256
|
+
const bytes = [];
|
|
257
|
+
for (let i = start; i < end; i++)
|
|
258
|
+
bytes.push(input[i].toString(16).padStart(2, "0"));
|
|
259
|
+
const caret = (offset - start) * 3;
|
|
260
|
+
return [
|
|
261
|
+
`${start.toString(16).padStart(8, "0")} | ${bytes.join(" ")}`,
|
|
262
|
+
`${" ".repeat(8)} | ${" ".repeat(caret)}^`
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
return [];
|
|
266
|
+
};
|
|
267
|
+
const render = (error) => {
|
|
268
|
+
const { encoding, input, offset } = error;
|
|
269
|
+
const lines = [];
|
|
270
|
+
if (typeof input === "string") {
|
|
271
|
+
const { column, line } = lineColumn(input, offset);
|
|
272
|
+
lines.push(`Parse error at line ${line}, column ${column}:`);
|
|
273
|
+
}
|
|
274
|
+
else if (encoding !== undefined) {
|
|
275
|
+
const { column, line } = lineColumn(input, offset, encoding);
|
|
276
|
+
lines.push(`Parse error at line ${line}, column ${column} (byte ${offset}):`);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
lines.push(`Parse error at offset ${offset}:`);
|
|
280
|
+
}
|
|
281
|
+
lines.push(...renderSnippet(input, offset, encoding));
|
|
282
|
+
for (let i = error.context.length - 1; i >= 0; i--) {
|
|
283
|
+
lines.push(`while parsing ${error.context[i]}`);
|
|
284
|
+
}
|
|
285
|
+
const cause = causeMessage(error.cause);
|
|
286
|
+
if (cause !== undefined)
|
|
287
|
+
lines.push(cause);
|
|
288
|
+
if (error.description !== undefined)
|
|
289
|
+
lines.push(error.description);
|
|
290
|
+
if (error.mode === "Incomplete") {
|
|
291
|
+
lines.push("unexpected end of input (incomplete)");
|
|
292
|
+
}
|
|
293
|
+
else if (error.expected.length > 0) {
|
|
294
|
+
lines.push(`expected ${formatExpected(error.expected)}, found ${describeFound(input, offset, encoding)}`);
|
|
295
|
+
}
|
|
296
|
+
else if (cause === undefined && error.description === undefined) {
|
|
297
|
+
lines.push(`unexpected ${describeFound(input, offset, encoding)} (${error.kind})`);
|
|
298
|
+
}
|
|
299
|
+
return lines.join("\n");
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=ParseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParseError.js","sourceRoot":"","sources":["../src/ParseError.ts"],"names":[],"mappings":"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"}
|