astn 0.111.30 → 0.112.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.
Files changed (59) hide show
  1. package/dist/exceptional/authoring_parse/ast/context.d.ts +11 -0
  2. package/dist/exceptional/authoring_parse/ast/context.js +43 -0
  3. package/dist/exceptional/authoring_parse/ast/helpers.d.ts +10 -0
  4. package/dist/exceptional/authoring_parse/ast/helpers.js +45 -0
  5. package/dist/exceptional/authoring_parse/ast/iterator.d.ts +9 -0
  6. package/dist/exceptional/authoring_parse/ast/iterator.js +29 -0
  7. package/dist/exceptional/authoring_parse/ast/refiners.d.ts +10 -0
  8. package/dist/exceptional/authoring_parse/ast/refiners.js +266 -0
  9. package/dist/exceptional/authoring_parse/astn_parse_generic.d.ts +4 -3
  10. package/dist/exceptional/authoring_parse/astn_parse_generic.js +1 -1
  11. package/dist/exceptional/authoring_parse/iterator.d.ts +7 -0
  12. package/dist/exceptional/authoring_parse/iterator.js +3 -0
  13. package/dist/exceptional/authoring_parse/iterators/characters.d.ts +36 -0
  14. package/dist/exceptional/authoring_parse/iterators/characters.js +113 -0
  15. package/dist/exceptional/authoring_parse/iterators/string_iterator.d.ts +36 -0
  16. package/dist/exceptional/authoring_parse/iterators/string_iterator.js +113 -0
  17. package/dist/exceptional/authoring_parse/iterators/token_iterator.d.ts +17 -0
  18. package/dist/exceptional/authoring_parse/iterators/token_iterator.js +50 -0
  19. package/dist/exceptional/authoring_parse/iterators/tokens.d.ts +22 -0
  20. package/dist/exceptional/authoring_parse/iterators/tokens.js +61 -0
  21. package/dist/exceptional/authoring_parse/parse.d.ts +2 -2
  22. package/dist/exceptional/authoring_parse/parse.js +14 -32
  23. package/dist/exceptional/authoring_parse/refine_guard.d.ts +3 -0
  24. package/dist/exceptional/authoring_parse/refine_guard.js +48 -0
  25. package/dist/exceptional/authoring_parse/refiners/ast.d.ts +10 -0
  26. package/dist/exceptional/authoring_parse/refiners/ast.js +266 -0
  27. package/dist/exceptional/authoring_parse/refiners/token.d.ts +9 -0
  28. package/dist/exceptional/authoring_parse/refiners/token.js +519 -0
  29. package/dist/exceptional/authoring_parse/string_iterator.d.ts +3 -8
  30. package/dist/exceptional/authoring_parse/token_iterator.d.ts +5 -0
  31. package/dist/exceptional/authoring_parse/token_iterator.js +3 -0
  32. package/dist/exceptional/authoring_parse/tokens/context.d.ts +9 -0
  33. package/dist/exceptional/authoring_parse/tokens/context.js +37 -0
  34. package/dist/exceptional/authoring_parse/tokens/helpers.d.ts +3 -0
  35. package/dist/exceptional/authoring_parse/tokens/helpers.js +14 -0
  36. package/dist/exceptional/authoring_parse/tokens/iterator.d.ts +27 -0
  37. package/dist/exceptional/authoring_parse/tokens/iterator.js +108 -0
  38. package/dist/exceptional/authoring_parse/tokens/refiners.d.ts +7 -0
  39. package/dist/exceptional/authoring_parse/tokens/refiners.js +521 -0
  40. package/dist/implementation/algorithms/operations/impure/string/serialize_apostrophed_string.js +2 -2
  41. package/dist/implementation/algorithms/operations/impure/string/serialize_backticked_string.js +2 -2
  42. package/dist/implementation/algorithms/operations/impure/string/serialize_quoted_string.js +2 -2
  43. package/dist/implementation/algorithms/procedures/unguaranteed/convert_to_json.js +4 -4
  44. package/dist/implementation/algorithms/procedures/unguaranteed/validate_astn.js +4 -4
  45. package/dist/implementation/algorithms/transformations/authoring_parse_tree/ide.js +2 -2
  46. package/dist/implementation/algorithms/transformations/authoring_target/fountain_pen_block.d.ts +1 -1
  47. package/dist/implementation/algorithms/transformations/authoring_target/fountain_pen_block.js +2 -2
  48. package/dist/implementation/algorithms/transformations/parse_result/string.d.ts +5 -0
  49. package/dist/implementation/algorithms/transformations/parse_result/string.js +90 -0
  50. package/dist/implementation/generated/pareto/generic/parse/parse.d.ts +1 -1
  51. package/dist/implementation/generated/pareto/generic/parse/parse.js +4 -4
  52. package/dist/implementation/generated/pareto/generic/parse/string_iterator.js +3 -3
  53. package/dist/implementation/generated/pareto/generic/parse/token.js +3 -3
  54. package/dist/implementation/generated/pareto/generic/resolve.js +5 -5
  55. package/dist/implementation/generated/pareto/generic/unmarshall.js +27 -27
  56. package/dist/implementation/generated/pareto/schemas/astn_schema/resolve.js +3 -3
  57. package/dist/shorthands/parse_result.d.ts +6 -0
  58. package/dist/shorthands/parse_result.js +36 -0
  59. package/package.json +8 -8
