astn 0.110.18 → 0.110.19

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 (61) hide show
  1. package/package.json +1 -1
  2. package/dist/generated/interface/schemas/ast/poormans_parser.d.ts +0 -1108
  3. package/dist/generated/interface/schemas/ast/poormans_parser.js +0 -3
  4. package/dist/generated/interface/schemas/ast/resolved.d.ts +0 -1108
  5. package/dist/generated/interface/schemas/ast/resolved.js +0 -3
  6. package/dist/generated/interface/schemas/ast/unresolved.d.ts +0 -1108
  7. package/dist/generated/interface/schemas/ast/unresolved.js +0 -3
  8. package/dist/generated/interface/schemas/ide/poormans_parser.d.ts +0 -161
  9. package/dist/generated/interface/schemas/ide/poormans_parser.js +0 -3
  10. package/dist/generated/interface/schemas/ide/resolved.d.ts +0 -161
  11. package/dist/generated/interface/schemas/ide/resolved.js +0 -3
  12. package/dist/generated/interface/schemas/ide/unresolved.d.ts +0 -161
  13. package/dist/generated/interface/schemas/ide/unresolved.js +0 -3
  14. package/dist/generated/interface/schemas/parse_result/poormans_parser.d.ts +0 -416
  15. package/dist/generated/interface/schemas/parse_result/poormans_parser.js +0 -3
  16. package/dist/generated/interface/schemas/parse_result/resolved.d.ts +0 -416
  17. package/dist/generated/interface/schemas/parse_result/resolved.js +0 -3
  18. package/dist/generated/interface/schemas/parse_result/unresolved.d.ts +0 -416
  19. package/dist/generated/interface/schemas/parse_result/unresolved.js +0 -3
  20. package/dist/generated/interface/schemas/target/poormans_parser.d.ts +0 -186
  21. package/dist/generated/interface/schemas/target/poormans_parser.js +0 -3
  22. package/dist/generated/interface/schemas/target/resolved.d.ts +0 -186
  23. package/dist/generated/interface/schemas/target/resolved.js +0 -3
  24. package/dist/generated/interface/schemas/target/unresolved.d.ts +0 -186
  25. package/dist/generated/interface/schemas/target/unresolved.js +0 -3
  26. package/dist/generated/interface/schemas/target_json/poormans_parser.d.ts +0 -169
  27. package/dist/generated/interface/schemas/target_json/poormans_parser.js +0 -3
  28. package/dist/generated/interface/schemas/target_json/resolved.d.ts +0 -169
  29. package/dist/generated/interface/schemas/target_json/resolved.js +0 -3
  30. package/dist/generated/interface/schemas/target_json/unresolved.d.ts +0 -169
  31. package/dist/generated/interface/schemas/target_json/unresolved.js +0 -3
  32. package/dist/lib/globals.d.ts +0 -24
  33. package/dist/lib/globals.js +0 -2
  34. package/dist/lib/transformations/create_error_message.d.ts +0 -5
  35. package/dist/lib/transformations/create_error_message.js +0 -89
  36. package/dist/lib/transformations/format.d.ts +0 -42
  37. package/dist/lib/transformations/format.js +0 -166
  38. package/dist/lib/transformations/fountain_pen/astn.d.ts +0 -11
  39. package/dist/lib/transformations/fountain_pen/astn.js +0 -156
  40. package/dist/lib/transformations/fountain_pen/json.d.ts +0 -4
  41. package/dist/lib/transformations/fountain_pen/json.js +0 -113
  42. package/dist/lib/transformations/parse.d.ts +0 -11
  43. package/dist/lib/transformations/parse.js +0 -257
  44. package/dist/lib/transformations/parse_generic.d.ts +0 -43
  45. package/dist/lib/transformations/parse_generic.js +0 -644
  46. package/dist/transformations/create_error_message.d.ts +0 -5
  47. package/dist/transformations/create_error_message.js +0 -89
  48. package/dist/transformations/format.d.ts +0 -42
  49. package/dist/transformations/format.js +0 -166
  50. package/dist/transformations/fountain_pen/astn.d.ts +0 -11
  51. package/dist/transformations/fountain_pen/astn.js +0 -166
  52. package/dist/transformations/fountain_pen/json.d.ts +0 -4
  53. package/dist/transformations/fountain_pen/json.js +0 -123
  54. package/dist/transformations/parse.d.ts +0 -11
  55. package/dist/transformations/parse.js +0 -257
  56. package/dist/transformations/parse_generic.d.ts +0 -43
  57. package/dist/transformations/parse_generic.js +0 -644
  58. package/dist/transformations/target/fountain_pen/astn.d.ts +0 -11
  59. package/dist/transformations/target/fountain_pen/astn.js +0 -156
  60. package/dist/transformations/target/fountain_pen/json.d.ts +0 -4
  61. package/dist/transformations/target/fountain_pen/json.js +0 -113
