astn-core 0.5.115 → 0.5.117

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.
@@ -40,13 +40,12 @@ exports.Tokenizer_Result = exports.Delimited_Text = exports.Trivia = exports.Whi
40
40
  const p_ = __importStar(require("pareto-core/dist/implementation/production"));
41
41
  const p_t = __importStar(require("pareto-core/dist/implementation/transformer"));
42
42
  const unreachable_code_path_1 = __importDefault(require("pareto-core/dist/implementation/transformer/specials/unreachable_code_path"));
43
- const list_build_deprecated_1 = __importDefault(require("pareto-core/dist/implementation/refiner/specials/list_build_deprecated"));
43
+ const variables_1 = __importDefault(require("pareto-core/dist/implementation/transformer/specials/variables"));
44
44
  const text_from_list_1 = __importDefault(require("pareto-core/dist/implementation/transformer/specials/text_from_list"));
45
- const change_context_1 = __importDefault(require("pareto-core/dist/implementation/refiner/specials/change_context"));
46
45
  //dependencies
47
46
  const create_range = (iterator, $p) => ({
48
47
  'start': $p['start character'].location,
49
- 'end': iterator.look((next) => next.location, (end_info) => end_info)
48
+ 'end': iterator.peek((next) => next.location, (end_info) => end_info)
50
49
  });