@@ -0,0 +1,519 @@
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.Tokenizer_Result = exports.Delimited_String = exports.Annotated_Token = exports.Trivia = exports.Whitespace = void 0;
27
+ const _ea = __importStar(require("exupery-core-alg"));
28
+ const tokens_1 = require("../iterators/tokens");
29
+ const characters_1 = require("../iterators/characters");
30
+ const from_character_list_1 = require("exupery-standard-library/dist/implementation/operations/impure/text/from_character_list");
31
+ const parse_hexadecimal_1 = require("exupery-standard-library/dist/implementation/operations/impure/integer/parse_hexadecimal");
32
+ //this file contains the tokenizer functionality, each function return a type from the 'token' schema
33
+ const Whitespace = (string_iterator) => {
34
+ const start = string_iterator['create location info']();
35
+ return {
36
+ 'value': (0, from_character_list_1.$$)(_ea.build_list(($i) => {
37
+ while (true) {
38
+ {
39
+ const $ = string_iterator['get current character']();
40
+ if ($ === null) {
41
+ return;
42
+ }
43
+ if ((0, characters_1.is_control_character)($)) {
44
+ (0, tokens_1.throw_lexer_error)(['unexpected control character', $], {
45
+ 'start': string_iterator['create location info'](),
46
+ 'end': string_iterator['create location info'](),
47
+ });
48
+ }
49
+ switch ($) {
50
+ case 0x09: // \t
51
+ string_iterator['consume character']();
52
+ $i['add element']($);
53
+ break;
54
+ case 0x0A: // \n
55
+ string_iterator['consume character']();
56
+ $i['add element']($);
57
+ break;
58
+ case 0x0D: // \r
59
+ string_iterator['consume character']();
60
+ $i['add element']($);
61
+ break;
62
+ case 0x20: // space
63
+ string_iterator['consume character']();
64
+ $i['add element']($);
65
+ break;
66
+ case 0x2C: // ,
67
+ string_iterator['consume character']();
68
+ $i['add element']($);
69
+ break;
70
+ default:
71
+ return;
72
+ }
73
+ }
74
+ }
75
+ })),
76
+ 'range': {
77
+ 'start': start,
78
+ 'end': string_iterator['create location info'](),
79
+ }
80
+ };
81
+ };
82
+ exports.Whitespace = Whitespace;
83
+ const Trivia = (string_iterator) => {
84
+ return {
85
+ 'leading whitespace': (0, exports.Whitespace)(string_iterator),
86
+ 'comments': _ea.build_list(($i) => {
87
+ while (true) {
88
+ const $ = string_iterator['get current character']();
89
+ if ($ === null) {
90
+ return; //normal end of input
91
+ }
92
+ switch ($) {
93
+ case 0x2F: // /
94
+ const start = string_iterator['create location info']();
95
+ const next_char = string_iterator['look ahead'](1);
96
+ if (next_char === null) {
97
+ const start = string_iterator['create location info']();
98
+ string_iterator['consume character']();
99
+ const end = string_iterator['create location info']();
100
+ return (0, tokens_1.throw_lexer_error)(['dangling slash', null], {
101
+ 'start': start,
102
+ 'end': end
103
+ });
104
+ }
105
+ switch (next_char) {
106
+ case 0x2F: // /
107
+ string_iterator['consume character'](); // consume the first /
108
+ string_iterator['consume character'](); // consume the second /
109
+ const Character = {
110
+ line_feed: 0x0A, // \n
111
+ carriage_return: 0x0D, // \r
112
+ solidus: 0x2F, // /
113
+ };
114
+ $i['add element']({
115
+ 'type': ['line', null],
116
+ 'content': (0, from_character_list_1.$$)(_ea.build_list(($i) => {
117
+ while (true) {
118
+ const $ = string_iterator['get current character']();
119
+ if ($ === null) {
120
+ return;
121
+ }
122
+ switch ($) {
123
+ case Character.line_feed:
124
+ return;
125
+ case Character.carriage_return:
126
+ return;
127
+ default:
128
+ string_iterator['consume character']();
129
+ $i['add element']($);
130
+ }
131
+ }
132
+ })),
133
+ 'range': {
134
+ 'start': start,
135
+ 'end': string_iterator['create location info'](),
136
+ },
137
+ 'trailing whitespace': (0, exports.Whitespace)(string_iterator)
138
+ });
139
+ break;
140
+ case 0x2A: { // *
141
+ string_iterator['consume character'](); // consume the first /
142
+ string_iterator['consume character'](); // consume the asterisk
143
+ $i['add element']({
144
+ 'type': ['block', null],
145
+ 'content': (0, from_character_list_1.$$)(_ea.build_list(($i) => {
146
+ let found_asterisk = false;
147
+ const Character = {
148
+ solidus: 0x2F, // /
149
+ asterisk: 0x2A, // *
150
+ };
151
+ while (true) {
152
+ const $ = string_iterator['get current character']();
153
+ if ($ === null) {
154
+ return (0, tokens_1.throw_lexer_error)(['unterminated block comment', null], {
155
+ 'start': start,
156
+ 'end': string_iterator['create location info']()
157
+ });
158
+ }
159
+ if ($ === Character.solidus && found_asterisk) {
160
+ string_iterator['consume character'](); // consume the solidus
161
+ //found asterisk before solidus, so this is the end of the comment
162
+ return;
163
+ }
164
+ //not a solidus, so this is part of the comment
165
+ if (found_asterisk) {
166
+ $i['add element'](Character.asterisk); // add the asterisk that was found before but was not part of the end delimiter
167
+ }
168
+ if ($ === Character.asterisk) {
169
+ found_asterisk = true;
170
+ }
171
+ else {
172
+ $i['add element']($);
173
+ }
174
+ string_iterator['consume character']();
175
+ }
176
+ })),
177
+ 'range': {
178
+ 'start': start,
179
+ 'end': string_iterator['create location info'](),
180
+ },
181
+ 'trailing whitespace': (0, exports.Whitespace)(string_iterator)
182
+ });
183
+ break;
184
+ }
185
+ default:
186
+ return (0, tokens_1.throw_lexer_error)(['dangling slash', null], {
187
+ 'start': start,
188
+ 'end': string_iterator['create location info']()
189
+ });
190
+ }
191
+ break;
192
+ default:
193
+ return;
194
+ }
195
+ }
196
+ })
197
+ };
198
+ };
199
+ exports.Trivia = Trivia;
200
+ const Annotated_Token = (st) => {
201
+ const WhitespaceChars = {
202
+ tab: 0x09, // \t
203
+ line_feed: 0x0A, // \n
204
+ carriage_return: 0x0D, // \r
205
+ space: 0x20, //
206
+ comma: 0x2C, // ,
207
+ };
208
+ const $ = st['get current character']();
209
+ if ($ === null) {
210
+ return (0, tokens_1.throw_lexer_error)(['unexpected end of input', null], {
211
+ 'start': st['create location info'](),
212
+ 'end': st['create location info'](),
213
+ });
214
+ }
215
+ return {
216
+ 'start': st['create location info'](),
217
+ 'type': _ea.block(() => {
218
+ const Character = {
219
+ open_angle_bracket: 0x3C, // <
220
+ open_brace: 0x7B, // {
221
+ open_bracket: 0x5B, // [
222
+ open_paren: 0x28, // (
223
+ close_angle_bracket: 0x3E, // >
224
+ close_brace: 0x7D, // }
225
+ close_bracket: 0x5D, // ]
226
+ close_paren: 0x29, // )
227
+ apostrophe: 0x27, // '
228
+ asterisk: 0x2A, // *
229
+ at: 0x40, // @
230
+ backtick: 0x60, // `
231
+ bang: 0x21,
232
+ colon: 0x3A, // :
233
+ pipe: 0x7C, // |
234
+ quotation_mark: 0x22, // "
235
+ slash: 0x2F, // /
236
+ tilde: 0x7E, // ~
237
+ hash: 0x23, // #
238
+ space: 0x20, // space
239
+ tab: 0x09, // \t
240
+ };
241
+ switch ($) {
242
+ case Character.open_brace:
243
+ st['consume character']();
244
+ return ['{', null];
245
+ case Character.open_bracket:
246
+ st['consume character']();
247
+ return ['[', null];
248
+ case Character.open_angle_bracket:
249
+ st['consume character']();
250
+ return ['<', null];
251
+ case Character.open_paren:
252
+ st['consume character']();
253
+ return ['(', null];
254
+ case Character.close_brace:
255
+ st['consume character']();
256
+ return ['}', null];
257
+ case Character.close_bracket:
258
+ st['consume character']();
259
+ return [']', null];
260
+ case Character.close_angle_bracket:
261
+ st['consume character']();
262
+ return ['>', null];
263
+ case Character.close_paren:
264
+ st['consume character']();
265
+ return [')', null];
266
+ //individuals
267
+ case Character.hash:
268
+ st['consume character']();
269
+ return ['#', null];
270
+ case Character.pipe:
271
+ st['consume character']();
272
+ return ['|', null];
273
+ case Character.tilde:
274
+ st['consume character']();
275
+ return ['~', null];
276
+ case Character.asterisk:
277
+ st['consume character']();
278
+ return ['*', null];
279
+ case Character.at:
280
+ st['consume character']();
281
+ return ['@', null];
282
+ case Character.bang:
283
+ st['consume character']();
284
+ return ['!', null];
285
+ case Character.colon:
286
+ st['consume character']();
287
+ return [':', null];
288
+ case Character.quotation_mark:
289
+ st['consume character']();
290
+ return ['string', {
291
+ 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.quotation_mark, true),
292
+ 'type': ['quoted', null],
293
+ }];
294
+ case Character.backtick:
295
+ st['consume character']();
296
+ return ['string', {
297
+ 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.backtick, false),
298
+ 'type': ['backticked', null],
299
+ }];
300
+ case Character.apostrophe:
301
+ st['consume character']();
302
+ return ['string', {
303
+ 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.apostrophe, false),
304
+ 'type': ['apostrophed', null],
305
+ }];
306
+ default:
307
+ return ['string', {
308
+ 'type': ['undelimited', null],
309
+ 'value': (0, from_character_list_1.$$)(_ea.build_list(($i) => {
310
+ while (true) {
311
+ const $ = st['get current character']();
312
+ if ($ === null) {
313
+ return;
314
+ }
315
+ if ((0, characters_1.is_control_character)($)) {
316
+ (0, tokens_1.throw_lexer_error)(['unexpected control character', $], {
317
+ 'start': st['create location info'](),
318
+ 'end': st['create location info'](),
319
+ });
320
+ }
321
+ if ($ === Character.open_brace ||
322
+ $ === Character.close_brace ||
323
+ $ === Character.open_bracket ||
324
+ $ === Character.close_bracket ||
325
+ $ === Character.open_angle_bracket ||
326
+ $ === Character.close_angle_bracket ||
327
+ $ === Character.open_paren ||
328
+ $ === Character.close_paren ||
329
+ $ === Character.apostrophe ||
330
+ $ === Character.asterisk ||
331
+ $ === Character.at ||
332
+ $ === Character.backtick ||
333
+ $ === Character.bang ||
334
+ $ === Character.colon ||
335
+ $ === Character.pipe ||
336
+ $ === Character.quotation_mark ||
337
+ $ === Character.slash ||
338
+ $ === Character.tilde ||
339
+ $ === WhitespaceChars.comma ||
340
+ $ === WhitespaceChars.space ||
341
+ $ === WhitespaceChars.tab ||
342
+ $ === WhitespaceChars.line_feed ||
343
+ $ === WhitespaceChars.carriage_return) {
344
+ return;
345
+ }
346
+ st['consume character']();
347
+ $i['add element']($);
348
+ }
349
+ })),
350
+ }];
351
+ }
352
+ }),
353
+ 'end': st['create location info'](),
354
+ 'trailing trivia': (0, exports.Trivia)(st)
355
+ };
356
+ };
357
+ exports.Annotated_Token = Annotated_Token;
358
+ const Delimited_String = (string_iterator, is_end_character, allow_newlines) => {
359
+ const Character = {
360
+ backspace: 0x08, // \b
361
+ form_feed: 0x0C, // \f
362
+ tab: 0x09, // \t
363
+ line_feed: 0x0A, // \n
364
+ carriage_return: 0x0D, // \r
365
+ quotation_mark: 0x22, // "
366
+ backtick: 0x60, // `
367
+ apostrophe: 0x27, // '
368
+ reverse_solidus: 0x5C, // \
369
+ solidus: 0x2F, // /
370
+ a: 0x61, // a
371
+ b: 0x62, // b
372
+ f: 0x66, // f
373
+ n: 0x6E, // n
374
+ r: 0x72, // r
375
+ t: 0x74, // t
376
+ u: 0x75, // u
377
+ A: 0x41, // A
378
+ F: 0x46, // F
379
+ };
380
+ const start = string_iterator['create location info']();
381
+ const txt = (0, from_character_list_1.$$)(_ea.build_list(($i) => {
382
+ while (true) {
383
+ const $ = string_iterator['get current character']();
384
+ if ($ === null) {
385
+ return (0, tokens_1.throw_lexer_error)(['unterminated string', null], {
386
+ 'start': start,
387
+ 'end': string_iterator['create location info']()
388
+ });
389
+ }
390
+ if ((0, characters_1.is_control_character)($)) {
391
+ (0, tokens_1.throw_lexer_error)(['unexpected control character', $], {
392
+ 'start': string_iterator['create location info'](),
393
+ 'end': string_iterator['create location info'](),
394
+ });
395
+ }
396
+ if (is_end_character($)) {
397
+ string_iterator['consume character'](); // consume the end character
398
+ return;
399
+ }
400
+ switch ($) {
401
+ case Character.line_feed:
402
+ case Character.carriage_return:
403
+ if (!allow_newlines) {
404
+ return (0, tokens_1.throw_lexer_error)(['unexpected end of line in delimited string', null], {
405
+ 'start': start,
406
+ 'end': string_iterator['create location info']()
407
+ });
408
+ }
409
+ string_iterator['consume character']();
410
+ $i['add element']($);
411
+ break;
412
+ case Character.reverse_solidus: // \ (escape)
413
+ string_iterator['consume character']();
414
+ {
415
+ const $ = string_iterator['get current character']();
416
+ if ($ === null) {
417
+ return (0, tokens_1.throw_lexer_error)(['missing character after escape', null], {
418
+ 'start': start,
419
+ 'end': string_iterator['create location info']()
420
+ });
421
+ }
422
+ switch ($) {
423
+ case Character.quotation_mark:
424
+ string_iterator['consume character']();
425
+ $i['add element'](Character.quotation_mark);
426
+ break;
427
+ case Character.apostrophe:
428
+ string_iterator['consume character']();
429
+ $i['add element'](Character.apostrophe);
430
+ break;
431
+ case Character.backtick:
432
+ string_iterator['consume character']();
433
+ $i['add element'](Character.backtick);
434
+ break;
435
+ case Character.reverse_solidus:
436
+ string_iterator['consume character']();
437
+ $i['add element'](Character.reverse_solidus);
438
+ break;
439
+ case Character.solidus:
440
+ string_iterator['consume character']();
441
+ $i['add element'](Character.solidus);
442
+ break;
443
+ case Character.b:
444
+ string_iterator['consume character']();
445
+ $i['add element'](Character.backspace);
446
+ break;
447
+ case Character.f:
448
+ string_iterator['consume character']();
449
+ $i['add element'](Character.form_feed);
450
+ break;
451
+ case Character.n:
452
+ string_iterator['consume character']();
453
+ $i['add element'](Character.line_feed);
454
+ break;
455
+ case Character.r:
456
+ string_iterator['consume character']();
457
+ $i['add element'](Character.carriage_return);
458
+ break;
459
+ case Character.t:
460
+ string_iterator['consume character']();
461
+ $i['add element'](Character.tab);
462
+ break;
463
+ case Character.u:
464
+ string_iterator['consume character']();
465
+ $i['add element']((0, parse_hexadecimal_1.$$)((0, from_character_list_1.$$)((_ea.build_list(($i) => {
466
+ const get_char = () => {
467
+ const char = string_iterator['get current character']();
468
+ if (char === null) {
469
+ return (0, tokens_1.throw_lexer_error)(['unterminated unicode escape sequence', null], {
470
+ 'start': start,
471
+ 'end': string_iterator['create location info']()
472
+ });
473
+ }
474
+ if (char < Character.a || (char > Character.f && char < Character.A) || char > Character.F || char < 0x30 || char > 0x39) {
475
+ return (0, tokens_1.throw_lexer_error)(['invalid unicode escape sequence', null], {
476
+ 'start': start,
477
+ 'end': string_iterator['create location info']()
478
+ });
479
+ }
480
+ string_iterator['consume character']();
481
+ return char;
482
+ };
483
+ $i['add element'](get_char());
484
+ $i['add element'](get_char());
485
+ $i['add element'](get_char());
486
+ $i['add element'](get_char());
487
+ })))));
488
+ break;
489
+ default:
490
+ return (0, tokens_1.throw_lexer_error)(['unknown escape character', null], {
491
+ 'start': start,
492
+ 'end': string_iterator['create location info']()
493
+ });
494
+ }
495
+ }
496
+ break;
497
+ default:
498
+ string_iterator['consume character']();
499
+ $i['add element']($);
500
+ }
501
+ }
502
+ }));
503
+ return txt;
504
+ };
505
+ exports.Delimited_String = Delimited_String;
506
+ const Tokenizer_Result = ($, $p) => {
507
+ return {
508
+ 'leading trivia': (0, exports.Trivia)($p['string iterator']),
509
+ 'tokens': _ea.build_list($i => {
510
+ while ($p['string iterator']['get current character']() !== null) {
511
+ const token = (0, exports.Annotated_Token)($p['string iterator']);
512
+ $i['add element'](token);
513
+ }
514
+ }),
515
+ 'end': $p['string iterator']['create location info']()
516
+ };
517
+ };
518
+ exports.Tokenizer_Result = Tokenizer_Result;
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZXhjZXB0aW9uYWwvYXV0aG9yaW5nX3BhcnNlL3JlZmluZXJzL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXVDO0FBTXZDLGdEQUF1RDtBQUN2RCx3REFBOEQ7QUFFOUQsaUlBQXNJO0FBQ3RJLGdJQUFxSTtBQUVySSxxR0FBcUc7QUFFOUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxlQUFvQyxFQUFtQixFQUFFO0lBRWhGLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUE7SUFDdkQsT0FBTztRQUNILE9BQU8sRUFBRSxJQUFBLHdCQUFzQixFQUFDLEdBQUcsQ0FBQyxVQUFVLENBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUMxRCxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUdWLENBQUM7b0JBQ0csTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQTtvQkFDcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ2IsT0FBTTtvQkFDVixDQUFDO29CQUNELElBQUksSUFBQSxpQ0FBb0IsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMxQixJQUFBLDBCQUFpQixFQUNiLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLEVBQ25DOzRCQUNJLE9BQU8sRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRTs0QkFDbEQsS0FBSyxFQUFFLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO3lCQUNuRCxDQUNKLENBQUE7b0JBRUwsQ0FBQztvQkFDRCxRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUNSLEtBQUssSUFBSSxFQUFFLEtBQUs7NEJBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxD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
@@ -1,5 +1,4 @@
1
- import * as _et from 'exupery-core-types';
2
- export type Location = {
1
+ export type Iterator_Location = {
3
2
  'absolute': number;
4
3
  'relative': {
5
4
  'line': number;
@@ -15,8 +14,8 @@ export type String_Iterator = {
15
14
  */
16
15
  'get current character': () => number | null;
17
16
  'look ahead': ($: number) => number | null;
18
- 'create offset location info': (subtract: number) => Location;
19
- 'create location info': () => Location;
17
+ 'create offset location info': (subtract: number) => Iterator_Location;
18
+ 'create location info': () => Iterator_Location;
20
19
  'create location info string': () => string;
21
20
  /**
22
21
  * if no non-whitespace character has been found yet on the current line,
@@ -35,7 +34,3 @@ export declare const is_control_character: ($: number) => boolean;
35
34
  export declare const create_string_iterator: ($: string, $p: {
36
35
  "tab size": number;
37
36
  }) => String_Iterator;
38
- export type Token_Iterator<Expected, Token> = {
39
- 'get required token': (expected: _et.Array<Expected>) => Token;
40
- 'consume token': () => void;
41
- };
@@ -0,0 +1,5 @@
1
+ import * as _et from 'exupery-core-types';
2
+ export type Token_Iterator<Expected, Token> = {
3
+ 'get required token': (expected: _et.Array<Expected>) => Token;
4
+ 'consume token': () => void;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5faXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXhjZXB0aW9uYWwvYXV0aG9yaW5nX3BhcnNlL3Rva2VuX2l0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,9 @@
1
+ import * as _ea from 'exupery-core-alg';
2
+ import * as _source from "../../../interface/generated/pareto/schemas/token/data_types/source";
3
+ import * as d_parse_result from "../../../interface/generated/pareto/schemas/authoring_parse_result/data_types/target";
4
+ import { Characters_Iterator } from "./iterator";
5
+ export type Refinement_Context = {
6
+ iterator: Characters_Iterator;
7
+ lexer_error: (type: d_parse_result.Parse_Error._type.SG.lexer, range: _source.Range) => never;
8
+ };
9
+ export declare const create_context: (token_iterator: Characters_Iterator, abort: _ea.Abort<d_parse_result.Parse_Error>) => Refinement_Context;
@@ -0,0 +1,37 @@
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_context = void 0;
27
+ const sh = __importStar(require("../../../shorthands/parse_result"));
28
+ const create_context = (token_iterator, abort) => {
29
+ return {
30
+ iterator: token_iterator,
31
+ lexer_error: (type, range) => {
32
+ abort(sh.lexer_error(type, range));
33
+ }
34
+ };
35
+ };
36
+ exports.create_context = create_context;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9leGNlcHRpb25hbC9hdXRob3JpbmdfcGFyc2UvdG9rZW5zL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxxRUFBc0Q7QUFVL0MsTUFBTSxjQUFjLEdBQUcsQ0FDMUIsY0FBbUMsRUFDbkMsS0FBNEMsRUFDMUIsRUFBRTtJQUNwQixPQUFPO1FBQ0gsUUFBUSxFQUFFLGNBQWM7UUFDeEIsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pCLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUNoQixJQUFJLEVBQ0osS0FBSyxDQUNSLENBQUMsQ0FBQTtRQUNOLENBQUM7S0FDSixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBYlksUUFBQSxjQUFjLGtCQWExQiJ9
@@ -0,0 +1,3 @@
1
+ import * as _source from "../../../interface/generated/pareto/schemas/token/data_types/source";
2
+ import * as d_parse_result from "../../../interface/generated/pareto/schemas/authoring_parse_result/data_types/target";
3
+ export declare const lexer_error: (type: d_parse_result.Parse_Error._type.SG.lexer, range: _source.Range) => d_parse_result.Parse_Error;