@tabnas/parser 0.8.6 → 0.8.8

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/dist/parser.js CHANGED
@@ -18,7 +18,14 @@ class Parser {
18
18
  #nrspec; // Empty spec backing the NORULE sentinel.
19
19
  #srcfmt; // Debug source formatter.
20
20
  constructor(options, cfg, j) {
21
- this.rsm = {}; // Rule specs keyed by rule name.
21
+ // Keyed by rule name, so allocated without a prototype. On a plain literal
22
+ // a rule named __proto__ is not an ordinary key: `this.rsm[name]` reads back
23
+ // Object.prototype, the `||` guard below adopts it as the RuleSpec, and
24
+ // `rs.name = name` then writes onto Object.prototype - polluting every
25
+ // object in the process. Rule names reach here from grammar text (abnf/bnf
26
+ // compile user-supplied grammars), so this is not only a developer-typo
27
+ // path. `constructor` and `toString` hit the same read and threw instead.
28
+ this.rsm = Object.create(null); // Rule specs keyed by rule name.
22
29
  this.options = options;
23
30
  this.cfg = cfg;
24
31
  this.ji = j;
@@ -73,6 +80,10 @@ class Parser {
73
80
  // instance in place, so getters/setters and methods survive.
74
81
  if (null != parent_ctx) {
75
82
  (0, utility_1.deep)(ctx, parent_ctx);
83
+ // The error list is strictly per-parse: a parent context's
84
+ // recorded errors must not leak into this parse's list (the
85
+ // deep merge above would otherwise seed them).
86
+ ctx.errs = [];
76
87
  }
77
88
  // The no-rule sentinel Rule is per-parse, but its (empty) spec is
78
89
  // immutable and cfg-scoped, so build the spec once per Parser.
@@ -84,13 +95,23 @@ class Parser {
84
95
  ctx.log = meta.log;
85
96
  }
86
97
  this.cfg.parse.prepare.forEach((prep) => prep(tabnas, ctx, meta));
98
+ // Opt-in error recovery: parse returns { value, errors } instead of
99
+ // throwing, collecting multiple errors via sync-point recovery
100
+ // (rules.ts attemptRecover; see ts/doc/lsp-feasibility.md).
101
+ const recovering = this.cfg.parse.recover.enabled;
87
102
  // Special case - avoids extra per-token tests in main parser rules.
88
103
  if ('' === src) {
89
104
  if (this.cfg.lex.empty) {
90
- return this.cfg.lex.emptyResult;
105
+ return recovering
106
+ ? { value: this.cfg.lex.emptyResult, errors: ctx.errs }
107
+ : this.cfg.lex.emptyResult;
91
108
  }
92
109
  else {
93
- throw new error_1.TabnasError(utility_1.S.unexpected, { src }, ctx.t0, norule, ctx);
110
+ const emptyErr = new error_1.TabnasError(utility_1.S.unexpected, { src }, ctx.t0, norule, ctx);
111
+ if (recovering) {
112
+ return { value: undefined, errors: ctx.errs };
113
+ }
114
+ throw emptyErr;
94
115
  }
95
116
  }
96
117
  // Bad tokens are converted to throws by the engine's own token
@@ -105,7 +126,7 @@ class Parser {
105
126
  ctx.lex = lex;
106
127
  let startspec = this.rsm[this.cfg.rule.start];
107
128
  if (null == startspec) {
108
- return undefined;
129
+ return recovering ? { value: undefined, errors: ctx.errs } : undefined;
109
130
  }
110
131
  let rule = (0, rules_1.makeRule)(startspec, ctx);
111
132
  root = rule;
@@ -119,64 +140,172 @@ class Parser {
119
140
  let maxr = 2 * rsmCount * lex.src.length * 2 * ctx.cfg.rule.maxmul;
120
141
  // Process rules on tokens
121
142
  let kI = 0;
122
- // This loop is the heart of the engine. Keep processing rule
123
- // occurrences until there's none left.
124
- while (norule !== rule && kI < maxr) {
125
- ctx.kI = kI;
126
- ctx.rule = rule;
127
- ctx.log && ctx.log(utility_1.S.step, ctx.kI + ':');
128
- if (ctx.sub.rule) {
129
- ctx.sub.rule.map((sub) => sub(rule, ctx));
143
+ // Opt-in parse budget: invoke onCheck every checkEveryN rule
144
+ // iterations; a false return cancels the parse. Off (0) by
145
+ // default, costing one falsy test per iteration.
146
+ const budgetN = this.cfg.parse.budget.checkEveryN;
147
+ const onCheck = this.cfg.parse.budget.onCheck;
148
+ try {
149
+ // This loop is the heart of the engine. Keep processing rule
150
+ // occurrences until there's none left.
151
+ while (norule !== rule && kI < maxr) {
152
+ ctx.kI = kI;
153
+ ctx.rule = rule;
154
+ if (budgetN && null != onCheck && 0 === kI % budgetN && 0 < kI) {
155
+ if (false === onCheck(ctx)) {
156
+ throw new error_1.TabnasError('cancel', {}, ctx.t0, rule, ctx);
157
+ }
158
+ }
159
+ ctx.log && ctx.log(utility_1.S.step, ctx.kI + ':');
160
+ if (ctx.sub.rule) {
161
+ ctx.sub.rule.map((sub) => sub(rule, ctx));
162
+ }
163
+ const prev = rule;
164
+ const prevState = rule.state;
165
+ rule = rule.process(ctx, lex);
166
+ // Post-process event: fires with the pass's matched tokens
167
+ // recorded on prev.o / prev.c and the state transition applied.
168
+ // Unlike the pre-process `rule` event, this one can see what the
169
+ // pass actually did (RuleDone: matched alternate's b/g/p/r).
170
+ if (ctx.sub.ruleDone) {
171
+ const dalt = ctx._dalt;
172
+ const done = {
173
+ state: prevState,
174
+ alt: null == dalt
175
+ ? null
176
+ : {
177
+ b: dalt.b || 0,
178
+ // Snapshot: the alternate's own g array is live
179
+ // grammar configuration and must not be mutable
180
+ // through the event payload.
181
+ g: dalt.g ? dalt.g.slice() : [],
182
+ p: dalt.p || types_1.EMPTY,
183
+ r: dalt.r || types_1.EMPTY,
184
+ err: dalt.e,
185
+ },
186
+ };
187
+ ctx.sub.ruleDone.map((sub) => sub(prev, ctx, done));
188
+ }
189
+ ctx.log && ctx.log(utility_1.S.stack, ctx, rule, lex);
190
+ kI++;
130
191
  }
131
- rule = rule.process(ctx, lex);
132
- ctx.log && ctx.log(utility_1.S.stack, ctx, rule, lex);
133
- kI++;
134
- }
135
- // TODO: option to allow trailing content
136
- // First check the lookahead buffer. A token that an alt fetched and
137
- // then backtracked past (b:1) is still sitting in ctx.t[0] and was
138
- // never consumed by any rule — asking the lexer for a *new* token
139
- // here would skip straight over it and silently discard input.
140
- // The Go port has always checked this first (go/parser.go:321-326);
141
- // TS did not, which is why `[1] 2` parsed as `[1]` in TS and errored
142
- // in Go. Go is the correct side.
143
- const buffered = ctx.t[0];
144
- if (null != buffered &&
145
- notoken.tin !== buffered.tin &&
146
- endtkn.tin !== buffered.tin) {
147
- if (bdtin === buffered.tin) {
192
+ // TODO: option to allow trailing content
193
+ // First check the lookahead buffer. A token that an alt fetched and
194
+ // then backtracked past (b:1) is still sitting in ctx.t[0] and was
195
+ // never consumed by any rule — asking the lexer for a *new* token
196
+ // here would skip straight over it and silently discard input.
197
+ // The Go port has always checked this first (go/parser.go:321-326);
198
+ // TS did not, which is why `[1] 2` parsed as `[1]` in TS and errored
199
+ // in Go. Go is the correct side.
200
+ const buffered = ctx.t[0];
201
+ if (null != buffered &&
202
+ notoken.tin !== buffered.tin &&
203
+ endtkn.tin !== buffered.tin) {
204
+ if (bdtin === buffered.tin) {
205
+ let details = {};
206
+ if (null != buffered.use) {
207
+ details.use = buffered.use;
208
+ }
209
+ throw new error_1.TabnasError(buffered.why || utility_1.S.unexpected, details, buffered, rule, ctx);
210
+ }
211
+ throw new error_1.TabnasError(utility_1.S.unexpected, {}, buffered, norule, ctx);
212
+ }
213
+ // Skip ignorable trivia (space/line/comment) exactly as the rule
214
+ // fetch loop does (rules.ts parse_alts): Go's Lex.Next skips them
215
+ // internally, and a trailing space is not trailing content — without
216
+ // this, a grammar whose rules consume everything before a trailing
217
+ // ignorable would report the ignorable itself as unexpected.
218
+ const IGNORE = this.cfg.tokenSetTins.IGNORE;
219
+ let endtry = lex.next(rule);
220
+ while (IGNORE[endtry.tin]) {
221
+ endtry = lex.next(rule);
222
+ }
223
+ if (bdtin === endtry.tin) {
224
+ // A bad token in trailing content carries its own error code
225
+ // (e.g. unterminated_string), matching the old badlex wrapper.
148
226
  let details = {};
149
- if (null != buffered.use) {
150
- details.use = buffered.use;
227
+ if (null != endtry.use) {
228
+ details.use = endtry.use;
151
229
  }
152
- throw new error_1.TabnasError(buffered.why || utility_1.S.unexpected, details, buffered, rule, ctx);
230
+ throw new error_1.TabnasError(endtry.why || utility_1.S.unexpected, details, endtry, rule, ctx);
153
231
  }
154
- throw new error_1.TabnasError(utility_1.S.unexpected, {}, buffered, norule, ctx);
155
- }
156
- const endtry = lex.next(rule);
157
- if (bdtin === endtry.tin) {
158
- // A bad token in trailing content carries its own error code
159
- // (e.g. unterminated_string), matching the old badlex wrapper.
160
- let details = {};
161
- if (null != endtry.use) {
162
- details.use = endtry.use;
232
+ if (endtkn.tin !== endtry.tin) {
233
+ // Raise with the trailing token just fetched — ctx.t0 is a stale
234
+ // NOTOKEN here (the lookahead buffer was empty, which is why the
235
+ // lexer was asked for more), and reporting it placed the error at
236
+ // 1:1 with an empty token instead of at the trailing content.
237
+ throw new error_1.TabnasError(utility_1.S.unexpected, {}, endtry, norule, ctx);
163
238
  }
164
- throw new error_1.TabnasError(endtry.why || utility_1.S.unexpected, details, endtry, rule, ctx);
165
- }
166
- if (endtkn.tin !== endtry.tin) {
167
- throw new error_1.TabnasError(utility_1.S.unexpected, {}, ctx.t0, norule, ctx);
239
+ // NOTE: by returning root, we get implicit closing of maps and lists.
240
+ const result = ctx.root().node;
241
+ if (this.cfg.result.fail.includes(result)) {
242
+ throw new error_1.TabnasError(utility_1.S.unexpected, {}, ctx.t0, norule, ctx);
243
+ }
244
+ return recovering ? { value: result, errors: ctx.errs } : result;
168
245
  }
169
- // NOTE: by returning root, we get implicit closing of maps and lists.
170
- const result = ctx.root().node;
171
- if (this.cfg.result.fail.includes(result)) {
172
- throw new error_1.TabnasError(utility_1.S.unexpected, {}, ctx.t0, norule, ctx);
246
+ catch (err) {
247
+ // A throwing pass never reached the post-process dispatch: emit
248
+ // the failure event so structural consumers observe the final
249
+ // attempted pass (fail-fast and recovery give-up alike).
250
+ if (ctx.sub.ruleDone && err instanceof error_1.TabnasError) {
251
+ try {
252
+ const frule = ctx.rule;
253
+ if (null != frule && norule !== frule) {
254
+ const dalt = ctx._dalt;
255
+ const done = {
256
+ state: frule.state,
257
+ alt: null == dalt
258
+ ? null
259
+ : {
260
+ b: dalt.b || 0,
261
+ g: dalt.g ? dalt.g.slice() : [],
262
+ p: dalt.p || types_1.EMPTY,
263
+ r: dalt.r || types_1.EMPTY,
264
+ err: dalt.e ?? err.internal?.token,
265
+ },
266
+ };
267
+ ctx.sub.ruleDone.map((sub) => sub(frule, ctx, done));
268
+ }
269
+ }
270
+ catch (subErr) {
271
+ // Subscriber failures must not mask the parse error.
272
+ }
273
+ }
274
+ // In recovery mode a terminal error (recovery gave up, trailing
275
+ // content, result.fail) has already been recorded on ctx.errs by
276
+ // the TabnasError constructor — convert to the { value, errors }
277
+ // result, keeping whatever partial value exists.
278
+ if (recovering && err instanceof error_1.TabnasError) {
279
+ let value = undefined;
280
+ try {
281
+ value = ctx.root()?.node;
282
+ // When the root never closed, the most complete partial
283
+ // container is the outermost active rule's node.
284
+ if (null == value) {
285
+ for (let d = 0; d < ctx.rsI; d++) {
286
+ const n = ctx.rs[d]?.node;
287
+ if (null != n) {
288
+ value = n;
289
+ break;
290
+ }
291
+ }
292
+ if (null == value) {
293
+ value = ctx.rule?.node ?? undefined;
294
+ }
295
+ }
296
+ }
297
+ catch (rootErr) {
298
+ // No root yet: the error preceded the first rule.
299
+ }
300
+ return { value, errors: ctx.errs };
301
+ }
302
+ throw err;
173
303
  }
174
- return result;
175
304
  }
176
305
  clone(options, config, j) {
177
306
  let parser = new Parser(options, config, j);
178
307
  // Inherit rules from parent, filtered by config.rule
179
- parser.rsm = Object.keys(this.rsm).reduce((a, rn) => ((a[rn] = (0, utility_1.filterRules)(this.rsm[rn], this.cfg)), a), {});
308
+ parser.rsm = Object.keys(this.rsm).reduce((a, rn) => ((a[rn] = (0, utility_1.filterRules)(this.rsm[rn], this.cfg)), a), Object.create(null));
180
309
  parser.norm();
181
310
  return parser;
182
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/rules.d.ts CHANGED
@@ -108,6 +108,7 @@ declare class RuleSpec {
108
108
  unknownRule(tkn: Token, name: string): Token;
109
109
  }
110
110
  declare const makeRuleSpec: (...params: ConstructorParameters<typeof RuleSpec>) => RuleSpec;
111
+ declare function continuationTins(ctx: Context, rule: Rule, atPos?: number): Tin[];
111
112
  /** Every problem in an alternate's DECLARATIVE parts, as messages.
112
113
  *
113
114
  * Pure: it reports instead of throwing, so a whole grammar can be checked and
@@ -123,4 +124,4 @@ export declare function validateAlt(alt: any): string[];
123
124
  /** Every problem in a list of alternates, each prefixed with where it is.
124
125
  * `label` names the list, e.g. `"val.open"`. */
125
126
  export declare function validateAlts(alts: any[], label?: string): string[];
126
- export { Rule, RuleSpec, AltMatch, makeRule, makeNoRule, makeRuleSpec };
127
+ export { Rule, RuleSpec, AltMatch, makeRule, makeNoRule, makeRuleSpec, continuationTins };