parseman 0.2.0 → 0.3.1
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 +167 -126
- package/dist/combinators/choice.d.ts.map +1 -1
- package/dist/combinators/completions.d.ts +17 -0
- package/dist/combinators/completions.d.ts.map +1 -0
- package/dist/combinators/grammar.d.ts +20 -4
- package/dist/combinators/grammar.d.ts.map +1 -1
- package/dist/combinators/guard.d.ts +2 -2
- package/dist/combinators/guard.d.ts.map +1 -1
- package/dist/combinators/keywords.d.ts +22 -0
- package/dist/combinators/keywords.d.ts.map +1 -0
- package/dist/combinators/literal.d.ts.map +1 -1
- package/dist/combinators/node.d.ts +24 -0
- package/dist/combinators/node.d.ts.map +1 -0
- package/dist/combinators/parser.d.ts +7 -7
- package/dist/combinators/parser.d.ts.map +1 -1
- package/dist/combinators/probe.d.ts +13 -0
- package/dist/combinators/probe.d.ts.map +1 -0
- package/dist/combinators/recover.d.ts.map +1 -1
- package/dist/combinators/regex.d.ts.map +1 -1
- package/dist/combinators/repeat.d.ts.map +1 -1
- package/dist/combinators/scanTo.d.ts.map +1 -1
- package/dist/combinators/sequence.d.ts.map +1 -1
- package/dist/combinators/trivia-skip.d.ts +33 -0
- package/dist/combinators/trivia-skip.d.ts.map +1 -0
- package/dist/combinators/withCtx.d.ts +1 -1
- package/dist/compiler/codegen.d.ts +13 -4
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/cst/grammar.d.ts +33 -2
- package/dist/cst/grammar.d.ts.map +1 -1
- package/dist/cst/incremental.d.ts +4 -2
- package/dist/cst/incremental.d.ts.map +1 -1
- package/dist/cst/trivia-index.d.ts +50 -0
- package/dist/cst/trivia-index.d.ts.map +1 -0
- package/dist/cst/types.d.ts +7 -7
- package/dist/cst/types.d.ts.map +1 -1
- package/dist/functional/doc.d.ts +53 -0
- package/dist/functional/doc.d.ts.map +1 -0
- package/dist/index.cjs +953 -221
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6519 -226
- package/dist/index.js.map +4 -4
- package/dist/plugin/evaluator.d.ts +26 -6
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.cjs +1164 -215
- package/dist/plugin/index.cjs.map +4 -4
- package/dist/plugin/index.d.ts +5 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1164 -215
- package/dist/plugin/index.js.map +4 -4
- package/dist/types.d.ts +51 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export type ParseOk<T> = {
|
|
|
11
11
|
value: T;
|
|
12
12
|
span: Span;
|
|
13
13
|
trivia?: Span[];
|
|
14
|
+
/** Populated when parse() is called with { recover: true }. Lists all ParseErrors collected via recover() nodes. */
|
|
15
|
+
errors?: ParseError[];
|
|
14
16
|
};
|
|
15
17
|
export type ParseFail = {
|
|
16
18
|
ok: false;
|
|
@@ -33,7 +35,7 @@ export type ParserDef = {
|
|
|
33
35
|
} | {
|
|
34
36
|
tag: 'choice';
|
|
35
37
|
parsers: Combinator<unknown>[];
|
|
36
|
-
gates: (((
|
|
38
|
+
gates: (((state: unknown) => boolean) | null)[];
|
|
37
39
|
disjoint: boolean;
|
|
38
40
|
strategy: ChoiceStrategy;
|
|
39
41
|
autoNot: (AutoNotCheck[] | null)[];
|
|
@@ -59,6 +61,7 @@ export type ParserDef = {
|
|
|
59
61
|
start: number;
|
|
60
62
|
end: number;
|
|
61
63
|
}) => unknown;
|
|
64
|
+
fnSrc?: string;
|
|
62
65
|
} | {
|
|
63
66
|
tag: 'skip';
|
|
64
67
|
main: Combinator<unknown>;
|
|
@@ -74,9 +77,21 @@ export type ParserDef = {
|
|
|
74
77
|
} | {
|
|
75
78
|
tag: 'lazy';
|
|
76
79
|
thunk: () => Combinator<unknown>;
|
|
80
|
+
} | {
|
|
81
|
+
tag: 'not';
|
|
82
|
+
parser: Combinator<unknown>;
|
|
83
|
+
} | {
|
|
84
|
+
tag: 'node';
|
|
85
|
+
type: string;
|
|
86
|
+
parser: Combinator<unknown>;
|
|
87
|
+
build: (children: ReadonlyArray<unknown>, rawChildren: ReadonlyArray<unknown>, span: {
|
|
88
|
+
start: number;
|
|
89
|
+
end: number;
|
|
90
|
+
}) => unknown;
|
|
91
|
+
buildSrc?: string;
|
|
77
92
|
} | {
|
|
78
93
|
tag: 'guard';
|
|
79
|
-
predicate: (
|
|
94
|
+
predicate: (state: unknown) => boolean;
|
|
80
95
|
} | {
|
|
81
96
|
tag: 'withCtx';
|
|
82
97
|
extra: unknown;
|
|
@@ -90,6 +105,11 @@ export type ParserDef = {
|
|
|
90
105
|
sentinel: Combinator<unknown>;
|
|
91
106
|
skip: Combinator<unknown>[];
|
|
92
107
|
orEOF: boolean;
|
|
108
|
+
} | {
|
|
109
|
+
tag: 'keywords';
|
|
110
|
+
words: readonly string[];
|
|
111
|
+
caseInsensitive: boolean;
|
|
112
|
+
boundary: string | undefined;
|
|
93
113
|
} | {
|
|
94
114
|
tag: 'unknown';
|
|
95
115
|
};
|
|
@@ -101,9 +121,27 @@ export type Combinator<T> = {
|
|
|
101
121
|
};
|
|
102
122
|
export type ParseContext = {
|
|
103
123
|
trivia?: Combinator<unknown>;
|
|
124
|
+
/**
|
|
125
|
+
* When true (and a CST node is collecting children), trivia consumed between
|
|
126
|
+
* terms is recorded into _cstRawChildren as separate CSTTrivia tokens — one
|
|
127
|
+
* per maximal sub-match of the trivia parser (e.g. a whitespace run or a
|
|
128
|
+
* comment). When false/unset, trivia is skipped silently. Default: skip.
|
|
129
|
+
*/
|
|
130
|
+
captureTrivia?: boolean;
|
|
104
131
|
trackLines: boolean;
|
|
105
|
-
/**
|
|
106
|
-
|
|
132
|
+
/** Grammar-author-provided state, scoped with withCtx() and read in guard(). */
|
|
133
|
+
state?: unknown;
|
|
134
|
+
/** When set, recover() nodes push their ParseError here instead of (only) embedding it in the tree. */
|
|
135
|
+
_errors?: ParseError[];
|
|
136
|
+
/**
|
|
137
|
+
* When set by completionsAt(), tracks the highest-position ParseFail seen
|
|
138
|
+
* during parsing up to _probe.offset. Used to return completions at the cursor
|
|
139
|
+
* even when sepBy/many backtracked past the cursor position.
|
|
140
|
+
*/
|
|
141
|
+
_probe?: {
|
|
142
|
+
offset: number;
|
|
143
|
+
best: ParseFail | null;
|
|
144
|
+
};
|
|
107
145
|
/**
|
|
108
146
|
* Framework-internal: current CSTNode rule's child collector.
|
|
109
147
|
* Set by GrammarParser capital-letter parser; undefined outside CST parsing.
|
|
@@ -123,6 +161,13 @@ export type ParseContext = {
|
|
|
123
161
|
* Passed to buildNode() as rawChildren so grammars can inspect trivia.
|
|
124
162
|
*/
|
|
125
163
|
_cstRawChildren?: unknown[];
|
|
164
|
+
/**
|
|
165
|
+
* Framework-internal: flat trivia log. When set, scanTrivia records each
|
|
166
|
+
* consumed trivia run as two numbers [runStart, runEnd] appended to this
|
|
167
|
+
* array instead of (or in addition to) rawChildren capture. Zero object
|
|
168
|
+
* allocations — just number pushes.
|
|
169
|
+
*/
|
|
170
|
+
_triviaLog?: number[];
|
|
126
171
|
};
|
|
127
172
|
/**
|
|
128
173
|
* Sentinel value returned by recover() when its inner parser fails.
|
|
@@ -192,10 +237,10 @@ export type AutoNotCheck = {
|
|
|
192
237
|
* it is evaluated (cheaply, without parsing) before the arm is attempted.
|
|
193
238
|
* If the gate returns false the arm is skipped entirely.
|
|
194
239
|
*
|
|
195
|
-
* Usage: choice({ gate:
|
|
240
|
+
* Usage: choice({ gate: s => (s as Ctx).inFn, parser: returnKw }, ident)
|
|
196
241
|
*/
|
|
197
242
|
export type GatedArm<T = unknown> = {
|
|
198
|
-
gate: (
|
|
243
|
+
gate: (state: unknown) => boolean;
|
|
199
244
|
parser: Combinator<T>;
|
|
200
245
|
};
|
|
201
246
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parseman",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Parser combinators that compile to optimized JavaScript — use as a library or as a build-time macro",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Matthew Dean <matthew-dean@users.noreply.github.com>",
|