51
50
  const Whitespace = (iterator) => {
52
51
  const is_whitespace_character = ($) => {
@@ -65,110 +64,132 @@ const Whitespace = (iterator) => {
65
64
  return false;
66
65
  }
67
66
  };
68
- const next = iterator.look_raw();
69
- if (next === null) {
70
- return p_.literal.not_set();
71
- }
72
- else {
73
- if (!is_whitespace_character(next[0])) {
67
+ return iterator.peek(($) => {
68
+ if (!is_whitespace_character($)) {
74
69
  return p_.literal.not_set();
75
70
  }
76
71
  else {
77
- const start_character = next[0];
72
+ const start_character = $;
78
73
  return p_.literal.set({
79
- 'value': (0, text_from_list_1.default)(iterator.list({
74
+ 'value': (0, text_from_list_1.default)(iterator.build_list({
80
75
  has_more_items: ($) => is_whitespace_character($),
81
- handle: ($) => {
82
- iterator.discard(() => null); // discard the character
83
- return $.code;
84
- },
76
+ handle: () => iterator.consume.number(($) => $.code, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen")),
85
77
  }), ($) => $),
86
- 'range': create_range(iterator, { 'start character': start_character }),
78
+ 'range': create_range(iterator, {
79
+ 'start character': start_character
80
+ }),
87
81
  });
88
82
  }
89
- }
83
+ }, () => p_.literal.not_set());
90
84
  };
91
85
  exports.Whitespace = Whitespace;
92
- const Trivia = (iterator) => ({
86
+ const Trivia = (iterator, abort) => ({
93
87
  'leading whitespace': (0, exports.Whitespace)(iterator),
94
- 'comments': iterator.list({
88
+ 'comments': iterator.build_list({
95
89
  has_more_items: (current) => {
96
- const next = iterator.look_ahead_raw(1);
90
+ // slash followed by either slash or asterisk
97
91
  return current.code === 0x2F
98
- && next !== null && (next[0].code === 0x2F || next[0].code === 0x2A); // slash followed by either slash or asterisk
92
+ && iterator.peek_ahead(1, ($) => $.code === 0x2F || $.code === 0x2A, // slash or asterisk
93
+ () => false);
99
94
  },
100
- handle: (slash_character) => {
101
- iterator.discard(() => null); // discard the first slash
102
- const next_char = iterator.look_raw();
103
- if (next_char === null) {
104
- return (0, unreachable_code_path_1.default)("we checked in has_more_items for the presence of the next character, so this should never happen");
105
- }
106
- switch (next_char[0].code) {
107
- case 0x2F: // /
108
- iterator.discard(() => null); // discard the second /
109
- return ({
110
- 'type': ['line', null],
111
- 'content': (0, text_from_list_1.default)(iterator.list({
112
- has_more_items: ($) => $.code !== 0x0A && $.code !== 0x0D, // not a line feed or carriage return
113
- handle: ($) => {
114
- iterator.discard(() => null); // discard the character
115
- return $.code;
116
- },
117
- }), ($) => $),
118
- 'range': create_range(iterator, { 'start character': slash_character }),
119
- 'trailing whitespace': (0, exports.Whitespace)(iterator)
120
- });
121
- case 0x2A: { // *
122
- iterator.discard(() => null); // discard the asterisk
123
- const create_error = (element, expected) => p_t.from.optional(element).decide(($) => ({
124
- 'range': {
125
- 'start': $.location,
126
- 'end': {
127
- 'absolute': $.location.absolute + 1,
128
- 'relative': {
129
- 'line': $.location.relative.line,
130
- 'column': $.location.relative.column + 1,
131
- }
132
- }
133
- },
134
- 'expected': expected
135
- }), () => (0, unreachable_code_path_1.default)("implement me"));
136
- return {
137
- 'type': ['block', null],
138
- 'content': iterator.wrap_up(() => (0, text_from_list_1.default)(iterator.list({
139
- has_more_items: ($) => {
140
- const next_char = iterator.look_ahead_raw(1);
141
- return $.code !== 0x2A || (next_char === null || next_char[0].code !== 0x2F); // not an asterisk followed by a solidus (end of block comment)
142
- },
143
- handle: ($) => {
144
- iterator.discard(() => null); // discard the character
145
- return $.code;
146
- },
147
- }), ($) => $), () => ({
148
- 'asterisk': iterator.expect({
149
- expected: ['block comment termination', null],
150
- item: ($, abort2) => $.code === 0x2A
151
- ? $
152
- : abort2(null),
153
- }),
154
- 'solidus': iterator.expect({
155
- expected: ['block comment termination', null],
156
- item: ($, abort2) => $.code === 0x2F
157
- ? $
158
- : abort2(null),
95
+ handle: () => {
96
+ iterator.consume.nothing(// discard the first slash
97
+ ($) => null, () => (0, unreachable_code_path_1.default)("has_more_items -> true"));
98
+ return iterator.peek(($) => {
99
+ switch ($.code) {
100
+ case 0x2F: // /
101
+ iterator.consume.nothing(// discard the second /
102
+ () => null, () => (0, unreachable_code_path_1.default)("has_more_items -> true"));
103
+ return ({
104
+ 'type': ['line', null],
105
+ 'content': (0, text_from_list_1.default)(iterator.build_list({
106
+ has_more_items: ($) => $.code !== 0x0A && $.code !== 0x0D, // not a line feed or carriage return
107
+ handle: () => iterator.consume.number(($) => $.code, () => (0, unreachable_code_path_1.default)("has_more_items -> true")),
108
+ }), ($) => $),
109
+ 'range': create_range(iterator, { 'start character': $ }),
110
+ 'trailing whitespace': (0, exports.Whitespace)(iterator)
111
+ });
112
+ case 0x2A: { // *
113
+ iterator.consume.nothing(// discard the asterisk
114
+ () => null, () => (0, unreachable_code_path_1.default)("has_more_items -> true"));
115
+ // const create_error = (
116
+ // element: p_di.Optional_Value<d_in.Annotated_Character>,
117
+ // expected: d_function.Lexer_Error.expected,
118
+ // ): d_function.Lexer_Error => p_t.from.optional(element).decide<d_function.Lexer_Error>(
119
+ // ($) => ({
120
+ // 'range': {
121
+ // 'start': $.location,
122
+ // 'end': {
123
+ // 'absolute': $.location.absolute + 1,
124
+ // 'relative': {
125
+ // 'line': $.location.relative.line,
126
+ // 'column': $.location.relative.column + 1,
127
+ // }
128
+ // }
129
+ // },
130
+ // 'expected': expected
131
+ // }),
132
+ // () => p_unreachable_code_path("implement me")
133
+ // )
134
+ return {
135
+ 'type': ['block', null],
136
+ 'content': (0, variables_1.default)(() => {
137
+ const $p_temp_content = (0, text_from_list_1.default)(iterator.build_list({
138
+ has_more_items: ($) => {
139
+ // not an asterisk followed by a solidus (end of block comment)
140
+ return $.code !== 0x2A
141
+ || iterator.peek_ahead(1, ($) => $.code !== 0x2F, // not a solidus
142
+ () => true // the asterisk needs to be processed, so, yes, there are more items
143
+ );
144
+ },
145
+ handle: () => iterator.consume.number(($) => $.code, () => (0, unreachable_code_path_1.default)("has_more_items -> true")),
146
+ }), ($) => $);
147
+ iterator.consume.nothing(// discard the asterisk
148
+ ($) => $.code === 0x2A
149
+ ? null
150
+ : abort({
151
+ 'expected': ['block comment termination', null],
152
+ 'range': {
153
+ 'start': $.location,
154
+ 'end': $.location,
155
+ }
156
+ }), (end_info) => abort({
157
+ 'expected': ['block comment termination', null],
158
+ 'range': {
159
+ 'start': end_info,
160
+ 'end': end_info,
161
+ }
162
+ }));
163
+ iterator.consume.nothing(// discard the solidus
164
+ ($) => $.code === 0x2F
165
+ ? null
166
+ : abort({
167
+ 'expected': ['block comment termination', null],
168
+ 'range': {
169
+ 'start': $.location,
170
+ 'end': $.location,
171
+ }
172
+ }), (end_info) => abort({
173
+ 'expected': ['block comment termination', null],
174
+ 'range': {
175
+ 'start': end_info,
176
+ 'end': end_info,
177
+ }
178
+ }));
179
+ return $p_temp_content;
159
180
  }),
160
- })),
161
- 'range': create_range(iterator, { 'start character': slash_character }),
162
- 'trailing whitespace': (0, exports.Whitespace)(iterator)
163
- };
181
+ 'range': create_range(iterator, { 'start character': $ }),
182
+ 'trailing whitespace': (0, exports.Whitespace)(iterator)
183
+ };
184
+ }
185
+ default: return (0, unreachable_code_path_1.default)("we checked in has_more_items that the next character is either a * or a /, so this should never happen");
164
186
  }
165
- default: return (0, unreachable_code_path_1.default)("we checked in has_more_items that the next character is either a * or a /, so this should never happen");
166
- }
187
+ }, () => (0, unreachable_code_path_1.default)("has_more_items -> true"));
167
188
  },
168
189
  }),
169
190
  });
170
191
  exports.Trivia = Trivia;
171
- const Delimited_Text = (iterator, $p) => {
192
+ const Delimited_Text = (iterator, abort, $p) => {
172
193
  const Character = {
173
194
  backspace: 0x08, // \b
174
195
  form_feed: 0x0C, // \f
@@ -190,339 +211,291 @@ const Delimited_Text = (iterator, $p) => {
190
211
  A: 0x41, // A
191
212
  F: 0x46, // F
192
213
  };
193
- const txt = (0, text_from_list_1.default)((0, list_build_deprecated_1.default)(($i) => {
194
- while (true) {
195
- const $ = iterator.look_raw();
196
- if ($ === null) {
197
- return iterator.abort({
198
- 'range': create_range(iterator, { 'start character': $p['start character'] }),
199
- 'expected': ['text termination', null]
200
- });
201
- }
202
- if ($[0].code === $p['end character']) {
203
- iterator.discard(() => null); // discard the end character
204
- return;
205
- }
206
- switch ($[0].code) {
207
- case Character.line_feed:
208
- case Character.carriage_return:
209
- if (!$p['allow newlines']) {
210
- return iterator.abort({
211
- 'expected': ['no end of line in text', null],
212
- 'range': create_range(iterator, { 'start character': $p['start character'] }),
213
- });
214
- }
215
- iterator.discard(() => null);
216
- $i['add item']($[0].code);
217
- break;
218
- case Character.reverse_solidus: // \ (escape)
219
- iterator.discard(() => null);
220
- {
221
- const $ = iterator.look_raw();
222
- if ($ === null) {
223
- return iterator.abort({
224
- 'range': create_range(iterator, { 'start character': $p['start character'] }),
225
- 'expected': ['escape character', { 'found': p_.literal.not_set() }]
226
- });
227
- }
228
- switch ($[0].code) {
229
- case Character.quotation_mark:
230
- iterator.discard(() => null);
231
- $i['add item'](Character.quotation_mark);
232
- break;
233
- case Character.apostrophe:
234
- iterator.discard(() => null);
235
- $i['add item'](Character.apostrophe);
236
- break;
237
- case Character.backtick:
238
- iterator.discard(() => null);
239
- $i['add item'](Character.backtick);
240
- break;
241
- case Character.reverse_solidus:
242
- iterator.discard(() => null);
243
- $i['add item'](Character.reverse_solidus);
244
- break;
245
- case Character.solidus:
246
- iterator.discard(() => null);
247
- $i['add item'](Character.solidus);
248
- break;
249
- case Character.b:
250
- iterator.discard(() => null);
251
- $i['add item'](Character.backspace);
252
- break;
253
- case Character.f:
254
- iterator.discard(() => null);
255
- $i['add item'](Character.form_feed);
256
- break;
257
- case Character.n:
258
- iterator.discard(() => null);
259
- $i['add item'](Character.line_feed);
260
- break;
261
- case Character.r:
262
- iterator.discard(() => null);
263
- $i['add item'](Character.carriage_return);
264
- break;
265
- case Character.t:
266
- iterator.discard(() => null);
267
- $i['add item'](Character.tab);
268
- break;
269
- case Character.u:
270
- iterator.discard(() => null);
271
- const r_hexadecimal = ($, abort) => {
272
- const characters = $;
273
- let result = 0;
274
- let isNegative = false;
275
- let startIndex = 0;
276
- // Check for empty string
277
- if (p_t.from.list(characters).amount_of_items() === 0) {
278
- abort("empty string is not a valid hexadecimal number");
279
- }
280
- const get_character_at = (index) => {
281
- return characters.__deprecated_get_item_at(index, {
282
- out_of_bounds: () => (0, unreachable_code_path_1.default)("this function is only called with valid indices, so this should never happen"),
283
- });
284
- };
285
- // Check for negative sign
286
- if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
287
- isNegative = true;
288
- startIndex = 1;
214
+ return (0, text_from_list_1.default)(iterator.build_list({
215
+ has_more_items: ($) => $.code !== $p['end character'],
216
+ handle: () => iterator.consume.number(($) => {
217
+ switch ($.code) {
218
+ case Character.line_feed: return $p['allow newlines']
219
+ ? $.code
220
+ : abort({
221
+ 'expected': ['no end of line in text', null],
222
+ 'range': create_range(iterator, { 'start character': $p['start character'] }),
223
+ });
224
+ case Character.carriage_return: return $p['allow newlines']
225
+ ? $.code
226
+ : abort({
227
+ 'expected': ['no end of line in text', null],
228
+ 'range': create_range(iterator, { 'start character': $p['start character'] }),
229
+ });
230
+ case Character.reverse_solidus: return iterator.consume.number(($) => {
231
+ switch ($.code) {
232
+ case Character.quotation_mark:
233
+ return Character.quotation_mark;
234
+ case Character.apostrophe:
235
+ return Character.apostrophe;
236
+ case Character.backtick:
237
+ return Character.backtick;
238
+ case Character.reverse_solidus:
239
+ return Character.reverse_solidus;
240
+ case Character.solidus:
241
+ return Character.solidus;
242
+ case Character.b:
243
+ return Character.backspace;
244
+ case Character.f:
245
+ return Character.form_feed;
246
+ case Character.n:
247
+ return Character.line_feed;
248
+ case Character.r:
249
+ return Character.carriage_return;
250
+ case Character.t:
251
+ return Character.tab;
252
+ case Character.u:
253
+ const r_hexadecimal = ($, abort) => {
254
+ const characters = $;
255
+ let result = 0;
256
+ let isNegative = false;
257
+ let startIndex = 0;
258
+ // Check for empty string
259
+ if (p_t.from.list(characters).amount_of_items() === 0) {
260
+ abort("empty string is not a valid hexadecimal number");
261
+ }
262
+ const get_character_at = (index) => {
263
+ return characters.__deprecated_get_item_at(index, {
264
+ out_of_bounds: () => (0, unreachable_code_path_1.default)("this function is only called with valid indices, so this should never happen"),
265
+ });
266
+ };
267
+ // Check for negative sign
268
+ if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
269
+ isNegative = true;
270
+ startIndex = 1;
271
+ }
272
+ // Check for "0x" prefix - REQUIRE it for hex
273
+ if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
274
+ get_character_at(startIndex) !== 48 || // '0'
275
+ get_character_at(startIndex + 1) !== 120) { // 'x'
276
+ abort("Hexadecimal number must have '0x' prefix");
277
+ }
278
+ startIndex += 2;
279
+ // Check if there are digits after the prefix
280
+ if (startIndex >= p_t.from.list(characters).amount_of_items()) {
281
+ abort("Hexadecimal number must have digits after '0x' prefix");
282
+ }
283
+ // Parse hex digits from left to right
284
+ for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
285
+ const charCode = get_character_at(i);
286
+ let digit;
287
+ // Check if character is a hex digit
288
+ if (charCode >= 48 && charCode <= 57) { // '0'-'9'
289
+ digit = charCode - 48;
289
290
  }
290
- // Check for "0x" prefix - REQUIRE it for hex
291
- if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
292
- get_character_at(startIndex) !== 48 || // '0'
293
- get_character_at(startIndex + 1) !== 120) { // 'x'
294
- abort("Hexadecimal number must have '0x' prefix");
291
+ else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
292
+ digit = charCode - 65 + 10;
295
293
  }
296
- startIndex += 2;
297
- // Check if there are digits after the prefix
298
- if (startIndex >= p_t.from.list(characters).amount_of_items()) {
299
- abort("Hexadecimal number must have digits after '0x' prefix");
294
+ else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
295
+ digit = charCode - 97 + 10;
300
296
  }
301
- // Parse hex digits from left to right
302
- for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
303
- const charCode = get_character_at(i);
304
- let digit;
305
- // Check if character is a hex digit
306
- if (charCode >= 48 && charCode <= 57) { // '0'-'9'
307
- digit = charCode - 48;
308
- }
309
- else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
310
- digit = charCode - 65 + 10;
311
- }
312
- else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
313
- digit = charCode - 97 + 10;
314
- }
315
- else {
316
- // Invalid character
317
- return abort("Invalid character in hexadecimal string");
318
- }
319
- result = result * 16 + digit;
297
+ else {
298
+ // Invalid character
299
+ return abort("Invalid character in hexadecimal string");
320
300
  }
321
- return isNegative ? -result : result;
322
- };
323
- $i['add item'](r_hexadecimal((0, list_build_deprecated_1.default)(($i) => {
324
- const get_char = () => {
325
- const char = iterator.look_raw();
326
- if (char === null) {
327
- return iterator.abort({
328
- 'range': create_range(iterator, { 'start character': $p['start character'] }),
329
- 'expected': ['unicode character', { 'found': p_.literal.not_set() }]
330
- });
331
- }
332
- if (char[0].code < Character.a || (char[0].code > Character.f && char[0].code < Character.A) || char[0].code > Character.F || char[0].code < 0x30 || char[0].code > 0x39) {
333
- return iterator.abort({
334
- 'range': create_range(iterator, { 'start character': $p['start character'] }),
335
- 'expected': ['unicode character', { 'found': p_.literal.set(char[0].code) }]
336
- });
337
- }
338
- iterator.discard(() => null);
339
- return char[0].code;
340
- };
341
- $i['add item'](get_char());
342
- $i['add item'](get_char());
343
- $i['add item'](get_char());
344
- $i['add item'](get_char());
345
- }), () => (0, unreachable_code_path_1.default)("the number was built in a controlled way")));
346
- break;
347
- default:
348
- return iterator.abort({
301
+ result = result * 16 + digit;
302
+ }
303
+ return isNegative ? -result : result;
304
+ };
305
+ const get_char = () => {
306
+ return iterator.consume.number(($) => $.code, (end_info) => abort({
349
307
  'range': create_range(iterator, { 'start character': $p['start character'] }),
350
- 'expected': ['escape character', {
351
- 'found': p_.literal.set($[0].code)
352
- }]
353
- });
354
- }
308
+ 'expected': ['unicode character', { 'found': p_.literal.not_set() }]
309
+ }));
310
+ };
311
+ return r_hexadecimal(p_.literal.list([
312
+ get_char(),
313
+ get_char(),
314
+ get_char(),
315
+ get_char()
316
+ ]), ($) => abort({
317
+ 'range': create_range(iterator, { 'start character': $p['start character'] }),
318
+ 'expected': ['unicode character', { 'found': p_.literal.set(42) }] //FIXME: should be unicode *value*
319
+ }));
320
+ default: return abort({
321
+ 'range': create_range(iterator, { 'start character': $p['start character'] }),
322
+ 'expected': ['escape character', {
323
+ 'found': p_.literal.set($.code)
324
+ }]
325
+ });
355
326
  }
356
- break;
357
- default:
358
- iterator.discard(() => null);
359
- $i['add item']($[0].code);
327
+ }, (end_info) => abort({
328
+ 'range': create_range(iterator, { 'start character': $p['start character'] }),
329
+ 'expected': ['escape character', { 'found': p_.literal.not_set() }]
330
+ }));
331
+ default: return $.code;
360
332
  }
361
- }
333
+ }, () => (0, unreachable_code_path_1.default)("has_more_items -> true"))
362
334
  }), ($) => $);
363
- return txt;
364
335
  };
365
336
  exports.Delimited_Text = Delimited_Text;
366
- const Tokenizer_Result = (iterator, $p) => ({
367
- 'leading trivia': (0, exports.Trivia)(iterator),
368
- 'tokens': iterator.list({
337
+ const Tokenizer_Result = (iterator, abort, $p) => ({
338
+ 'leading trivia': (0, exports.Trivia)(iterator, abort),
339
+ 'tokens': iterator.build_list({
369
340
  has_more_items: ($) => true,
370
- handle: ($) => ({
371
- 'type': (0, change_context_1.default)(null, () => {
372
- const Character = {
373
- open_angle_bracket: 0x3C, // <
374
- open_brace: 0x7B, // {
375
- open_bracket: 0x5B, // [
376
- open_paren: 0x28, // (
377
- close_angle_bracket: 0x3E, // >
378
- close_brace: 0x7D, // }
379
- close_bracket: 0x5D, // ]
380
- close_paren: 0x29, // )
381
- apostrophe: 0x27, // '
382
- asterisk: 0x2A, // *
383
- at: 0x40, // @
384
- backtick: 0x60, // `
385
- bang: 0x21,
386
- colon: 0x3A, // :
387
- pipe: 0x7C, // |
388
- quotation_mark: 0x22, // "
389
- slash: 0x2F, // /
390
- underscore: 0x5F, // _
391
- tilde: 0x7E, // ~
392
- hash: 0x23, // #
393
- space: 0x20, // space
394
- tab: 0x09, // \t
395
- };
396
- switch ($.code) {
397
- case Character.open_brace:
398
- iterator.discard(() => null);
399
- return ['{', null];
400
- case Character.open_bracket:
401
- iterator.discard(() => null);
402
- return ['[', null];
403
- case Character.open_angle_bracket:
404
- iterator.discard(() => null);
405
- return ['<', null];
406
- case Character.open_paren:
407
- iterator.discard(() => null);
408
- return ['(', null];
409
- case Character.close_brace:
410
- iterator.discard(() => null);
411
- return ['}', null];
412
- case Character.close_bracket:
413
- iterator.discard(() => null);
414
- return [']', null];
415
- case Character.close_angle_bracket:
416
- iterator.discard(() => null);
417
- return ['>', null];
418
- case Character.close_paren:
419
- iterator.discard(() => null);
420
- return [')', null];
421
- //individuals
422
- case Character.hash:
423
- iterator.discard(() => null);
424
- return ['#', null]; // missing data token
425
- case Character.pipe:
426
- iterator.discard(() => null);
427
- return ['|', null]; // state value token
428
- case Character.underscore:
429
- iterator.discard(() => null);
430
- return ['_', null]; // unset value token
431
- case Character.tilde:
432
- iterator.discard(() => null);
433
- return ['~', null]; // unset value token
434
- case Character.asterisk:
435
- iterator.discard(() => null);
436
- return ['*', null]; // set value token
437
- case Character.at:
438
- iterator.discard(() => null);
439
- return ['@', null]; // include token
440
- case Character.bang:
441
- iterator.discard(() => null);
442
- return ['!', null]; // header token
443
- case Character.colon:
444
- iterator.discard(() => null);
445
- return [':', null]; // structural token
446
- case Character.quotation_mark:
447
- iterator.discard(() => null);
448
- return ['text', {
449
- 'value': (0, exports.Delimited_Text)(iterator, {
450
- 'start character': $,
451
- 'end character': Character.quotation_mark,
452
- 'allow newlines': true,
453
- }),
454
- 'type': ['quoted', null],
455
- }];
456
- case Character.backtick:
457
- iterator.discard(() => null);
458
- return ['text', {
459
- 'value': (0, exports.Delimited_Text)(iterator, {
460
- 'start character': $,
461
- 'end character': Character.backtick,
462
- 'allow newlines': false,
463
- }),
464
- 'type': ['backticked', null],
465
- }];
466
- case Character.apostrophe:
467
- iterator.discard(() => null);
468
- return ['text', {
469
- 'value': (0, exports.Delimited_Text)(iterator, {
470
- 'start character': $,
471
- 'end character': Character.apostrophe,
472
- 'allow newlines': false,
473
- }),
474
- 'type': ['apostrophed', null],
475
- }];
476
- default:
477
- return ['text', {
478
- 'type': ['undelimited', null],
479
- 'value': (0, text_from_list_1.default)(iterator.list({
480
- has_more_items: ($) => {
481
- const WhitespaceChars = {
482
- tab: 0x09, // \t
483
- line_feed: 0x0A, // \n
484
- carriage_return: 0x0D, // \r
485
- space: 0x20, //
486
- comma: 0x2C, // ,
487
- };
488
- return $.code !== Character.open_brace &&
489
- $.code !== Character.close_brace &&
490
- $.code !== Character.open_bracket &&
491
- $.code !== Character.close_bracket &&
492
- $.code !== Character.open_angle_bracket &&
493
- $.code !== Character.close_angle_bracket &&
494
- $.code !== Character.open_paren &&
495
- $.code !== Character.close_paren &&
496
- $.code !== Character.apostrophe &&
497
- $.code !== Character.asterisk &&
498
- $.code !== Character.at &&
499
- $.code !== Character.backtick &&
500
- $.code !== Character.bang &&
501
- $.code !== Character.colon &&
502
- $.code !== Character.pipe &&
503
- $.code !== Character.quotation_mark &&
504
- $.code !== Character.slash &&
505
- $.code !== Character.tilde &&
506
- $.code !== WhitespaceChars.comma &&
507
- $.code !== WhitespaceChars.space &&
508
- $.code !== WhitespaceChars.tab &&
509
- $.code !== WhitespaceChars.line_feed &&
510
- $.code !== WhitespaceChars.carriage_return;
511
- },
512
- handle: ($) => {
513
- iterator.discard(() => null); // discard the character
514
- return $.code;
515
- },
516
- }), ($) => $)
517
- }];
518
- }
519
- }),
520
- 'start': $.location,
521
- 'end': create_range(iterator, { 'start character': $ }).end,
522
- 'trailing trivia': (0, exports.Trivia)(iterator),
523
- }),
341
+ handle: () => {
342
+ const $p_start = iterator.peek(($) => $, () => (0, unreachable_code_path_1.default)("has_more_items -> true"));
343
+ return ({
344
+ 'start': $p_start.location,
345
+ 'type': iterator.peek(($) => {
346
+ const Character = {
347
+ open_angle_bracket: 0x3C, // <
348
+ open_brace: 0x7B, // {
349
+ open_bracket: 0x5B, // [
350
+ open_paren: 0x28, // (
351
+ close_angle_bracket: 0x3E, // >
352
+ close_brace: 0x7D, // }
353
+ close_bracket: 0x5D, // ]
354
+ close_paren: 0x29, // )
355
+ apostrophe: 0x27, // '
356
+ asterisk: 0x2A, // *
357
+ at: 0x40, // @
358
+ backtick: 0x60, // `
359
+ bang: 0x21,
360
+ colon: 0x3A, // :
361
+ pipe: 0x7C, // |
362
+ quotation_mark: 0x22, // "
363
+ slash: 0x2F, // /
364
+ underscore: 0x5F, // _
365
+ tilde: 0x7E, // ~
366
+ hash: 0x23, // #
367
+ space: 0x20, // space
368
+ tab: 0x09, // \t
369
+ };
370
+ switch ($.code) {
371
+ case Character.open_brace:
372
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
373
+ return ['{', null];
374
+ case Character.open_bracket:
375
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
376
+ return ['[', null];
377
+ case Character.open_angle_bracket:
378
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
379
+ return ['<', null];
380
+ case Character.open_paren:
381
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
382
+ return ['(', null];
383
+ case Character.close_brace:
384
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
385
+ return ['}', null];
386
+ case Character.close_bracket:
387
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
388
+ return [']', null];
389
+ case Character.close_angle_bracket:
390
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
391
+ return ['>', null];
392
+ case Character.close_paren:
393
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
394
+ return [')', null];
395
+ //individuals
396
+ case Character.hash:
397
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
398
+ return ['#', null]; // missing data token
399
+ case Character.pipe:
400
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
401
+ return ['|', null]; // state value token
402
+ case Character.underscore:
403
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
404
+ return ['_', null]; // unset value token
405
+ case Character.tilde:
406
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
407
+ return ['~', null]; // unset value token
408
+ case Character.asterisk:
409
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
410
+ return ['*', null]; // set value token
411
+ case Character.at:
412
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
413
+ return ['@', null]; // include token
414
+ case Character.bang:
415
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
416
+ return ['!', null]; // header token
417
+ case Character.colon:
418
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
419
+ return [':', null]; // structural token
420
+ case Character.quotation_mark:
421
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
422
+ return ['text', {
423
+ 'value': (0, exports.Delimited_Text)(iterator, abort, {
424
+ 'start character': $,
425
+ 'end character': Character.quotation_mark,
426
+ 'allow newlines': true,
427
+ }),
428
+ 'type': ['quoted', null],
429
+ }];
430
+ case Character.backtick:
431
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
432
+ return ['text', {
433
+ 'value': (0, exports.Delimited_Text)(iterator, abort, {
434
+ 'start character': $,
435
+ 'end character': Character.backtick,
436
+ 'allow newlines': false,
437
+ }),
438
+ 'type': ['backticked', null],
439
+ }];
440
+ case Character.apostrophe:
441
+ iterator.consume.nothing(($) => null, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
442
+ return ['text', {
443
+ 'value': (0, exports.Delimited_Text)(iterator, abort, {
444
+ 'start character': $,
445
+ 'end character': Character.apostrophe,
446
+ 'allow newlines': false,
447
+ }),
448
+ 'type': ['apostrophed', null],
449
+ }];
450
+ default:
451
+ return ['text', {
452
+ 'type': ['undelimited', null],
453
+ 'value': (0, text_from_list_1.default)(iterator.build_list({
454
+ has_more_items: ($) => {
455
+ const WhitespaceChars = {
456
+ tab: 0x09, // \t
457
+ line_feed: 0x0A, // \n
458
+ carriage_return: 0x0D, // \r
459
+ space: 0x20, //
460
+ comma: 0x2C, // ,
461
+ };
462
+ return $.code !== Character.open_brace &&
463
+ $.code !== Character.close_brace &&
464
+ $.code !== Character.open_bracket &&
465
+ $.code !== Character.close_bracket &&
466
+ $.code !== Character.open_angle_bracket &&
467
+ $.code !== Character.close_angle_bracket &&
468
+ $.code !== Character.open_paren &&
469
+ $.code !== Character.close_paren &&
470
+ $.code !== Character.apostrophe &&
471
+ $.code !== Character.asterisk &&
472
+ $.code !== Character.at &&
473
+ $.code !== Character.backtick &&
474
+ $.code !== Character.bang &&
475
+ $.code !== Character.colon &&
476
+ $.code !== Character.pipe &&
477
+ $.code !== Character.quotation_mark &&
478
+ $.code !== Character.slash &&
479
+ $.code !== Character.tilde &&
480
+ $.code !== WhitespaceChars.comma &&
481
+ $.code !== WhitespaceChars.space &&
482
+ $.code !== WhitespaceChars.tab &&
483
+ $.code !== WhitespaceChars.line_feed &&
484
+ $.code !== WhitespaceChars.carriage_return;
485
+ },
486
+ handle: () => {
487
+ return iterator.consume.number(($) => $.code, () => (0, unreachable_code_path_1.default)("we checked that there is a next character, so this should never happen"));
488
+ },
489
+ }), ($) => $)
490
+ }];
491
+ }
492
+ }, () => (0, unreachable_code_path_1.default)("has_more_items -> true")),
493
+ 'end': create_range(iterator, { 'start character': $p_start }).end,
494
+ 'trailing trivia': (0, exports.Trivia)(iterator, abort),
495
+ });
496
+ },
524
497
  }),
525
498
  'end': $p['end info']
526
499
  });
527
500
  exports.Tokenizer_Result = Tokenizer_Result;
528
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGVkX2NoYXJhY3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsZW1lbnRhdGlvbi9tYW51YWwvcHJvZHVjdGlvbnMvdG9rZW4vYW5ub3RhdGVkX2NoYXJhY3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrRUFBZ0U7QUFDaEUsaUZBQWtFO0FBSWxFLHVJQUFnSDtBQUNoSCxtSUFBNEc7QUFDNUcseUhBQWtHO0FBQ2xHLHFIQUE4RjtBQVU5RixjQUFjO0FBSWQsTUFBTSxZQUFZLEdBT2QsQ0FDQSxRQUFRLEVBQ1IsRUFBRSxFQUNtQixFQUFFLENBQUMsQ0FBQztJQUN6QixPQUFPLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUTtJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FDaEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQ3ZCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQ3pCO0NBQ0osQ0FBQyxDQUFBO0FBR0ssTUFBTSxVQUFVLEdBSW5CLENBQ0EsUUFBUSxFQUNRLEVBQUU7SUFFZCxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBMkIsRUFBRSxFQUFFO1FBQzVELFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxJQUFJLEVBQUUsS0FBSztnQkFDWixPQUFPLElBQUksQ0FBQTtZQUNmLEtBQUssSUFBSSxFQUFFLEtBQUs7Z0JBQ1osT0FBTyxJQUFJLENBQUE7WUFDZixLQUFLLElBQUksRUFBRSxLQUFLO2dCQUNaLE9BQU8sSUFBSSxDQUFBO1lBQ2YsS0FBSyxJQUFJLEVBQUUsUUFBUTtnQkFDZixPQUFPLElBQUksQ0FBQTtZQUNmLEtBQUssSUFBSSxFQUFFLElBQUk7Z0JBQ1gsT0FBTyxJQUFJLENBQUE7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
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGVkX2NoYXJhY3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsZW1lbnRhdGlvbi9tYW51YWwvcHJvZHVjdGlvbnMvdG9rZW4vYW5ub3RhdGVkX2NoYXJhY3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrRUFBZ0U7QUFDaEUsaUZBQWtFO0FBR2xFLHVJQUFnSDtBQUNoSCwrR0FBd0Y7QUFDeEYseUhBQWtHO0FBVWxHLGNBQWM7QUFJZCxNQUFNLFlBQVksR0FPZCxDQUNBLFFBQVEsRUFDUixFQUFFLEVBQ21CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRO0lBQ3ZDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUNoQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDdkIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FDekI7Q0FDSixDQUFDLENBQUE7QUFHSyxNQUFNLFVBQVUsR0FJbkIsQ0FDQSxRQUFRLEVBQ1EsRUFBRTtJQUVkLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUEyQixFQUFFLEVBQUU7UUFDNUQsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLElBQUksRUFBRSxLQUFLO2dCQUNaLE9BQU8sSUFBSSxDQUFBO1lBQ2YsS0FBSyxJQUFJLEVBQUUsS0FBSztnQkFDWixPQUFPLElBQUksQ0FBQTtZQUNmLEtBQUssSUFBSSxFQUFFLEtBQUs7Z0JBQ1osT0FBTyxJQUFJLENBQUE7WUFDZixLQUFLLElBQUksRUFBRSxRQUFRO2dCQUNmLE9BQU8sSUFBSSxDQUFBO1lBQ2YsS0FBSyxJQUFJLEVBQUUsSUFBSTtnQkFDWCxPQUFPLElBQUksQ0FBQTtZQUNmO2dCQUNJLE9B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