@bablr/language-en-bablr-vm-instruction 0.3.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.
package/lib/grammar.js ADDED
@@ -0,0 +1,3082 @@
1
+ /* @macrome
2
+ * @generatedby @bablr/macrome-generator-bablr
3
+ * @generatedfrom ./grammar.macro.js#99abc3afbc0f29ba0721e0d15e12d824acefbc06
4
+ * This file is autogenerated. Please do not edit it directly.
5
+ * When editing run `npx macrome watch` then change the file this is generated from.
6
+ */
7
+ import _applyDecs from '@babel/runtime/helpers/applyDecs2305';
8
+ import {
9
+ interpolateArray as _interpolateArray,
10
+ interpolateArrayChildren as _interpolateArrayChildren,
11
+ interpolateString as _interpolateString,
12
+ } from '@bablr/agast-helpers/template';
13
+ import * as _l from '@bablr/agast-vm-helpers/languages';
14
+ import * as _t from '@bablr/agast-helpers/shorthand';
15
+ let _initProto,
16
+ _ArrayDecs,
17
+ _ObjectDecs,
18
+ _TupleDecs,
19
+ _BooleanDecs,
20
+ _NullDecs,
21
+ _IdentifierDecs,
22
+ _IntegerDecs,
23
+ _InfinityDecs,
24
+ _PunctuatorDecs,
25
+ _KeywordDecs,
26
+ _AnyDecs;
27
+ import { CoveredBy, Node, InjectFrom } from '@bablr/helpers/decorators';
28
+ import * as Space from '@bablr/language-en-blank-space';
29
+ import * as productions from '@bablr/helpers/productions';
30
+ export const canonicalURL = 'https://bablr.org/languages/core/en/bablr-vm-instruction';
31
+ export const dependencies = {
32
+ Space,
33
+ };
34
+ export function* eatMatchTrivia() {
35
+ if (
36
+ yield _t.node(
37
+ _l.Instruction,
38
+ 'Call',
39
+ [_t.ref`verb`, _t.ref`arguments`],
40
+ {
41
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'match'),
42
+ arguments: _t.node(
43
+ _l.Instruction,
44
+ 'Tuple',
45
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
46
+ {
47
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
48
+ values: [
49
+ _t.node(
50
+ _l.Regex,
51
+ 'Pattern',
52
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
53
+ {
54
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
55
+ alternatives: [
56
+ _t.node(
57
+ _l.Regex,
58
+ 'Alternative',
59
+ [_t.ref`elements[]`],
60
+ {
61
+ elements: [
62
+ _t.node(
63
+ _l.Regex,
64
+ 'CharacterClass',
65
+ [
66
+ _t.ref`openToken`,
67
+ _t.ref`elements[]`,
68
+ _t.ref`elements[]`,
69
+ _t.ref`elements[]`,
70
+ _t.ref`closeToken`,
71
+ ],
72
+ {
73
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
74
+ elements: [
75
+ _t.node(_l.Regex, 'Character', [_t.lit(' ')], {}, {}),
76
+ _t.node(
77
+ _l.Regex,
78
+ 'Character',
79
+ [
80
+ _t.embedded(
81
+ _t.s_e_node(
82
+ _l.CSTML,
83
+ 'Escape',
84
+ [_t.lit('\\t')],
85
+ {},
86
+ {
87
+ cooked: '\t',
88
+ },
89
+ ),
90
+ ),
91
+ ],
92
+ {},
93
+ {},
94
+ ),
95
+ _t.node(
96
+ _l.Regex,
97
+ 'Character',
98
+ [
99
+ _t.embedded(
100
+ _t.s_e_node(
101
+ _l.CSTML,
102
+ 'Escape',
103
+ [_t.lit('\\n')],
104
+ {},
105
+ {
106
+ cooked: '\n',
107
+ },
108
+ ),
109
+ ),
110
+ ],
111
+ {},
112
+ {},
113
+ ),
114
+ ],
115
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
116
+ },
117
+ {
118
+ negate: false,
119
+ },
120
+ ),
121
+ ],
122
+ },
123
+ {},
124
+ ),
125
+ ],
126
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
127
+ },
128
+ {},
129
+ ),
130
+ ],
131
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
132
+ },
133
+ {},
134
+ ),
135
+ },
136
+ {},
137
+ )
138
+ ) {
139
+ return yield _t.node(
140
+ _l.Instruction,
141
+ 'Call',
142
+ [_t.ref`verb`, _t.ref`arguments`],
143
+ {
144
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
145
+ arguments: _t.node(
146
+ _l.Instruction,
147
+ 'Tuple',
148
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
149
+ {
150
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
151
+ values: [
152
+ _t.node(
153
+ _l.Spamex,
154
+ 'NodeMatcher',
155
+ [
156
+ _t.ref`openToken`,
157
+ _t.ref`flags`,
158
+ _t.ref`language`,
159
+ _t.ref`namespaceSeparatorToken`,
160
+ _t.ref`type`,
161
+ _t.ref`closeToken`,
162
+ ],
163
+ {
164
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
165
+ flags: _t.node(
166
+ _l.CSTML,
167
+ 'Flags',
168
+ [_t.ref`triviaToken`, _t.ref`tokenToken`],
169
+ {
170
+ triviaToken: _t.s_i_node(_l.CSTML, 'Punctuator', '#'),
171
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
172
+ },
173
+ {},
174
+ ),
175
+ language: _t.s_node(_l.Spamex, 'Identifier', 'Space'),
176
+ namespaceSeparatorToken: _t.s_i_node(_l.Spamex, 'Punctuator', ':'),
177
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Space'),
178
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
179
+ },
180
+ {},
181
+ ),
182
+ ],
183
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
184
+ },
185
+ {},
186
+ ),
187
+ },
188
+ {},
189
+ );
190
+ }
191
+ return null;
192
+ }
193
+ export const grammar = class BABLRVMInstructionGrammar {
194
+ static {
195
+ [_initProto] = _applyDecs(
196
+ this,
197
+ [
198
+ [Node, 2, 'Call'],
199
+ [_ArrayDecs, 2, 'Array'],
200
+ [_ObjectDecs, 2, 'Object'],
201
+ [Node, 2, 'Property'],
202
+ [_TupleDecs, 2, 'Tuple'],
203
+ [_BooleanDecs, 2, 'Boolean'],
204
+ [_NullDecs, 2, 'Null'],
205
+ [_IdentifierDecs, 2, 'Identifier'],
206
+ [Node, 2, 'UnsignedInteger'],
207
+ [_IntegerDecs, 2, 'Integer'],
208
+ [Node, 2, 'Digit'],
209
+ [_InfinityDecs, 2, 'Infinity'],
210
+ [_PunctuatorDecs, 2, 'Punctuator'],
211
+ [_KeywordDecs, 2, 'Keyword'],
212
+ [_AnyDecs, 2, 'Any'],
213
+ ],
214
+ [],
215
+ ).e;
216
+ }
217
+ constructor() {
218
+ _initProto(this);
219
+ }
220
+ *[((_ArrayDecs = [CoveredBy('Expression'), Node]),
221
+ (_ObjectDecs = [CoveredBy('Expression'), Node]),
222
+ (_TupleDecs = [CoveredBy('Expression'), Node]),
223
+ (_BooleanDecs = [CoveredBy('Expression'), Node]),
224
+ (_NullDecs = [CoveredBy('Expression'), Node]),
225
+ (_IdentifierDecs = [CoveredBy('Expression'), Node]),
226
+ (_IntegerDecs = [CoveredBy('Number'), Node]),
227
+ (_InfinityDecs = [CoveredBy('Number'), Node]),
228
+ (_PunctuatorDecs = [Node, InjectFrom(productions)]),
229
+ (_KeywordDecs = [Node, InjectFrom(productions)]),
230
+ (_AnyDecs = InjectFrom(productions)),
231
+ 'Call')]() {
232
+ yield _t.node(
233
+ _l.Instruction,
234
+ 'Call',
235
+ [_t.ref`verb`, _t.ref`arguments`],
236
+ {
237
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
238
+ arguments: _t.node(
239
+ _l.Instruction,
240
+ 'Tuple',
241
+ [
242
+ _t.ref`openToken`,
243
+ _t.ref`values[]`,
244
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
245
+ _t.ref`values[]`,
246
+ _t.ref`closeToken`,
247
+ ],
248
+ {
249
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
250
+ values: [
251
+ _t.node(
252
+ _l.Spamex,
253
+ 'NodeMatcher',
254
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
255
+ {
256
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
257
+ flags: _t.node(
258
+ _l.CSTML,
259
+ 'Flags',
260
+ [_t.ref`tokenToken`],
261
+ {
262
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
263
+ },
264
+ {},
265
+ ),
266
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Identifier'),
267
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
268
+ },
269
+ {},
270
+ ),
271
+ _t.node(
272
+ _l.CSTML,
273
+ 'String',
274
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
275
+ {
276
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
277
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('callee')], {}, {}),
278
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
279
+ },
280
+ {},
281
+ ),
282
+ ],
283
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
284
+ },
285
+ {},
286
+ ),
287
+ },
288
+ {},
289
+ );
290
+ yield* eatMatchTrivia();
291
+ yield _t.node(
292
+ _l.Instruction,
293
+ 'Call',
294
+ [_t.ref`verb`, _t.ref`arguments`],
295
+ {
296
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
297
+ arguments: _t.node(
298
+ _l.Instruction,
299
+ 'Tuple',
300
+ [
301
+ _t.ref`openToken`,
302
+ _t.ref`values[]`,
303
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
304
+ _t.ref`values[]`,
305
+ _t.ref`closeToken`,
306
+ ],
307
+ {
308
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
309
+ values: [
310
+ _t.node(
311
+ _l.Spamex,
312
+ 'NodeMatcher',
313
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
314
+ {
315
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
316
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
317
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Tuple'),
318
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
319
+ },
320
+ {},
321
+ ),
322
+ _t.node(
323
+ _l.CSTML,
324
+ 'String',
325
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
326
+ {
327
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
328
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('arguments')], {}, {}),
329
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
330
+ },
331
+ {},
332
+ ),
333
+ ],
334
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
335
+ },
336
+ {},
337
+ ),
338
+ },
339
+ {},
340
+ );
341
+ }
342
+ *Expression() {
343
+ yield _t.node(
344
+ _l.Instruction,
345
+ 'Call',
346
+ [_t.ref`verb`, _t.ref`arguments`],
347
+ {
348
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
349
+ arguments: _t.node(
350
+ _l.Instruction,
351
+ 'Tuple',
352
+ [
353
+ _t.ref`openToken`,
354
+ _t.ref`values[]`,
355
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
356
+ _t.ref`values[]`,
357
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
358
+ _t.ref`values[]`,
359
+ _t.ref`closeToken`,
360
+ ],
361
+ {
362
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
363
+ values: [
364
+ _t.node(
365
+ _l.Spamex,
366
+ 'NodeMatcher',
367
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
368
+ {
369
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
370
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
371
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Any'),
372
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
373
+ },
374
+ {},
375
+ ),
376
+ _t.node(
377
+ _l.Instruction,
378
+ 'Null',
379
+ [_t.ref`sigilToken`],
380
+ {
381
+ sigilToken: _t.s_i_node(_l.Instruction, 'Keyword', 'null'),
382
+ },
383
+ {},
384
+ ),
385
+ _t.node(
386
+ _l.Instruction,
387
+ 'Array',
388
+ [
389
+ _t.ref`openToken`,
390
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
391
+ _t.ref`elements[]`,
392
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
393
+ _t.ref`elements[]`,
394
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
395
+ _t.ref`elements[]`,
396
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
397
+ _t.ref`elements[]`,
398
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
399
+ _t.ref`elements[]`,
400
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
401
+ _t.ref`elements[]`,
402
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
403
+ _t.ref`elements[]`,
404
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
405
+ _t.ref`closeToken`,
406
+ ],
407
+ {
408
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '['),
409
+ elements: [
410
+ _t.node(
411
+ _l.Spamex,
412
+ 'NodeMatcher',
413
+ [
414
+ _t.ref`openToken`,
415
+ _t.ref`flags`,
416
+ _t.ref`type`,
417
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
418
+ _t.ref`intrinsicValue`,
419
+ _t.ref`closeToken`,
420
+ ],
421
+ {
422
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
423
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
424
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Array'),
425
+ intrinsicValue: _t.node(
426
+ _l.CSTML,
427
+ 'String',
428
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
429
+ {
430
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
431
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('[')], {}, {}),
432
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
433
+ },
434
+ {},
435
+ ),
436
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
437
+ },
438
+ {},
439
+ ),
440
+ _t.node(
441
+ _l.Spamex,
442
+ 'NodeMatcher',
443
+ [
444
+ _t.ref`openToken`,
445
+ _t.ref`flags`,
446
+ _t.ref`type`,
447
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
448
+ _t.ref`intrinsicValue`,
449
+ _t.ref`closeToken`,
450
+ ],
451
+ {
452
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
453
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
454
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Object'),
455
+ intrinsicValue: _t.node(
456
+ _l.CSTML,
457
+ 'String',
458
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
459
+ {
460
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
461
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('{')], {}, {}),
462
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
463
+ },
464
+ {},
465
+ ),
466
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
467
+ },
468
+ {},
469
+ ),
470
+ _t.node(
471
+ _l.Spamex,
472
+ 'NodeMatcher',
473
+ [
474
+ _t.ref`openToken`,
475
+ _t.ref`flags`,
476
+ _t.ref`type`,
477
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
478
+ _t.ref`intrinsicValue`,
479
+ _t.ref`closeToken`,
480
+ ],
481
+ {
482
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
483
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
484
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Tuple'),
485
+ intrinsicValue: _t.node(
486
+ _l.CSTML,
487
+ 'String',
488
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
489
+ {
490
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
491
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('(')], {}, {}),
492
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
493
+ },
494
+ {},
495
+ ),
496
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
497
+ },
498
+ {},
499
+ ),
500
+ _t.node(
501
+ _l.Spamex,
502
+ 'NodeMatcher',
503
+ [
504
+ _t.ref`openToken`,
505
+ _t.ref`flags`,
506
+ _t.ref`type`,
507
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
508
+ _t.ref`intrinsicValue`,
509
+ _t.ref`closeToken`,
510
+ ],
511
+ {
512
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
513
+ flags: _t.node(
514
+ _l.CSTML,
515
+ 'Flags',
516
+ [_t.ref`tokenToken`],
517
+ {
518
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
519
+ },
520
+ {},
521
+ ),
522
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Boolean'),
523
+ intrinsicValue: _t.node(
524
+ _l.Regex,
525
+ 'Pattern',
526
+ [
527
+ _t.ref`openToken`,
528
+ _t.ref`alternatives[]`,
529
+ _t.ref`separators[]`,
530
+ _t.ref`alternatives[]`,
531
+ _t.ref`closeToken`,
532
+ ],
533
+ {
534
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
535
+ alternatives: [
536
+ _t.node(
537
+ _l.Regex,
538
+ 'Alternative',
539
+ [
540
+ _t.ref`elements[]`,
541
+ _t.ref`elements[]`,
542
+ _t.ref`elements[]`,
543
+ _t.ref`elements[]`,
544
+ ],
545
+ {
546
+ elements: [
547
+ _t.node(_l.Regex, 'Character', [_t.lit('t')], {}, {}),
548
+ _t.node(_l.Regex, 'Character', [_t.lit('r')], {}, {}),
549
+ _t.node(_l.Regex, 'Character', [_t.lit('u')], {}, {}),
550
+ _t.node(_l.Regex, 'Character', [_t.lit('e')], {}, {}),
551
+ ],
552
+ },
553
+ {},
554
+ ),
555
+ _t.node(
556
+ _l.Regex,
557
+ 'Alternative',
558
+ [
559
+ _t.ref`elements[]`,
560
+ _t.ref`elements[]`,
561
+ _t.ref`elements[]`,
562
+ _t.ref`elements[]`,
563
+ _t.ref`elements[]`,
564
+ ],
565
+ {
566
+ elements: [
567
+ _t.node(_l.Regex, 'Character', [_t.lit('f')], {}, {}),
568
+ _t.node(_l.Regex, 'Character', [_t.lit('a')], {}, {}),
569
+ _t.node(_l.Regex, 'Character', [_t.lit('l')], {}, {}),
570
+ _t.node(_l.Regex, 'Character', [_t.lit('s')], {}, {}),
571
+ _t.node(_l.Regex, 'Character', [_t.lit('e')], {}, {}),
572
+ ],
573
+ },
574
+ {},
575
+ ),
576
+ ],
577
+ separators: [_t.s_i_node(_l.Regex, 'Punctuator', '|')],
578
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
579
+ },
580
+ {},
581
+ ),
582
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
583
+ },
584
+ {},
585
+ ),
586
+ _t.node(
587
+ _l.Spamex,
588
+ 'NodeMatcher',
589
+ [
590
+ _t.ref`openToken`,
591
+ _t.ref`flags`,
592
+ _t.ref`type`,
593
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
594
+ _t.ref`intrinsicValue`,
595
+ _t.ref`closeToken`,
596
+ ],
597
+ {
598
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
599
+ flags: _t.node(
600
+ _l.CSTML,
601
+ 'Flags',
602
+ [_t.ref`tokenToken`],
603
+ {
604
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
605
+ },
606
+ {},
607
+ ),
608
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Null'),
609
+ intrinsicValue: _t.node(
610
+ _l.CSTML,
611
+ 'String',
612
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
613
+ {
614
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
615
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('null')], {}, {}),
616
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
617
+ },
618
+ {},
619
+ ),
620
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
621
+ },
622
+ {},
623
+ ),
624
+ _t.node(
625
+ _l.Spamex,
626
+ 'NodeMatcher',
627
+ [
628
+ _t.ref`openToken`,
629
+ _t.ref`flags`,
630
+ _t.ref`type`,
631
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
632
+ _t.ref`intrinsicValue`,
633
+ _t.ref`closeToken`,
634
+ ],
635
+ {
636
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
637
+ flags: _t.node(
638
+ _l.CSTML,
639
+ 'Flags',
640
+ [_t.ref`tokenToken`],
641
+ {
642
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
643
+ },
644
+ {},
645
+ ),
646
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Identifier'),
647
+ intrinsicValue: _t.node(
648
+ _l.Regex,
649
+ 'Pattern',
650
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
651
+ {
652
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
653
+ alternatives: [
654
+ _t.node(
655
+ _l.Regex,
656
+ 'Alternative',
657
+ [_t.ref`elements[]`],
658
+ {
659
+ elements: [
660
+ _t.node(
661
+ _l.Regex,
662
+ 'Quantifier',
663
+ [_t.ref`element`, _t.ref`value`],
664
+ {
665
+ element: _t.node(
666
+ _l.Regex,
667
+ 'CharacterClass',
668
+ [
669
+ _t.ref`openToken`,
670
+ _t.ref`elements[]`,
671
+ _t.ref`elements[]`,
672
+ _t.ref`closeToken`,
673
+ ],
674
+ {
675
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
676
+ elements: [
677
+ _t.node(
678
+ _l.Regex,
679
+ 'CharacterClassRange',
680
+ [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`],
681
+ {
682
+ min: _t.node(
683
+ _l.Regex,
684
+ 'Character',
685
+ [_t.lit('a')],
686
+ {},
687
+ {},
688
+ ),
689
+ rangeToken: _t.s_i_node(
690
+ _l.Regex,
691
+ 'Punctuator',
692
+ '-',
693
+ ),
694
+ max: _t.node(
695
+ _l.Regex,
696
+ 'Character',
697
+ [_t.lit('z')],
698
+ {},
699
+ {},
700
+ ),
701
+ },
702
+ {},
703
+ ),
704
+ _t.node(
705
+ _l.Regex,
706
+ 'CharacterClassRange',
707
+ [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`],
708
+ {
709
+ min: _t.node(
710
+ _l.Regex,
711
+ 'Character',
712
+ [_t.lit('A')],
713
+ {},
714
+ {},
715
+ ),
716
+ rangeToken: _t.s_i_node(
717
+ _l.Regex,
718
+ 'Punctuator',
719
+ '-',
720
+ ),
721
+ max: _t.node(
722
+ _l.Regex,
723
+ 'Character',
724
+ [_t.lit('Z')],
725
+ {},
726
+ {},
727
+ ),
728
+ },
729
+ {},
730
+ ),
731
+ ],
732
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
733
+ },
734
+ {
735
+ negate: false,
736
+ },
737
+ ),
738
+ value: _t.s_i_node(_l.Regex, 'Keyword', '+'),
739
+ },
740
+ {
741
+ min: 1,
742
+ max: Infinity,
743
+ greedy: true,
744
+ },
745
+ ),
746
+ ],
747
+ },
748
+ {},
749
+ ),
750
+ ],
751
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
752
+ },
753
+ {},
754
+ ),
755
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
756
+ },
757
+ {},
758
+ ),
759
+ _t.node(
760
+ _l.Spamex,
761
+ 'NodeMatcher',
762
+ [
763
+ _t.ref`openToken`,
764
+ _t.ref`flags`,
765
+ _t.ref`type`,
766
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
767
+ _t.ref`intrinsicValue`,
768
+ _t.ref`closeToken`,
769
+ ],
770
+ {
771
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
772
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
773
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Number'),
774
+ intrinsicValue: _t.node(
775
+ _l.Regex,
776
+ 'Pattern',
777
+ [
778
+ _t.ref`openToken`,
779
+ _t.ref`alternatives[]`,
780
+ _t.ref`separators[]`,
781
+ _t.ref`alternatives[]`,
782
+ _t.ref`closeToken`,
783
+ ],
784
+ {
785
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
786
+ alternatives: [
787
+ _t.node(
788
+ _l.Regex,
789
+ 'Alternative',
790
+ [_t.ref`elements[]`],
791
+ {
792
+ elements: [
793
+ _t.node(
794
+ _l.Regex,
795
+ 'CharacterClass',
796
+ [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`closeToken`],
797
+ {
798
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
799
+ elements: [
800
+ _t.node(
801
+ _l.Regex,
802
+ 'DigitCharacterSet',
803
+ [_t.ref`escapeToken`, _t.ref`value`],
804
+ {
805
+ escapeToken: _t.s_i_node(
806
+ _l.Regex,
807
+ 'Punctuator',
808
+ '\\',
809
+ ),
810
+ value: _t.s_i_node(_l.Regex, 'Keyword', 'd'),
811
+ },
812
+ {},
813
+ ),
814
+ ],
815
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
816
+ },
817
+ {
818
+ negate: false,
819
+ },
820
+ ),
821
+ ],
822
+ },
823
+ {},
824
+ ),
825
+ _t.node(
826
+ _l.Regex,
827
+ 'Alternative',
828
+ [
829
+ _t.ref`elements[]`,
830
+ _t.ref`elements[]`,
831
+ _t.ref`elements[]`,
832
+ _t.ref`elements[]`,
833
+ _t.ref`elements[]`,
834
+ _t.ref`elements[]`,
835
+ _t.ref`elements[]`,
836
+ _t.ref`elements[]`,
837
+ _t.ref`elements[]`,
838
+ ],
839
+ {
840
+ elements: [
841
+ _t.node(
842
+ _l.Regex,
843
+ 'Quantifier',
844
+ [_t.ref`element`, _t.ref`value`],
845
+ {
846
+ element: _t.node(
847
+ _l.Regex,
848
+ 'CharacterClass',
849
+ [
850
+ _t.ref`openToken`,
851
+ _t.ref`elements[]`,
852
+ _t.ref`elements[]`,
853
+ _t.ref`closeToken`,
854
+ ],
855
+ {
856
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
857
+ elements: [
858
+ _t.node(_l.Regex, 'Character', [_t.lit('+')], {}, {}),
859
+ _t.node(_l.Regex, 'Character', [_t.lit('-')], {}, {}),
860
+ ],
861
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
862
+ },
863
+ {
864
+ negate: false,
865
+ },
866
+ ),
867
+ value: _t.s_i_node(_l.Regex, 'Keyword', '?'),
868
+ },
869
+ {
870
+ min: 0,
871
+ max: 1,
872
+ greedy: true,
873
+ },
874
+ ),
875
+ _t.node(_l.Regex, 'Character', [_t.lit('I')], {}, {}),
876
+ _t.node(_l.Regex, 'Character', [_t.lit('n')], {}, {}),
877
+ _t.node(_l.Regex, 'Character', [_t.lit('f')], {}, {}),
878
+ _t.node(_l.Regex, 'Character', [_t.lit('i')], {}, {}),
879
+ _t.node(_l.Regex, 'Character', [_t.lit('n')], {}, {}),
880
+ _t.node(_l.Regex, 'Character', [_t.lit('i')], {}, {}),
881
+ _t.node(_l.Regex, 'Character', [_t.lit('t')], {}, {}),
882
+ _t.node(_l.Regex, 'Character', [_t.lit('y')], {}, {}),
883
+ ],
884
+ },
885
+ {},
886
+ ),
887
+ ],
888
+ separators: [_t.s_i_node(_l.Regex, 'Punctuator', '|')],
889
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
890
+ },
891
+ {},
892
+ ),
893
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
894
+ },
895
+ {},
896
+ ),
897
+ ],
898
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ']'),
899
+ },
900
+ {},
901
+ ),
902
+ ],
903
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
904
+ },
905
+ {},
906
+ ),
907
+ },
908
+ {},
909
+ );
910
+ }
911
+ *Array() {
912
+ yield _t.node(
913
+ _l.Instruction,
914
+ 'Call',
915
+ [_t.ref`verb`, _t.ref`arguments`],
916
+ {
917
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
918
+ arguments: _t.node(
919
+ _l.Instruction,
920
+ 'Tuple',
921
+ [
922
+ _t.ref`openToken`,
923
+ _t.ref`values[]`,
924
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
925
+ _t.ref`values[]`,
926
+ _t.ref`closeToken`,
927
+ ],
928
+ {
929
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
930
+ values: [
931
+ _t.node(
932
+ _l.Spamex,
933
+ 'NodeMatcher',
934
+ [
935
+ _t.ref`openToken`,
936
+ _t.ref`flags`,
937
+ _t.ref`type`,
938
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
939
+ _t.ref`intrinsicValue`,
940
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
941
+ _t.ref`attributes[]`,
942
+ _t.ref`closeToken`,
943
+ ],
944
+ {
945
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
946
+ flags: _t.node(
947
+ _l.CSTML,
948
+ 'Flags',
949
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
950
+ {
951
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
952
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
953
+ },
954
+ {},
955
+ ),
956
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
957
+ intrinsicValue: _t.node(
958
+ _l.CSTML,
959
+ 'String',
960
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
961
+ {
962
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
963
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('[')], {}, {}),
964
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
965
+ },
966
+ {},
967
+ ),
968
+ attributes: [
969
+ _t.node(
970
+ _l.Spamex,
971
+ 'MappingAttribute',
972
+ [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`],
973
+ {
974
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balanced')], {}, {}),
975
+ mapToken: _t.s_i_node(_l.Spamex, 'Punctuator', '='),
976
+ value: _t.node(
977
+ _l.CSTML,
978
+ 'String',
979
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
980
+ {
981
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
982
+ content: _t.node(_l.CSTML, 'Content', [_t.lit(']')], {}, {}),
983
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
984
+ },
985
+ {},
986
+ ),
987
+ },
988
+ {},
989
+ ),
990
+ ],
991
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
992
+ },
993
+ {},
994
+ ),
995
+ _t.node(
996
+ _l.CSTML,
997
+ 'String',
998
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
999
+ {
1000
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1001
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('openToken')], {}, {}),
1002
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1003
+ },
1004
+ {},
1005
+ ),
1006
+ ],
1007
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1008
+ },
1009
+ {},
1010
+ ),
1011
+ },
1012
+ {},
1013
+ );
1014
+ let sp = yield* eatMatchTrivia();
1015
+ let first = true;
1016
+ while (
1017
+ (first || sp) &&
1018
+ (yield _t.node(
1019
+ _l.Instruction,
1020
+ 'Call',
1021
+ [_t.ref`verb`, _t.ref`arguments`],
1022
+ {
1023
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'match'),
1024
+ arguments: _t.node(
1025
+ _l.Instruction,
1026
+ 'Tuple',
1027
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
1028
+ {
1029
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1030
+ values: [
1031
+ _t.node(
1032
+ _l.Regex,
1033
+ 'Pattern',
1034
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`],
1035
+ {
1036
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1037
+ alternatives: [
1038
+ _t.node(
1039
+ _l.Regex,
1040
+ 'Alternative',
1041
+ [_t.ref`elements[]`],
1042
+ {
1043
+ elements: [
1044
+ _t.node(
1045
+ _l.Regex,
1046
+ 'AnyCharacterSet',
1047
+ [_t.ref`sigilToken`],
1048
+ {
1049
+ sigilToken: _t.s_i_node(_l.Regex, 'Keyword', '.'),
1050
+ },
1051
+ {},
1052
+ ),
1053
+ ],
1054
+ },
1055
+ {},
1056
+ ),
1057
+ ],
1058
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1059
+ flags: _t.node(
1060
+ _l.Regex,
1061
+ 'Flags',
1062
+ [_t.ref`tokens[]`],
1063
+ {
1064
+ tokens: [_t.s_i_node(_l.Regex, 'Keyword', 'y')],
1065
+ },
1066
+ {
1067
+ global: false,
1068
+ ignoreCase: false,
1069
+ multiline: false,
1070
+ dotAll: false,
1071
+ unicode: false,
1072
+ sticky: true,
1073
+ },
1074
+ ),
1075
+ },
1076
+ {},
1077
+ ),
1078
+ ],
1079
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1080
+ },
1081
+ {},
1082
+ ),
1083
+ },
1084
+ {},
1085
+ ))
1086
+ ) {
1087
+ yield _t.node(
1088
+ _l.Instruction,
1089
+ 'Call',
1090
+ [_t.ref`verb`, _t.ref`arguments`],
1091
+ {
1092
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1093
+ arguments: _t.node(
1094
+ _l.Instruction,
1095
+ 'Tuple',
1096
+ [
1097
+ _t.ref`openToken`,
1098
+ _t.ref`values[]`,
1099
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1100
+ _t.ref`values[]`,
1101
+ _t.ref`closeToken`,
1102
+ ],
1103
+ {
1104
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1105
+ values: [
1106
+ _t.node(
1107
+ _l.Spamex,
1108
+ 'NodeMatcher',
1109
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
1110
+ {
1111
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1112
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
1113
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Expression'),
1114
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1115
+ },
1116
+ {},
1117
+ ),
1118
+ _t.node(
1119
+ _l.CSTML,
1120
+ 'String',
1121
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1122
+ {
1123
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1124
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('elements[]')], {}, {}),
1125
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1126
+ },
1127
+ {},
1128
+ ),
1129
+ ],
1130
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1131
+ },
1132
+ {},
1133
+ ),
1134
+ },
1135
+ {},
1136
+ );
1137
+ sp = yield* eatMatchTrivia();
1138
+ first = false;
1139
+ }
1140
+ yield _t.node(
1141
+ _l.Instruction,
1142
+ 'Call',
1143
+ [_t.ref`verb`, _t.ref`arguments`],
1144
+ {
1145
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1146
+ arguments: _t.node(
1147
+ _l.Instruction,
1148
+ 'Tuple',
1149
+ [
1150
+ _t.ref`openToken`,
1151
+ _t.ref`values[]`,
1152
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1153
+ _t.ref`values[]`,
1154
+ _t.ref`closeToken`,
1155
+ ],
1156
+ {
1157
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1158
+ values: [
1159
+ _t.node(
1160
+ _l.Spamex,
1161
+ 'NodeMatcher',
1162
+ [
1163
+ _t.ref`openToken`,
1164
+ _t.ref`flags`,
1165
+ _t.ref`type`,
1166
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1167
+ _t.ref`intrinsicValue`,
1168
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1169
+ _t.ref`attributes[]`,
1170
+ _t.ref`closeToken`,
1171
+ ],
1172
+ {
1173
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1174
+ flags: _t.node(
1175
+ _l.CSTML,
1176
+ 'Flags',
1177
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
1178
+ {
1179
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
1180
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1181
+ },
1182
+ {},
1183
+ ),
1184
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
1185
+ intrinsicValue: _t.node(
1186
+ _l.CSTML,
1187
+ 'String',
1188
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1189
+ {
1190
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1191
+ content: _t.node(_l.CSTML, 'Content', [_t.lit(']')], {}, {}),
1192
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1193
+ },
1194
+ {},
1195
+ ),
1196
+ attributes: [
1197
+ _t.node(
1198
+ _l.Spamex,
1199
+ 'BooleanAttribute',
1200
+ [_t.ref`key`],
1201
+ {
1202
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balancer')], {}, {}),
1203
+ },
1204
+ {},
1205
+ ),
1206
+ ],
1207
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1208
+ },
1209
+ {},
1210
+ ),
1211
+ _t.node(
1212
+ _l.CSTML,
1213
+ 'String',
1214
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1215
+ {
1216
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1217
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('closeToken')], {}, {}),
1218
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1219
+ },
1220
+ {},
1221
+ ),
1222
+ ],
1223
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1224
+ },
1225
+ {},
1226
+ ),
1227
+ },
1228
+ {},
1229
+ );
1230
+ }
1231
+ *Object() {
1232
+ yield _t.node(
1233
+ _l.Instruction,
1234
+ 'Call',
1235
+ [_t.ref`verb`, _t.ref`arguments`],
1236
+ {
1237
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1238
+ arguments: _t.node(
1239
+ _l.Instruction,
1240
+ 'Tuple',
1241
+ [
1242
+ _t.ref`openToken`,
1243
+ _t.ref`values[]`,
1244
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1245
+ _t.ref`values[]`,
1246
+ _t.ref`closeToken`,
1247
+ ],
1248
+ {
1249
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1250
+ values: [
1251
+ _t.node(
1252
+ _l.Spamex,
1253
+ 'NodeMatcher',
1254
+ [
1255
+ _t.ref`openToken`,
1256
+ _t.ref`flags`,
1257
+ _t.ref`type`,
1258
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1259
+ _t.ref`intrinsicValue`,
1260
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1261
+ _t.ref`attributes[]`,
1262
+ _t.ref`closeToken`,
1263
+ ],
1264
+ {
1265
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1266
+ flags: _t.node(
1267
+ _l.CSTML,
1268
+ 'Flags',
1269
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
1270
+ {
1271
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
1272
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1273
+ },
1274
+ {},
1275
+ ),
1276
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
1277
+ intrinsicValue: _t.node(
1278
+ _l.CSTML,
1279
+ 'String',
1280
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1281
+ {
1282
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1283
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('{')], {}, {}),
1284
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1285
+ },
1286
+ {},
1287
+ ),
1288
+ attributes: [
1289
+ _t.node(
1290
+ _l.Spamex,
1291
+ 'MappingAttribute',
1292
+ [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`],
1293
+ {
1294
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balanced')], {}, {}),
1295
+ mapToken: _t.s_i_node(_l.Spamex, 'Punctuator', '='),
1296
+ value: _t.node(
1297
+ _l.CSTML,
1298
+ 'String',
1299
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1300
+ {
1301
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1302
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('}')], {}, {}),
1303
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1304
+ },
1305
+ {},
1306
+ ),
1307
+ },
1308
+ {},
1309
+ ),
1310
+ ],
1311
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1312
+ },
1313
+ {},
1314
+ ),
1315
+ _t.node(
1316
+ _l.CSTML,
1317
+ 'String',
1318
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1319
+ {
1320
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1321
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('openToken')], {}, {}),
1322
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1323
+ },
1324
+ {},
1325
+ ),
1326
+ ],
1327
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1328
+ },
1329
+ {},
1330
+ ),
1331
+ },
1332
+ {},
1333
+ );
1334
+ let sp = yield* eatMatchTrivia();
1335
+ let first = true;
1336
+ while (
1337
+ (first || sp) &&
1338
+ (yield _t.node(
1339
+ _l.Instruction,
1340
+ 'Call',
1341
+ [_t.ref`verb`, _t.ref`arguments`],
1342
+ {
1343
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'match'),
1344
+ arguments: _t.node(
1345
+ _l.Instruction,
1346
+ 'Tuple',
1347
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
1348
+ {
1349
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1350
+ values: [
1351
+ _t.node(
1352
+ _l.Regex,
1353
+ 'Pattern',
1354
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`],
1355
+ {
1356
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1357
+ alternatives: [
1358
+ _t.node(
1359
+ _l.Regex,
1360
+ 'Alternative',
1361
+ [_t.ref`elements[]`],
1362
+ {
1363
+ elements: [
1364
+ _t.node(
1365
+ _l.Regex,
1366
+ 'AnyCharacterSet',
1367
+ [_t.ref`sigilToken`],
1368
+ {
1369
+ sigilToken: _t.s_i_node(_l.Regex, 'Keyword', '.'),
1370
+ },
1371
+ {},
1372
+ ),
1373
+ ],
1374
+ },
1375
+ {},
1376
+ ),
1377
+ ],
1378
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1379
+ flags: _t.node(
1380
+ _l.Regex,
1381
+ 'Flags',
1382
+ [_t.ref`tokens[]`],
1383
+ {
1384
+ tokens: [_t.s_i_node(_l.Regex, 'Keyword', 'y')],
1385
+ },
1386
+ {
1387
+ global: false,
1388
+ ignoreCase: false,
1389
+ multiline: false,
1390
+ dotAll: false,
1391
+ unicode: false,
1392
+ sticky: true,
1393
+ },
1394
+ ),
1395
+ },
1396
+ {},
1397
+ ),
1398
+ ],
1399
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1400
+ },
1401
+ {},
1402
+ ),
1403
+ },
1404
+ {},
1405
+ ))
1406
+ ) {
1407
+ yield _t.node(
1408
+ _l.Instruction,
1409
+ 'Call',
1410
+ [_t.ref`verb`, _t.ref`arguments`],
1411
+ {
1412
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1413
+ arguments: _t.node(
1414
+ _l.Instruction,
1415
+ 'Tuple',
1416
+ [
1417
+ _t.ref`openToken`,
1418
+ _t.ref`values[]`,
1419
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1420
+ _t.ref`values[]`,
1421
+ _t.ref`closeToken`,
1422
+ ],
1423
+ {
1424
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1425
+ values: [
1426
+ _t.node(
1427
+ _l.Spamex,
1428
+ 'NodeMatcher',
1429
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
1430
+ {
1431
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1432
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
1433
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Property'),
1434
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1435
+ },
1436
+ {},
1437
+ ),
1438
+ _t.node(
1439
+ _l.CSTML,
1440
+ 'String',
1441
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1442
+ {
1443
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1444
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('properties[]')], {}, {}),
1445
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1446
+ },
1447
+ {},
1448
+ ),
1449
+ ],
1450
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1451
+ },
1452
+ {},
1453
+ ),
1454
+ },
1455
+ {},
1456
+ );
1457
+ sp = yield* eatMatchTrivia();
1458
+ first = false;
1459
+ }
1460
+ yield _t.node(
1461
+ _l.Instruction,
1462
+ 'Call',
1463
+ [_t.ref`verb`, _t.ref`arguments`],
1464
+ {
1465
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1466
+ arguments: _t.node(
1467
+ _l.Instruction,
1468
+ 'Tuple',
1469
+ [
1470
+ _t.ref`openToken`,
1471
+ _t.ref`values[]`,
1472
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1473
+ _t.ref`values[]`,
1474
+ _t.ref`closeToken`,
1475
+ ],
1476
+ {
1477
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1478
+ values: [
1479
+ _t.node(
1480
+ _l.Spamex,
1481
+ 'NodeMatcher',
1482
+ [
1483
+ _t.ref`openToken`,
1484
+ _t.ref`flags`,
1485
+ _t.ref`type`,
1486
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1487
+ _t.ref`intrinsicValue`,
1488
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1489
+ _t.ref`attributes[]`,
1490
+ _t.ref`closeToken`,
1491
+ ],
1492
+ {
1493
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1494
+ flags: _t.node(
1495
+ _l.CSTML,
1496
+ 'Flags',
1497
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
1498
+ {
1499
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
1500
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1501
+ },
1502
+ {},
1503
+ ),
1504
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
1505
+ intrinsicValue: _t.node(
1506
+ _l.CSTML,
1507
+ 'String',
1508
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1509
+ {
1510
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1511
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('}')], {}, {}),
1512
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1513
+ },
1514
+ {},
1515
+ ),
1516
+ attributes: [
1517
+ _t.node(
1518
+ _l.Spamex,
1519
+ 'BooleanAttribute',
1520
+ [_t.ref`key`],
1521
+ {
1522
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balancer')], {}, {}),
1523
+ },
1524
+ {},
1525
+ ),
1526
+ ],
1527
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1528
+ },
1529
+ {},
1530
+ ),
1531
+ _t.node(
1532
+ _l.CSTML,
1533
+ 'String',
1534
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1535
+ {
1536
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1537
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('closeToken')], {}, {}),
1538
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1539
+ },
1540
+ {},
1541
+ ),
1542
+ ],
1543
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1544
+ },
1545
+ {},
1546
+ ),
1547
+ },
1548
+ {},
1549
+ );
1550
+ }
1551
+ *Property() {
1552
+ yield _t.node(
1553
+ _l.Instruction,
1554
+ 'Call',
1555
+ [_t.ref`verb`, _t.ref`arguments`],
1556
+ {
1557
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1558
+ arguments: _t.node(
1559
+ _l.Instruction,
1560
+ 'Tuple',
1561
+ [
1562
+ _t.ref`openToken`,
1563
+ _t.ref`values[]`,
1564
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1565
+ _t.ref`values[]`,
1566
+ _t.ref`closeToken`,
1567
+ ],
1568
+ {
1569
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1570
+ values: [
1571
+ _t.node(
1572
+ _l.Spamex,
1573
+ 'NodeMatcher',
1574
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
1575
+ {
1576
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1577
+ flags: _t.node(
1578
+ _l.CSTML,
1579
+ 'Flags',
1580
+ [_t.ref`tokenToken`],
1581
+ {
1582
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1583
+ },
1584
+ {},
1585
+ ),
1586
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Identifier'),
1587
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1588
+ },
1589
+ {},
1590
+ ),
1591
+ _t.node(
1592
+ _l.CSTML,
1593
+ 'String',
1594
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1595
+ {
1596
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1597
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('key')], {}, {}),
1598
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1599
+ },
1600
+ {},
1601
+ ),
1602
+ ],
1603
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1604
+ },
1605
+ {},
1606
+ ),
1607
+ },
1608
+ {},
1609
+ );
1610
+ yield* eatMatchTrivia();
1611
+ yield _t.node(
1612
+ _l.Instruction,
1613
+ 'Call',
1614
+ [_t.ref`verb`, _t.ref`arguments`],
1615
+ {
1616
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1617
+ arguments: _t.node(
1618
+ _l.Instruction,
1619
+ 'Tuple',
1620
+ [
1621
+ _t.ref`openToken`,
1622
+ _t.ref`values[]`,
1623
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1624
+ _t.ref`values[]`,
1625
+ _t.ref`closeToken`,
1626
+ ],
1627
+ {
1628
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1629
+ values: [
1630
+ _t.node(
1631
+ _l.Spamex,
1632
+ 'NodeMatcher',
1633
+ [
1634
+ _t.ref`openToken`,
1635
+ _t.ref`flags`,
1636
+ _t.ref`type`,
1637
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1638
+ _t.ref`intrinsicValue`,
1639
+ _t.ref`closeToken`,
1640
+ ],
1641
+ {
1642
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1643
+ flags: _t.node(
1644
+ _l.CSTML,
1645
+ 'Flags',
1646
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
1647
+ {
1648
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
1649
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1650
+ },
1651
+ {},
1652
+ ),
1653
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
1654
+ intrinsicValue: _t.node(
1655
+ _l.CSTML,
1656
+ 'String',
1657
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1658
+ {
1659
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1660
+ content: _t.node(_l.CSTML, 'Content', [_t.lit(':')], {}, {}),
1661
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1662
+ },
1663
+ {},
1664
+ ),
1665
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1666
+ },
1667
+ {},
1668
+ ),
1669
+ _t.node(
1670
+ _l.CSTML,
1671
+ 'String',
1672
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1673
+ {
1674
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1675
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('mapToken')], {}, {}),
1676
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1677
+ },
1678
+ {},
1679
+ ),
1680
+ ],
1681
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1682
+ },
1683
+ {},
1684
+ ),
1685
+ },
1686
+ {},
1687
+ );
1688
+ yield* eatMatchTrivia();
1689
+ yield _t.node(
1690
+ _l.Instruction,
1691
+ 'Call',
1692
+ [_t.ref`verb`, _t.ref`arguments`],
1693
+ {
1694
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1695
+ arguments: _t.node(
1696
+ _l.Instruction,
1697
+ 'Tuple',
1698
+ [
1699
+ _t.ref`openToken`,
1700
+ _t.ref`values[]`,
1701
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1702
+ _t.ref`values[]`,
1703
+ _t.ref`closeToken`,
1704
+ ],
1705
+ {
1706
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1707
+ values: [
1708
+ _t.node(
1709
+ _l.Spamex,
1710
+ 'NodeMatcher',
1711
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
1712
+ {
1713
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1714
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
1715
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Expression'),
1716
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1717
+ },
1718
+ {},
1719
+ ),
1720
+ _t.node(
1721
+ _l.CSTML,
1722
+ 'String',
1723
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1724
+ {
1725
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1726
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('value')], {}, {}),
1727
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1728
+ },
1729
+ {},
1730
+ ),
1731
+ ],
1732
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1733
+ },
1734
+ {},
1735
+ ),
1736
+ },
1737
+ {},
1738
+ );
1739
+ }
1740
+ *Tuple() {
1741
+ yield _t.node(
1742
+ _l.Instruction,
1743
+ 'Call',
1744
+ [_t.ref`verb`, _t.ref`arguments`],
1745
+ {
1746
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1747
+ arguments: _t.node(
1748
+ _l.Instruction,
1749
+ 'Tuple',
1750
+ [
1751
+ _t.ref`openToken`,
1752
+ _t.ref`values[]`,
1753
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1754
+ _t.ref`values[]`,
1755
+ _t.ref`closeToken`,
1756
+ ],
1757
+ {
1758
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1759
+ values: [
1760
+ _t.node(
1761
+ _l.Spamex,
1762
+ 'NodeMatcher',
1763
+ [
1764
+ _t.ref`openToken`,
1765
+ _t.ref`flags`,
1766
+ _t.ref`type`,
1767
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1768
+ _t.ref`intrinsicValue`,
1769
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1770
+ _t.ref`attributes[]`,
1771
+ _t.ref`closeToken`,
1772
+ ],
1773
+ {
1774
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1775
+ flags: _t.node(
1776
+ _l.CSTML,
1777
+ 'Flags',
1778
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
1779
+ {
1780
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
1781
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
1782
+ },
1783
+ {},
1784
+ ),
1785
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
1786
+ intrinsicValue: _t.node(
1787
+ _l.CSTML,
1788
+ 'String',
1789
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1790
+ {
1791
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1792
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('(')], {}, {}),
1793
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1794
+ },
1795
+ {},
1796
+ ),
1797
+ attributes: [
1798
+ _t.node(
1799
+ _l.Spamex,
1800
+ 'MappingAttribute',
1801
+ [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`],
1802
+ {
1803
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balanced')], {}, {}),
1804
+ mapToken: _t.s_i_node(_l.Spamex, 'Punctuator', '='),
1805
+ value: _t.node(
1806
+ _l.CSTML,
1807
+ 'String',
1808
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1809
+ {
1810
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1811
+ content: _t.node(_l.CSTML, 'Content', [_t.lit(')')], {}, {}),
1812
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1813
+ },
1814
+ {},
1815
+ ),
1816
+ },
1817
+ {},
1818
+ ),
1819
+ ],
1820
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1821
+ },
1822
+ {},
1823
+ ),
1824
+ _t.node(
1825
+ _l.CSTML,
1826
+ 'String',
1827
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1828
+ {
1829
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1830
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('openToken')], {}, {}),
1831
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1832
+ },
1833
+ {},
1834
+ ),
1835
+ ],
1836
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1837
+ },
1838
+ {},
1839
+ ),
1840
+ },
1841
+ {},
1842
+ );
1843
+ let sp = yield* eatMatchTrivia();
1844
+ let first = true;
1845
+ while (
1846
+ (first || sp) &&
1847
+ (yield _t.node(
1848
+ _l.Instruction,
1849
+ 'Call',
1850
+ [_t.ref`verb`, _t.ref`arguments`],
1851
+ {
1852
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'match'),
1853
+ arguments: _t.node(
1854
+ _l.Instruction,
1855
+ 'Tuple',
1856
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
1857
+ {
1858
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1859
+ values: [
1860
+ _t.node(
1861
+ _l.Regex,
1862
+ 'Pattern',
1863
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`],
1864
+ {
1865
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1866
+ alternatives: [
1867
+ _t.node(
1868
+ _l.Regex,
1869
+ 'Alternative',
1870
+ [_t.ref`elements[]`],
1871
+ {
1872
+ elements: [
1873
+ _t.node(
1874
+ _l.Regex,
1875
+ 'AnyCharacterSet',
1876
+ [_t.ref`sigilToken`],
1877
+ {
1878
+ sigilToken: _t.s_i_node(_l.Regex, 'Keyword', '.'),
1879
+ },
1880
+ {},
1881
+ ),
1882
+ ],
1883
+ },
1884
+ {},
1885
+ ),
1886
+ ],
1887
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
1888
+ flags: _t.node(
1889
+ _l.Regex,
1890
+ 'Flags',
1891
+ [_t.ref`tokens[]`],
1892
+ {
1893
+ tokens: [_t.s_i_node(_l.Regex, 'Keyword', 'y')],
1894
+ },
1895
+ {
1896
+ global: false,
1897
+ ignoreCase: false,
1898
+ multiline: false,
1899
+ dotAll: false,
1900
+ unicode: false,
1901
+ sticky: true,
1902
+ },
1903
+ ),
1904
+ },
1905
+ {},
1906
+ ),
1907
+ ],
1908
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1909
+ },
1910
+ {},
1911
+ ),
1912
+ },
1913
+ {},
1914
+ ))
1915
+ ) {
1916
+ yield _t.node(
1917
+ _l.Instruction,
1918
+ 'Call',
1919
+ [_t.ref`verb`, _t.ref`arguments`],
1920
+ {
1921
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1922
+ arguments: _t.node(
1923
+ _l.Instruction,
1924
+ 'Tuple',
1925
+ [
1926
+ _t.ref`openToken`,
1927
+ _t.ref`values[]`,
1928
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1929
+ _t.ref`values[]`,
1930
+ _t.ref`closeToken`,
1931
+ ],
1932
+ {
1933
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1934
+ values: [
1935
+ _t.node(
1936
+ _l.Spamex,
1937
+ 'NodeMatcher',
1938
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
1939
+ {
1940
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
1941
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
1942
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Expression'),
1943
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
1944
+ },
1945
+ {},
1946
+ ),
1947
+ _t.node(
1948
+ _l.CSTML,
1949
+ 'String',
1950
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
1951
+ {
1952
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1953
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('values[]')], {}, {}),
1954
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
1955
+ },
1956
+ {},
1957
+ ),
1958
+ ],
1959
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
1960
+ },
1961
+ {},
1962
+ ),
1963
+ },
1964
+ {},
1965
+ );
1966
+ sp = yield* eatMatchTrivia();
1967
+ first = false;
1968
+ }
1969
+ yield _t.node(
1970
+ _l.Instruction,
1971
+ 'Call',
1972
+ [_t.ref`verb`, _t.ref`arguments`],
1973
+ {
1974
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
1975
+ arguments: _t.node(
1976
+ _l.Instruction,
1977
+ 'Tuple',
1978
+ [
1979
+ _t.ref`openToken`,
1980
+ _t.ref`values[]`,
1981
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1982
+ _t.ref`values[]`,
1983
+ _t.ref`closeToken`,
1984
+ ],
1985
+ {
1986
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
1987
+ values: [
1988
+ _t.node(
1989
+ _l.Spamex,
1990
+ 'NodeMatcher',
1991
+ [
1992
+ _t.ref`openToken`,
1993
+ _t.ref`flags`,
1994
+ _t.ref`type`,
1995
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1996
+ _t.ref`intrinsicValue`,
1997
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
1998
+ _t.ref`attributes[]`,
1999
+ _t.ref`closeToken`,
2000
+ ],
2001
+ {
2002
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2003
+ flags: _t.node(
2004
+ _l.CSTML,
2005
+ 'Flags',
2006
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
2007
+ {
2008
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
2009
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2010
+ },
2011
+ {},
2012
+ ),
2013
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
2014
+ intrinsicValue: _t.node(
2015
+ _l.CSTML,
2016
+ 'String',
2017
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2018
+ {
2019
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2020
+ content: _t.node(_l.CSTML, 'Content', [_t.lit(')')], {}, {}),
2021
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2022
+ },
2023
+ {},
2024
+ ),
2025
+ attributes: [
2026
+ _t.node(
2027
+ _l.Spamex,
2028
+ 'BooleanAttribute',
2029
+ [_t.ref`key`],
2030
+ {
2031
+ key: _t.node(_l.Spamex, 'Literal', [_t.lit('balancer')], {}, {}),
2032
+ },
2033
+ {},
2034
+ ),
2035
+ ],
2036
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2037
+ },
2038
+ {},
2039
+ ),
2040
+ _t.node(
2041
+ _l.CSTML,
2042
+ 'String',
2043
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2044
+ {
2045
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2046
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('closeToken')], {}, {}),
2047
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2048
+ },
2049
+ {},
2050
+ ),
2051
+ ],
2052
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2053
+ },
2054
+ {},
2055
+ ),
2056
+ },
2057
+ {},
2058
+ );
2059
+ }
2060
+ *Boolean() {
2061
+ yield _t.node(
2062
+ _l.Instruction,
2063
+ 'Call',
2064
+ [_t.ref`verb`, _t.ref`arguments`],
2065
+ {
2066
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2067
+ arguments: _t.node(
2068
+ _l.Instruction,
2069
+ 'Tuple',
2070
+ [
2071
+ _t.ref`openToken`,
2072
+ _t.ref`values[]`,
2073
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2074
+ _t.ref`values[]`,
2075
+ _t.ref`closeToken`,
2076
+ ],
2077
+ {
2078
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2079
+ values: [
2080
+ _t.node(
2081
+ _l.Spamex,
2082
+ 'NodeMatcher',
2083
+ [
2084
+ _t.ref`openToken`,
2085
+ _t.ref`flags`,
2086
+ _t.ref`type`,
2087
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2088
+ _t.ref`intrinsicValue`,
2089
+ _t.ref`closeToken`,
2090
+ ],
2091
+ {
2092
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2093
+ flags: _t.node(
2094
+ _l.CSTML,
2095
+ 'Flags',
2096
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
2097
+ {
2098
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
2099
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2100
+ },
2101
+ {},
2102
+ ),
2103
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Keyword'),
2104
+ intrinsicValue: _t.node(
2105
+ _l.Regex,
2106
+ 'Pattern',
2107
+ [
2108
+ _t.ref`openToken`,
2109
+ _t.ref`alternatives[]`,
2110
+ _t.ref`separators[]`,
2111
+ _t.ref`alternatives[]`,
2112
+ _t.ref`closeToken`,
2113
+ ],
2114
+ {
2115
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2116
+ alternatives: [
2117
+ _t.node(
2118
+ _l.Regex,
2119
+ 'Alternative',
2120
+ [
2121
+ _t.ref`elements[]`,
2122
+ _t.ref`elements[]`,
2123
+ _t.ref`elements[]`,
2124
+ _t.ref`elements[]`,
2125
+ ],
2126
+ {
2127
+ elements: [
2128
+ _t.node(_l.Regex, 'Character', [_t.lit('t')], {}, {}),
2129
+ _t.node(_l.Regex, 'Character', [_t.lit('r')], {}, {}),
2130
+ _t.node(_l.Regex, 'Character', [_t.lit('u')], {}, {}),
2131
+ _t.node(_l.Regex, 'Character', [_t.lit('e')], {}, {}),
2132
+ ],
2133
+ },
2134
+ {},
2135
+ ),
2136
+ _t.node(
2137
+ _l.Regex,
2138
+ 'Alternative',
2139
+ [
2140
+ _t.ref`elements[]`,
2141
+ _t.ref`elements[]`,
2142
+ _t.ref`elements[]`,
2143
+ _t.ref`elements[]`,
2144
+ _t.ref`elements[]`,
2145
+ ],
2146
+ {
2147
+ elements: [
2148
+ _t.node(_l.Regex, 'Character', [_t.lit('f')], {}, {}),
2149
+ _t.node(_l.Regex, 'Character', [_t.lit('a')], {}, {}),
2150
+ _t.node(_l.Regex, 'Character', [_t.lit('l')], {}, {}),
2151
+ _t.node(_l.Regex, 'Character', [_t.lit('s')], {}, {}),
2152
+ _t.node(_l.Regex, 'Character', [_t.lit('e')], {}, {}),
2153
+ ],
2154
+ },
2155
+ {},
2156
+ ),
2157
+ ],
2158
+ separators: [_t.s_i_node(_l.Regex, 'Punctuator', '|')],
2159
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2160
+ },
2161
+ {},
2162
+ ),
2163
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2164
+ },
2165
+ {},
2166
+ ),
2167
+ _t.node(
2168
+ _l.CSTML,
2169
+ 'String',
2170
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2171
+ {
2172
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2173
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('sigilToken')], {}, {}),
2174
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2175
+ },
2176
+ {},
2177
+ ),
2178
+ ],
2179
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2180
+ },
2181
+ {},
2182
+ ),
2183
+ },
2184
+ {},
2185
+ );
2186
+ }
2187
+ *Null() {
2188
+ yield _t.node(
2189
+ _l.Instruction,
2190
+ 'Call',
2191
+ [_t.ref`verb`, _t.ref`arguments`],
2192
+ {
2193
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2194
+ arguments: _t.node(
2195
+ _l.Instruction,
2196
+ 'Tuple',
2197
+ [
2198
+ _t.ref`openToken`,
2199
+ _t.ref`values[]`,
2200
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2201
+ _t.ref`values[]`,
2202
+ _t.ref`closeToken`,
2203
+ ],
2204
+ {
2205
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2206
+ values: [
2207
+ _t.node(
2208
+ _l.Spamex,
2209
+ 'NodeMatcher',
2210
+ [
2211
+ _t.ref`openToken`,
2212
+ _t.ref`flags`,
2213
+ _t.ref`type`,
2214
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2215
+ _t.ref`intrinsicValue`,
2216
+ _t.ref`closeToken`,
2217
+ ],
2218
+ {
2219
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2220
+ flags: _t.node(
2221
+ _l.CSTML,
2222
+ 'Flags',
2223
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
2224
+ {
2225
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
2226
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2227
+ },
2228
+ {},
2229
+ ),
2230
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Keyword'),
2231
+ intrinsicValue: _t.node(
2232
+ _l.CSTML,
2233
+ 'String',
2234
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2235
+ {
2236
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2237
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('null')], {}, {}),
2238
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2239
+ },
2240
+ {},
2241
+ ),
2242
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2243
+ },
2244
+ {},
2245
+ ),
2246
+ _t.node(
2247
+ _l.CSTML,
2248
+ 'String',
2249
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2250
+ {
2251
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2252
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('sigilToken')], {}, {}),
2253
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2254
+ },
2255
+ {},
2256
+ ),
2257
+ ],
2258
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2259
+ },
2260
+ {},
2261
+ ),
2262
+ },
2263
+ {},
2264
+ );
2265
+ }
2266
+ *Identifier() {
2267
+ yield _t.node(
2268
+ _l.Instruction,
2269
+ 'Call',
2270
+ [_t.ref`verb`, _t.ref`arguments`],
2271
+ {
2272
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2273
+ arguments: _t.node(
2274
+ _l.Instruction,
2275
+ 'Tuple',
2276
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
2277
+ {
2278
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2279
+ values: [
2280
+ _t.node(
2281
+ _l.Regex,
2282
+ 'Pattern',
2283
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2284
+ {
2285
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2286
+ alternatives: [
2287
+ _t.node(
2288
+ _l.Regex,
2289
+ 'Alternative',
2290
+ [_t.ref`elements[]`],
2291
+ {
2292
+ elements: [
2293
+ _t.node(
2294
+ _l.Regex,
2295
+ 'Quantifier',
2296
+ [_t.ref`element`, _t.ref`value`],
2297
+ {
2298
+ element: _t.node(
2299
+ _l.Regex,
2300
+ 'CharacterClass',
2301
+ [
2302
+ _t.ref`openToken`,
2303
+ _t.ref`elements[]`,
2304
+ _t.ref`elements[]`,
2305
+ _t.ref`closeToken`,
2306
+ ],
2307
+ {
2308
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
2309
+ elements: [
2310
+ _t.node(
2311
+ _l.Regex,
2312
+ 'CharacterClassRange',
2313
+ [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`],
2314
+ {
2315
+ min: _t.node(_l.Regex, 'Character', [_t.lit('a')], {}, {}),
2316
+ rangeToken: _t.s_i_node(_l.Regex, 'Punctuator', '-'),
2317
+ max: _t.node(_l.Regex, 'Character', [_t.lit('z')], {}, {}),
2318
+ },
2319
+ {},
2320
+ ),
2321
+ _t.node(
2322
+ _l.Regex,
2323
+ 'CharacterClassRange',
2324
+ [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`],
2325
+ {
2326
+ min: _t.node(_l.Regex, 'Character', [_t.lit('A')], {}, {}),
2327
+ rangeToken: _t.s_i_node(_l.Regex, 'Punctuator', '-'),
2328
+ max: _t.node(_l.Regex, 'Character', [_t.lit('Z')], {}, {}),
2329
+ },
2330
+ {},
2331
+ ),
2332
+ ],
2333
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
2334
+ },
2335
+ {
2336
+ negate: false,
2337
+ },
2338
+ ),
2339
+ value: _t.s_i_node(_l.Regex, 'Keyword', '+'),
2340
+ },
2341
+ {
2342
+ min: 1,
2343
+ max: Infinity,
2344
+ greedy: true,
2345
+ },
2346
+ ),
2347
+ ],
2348
+ },
2349
+ {},
2350
+ ),
2351
+ ],
2352
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2353
+ },
2354
+ {},
2355
+ ),
2356
+ ],
2357
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2358
+ },
2359
+ {},
2360
+ ),
2361
+ },
2362
+ {},
2363
+ );
2364
+ }
2365
+ *Number() {
2366
+ yield _t.node(
2367
+ _l.Instruction,
2368
+ 'Call',
2369
+ [_t.ref`verb`, _t.ref`arguments`],
2370
+ {
2371
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2372
+ arguments: _t.node(
2373
+ _l.Instruction,
2374
+ 'Tuple',
2375
+ [
2376
+ _t.ref`openToken`,
2377
+ _t.ref`values[]`,
2378
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2379
+ _t.ref`values[]`,
2380
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2381
+ _t.ref`values[]`,
2382
+ _t.ref`closeToken`,
2383
+ ],
2384
+ {
2385
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2386
+ values: [
2387
+ _t.node(
2388
+ _l.Spamex,
2389
+ 'NodeMatcher',
2390
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
2391
+ {
2392
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2393
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
2394
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Any'),
2395
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2396
+ },
2397
+ {},
2398
+ ),
2399
+ _t.node(
2400
+ _l.Instruction,
2401
+ 'Null',
2402
+ [_t.ref`sigilToken`],
2403
+ {
2404
+ sigilToken: _t.s_i_node(_l.Instruction, 'Keyword', 'null'),
2405
+ },
2406
+ {},
2407
+ ),
2408
+ _t.node(
2409
+ _l.Instruction,
2410
+ 'Array',
2411
+ [
2412
+ _t.ref`openToken`,
2413
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
2414
+ _t.ref`elements[]`,
2415
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
2416
+ _t.ref`elements[]`,
2417
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit('\n ')], {}, {})),
2418
+ _t.ref`closeToken`,
2419
+ ],
2420
+ {
2421
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '['),
2422
+ elements: [
2423
+ _t.node(
2424
+ _l.Spamex,
2425
+ 'NodeMatcher',
2426
+ [
2427
+ _t.ref`openToken`,
2428
+ _t.ref`flags`,
2429
+ _t.ref`type`,
2430
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2431
+ _t.ref`intrinsicValue`,
2432
+ _t.ref`closeToken`,
2433
+ ],
2434
+ {
2435
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2436
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
2437
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Integer'),
2438
+ intrinsicValue: _t.node(
2439
+ _l.Regex,
2440
+ 'Pattern',
2441
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2442
+ {
2443
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2444
+ alternatives: [
2445
+ _t.node(
2446
+ _l.Regex,
2447
+ 'Alternative',
2448
+ [_t.ref`elements[]`, _t.ref`elements[]`],
2449
+ {
2450
+ elements: [
2451
+ _t.node(
2452
+ _l.Regex,
2453
+ 'Quantifier',
2454
+ [_t.ref`element`, _t.ref`value`],
2455
+ {
2456
+ element: _t.node(
2457
+ _l.Regex,
2458
+ 'Character',
2459
+ [_t.lit('-')],
2460
+ {},
2461
+ {},
2462
+ ),
2463
+ value: _t.s_i_node(_l.Regex, 'Keyword', '?'),
2464
+ },
2465
+ {
2466
+ min: 0,
2467
+ max: 1,
2468
+ greedy: true,
2469
+ },
2470
+ ),
2471
+ _t.node(
2472
+ _l.Regex,
2473
+ 'DigitCharacterSet',
2474
+ [_t.ref`escapeToken`, _t.ref`value`],
2475
+ {
2476
+ escapeToken: _t.s_i_node(_l.Regex, 'Punctuator', '\\'),
2477
+ value: _t.s_i_node(_l.Regex, 'Keyword', 'd'),
2478
+ },
2479
+ {},
2480
+ ),
2481
+ ],
2482
+ },
2483
+ {},
2484
+ ),
2485
+ ],
2486
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2487
+ },
2488
+ {},
2489
+ ),
2490
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2491
+ },
2492
+ {},
2493
+ ),
2494
+ _t.node(
2495
+ _l.Spamex,
2496
+ 'NodeMatcher',
2497
+ [
2498
+ _t.ref`openToken`,
2499
+ _t.ref`flags`,
2500
+ _t.ref`type`,
2501
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2502
+ _t.ref`intrinsicValue`,
2503
+ _t.ref`closeToken`,
2504
+ ],
2505
+ {
2506
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2507
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
2508
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Infinity'),
2509
+ intrinsicValue: _t.node(
2510
+ _l.Regex,
2511
+ 'Pattern',
2512
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2513
+ {
2514
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2515
+ alternatives: [
2516
+ _t.node(
2517
+ _l.Regex,
2518
+ 'Alternative',
2519
+ [_t.ref`elements[]`, _t.ref`elements[]`],
2520
+ {
2521
+ elements: [
2522
+ _t.node(
2523
+ _l.Regex,
2524
+ 'CharacterClass',
2525
+ [
2526
+ _t.ref`openToken`,
2527
+ _t.ref`elements[]`,
2528
+ _t.ref`elements[]`,
2529
+ _t.ref`closeToken`,
2530
+ ],
2531
+ {
2532
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
2533
+ elements: [
2534
+ _t.node(_l.Regex, 'Character', [_t.lit('+')], {}, {}),
2535
+ _t.node(_l.Regex, 'Character', [_t.lit('-')], {}, {}),
2536
+ ],
2537
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
2538
+ },
2539
+ {
2540
+ negate: false,
2541
+ },
2542
+ ),
2543
+ _t.node(_l.Regex, 'Character', [_t.lit('I')], {}, {}),
2544
+ ],
2545
+ },
2546
+ {},
2547
+ ),
2548
+ ],
2549
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2550
+ },
2551
+ {},
2552
+ ),
2553
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2554
+ },
2555
+ {},
2556
+ ),
2557
+ ],
2558
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ']'),
2559
+ },
2560
+ {},
2561
+ ),
2562
+ ],
2563
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2564
+ },
2565
+ {},
2566
+ ),
2567
+ },
2568
+ {},
2569
+ );
2570
+ }
2571
+ *UnsignedInteger() {
2572
+ yield _t.node(
2573
+ _l.Instruction,
2574
+ 'Call',
2575
+ [_t.ref`verb`, _t.ref`arguments`],
2576
+ {
2577
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2578
+ arguments: _t.node(
2579
+ _l.Instruction,
2580
+ 'Tuple',
2581
+ [
2582
+ _t.ref`openToken`,
2583
+ _t.ref`values[]`,
2584
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2585
+ _t.ref`values[]`,
2586
+ _t.ref`closeToken`,
2587
+ ],
2588
+ {
2589
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2590
+ values: [
2591
+ _t.node(
2592
+ _l.Spamex,
2593
+ 'NodeMatcher',
2594
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
2595
+ {
2596
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2597
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
2598
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Digits'),
2599
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2600
+ },
2601
+ {},
2602
+ ),
2603
+ _t.node(
2604
+ _l.CSTML,
2605
+ 'String',
2606
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2607
+ {
2608
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2609
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('digits[]')], {}, {}),
2610
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2611
+ },
2612
+ {},
2613
+ ),
2614
+ ],
2615
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2616
+ },
2617
+ {},
2618
+ ),
2619
+ },
2620
+ {},
2621
+ );
2622
+ }
2623
+ *Integer() {
2624
+ yield _t.node(
2625
+ _l.Instruction,
2626
+ 'Call',
2627
+ [_t.ref`verb`, _t.ref`arguments`],
2628
+ {
2629
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eatMatch'),
2630
+ arguments: _t.node(
2631
+ _l.Instruction,
2632
+ 'Tuple',
2633
+ [
2634
+ _t.ref`openToken`,
2635
+ _t.ref`values[]`,
2636
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2637
+ _t.ref`values[]`,
2638
+ _t.ref`closeToken`,
2639
+ ],
2640
+ {
2641
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2642
+ values: [
2643
+ _t.node(
2644
+ _l.Spamex,
2645
+ 'NodeMatcher',
2646
+ [
2647
+ _t.ref`openToken`,
2648
+ _t.ref`flags`,
2649
+ _t.ref`type`,
2650
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2651
+ _t.ref`intrinsicValue`,
2652
+ _t.ref`closeToken`,
2653
+ ],
2654
+ {
2655
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2656
+ flags: _t.node(
2657
+ _l.CSTML,
2658
+ 'Flags',
2659
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
2660
+ {
2661
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
2662
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2663
+ },
2664
+ {},
2665
+ ),
2666
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
2667
+ intrinsicValue: _t.node(
2668
+ _l.CSTML,
2669
+ 'String',
2670
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2671
+ {
2672
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2673
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('-')], {}, {}),
2674
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2675
+ },
2676
+ {},
2677
+ ),
2678
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2679
+ },
2680
+ {},
2681
+ ),
2682
+ _t.node(
2683
+ _l.CSTML,
2684
+ 'String',
2685
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2686
+ {
2687
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2688
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('negativeToken')], {}, {}),
2689
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2690
+ },
2691
+ {},
2692
+ ),
2693
+ ],
2694
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2695
+ },
2696
+ {},
2697
+ ),
2698
+ },
2699
+ {},
2700
+ );
2701
+ yield _t.node(
2702
+ _l.Instruction,
2703
+ 'Call',
2704
+ [_t.ref`verb`, _t.ref`arguments`],
2705
+ {
2706
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2707
+ arguments: _t.node(
2708
+ _l.Instruction,
2709
+ 'Tuple',
2710
+ [
2711
+ _t.ref`openToken`,
2712
+ _t.ref`values[]`,
2713
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2714
+ _t.ref`values[]`,
2715
+ _t.ref`closeToken`,
2716
+ ],
2717
+ {
2718
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2719
+ values: [
2720
+ _t.node(
2721
+ _l.Spamex,
2722
+ 'NodeMatcher',
2723
+ [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`],
2724
+ {
2725
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2726
+ flags: _t.node(_l.CSTML, 'Flags', [], {}, {}),
2727
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Digits'),
2728
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2729
+ },
2730
+ {},
2731
+ ),
2732
+ _t.node(
2733
+ _l.CSTML,
2734
+ 'String',
2735
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2736
+ {
2737
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2738
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('digits[]')], {}, {}),
2739
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2740
+ },
2741
+ {},
2742
+ ),
2743
+ ],
2744
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2745
+ },
2746
+ {},
2747
+ ),
2748
+ },
2749
+ {},
2750
+ );
2751
+ }
2752
+ *Digits() {
2753
+ while (
2754
+ yield _t.node(
2755
+ _l.Instruction,
2756
+ 'Call',
2757
+ [_t.ref`verb`, _t.ref`arguments`],
2758
+ {
2759
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eatMatch'),
2760
+ arguments: _t.node(
2761
+ _l.Instruction,
2762
+ 'Tuple',
2763
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
2764
+ {
2765
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2766
+ values: [
2767
+ _t.node(
2768
+ _l.Spamex,
2769
+ 'NodeMatcher',
2770
+ [
2771
+ _t.ref`openToken`,
2772
+ _t.ref`flags`,
2773
+ _t.ref`type`,
2774
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2775
+ _t.ref`intrinsicValue`,
2776
+ _t.ref`closeToken`,
2777
+ ],
2778
+ {
2779
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2780
+ flags: _t.node(
2781
+ _l.CSTML,
2782
+ 'Flags',
2783
+ [_t.ref`tokenToken`],
2784
+ {
2785
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2786
+ },
2787
+ {},
2788
+ ),
2789
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Digit'),
2790
+ intrinsicValue: _t.node(
2791
+ _l.Regex,
2792
+ 'Pattern',
2793
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2794
+ {
2795
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2796
+ alternatives: [
2797
+ _t.node(
2798
+ _l.Regex,
2799
+ 'Alternative',
2800
+ [_t.ref`elements[]`],
2801
+ {
2802
+ elements: [
2803
+ _t.node(
2804
+ _l.Regex,
2805
+ 'DigitCharacterSet',
2806
+ [_t.ref`escapeToken`, _t.ref`value`],
2807
+ {
2808
+ escapeToken: _t.s_i_node(_l.Regex, 'Punctuator', '\\'),
2809
+ value: _t.s_i_node(_l.Regex, 'Keyword', 'd'),
2810
+ },
2811
+ {},
2812
+ ),
2813
+ ],
2814
+ },
2815
+ {},
2816
+ ),
2817
+ ],
2818
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2819
+ },
2820
+ {},
2821
+ ),
2822
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2823
+ },
2824
+ {},
2825
+ ),
2826
+ ],
2827
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2828
+ },
2829
+ {},
2830
+ ),
2831
+ },
2832
+ {},
2833
+ )
2834
+ );
2835
+ }
2836
+ *Digit() {
2837
+ yield _t.node(
2838
+ _l.Instruction,
2839
+ 'Call',
2840
+ [_t.ref`verb`, _t.ref`arguments`],
2841
+ {
2842
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
2843
+ arguments: _t.node(
2844
+ _l.Instruction,
2845
+ 'Tuple',
2846
+ [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`],
2847
+ {
2848
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2849
+ values: [
2850
+ _t.node(
2851
+ _l.Regex,
2852
+ 'Pattern',
2853
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2854
+ {
2855
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2856
+ alternatives: [
2857
+ _t.node(
2858
+ _l.Regex,
2859
+ 'Alternative',
2860
+ [_t.ref`elements[]`],
2861
+ {
2862
+ elements: [
2863
+ _t.node(
2864
+ _l.Regex,
2865
+ 'DigitCharacterSet',
2866
+ [_t.ref`escapeToken`, _t.ref`value`],
2867
+ {
2868
+ escapeToken: _t.s_i_node(_l.Regex, 'Punctuator', '\\'),
2869
+ value: _t.s_i_node(_l.Regex, 'Keyword', 'd'),
2870
+ },
2871
+ {},
2872
+ ),
2873
+ ],
2874
+ },
2875
+ {},
2876
+ ),
2877
+ ],
2878
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2879
+ },
2880
+ {},
2881
+ ),
2882
+ ],
2883
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2884
+ },
2885
+ {},
2886
+ ),
2887
+ },
2888
+ {},
2889
+ );
2890
+ }
2891
+ *Infinity() {
2892
+ yield _t.node(
2893
+ _l.Instruction,
2894
+ 'Call',
2895
+ [_t.ref`verb`, _t.ref`arguments`],
2896
+ {
2897
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eatMatch'),
2898
+ arguments: _t.node(
2899
+ _l.Instruction,
2900
+ 'Tuple',
2901
+ [
2902
+ _t.ref`openToken`,
2903
+ _t.ref`values[]`,
2904
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2905
+ _t.ref`values[]`,
2906
+ _t.ref`closeToken`,
2907
+ ],
2908
+ {
2909
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
2910
+ values: [
2911
+ _t.node(
2912
+ _l.Spamex,
2913
+ 'NodeMatcher',
2914
+ [
2915
+ _t.ref`openToken`,
2916
+ _t.ref`flags`,
2917
+ _t.ref`type`,
2918
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
2919
+ _t.ref`intrinsicValue`,
2920
+ _t.ref`closeToken`,
2921
+ ],
2922
+ {
2923
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
2924
+ flags: _t.node(
2925
+ _l.CSTML,
2926
+ 'Flags',
2927
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
2928
+ {
2929
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
2930
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
2931
+ },
2932
+ {},
2933
+ ),
2934
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Punctuator'),
2935
+ intrinsicValue: _t.node(
2936
+ _l.Regex,
2937
+ 'Pattern',
2938
+ [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`],
2939
+ {
2940
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2941
+ alternatives: [
2942
+ _t.node(
2943
+ _l.Regex,
2944
+ 'Alternative',
2945
+ [_t.ref`elements[]`],
2946
+ {
2947
+ elements: [
2948
+ _t.node(
2949
+ _l.Regex,
2950
+ 'CharacterClass',
2951
+ [
2952
+ _t.ref`openToken`,
2953
+ _t.ref`elements[]`,
2954
+ _t.ref`elements[]`,
2955
+ _t.ref`closeToken`,
2956
+ ],
2957
+ {
2958
+ openToken: _t.s_i_node(_l.Regex, 'Punctuator', '['),
2959
+ elements: [
2960
+ _t.node(_l.Regex, 'Character', [_t.lit('+')], {}, {}),
2961
+ _t.node(_l.Regex, 'Character', [_t.lit('-')], {}, {}),
2962
+ ],
2963
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', ']'),
2964
+ },
2965
+ {
2966
+ negate: false,
2967
+ },
2968
+ ),
2969
+ ],
2970
+ },
2971
+ {},
2972
+ ),
2973
+ ],
2974
+ closeToken: _t.s_i_node(_l.Regex, 'Punctuator', '/'),
2975
+ },
2976
+ {},
2977
+ ),
2978
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
2979
+ },
2980
+ {},
2981
+ ),
2982
+ _t.node(
2983
+ _l.CSTML,
2984
+ 'String',
2985
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
2986
+ {
2987
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2988
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('signToken')], {}, {}),
2989
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
2990
+ },
2991
+ {},
2992
+ ),
2993
+ ],
2994
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
2995
+ },
2996
+ {},
2997
+ ),
2998
+ },
2999
+ {},
3000
+ );
3001
+ yield _t.node(
3002
+ _l.Instruction,
3003
+ 'Call',
3004
+ [_t.ref`verb`, _t.ref`arguments`],
3005
+ {
3006
+ verb: _t.s_node(_l.Instruction, 'Identifier', 'eat'),
3007
+ arguments: _t.node(
3008
+ _l.Instruction,
3009
+ 'Tuple',
3010
+ [
3011
+ _t.ref`openToken`,
3012
+ _t.ref`values[]`,
3013
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
3014
+ _t.ref`values[]`,
3015
+ _t.ref`closeToken`,
3016
+ ],
3017
+ {
3018
+ openToken: _t.s_i_node(_l.Instruction, 'Punctuator', '('),
3019
+ values: [
3020
+ _t.node(
3021
+ _l.Spamex,
3022
+ 'NodeMatcher',
3023
+ [
3024
+ _t.ref`openToken`,
3025
+ _t.ref`flags`,
3026
+ _t.ref`type`,
3027
+ _t.embedded(_t.s_t_node(_l.Space, 'Space', [_t.lit(' ')], {}, {})),
3028
+ _t.ref`intrinsicValue`,
3029
+ _t.ref`closeToken`,
3030
+ ],
3031
+ {
3032
+ openToken: _t.s_i_node(_l.Spamex, 'Punctuator', '<'),
3033
+ flags: _t.node(
3034
+ _l.CSTML,
3035
+ 'Flags',
3036
+ [_t.ref`intrinsicToken`, _t.ref`tokenToken`],
3037
+ {
3038
+ intrinsicToken: _t.s_i_node(_l.CSTML, 'Punctuator', '~'),
3039
+ tokenToken: _t.s_i_node(_l.CSTML, 'Punctuator', '*'),
3040
+ },
3041
+ {},
3042
+ ),
3043
+ type: _t.s_node(_l.Spamex, 'Identifier', 'Keyword'),
3044
+ intrinsicValue: _t.node(
3045
+ _l.CSTML,
3046
+ 'String',
3047
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
3048
+ {
3049
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
3050
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('Infinity')], {}, {}),
3051
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
3052
+ },
3053
+ {},
3054
+ ),
3055
+ closeToken: _t.s_i_node(_l.Spamex, 'Punctuator', '>'),
3056
+ },
3057
+ {},
3058
+ ),
3059
+ _t.node(
3060
+ _l.CSTML,
3061
+ 'String',
3062
+ [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`],
3063
+ {
3064
+ openToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
3065
+ content: _t.node(_l.CSTML, 'Content', [_t.lit('sigilToken')], {}, {}),
3066
+ closeToken: _t.s_i_node(_l.CSTML, 'Punctuator', "'"),
3067
+ },
3068
+ {},
3069
+ ),
3070
+ ],
3071
+ closeToken: _t.s_i_node(_l.Instruction, 'Punctuator', ')'),
3072
+ },
3073
+ {},
3074
+ ),
3075
+ },
3076
+ {},
3077
+ );
3078
+ }
3079
+ *Punctuator() {}
3080
+ *Keyword() {}
3081
+ *Any() {}
3082
+ };