@@ -1,644 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.create_token_iterator = exports.Tokenizer_Result = exports.Annotated_Token = exports.create_string_iterator = exports.throw_unexpected_token = exports.throw_parse_error = void 0;
27
- const _ea = __importStar(require("exupery-core-alg"));
28
- const throw_parse_error = (type, range) => {
29
- throw new _ea.Error({
30
- 'type': type,
31
- 'range': range
32
- });
33
- };
34
- exports.throw_parse_error = throw_parse_error;
35
- const throw_unexpected_token = (found, expected) => {
36
- return (0, exports.throw_parse_error)(['parser', {
37
- 'expected': expected,
38
- 'cause': ['unexpected token', {
39
- 'found': found.type,
40
- }]
41
- }], {
42
- 'start': found.start,
43
- 'end': found.end
44
- });
45
- };
46
- exports.throw_unexpected_token = throw_unexpected_token;
47
- const op = {
48
- 'to character list': _ea.impure.text['to character list'],
49
- 'starts with': _ea.impure.text['starts with'],
50
- };
51
- const parse_whitespace = (string_iterator) => {
52
- const start = string_iterator['create location info']();
53
- return {
54
- 'value': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
55
- while (true) {
56
- const Character = {
57
- tab: 0x09, // \t
58
- line_feed: 0x0A, // \n
59
- carriage_return: 0x0D, // \r
60
- space: 0x20, //
61
- };
62
- {
63
- const $ = string_iterator['get current character']();
64
- if ($ === null) {
65
- return;
66
- }
67
- switch ($) {
68
- case Character.tab:
69
- string_iterator['consume character']();
70
- $i['add element']($);
71
- break;
72
- case Character.line_feed:
73
- string_iterator['consume character']();
74
- $i['add element']($);
75
- break;
76
- case Character.carriage_return:
77
- string_iterator['consume character']();
78
- $i['add element']($);
79
- break;
80
- case Character.space:
81
- string_iterator['consume character']();
82
- $i['add element']($);
83
- break;
84
- default:
85
- return;
86
- }
87
- }
88
- }
89
- })),
90
- 'range': {
91
- 'start': start,
92
- 'end': string_iterator['create location info'](),
93
- }
94
- };
95
- };
96
- const parse_trivia = (string_iterator) => {
97
- return {
98
- 'leading whitespace': parse_whitespace(string_iterator),
99
- 'comments': _ea.pure.list.build(($i) => {
100
- while (true) {
101
- const $ = string_iterator['get current character']();
102
- if ($ === null) {
103
- return; //normal end of input
104
- }
105
- switch ($) {
106
- case 0x2F: // /
107
- const start = string_iterator['create location info']();
108
- const next_char = string_iterator['look ahead'](1);
109
- if (next_char === null) {
110
- const start = string_iterator['create location info']();
111
- string_iterator['consume character']();
112
- const end = string_iterator['create location info']();
113
- return (0, exports.throw_parse_error)(['lexer', ['dangling slash', null]], {
114
- 'start': start,
115
- 'end': end
116
- });
117
- }
118
- switch (next_char) {
119
- case 0x2F: // /
120
- string_iterator['consume character'](); // consume the first /
121
- string_iterator['consume character'](); // consume the second /
122
- const Character = {
123
- line_feed: 0x0A, // \n
124
- carriage_return: 0x0D, // \r
125
- solidus: 0x2F, // /
126
- };
127
- $i['add element']({
128
- 'type': ['line', null],
129
- 'content': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
130
- while (true) {
131
- const $ = string_iterator['get current character']();
132
- if ($ === null) {
133
- return;
134
- }
135
- switch ($) {
136
- case Character.line_feed:
137
- return;
138
- case Character.carriage_return:
139
- return;
140
- default:
141
- string_iterator['consume character']();
142
- $i['add element']($);
143
- }
144
- }
145
- })),
146
- 'range': {
147
- 'start': start,
148
- 'end': string_iterator['create location info'](),
149
- },
150
- 'trailing whitespace': parse_whitespace(string_iterator)
151
- });
152
- break;
153
- case 0x2A: { // *
154
- string_iterator['consume character'](); // consume the first /
155
- string_iterator['consume character'](); // consume the asterisk
156
- $i['add element']({
157
- 'type': ['block', null],
158
- 'content': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
159
- let found_asterisk = false;
160
- const Character = {
161
- solidus: 0x2F, // /
162
- asterisk: 0x2A, // *
163
- };
164
- while (true) {
165
- const $ = string_iterator['get current character']();
166
- if ($ === null) {
167
- return (0, exports.throw_parse_error)(['lexer', ['unterminated block comment', null]], {
168
- 'start': start,
169
- 'end': string_iterator['create location info']()
170
- });
171
- }
172
- if ($ === Character.solidus && found_asterisk) {
173
- string_iterator['consume character'](); // consume the solidus
174
- //found asterisk before solidus, so this is the end of the comment
175
- return;
176
- }
177
- //not a solidus, so this is part of the comment
178
- if (found_asterisk) {
179
- $i['add element'](Character.asterisk); // add the asterisk that was found before but was not part of the end delimiter
180
- }
181
- if ($ === Character.asterisk) {
182
- found_asterisk = true;
183
- }
184
- else {
185
- $i['add element']($);
186
- }
187
- string_iterator['consume character']();
188
- }
189
- })),
190
- 'range': {
191
- 'start': start,
192
- 'end': string_iterator['create location info'](),
193
- },
194
- 'trailing whitespace': parse_whitespace(string_iterator)
195
- });
196
- break;
197
- }
198
- default:
199
- return (0, exports.throw_parse_error)(['lexer', ['dangling slash', null]], {
200
- 'start': start,
201
- 'end': string_iterator['create location info']()
202
- });
203
- }
204
- break;
205
- default:
206
- return;
207
- }
208
- }
209
- })
210
- };
211
- };
212
- const parse_delimited_string = (string_iterator, is_end_character, allow_newlines) => {
213
- const Character = {
214
- backspace: 0x08, // \b
215
- form_feed: 0x0C, // \f
216
- tab: 0x09, // \t
217
- line_feed: 0x0A, // \n
218
- carriage_return: 0x0D, // \r
219
- quotation_mark: 0x22, // "
220
- backtick: 0x60, // `
221
- apostrophe: 0x27, // '
222
- reverse_solidus: 0x5C, // \
223
- solidus: 0x2F, // /
224
- a: 0x61, // a
225
- b: 0x62, // b
226
- f: 0x66, // f
227
- n: 0x6E, // n
228
- r: 0x72, // r
229
- t: 0x74, // t
230
- u: 0x75, // u
231
- A: 0x41, // A
232
- F: 0x46, // F
233
- };
234
- const start = string_iterator['create location info']();
235
- const txt = _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
236
- while (true) {
237
- const $ = string_iterator['get current character']();
238
- if ($ === null) {
239
- return (0, exports.throw_parse_error)(['lexer', ['unterminated string', null]], {
240
- 'start': start,
241
- 'end': string_iterator['create location info']()
242
- });
243
- }
244
- if (is_end_character($)) {
245
- string_iterator['consume character'](); // consume the end character
246
- return;
247
- }
248
- switch ($) {
249
- case Character.reverse_solidus:
250
- string_iterator['consume character']();
251
- {
252
- const $ = string_iterator['get current character']();
253
- if ($ === null) {
254
- return (0, exports.throw_parse_error)(['lexer', ['missing character after escape', null]], {
255
- 'start': start,
256
- 'end': string_iterator['create location info']()
257
- });
258
- }
259
- switch ($) {
260
- case Character.quotation_mark:
261
- string_iterator['consume character']();
262
- $i['add element'](Character.quotation_mark);
263
- break;
264
- case Character.reverse_solidus:
265
- string_iterator['consume character']();
266
- $i['add element'](Character.reverse_solidus);
267
- break;
268
- case Character.solidus:
269
- string_iterator['consume character']();
270
- $i['add element'](Character.solidus);
271
- break;
272
- case Character.b:
273
- string_iterator['consume character']();
274
- $i['add element'](Character.backspace);
275
- break;
276
- case Character.f:
277
- string_iterator['consume character']();
278
- $i['add element'](Character.form_feed);
279
- break;
280
- case Character.n:
281
- if (allow_newlines) {
282
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of line in delimited string', null]], {
283
- 'start': start,
284
- 'end': string_iterator['create location info']()
285
- });
286
- }
287
- string_iterator['consume character']();
288
- $i['add element'](Character.line_feed);
289
- break;
290
- case Character.r:
291
- if (allow_newlines) {
292
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of line in delimited string', null]], {
293
- 'start': start,
294
- 'end': string_iterator['create location info']()
295
- });
296
- }
297
- string_iterator['consume character']();
298
- $i['add element'](Character.carriage_return);
299
- break;
300
- case Character.t:
301
- string_iterator['consume character']();
302
- $i['add element'](Character.tab);
303
- break;
304
- case Character.u:
305
- string_iterator['consume character']();
306
- $i['add element'](_ea.impure.integer['parse hexadecimal'](_ea.impure.text['from character list']((_ea.pure.list.build(($i) => {
307
- const get_char = () => {
308
- const char = string_iterator['get current character']();
309
- if (char === null) {
310
- return (0, exports.throw_parse_error)(['lexer', ['unterminated unicode escape sequence', null]], {
311
- 'start': start,
312
- 'end': string_iterator['create location info']()
313
- });
314
- }
315
- if (char < Character.a || (char > Character.f && char < Character.A) || char > Character.F || char < 0x30 || char > 0x39) {
316
- return (0, exports.throw_parse_error)(['lexer', ['invalid unicode escape sequence', null]], {
317
- 'start': start,
318
- 'end': string_iterator['create location info']()
319
- });
320
- }
321
- string_iterator['consume character']();
322
- return char;
323
- };
324
- $i['add element'](get_char());
325
- $i['add element'](get_char());
326
- $i['add element'](get_char());
327
- $i['add element'](get_char());
328
- })))));
329
- break;
330
- default:
331
- return (0, exports.throw_parse_error)(['lexer', ['unknown escape character', null]], {
332
- 'start': start,
333
- 'end': string_iterator['create location info']()
334
- });
335
- }
336
- }
337
- break;
338
- default:
339
- string_iterator['consume character']();
340
- $i['add element']($);
341
- }
342
- }
343
- }));
344
- return txt;
345
- };
346
- const Whitespace = {
347
- tab: 0x09, // \t
348
- line_feed: 0x0A, // \n
349
- carriage_return: 0x0D, // \r
350
- space: 0x20, //
351
- };
352
- /**
353
- * Creates a string iterator that allows iterating over characters in a string,
354
- * while keeping track of line numbers, columns, and line indentation.
355
- */
356
- const create_string_iterator = ($, $p) => {
357
- const source = $;
358
- const characters = op['to character list']($);
359
- const length = characters.__get_length();
360
- let found_carriage_return_before = false;
361
- let position = 0;
362
- let relative_position = {
363
- 'line': 0,
364
- 'column': 0,
365
- 'line indentation': null
366
- };
367
- const consume_character = () => {
368
- const c = characters.__get_element_at(position);
369
- const start = relative_position;
370
- relative_position = c.transform(($) => {
371
- return $ === Whitespace.line_feed
372
- ? {
373
- 'line': relative_position.line + 1,
374
- 'column': 0,
375
- 'line indentation': null,
376
- }
377
- : found_carriage_return_before
378
- ? {
379
- 'line': relative_position.line + 1,
380
- 'column': 0,
381
- 'line indentation': null,
382
- }
383
- : {
384
- 'line': relative_position.line,
385
- 'column': relative_position['column'] + ($ === Whitespace.tab
386
- ? $p['tab size']
387
- : 1),
388
- 'line indentation': relative_position['line indentation'] !== null
389
- ? relative_position['line indentation']
390
- : $ === Whitespace.space || $ === Whitespace.tab
391
- ? null
392
- : relative_position['column'],
393
- };
394
- }, () => relative_position //this is weird, we were already at the end of the list
395
- );
396
- // check for control characters
397
- c.map(($) => {
398
- if ($ < 0x20 && $ !== Whitespace.tab && $ !== Whitespace.line_feed && $ !== Whitespace.carriage_return) {
399
- (0, exports.throw_parse_error)(['lexer', ['unexpected control character', $]], {
400
- 'start': {
401
- 'absolute': position - 1,
402
- 'relative': {
403
- 'line': relative_position.line,
404
- 'column': relative_position['column'] - 1,
405
- }
406
- },
407
- 'end': {
408
- 'absolute': position,
409
- 'relative': {
410
- 'line': relative_position.line,
411
- 'column': relative_position['column'],
412
- }
413
- }
414
- });
415
- }
416
- });
417
- found_carriage_return_before = c.transform(($) => $ === Whitespace.carriage_return, () => false);
418
- position += 1;
419
- };
420
- return {
421
- 'consume string': ($) => {
422
- op['to character list']($).__for_each(() => {
423
- consume_character();
424
- });
425
- },
426
- 'consume character': consume_character,
427
- 'get current character': () => {
428
- if (position === length) {
429
- return null;
430
- }
431
- return characters.__get_element_at(position).transform(($) => $, () => null);
432
- },
433
- 'look ahead': ($) => {
434
- const next_position = position + $;
435
- if (next_position >= length) {
436
- return null;
437
- }
438
- return characters.__get_element_at(next_position).transform(($) => $, () => null);
439
- },
440
- 'create location info': () => {
441
- return {
442
- 'absolute': position,
443
- 'relative': {
444
- 'line': relative_position.line,
445
- 'column': relative_position['column'],
446
- }
447
- };
448
- },
449
- 'create offset location info': (subtract) => {
450
- return {
451
- 'absolute': position - subtract,
452
- 'relative': {
453
- 'line': relative_position.line,
454
- 'column': relative_position['column'] - subtract,
455
- }
456
- };
457
- },
458
- 'create location info string': () => `${relative_position.line}:${relative_position['column']}`,
459
- 'get line indentation': () => {
460
- return relative_position['line indentation'] !== null
461
- ? relative_position['line indentation']
462
- : relative_position['column'];
463
- },
464
- 'starts with': ($) => {
465
- return op['starts with'](source, $, position);
466
- }
467
- };
468
- };
469
- exports.create_string_iterator = create_string_iterator;
470
- const Annotated_Token = (st) => {
471
- const $ = st['get current character']();
472
- if ($ === null) {
473
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of input', null]], {
474
- 'start': st['create location info'](),
475
- 'end': st['create location info'](),
476
- });
477
- }
478
- return {
479
- 'start': st['create location info'](),
480
- 'type': _ea.block(() => {
481
- const Character = {
482
- open_angle_bracket: 0x3C, // <
483
- open_brace: 0x7B, // {
484
- open_bracket: 0x5B, // [
485
- open_paren: 0x28, // (
486
- close_angle_bracket: 0x3E, // >
487
- close_brace: 0x7D, // }
488
- close_bracket: 0x5D, // ]
489
- close_paren: 0x29, // )
490
- apostrophe: 0x27, // '
491
- asterisk: 0x2A, // *
492
- at: 0x40, // @
493
- backtick: 0x60, // `
494
- bang: 0x21,
495
- colon: 0x3A, // :
496
- comma: 0x2C, // ,
497
- pipe: 0x7C, // |
498
- quotation_mark: 0x22, // "
499
- slash: 0x2F, // /
500
- tilde: 0x7E, // ~
501
- space: 0x20, // space
502
- tab: 0x09, // \t
503
- };
504
- switch ($) {
505
- case Character.open_brace:
506
- st['consume character']();
507
- return ['{', null];
508
- case Character.open_bracket:
509
- st['consume character']();
510
- return ['[', null];
511
- case Character.open_angle_bracket:
512
- st['consume character']();
513
- return ['<', null];
514
- case Character.open_paren:
515
- st['consume character']();
516
- return ['(', null];
517
- case Character.close_brace:
518
- st['consume character']();
519
- return ['}', null];
520
- case Character.close_bracket:
521
- st['consume character']();
522
- return [']', null];
523
- case Character.close_angle_bracket:
524
- st['consume character']();
525
- return ['>', null];
526
- case Character.close_paren:
527
- st['consume character']();
528
- return [')', null];
529
- //individuals
530
- case Character.pipe:
531
- st['consume character']();
532
- return ['|', null];
533
- case Character.tilde:
534
- st['consume character']();
535
- return ['~', null];
536
- case Character.asterisk:
537
- st['consume character']();
538
- return ['*', null];
539
- case Character.at:
540
- st['consume character']();
541
- return ['@', null];
542
- case Character.bang:
543
- st['consume character']();
544
- return ['!', null];
545
- case Character.colon:
546
- st['consume character']();
547
- return [':', null];
548
- case Character.comma:
549
- st['consume character']();
550
- return [',', null];
551
- case Character.quotation_mark:
552
- st['consume character']();
553
- return ['string', {
554
- 'value': parse_delimited_string(st, ($) => $ === Character.quotation_mark, true),
555
- 'type': ['quoted', null],
556
- }];
557
- case Character.backtick:
558
- st['consume character']();
559
- return ['string', {
560
- 'value': parse_delimited_string(st, ($) => $ === Character.backtick, false),
561
- 'type': ['backticked', null],
562
- }];
563
- case Character.apostrophe:
564
- st['consume character']();
565
- return ['string', {
566
- 'value': parse_delimited_string(st, ($) => $ === Character.apostrophe, false),
567
- 'type': ['apostrophed', null],
568
- }];
569
- default:
570
- return ['string', {
571
- 'value': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
572
- while (true) {
573
- const $ = st['get current character']();
574
- if ($ === null) {
575
- return;
576
- }
577
- if ($ === Character.open_brace ||
578
- $ === Character.close_brace ||
579
- $ === Character.open_bracket ||
580
- $ === Character.close_bracket ||
581
- $ === Character.open_angle_bracket ||
582
- $ === Character.close_angle_bracket ||
583
- $ === Character.open_paren ||
584
- $ === Character.close_paren ||
585
- $ === Character.apostrophe ||
586
- $ === Character.asterisk ||
587
- $ === Character.at ||
588
- $ === Character.backtick ||
589
- $ === Character.bang ||
590
- $ === Character.colon ||
591
- $ === Character.comma ||
592
- $ === Character.pipe ||
593
- $ === Character.quotation_mark ||
594
- $ === Character.slash ||
595
- $ === Character.tilde ||
596
- $ === Whitespace.space ||
597
- $ === Whitespace.tab) {
598
- return;
599
- }
600
- st['consume character']();
601
- $i['add element']($);
602
- }
603
- })),
604
- 'type': ['undelimited', null],
605
- }];
606
- }
607
- }),
608
- 'end': st['create location info'](),
609
- 'trailing trivia': parse_trivia(st)
610
- };
611
- };
612
- exports.Annotated_Token = Annotated_Token;
613
- const Tokenizer_Result = ($, $p) => {
614
- return {
615
- 'leading trivia': parse_trivia($p['string iterator']),
616
- 'tokens': _ea.pure.list.build($i => {
617
- while ($p['string iterator']['get current character']() !== null) {
618
- const token = (0, exports.Annotated_Token)($p['string iterator']);
619
- $i['add element'](token);
620
- }
621
- }),
622
- 'end': $p['string iterator']['create location info']()
623
- };
624
- };
625
- exports.Tokenizer_Result = Tokenizer_Result;
626
- const create_token_iterator = ($) => {
627
- let position = 0;
628
- return {
629
- 'get required token': (pet) => {
630
- return $.tokens.__get_element_at(position).transform(($) => $, () => (0, exports.throw_parse_error)(['parser', {
631
- 'expected': pet,
632
- 'cause': ['missing token', null]
633
- }], {
634
- 'start': $.end,
635
- 'end': $.end,
636
- }));
637
- },
638
- 'consume token': () => {
639
- position += 1;
640
- },
641
- };
642
- };
643
- exports.create_token_iterator = create_token_iterator;
644
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfZ2VuZXJpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1hdGlvbnMvcGFyc2VfZ2VuZXJpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF1QztBQU9oQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLElBQW9DLEVBQ3BDLEtBQWdCLEVBQ1gsRUFBRTtJQUNQLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUEyQjtRQUMxQyxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQVJZLFFBQUEsaUJBQWlCLHFCQVE3QjtBQUVNLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsS0FBbUMsRUFDbkMsUUFBd0UsRUFDbkUsRUFBRTtJQUNQLE9BQU8sSUFBQSx5QkFBaUIsRUFDcEIsQ0FBQyxRQUFRLEVBQUU7WUFDUCxVQUFVLEVBQUUsUUFBUTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUN0QixDQUFDO1NBQ0wsQ0FBQyxFQUNGO1FBQ0ksT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztLQUNuQixDQUNKLENBQUE7QUFDTCxDQUFDLENBQUE7QUFoQlksUUFBQSxzQkFBc0IsMEJBZ0JsQztBQTRCRCxNQUFNLEVBQUUsR0FBRztJQUNQLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pELGFBQWEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Q0FDaEQsQ0FBQTtBQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFnQyxFQUFrQixFQUFFO0lBQzFFLE1BQU0sS0FBSyxH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