1
// auto-generated: "lalrpop 0.20.0"
2
// sha3: 0541a5c8cbc7df293b7d9148130d6ecfffe67d17a7aaf2f2fc15fa20d053d30a
3
use super::generate_class;
4
use super::lexer;
5
use super::lexer::{Token, LexicalError};
6
use regex_syntax::hir::{self, Hir};
7
#[allow(unused_extern_crates)]
8
extern crate lalrpop_util as __lalrpop_util;
9
#[allow(unused_imports)]
10
use self::__lalrpop_util::state_machine as __state_machine;
11
extern crate core;
12
extern crate alloc;
13

            
14
#[rustfmt::skip]
15
#[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
16
mod __parse__Regex {
17

            
18
    use super::super::generate_class;
19
    use super::super::lexer;
20
    use super::super::lexer::{Token, LexicalError};
21
    use regex_syntax::hir::{self, Hir};
22
    #[allow(unused_extern_crates)]
23
    extern crate lalrpop_util as __lalrpop_util;
24
    #[allow(unused_imports)]
25
    use self::__lalrpop_util::state_machine as __state_machine;
26
    extern crate core;
27
    extern crate alloc;
28
    use super::__ToTriple;
29
    #[allow(dead_code)]
30
    pub(crate) enum __Symbol<>
31
     {
32
        Variant0(lexer::Token),
33
        Variant1(Token),
34
        Variant2(Hir),
35
        Variant3(core::option::Option<lexer::Token>),
36
        Variant4(alloc::vec::Vec<Token>),
37
        Variant5(alloc::vec::Vec<Hir>),
38
    }
39
    const __ACTION: &[i8] = &[
40
        // State 0
41
        4, 22, 23, 24, 25, 5, 6, 26, -23, 0, 0, 0, 0, 0,
42
        // State 1
43
        0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -75, 0,
44
        // State 2
45
        4, 22, 23, 24, 25, 5, 6, 26, -24, 0, 0, 0, -24, 0,
46
        // State 3
47
        33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
48
        // State 4
49
        47, 10, 48, 49, 50, 51, 52, 53, 54, 55, 56, 11, 57, 58,
50
        // State 5
51
        4, 22, 23, 24, 25, 5, 6, 26, -23, 0, 0, 0, -23, 0,
52
        // State 6
53
        0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -76, 0,
54
        // State 7
55
        4, 22, 23, 24, 25, 5, 6, 26, -23, 0, 0, 0, -23, 0,
56
        // State 8
57
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
58
        // State 9
59
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 14, 75, 76,
60
        // State 10
61
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 75, 76,
62
        // State 11
63
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 80, 75, 76,
64
        // State 12
65
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 81, 75, 76,
66
        // State 13
67
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 82, 75, 76,
68
        // State 14
69
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 83, 75, 76,
70
        // State 15
71
        63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 84, 75, 76,
72
        // State 16
73
        -57, -57, -57, -57, -57, -57, -57, -57, -57, 27, 28, 0, -57, 29,
74
        // State 17
75
        0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, -27, 0,
76
        // State 18
77
        -61, -61, -61, -61, -61, -61, -61, -61, -61, 0, 0, 0, -61, 0,
78
        // State 19
79
        -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 0, -16, -16,
80
        // State 20
81
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82
        // State 21
83
        -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 0, -18, -18,
84
        // State 22
85
        -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, 0, -21, -21,
86
        // State 23
87
        -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 0, -19, -19,
88
        // State 24
89
        -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 0, -17, -17,
90
        // State 25
91
        -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 0, -22, -22,
92
        // State 26
93
        -59, -59, -59, -59, -59, -59, -59, -59, -59, 0, 0, 0, -59, 0,
94
        // State 27
95
        -60, -60, -60, -60, -60, -60, -60, -60, -60, 0, 0, 0, -60, 0,
96
        // State 28
97
        -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, 0, 0, -58, 0,
98
        // State 29
99
        0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, -66, 0,
100
        // State 30
101
        -62, -62, -62, -62, -62, -62, -62, -62, -62, 0, 0, 0, -62, 0,
102
        // State 31
103
        -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, 0, -20, -20,
104
        // State 32
105
        -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, 0, -10, -10,
106
        // State 33
107
        -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 0, -8, -8,
108
        // State 34
109
        -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 0, -13, -13,
110
        // State 35
111
        -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 0, -9, -9,
112
        // State 36
113
        -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, 0, -7, -7,
114
        // State 37
115
        -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 0, -11, -11,
116
        // State 38
117
        -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 0, -5, -5,
118
        // State 39
119
        -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 0, -14, -14,
120
        // State 40
121
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1,
122
        // State 41
123
        -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, 0, -3, -3,
124
        // State 42
125
        -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, -4,
126
        // State 43
127
        -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 0, -12, -12,
128
        // State 44
129
        -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 0, -6, -6,
130
        // State 45
131
        -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 0, -2, -2,
132
        // State 46
133
        -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
134
        // State 47
135
        -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
136
        // State 48
137
        -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
138
        // State 49
139
        -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
140
        // State 50
141
        -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
142
        // State 51
143
        -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
144
        // State 52
145
        -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
146
        // State 53
147
        -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
148
        // State 54
149
        -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
150
        // State 55
151
        -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
152
        // State 56
153
        -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
154
        // State 57
155
        -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
156
        // State 58
157
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0,
158
        // State 59
159
        0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, -67, 0,
160
        // State 60
161
        0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, -63, 0,
162
        // State 61
163
        -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
164
        // State 62
165
        -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
166
        // State 63
167
        -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
168
        // State 64
169
        -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
170
        // State 65
171
        -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
172
        // State 66
173
        -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
174
        // State 67
175
        -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
176
        // State 68
177
        -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
178
        // State 69
179
        -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
180
        // State 70
181
        -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
182
        // State 71
183
        -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
184
        // State 72
185
        -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
186
        // State 73
187
        -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, 0, -73, -73,
188
        // State 74
189
        -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
190
        // State 75
191
        -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
192
        // State 76
193
        -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, 0, -70, -70,
194
        // State 77
195
        -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 0, -15, -15,
196
        // State 78
197
        -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
198
        // State 79
199
        -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, 0, -74, -74,
200
        // State 80
201
        -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, 0, -72, -72,
202
        // State 81
203
        -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, 0, -68, -68,
204
        // State 82
205
        -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, 0, -71, -71,
206
        // State 83
207
        -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, 0, -69, -69,
208
    ];
209
    fn __action(state: i8, integer: usize) -> i8 {
210
        __ACTION[(state as usize) * 14 + integer]
211
    }
212
    const __EOF_ACTION: &[i8] = &[
213
        // State 0
214
        -23,
215
        // State 1
216
        -75,
217
        // State 2
218
        -24,
219
        // State 3
220
        0,
221
        // State 4
222
        0,
223
        // State 5
224
        0,
225
        // State 6
226
        -76,
227
        // State 7
228
        -23,
229
        // State 8
230
        0,
231
        // State 9
232
        0,
233
        // State 10
234
        0,
235
        // State 11
236
        0,
237
        // State 12
238
        0,
239
        // State 13
240
        0,
241
        // State 14
242
        0,
243
        // State 15
244
        0,
245
        // State 16
246
        -57,
247
        // State 17
248
        -27,
249
        // State 18
250
        -61,
251
        // State 19
252
        -16,
253
        // State 20
254
        -77,
255
        // State 21
256
        -18,
257
        // State 22
258
        -21,
259
        // State 23
260
        -19,
261
        // State 24
262
        -17,
263
        // State 25
264
        -22,
265
        // State 26
266
        -59,
267
        // State 27
268
        -60,
269
        // State 28
270
        -58,
271
        // State 29
272
        -66,
273
        // State 30
274
        -62,
275
        // State 31
276
        -20,
277
        // State 32
278
        -10,
279
        // State 33
280
        -8,
281
        // State 34
282
        -13,
283
        // State 35
284
        -9,
285
        // State 36
286
        -7,
287
        // State 37
288
        -11,
289
        // State 38
290
        -5,
291
        // State 39
292
        -14,
293
        // State 40
294
        -1,
295
        // State 41
296
        -3,
297
        // State 42
298
        -4,
299
        // State 43
300
        -12,
301
        // State 44
302
        -6,
303
        // State 45
304
        -2,
305
        // State 46
306
        0,
307
        // State 47
308
        0,
309
        // State 48
310
        0,
311
        // State 49
312
        0,
313
        // State 50
314
        0,
315
        // State 51
316
        0,
317
        // State 52
318
        0,
319
        // State 53
320
        0,
321
        // State 54
322
        0,
323
        // State 55
324
        0,
325
        // State 56
326
        0,
327
        // State 57
328
        0,
329
        // State 58
330
        0,
331
        // State 59
332
        -67,
333
        // State 60
334
        -63,
335
        // State 61
336
        0,
337
        // State 62
338
        0,
339
        // State 63
340
        0,
341
        // State 64
342
        0,
343
        // State 65
344
        0,
345
        // State 66
346
        0,
347
        // State 67
348
        0,
349
        // State 68
350
        0,
351
        // State 69
352
        0,
353
        // State 70
354
        0,
355
        // State 71
356
        0,
357
        // State 72
358
        0,
359
        // State 73
360
        -73,
361
        // State 74
362
        0,
363
        // State 75
364
        0,
365
        // State 76
366
        -70,
367
        // State 77
368
        -15,
369
        // State 78
370
        0,
371
        // State 79
372
        -74,
373
        // State 80
374
        -72,
375
        // State 81
376
        -68,
377
        // State 82
378
        -71,
379
        // State 83
380
        -69,
381
    ];
382
    fn __goto(state: i8, nt: usize) -> i8 {
383
        match nt {
384
            0 => 31,
385
            1 => 16,
386
            2 => match state {
387
                7 => 60,
388
                _ => 17,
389
            },
390
            4 => 1,
391
            5 => 8,
392
            6 => match state {
393
                11..=12 | 14..=15 => 78,
394
                _ => 61,
395
            },
396
            8 => match state {
397
                9 => 12,
398
                10 => 14,
399
                13 => 15,
400
                _ => 11,
401
            },
402
            9 => match state {
403
                2 => 30,
404
                _ => 18,
405
            },
406
            10 => 2,
407
            11 => match state {
408
                6 => 59,
409
                _ => 29,
410
            },
411
            13 => 6,
412
            14 => 19,
413
            15 => match state {
414
                5 => 58,
415
                _ => 20,
416
            },
417
            _ => 0,
418
        }
419
    }
420
    const __TERMINAL: &[&str] = &[
421
        r###"BACKSLASH"###,
422
        r###"CARET"###,
423
        r###"DASH"###,
424
        r###"DOLLAR"###,
425
        r###"DOT"###,
426
        r###"LBRACKET"###,
427
        r###"LPAREN"###,
428
        r###"OTHER"###,
429
        r###"PIPE"###,
430
        r###"PLUS"###,
431
        r###"QUESTION"###,
432
        r###"RBRACKET"###,
433
        r###"RPAREN"###,
434
        r###"STAR"###,
435
    ];
436
    fn __expected_tokens(__state: i8) -> alloc::vec::Vec<alloc::string::String> {
437
        __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
438
            let next_state = __action(__state, index);
439
            if next_state == 0 {
440
                None
441
            } else {
442
                Some(alloc::string::ToString::to_string(terminal))
443
            }
444
        }).collect()
445
    }
446
    fn __expected_tokens_from_states<
447
        'input,
448
    >(
449
        __states: &[i8],
450
        _: core::marker::PhantomData<(&'input ())>,
451
    ) -> alloc::vec::Vec<alloc::string::String>
452
    {
453
        __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
454
            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
455
                Some(alloc::string::ToString::to_string(terminal))
456
            } else {
457
                None
458
            }
459
        }).collect()
460
    }
461
    pub(crate) struct __StateMachine<'input>
462
    where 
463
    {
464
        input: &'input str,
465
        __phantom: core::marker::PhantomData<(&'input ())>,
466
    }
467
    impl<'input> __state_machine::ParserDefinition for __StateMachine<'input>
468
    where 
469
    {
470
        type Location = usize;
471
        type Error = LexicalError;
472
        type Token = lexer::Token;
473
        type TokenIndex = usize;
474
        type Symbol = __Symbol<>;
475
        type Success = Hir;
476
        type StateIndex = i8;
477
        type Action = i8;
478
        type ReduceIndex = i8;
479
        type NonterminalIndex = usize;
480

            
481
        #[inline]
482
        fn start_location(&self) -> Self::Location {
483
              Default::default()
484
        }
485

            
486
        #[inline]
487
        fn start_state(&self) -> Self::StateIndex {
488
              0
489
        }
490

            
491
        #[inline]
492
        fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
493
            __token_to_integer(token, core::marker::PhantomData::<(&())>)
494
        }
495

            
496
        #[inline]
497
        fn action(&self, state: i8, integer: usize) -> i8 {
498
            __action(state, integer)
499
        }
500

            
501
        #[inline]
502
        fn error_action(&self, state: i8) -> i8 {
503
            __action(state, 14 - 1)
504
        }
505

            
506
        #[inline]
507
        fn eof_action(&self, state: i8) -> i8 {
508
            __EOF_ACTION[state as usize]
509
        }
510

            
511
        #[inline]
512
        fn goto(&self, state: i8, nt: usize) -> i8 {
513
            __goto(state, nt)
514
        }
515

            
516
        fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
517
            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
518
        }
519

            
520
        fn expected_tokens(&self, state: i8) -> alloc::vec::Vec<alloc::string::String> {
521
            __expected_tokens(state)
522
        }
523

            
524
        fn expected_tokens_from_states(&self, states: &[i8]) -> alloc::vec::Vec<alloc::string::String> {
525
            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
526
        }
527

            
528
        #[inline]
529
        fn uses_error_recovery(&self) -> bool {
530
            false
531
        }
532

            
533
        #[inline]
534
        fn error_recovery_symbol(
535
            &self,
536
            recovery: __state_machine::ErrorRecovery<Self>,
537
        ) -> Self::Symbol {
538
            panic!("error recovery not enabled for this grammar")
539
        }
540

            
541
        fn reduce(
542
            &mut self,
543
            action: i8,
544
            start_location: Option<&Self::Location>,
545
            states: &mut alloc::vec::Vec<i8>,
546
            symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
547
        ) -> Option<__state_machine::ParseResult<Self>> {
548
            __reduce(
549
                self.input,
550
                action,
551
                start_location,
552
                states,
553
                symbols,
554
                core::marker::PhantomData::<(&())>,
555
            )
556
        }
557

            
558
        fn simulate_reduce(&self, action: i8) -> __state_machine::SimulatedReduce<Self> {
559
            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
560
        }
561
    }
562
    fn __token_to_integer<
563
        'input,
564
    >(
565
        __token: &lexer::Token,
566
        _: core::marker::PhantomData<(&'input ())>,
567
    ) -> Option<usize>
568
    {
569
        match *__token {
570
            lexer::Token::BACKSLASH if true => Some(0),
571
            lexer::Token::CARET if true => Some(1),
572
            lexer::Token::DASH if true => Some(2),
573
            lexer::Token::DOLLAR if true => Some(3),
574
            lexer::Token::DOT if true => Some(4),
575
            lexer::Token::LBRACKET if true => Some(5),
576
            lexer::Token::LPAREN if true => Some(6),
577
            lexer::Token::OTHER(_) if true => Some(7),
578
            lexer::Token::PIPE if true => Some(8),
579
            lexer::Token::PLUS if true => Some(9),
580
            lexer::Token::QUESTION if true => Some(10),
581
            lexer::Token::RBRACKET if true => Some(11),
582
            lexer::Token::RPAREN if true => Some(12),
583
            lexer::Token::STAR if true => Some(13),
584
            _ => None,
585
        }
586
    }
587
    fn __token_to_symbol<
588
        'input,
589
    >(
590
        __token_index: usize,
591
        __token: lexer::Token,
592
        _: core::marker::PhantomData<(&'input ())>,
593
    ) -> __Symbol<>
594
    {
595
        match __token_index {
596
            0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 => __Symbol::Variant0(__token),
597
            _ => unreachable!(),
598
        }
599
    }
600
    fn __simulate_reduce<
601
        'input,
602
    >(
603
        __reduce_index: i8,
604
        _: core::marker::PhantomData<(&'input ())>,
605
    ) -> __state_machine::SimulatedReduce<__StateMachine<'input>>
606
    {
607
        match __reduce_index {
608
            0 => {
609
                __state_machine::SimulatedReduce::Reduce {
610
                    states_to_pop: 1,
611
                    nonterminal_produced: 0,
612
                }
613
            }
614
            1 => {
615
                __state_machine::SimulatedReduce::Reduce {
616
                    states_to_pop: 1,
617
                    nonterminal_produced: 0,
618
                }
619
            }
620
            2 => {
621
                __state_machine::SimulatedReduce::Reduce {
622
                    states_to_pop: 1,
623
                    nonterminal_produced: 0,
624
                }
625
            }
626
            3 => {
627
                __state_machine::SimulatedReduce::Reduce {
628
                    states_to_pop: 1,
629
                    nonterminal_produced: 0,
630
                }
631
            }
632
            4 => {
633
                __state_machine::SimulatedReduce::Reduce {
634
                    states_to_pop: 1,
635
                    nonterminal_produced: 0,
636
                }
637
            }
638
            5 => {
639
                __state_machine::SimulatedReduce::Reduce {
640
                    states_to_pop: 1,
641
                    nonterminal_produced: 0,
642
                }
643
            }
644
            6 => {
645
                __state_machine::SimulatedReduce::Reduce {
646
                    states_to_pop: 1,
647
                    nonterminal_produced: 0,
648
                }
649
            }
650
            7 => {
651
                __state_machine::SimulatedReduce::Reduce {
652
                    states_to_pop: 1,
653
                    nonterminal_produced: 0,
654
                }
655
            }
656
            8 => {
657
                __state_machine::SimulatedReduce::Reduce {
658
                    states_to_pop: 1,
659
                    nonterminal_produced: 0,
660
                }
661
            }
662
            9 => {
663
                __state_machine::SimulatedReduce::Reduce {
664
                    states_to_pop: 1,
665
                    nonterminal_produced: 0,
666
                }
667
            }
668
            10 => {
669
                __state_machine::SimulatedReduce::Reduce {
670
                    states_to_pop: 1,
671
                    nonterminal_produced: 0,
672
                }
673
            }
674
            11 => {
675
                __state_machine::SimulatedReduce::Reduce {
676
                    states_to_pop: 1,
677
                    nonterminal_produced: 0,
678
                }
679
            }
680
            12 => {
681
                __state_machine::SimulatedReduce::Reduce {
682
                    states_to_pop: 1,
683
                    nonterminal_produced: 0,
684
                }
685
            }
686
            13 => {
687
                __state_machine::SimulatedReduce::Reduce {
688
                    states_to_pop: 1,
689
                    nonterminal_produced: 0,
690
                }
691
            }
692
            14 => {
693
                __state_machine::SimulatedReduce::Reduce {
694
                    states_to_pop: 3,
695
                    nonterminal_produced: 1,
696
                }
697
            }
698
            15 => {
699
                __state_machine::SimulatedReduce::Reduce {
700
                    states_to_pop: 1,
701
                    nonterminal_produced: 1,
702
                }
703
            }
704
            16 => {
705
                __state_machine::SimulatedReduce::Reduce {
706
                    states_to_pop: 1,
707
                    nonterminal_produced: 1,
708
                }
709
            }
710
            17 => {
711
                __state_machine::SimulatedReduce::Reduce {
712
                    states_to_pop: 1,
713
                    nonterminal_produced: 1,
714
                }
715
            }
716
            18 => {
717
                __state_machine::SimulatedReduce::Reduce {
718
                    states_to_pop: 1,
719
                    nonterminal_produced: 1,
720
                }
721
            }
722
            19 => {
723
                __state_machine::SimulatedReduce::Reduce {
724
                    states_to_pop: 2,
725
                    nonterminal_produced: 1,
726
                }
727
            }
728
            20 => {
729
                __state_machine::SimulatedReduce::Reduce {
730
                    states_to_pop: 1,
731
                    nonterminal_produced: 1,
732
                }
733
            }
734
            21 => {
735
                __state_machine::SimulatedReduce::Reduce {
736
                    states_to_pop: 1,
737
                    nonterminal_produced: 1,
738
                }
739
            }
740
            22 => {
741
                __state_machine::SimulatedReduce::Reduce {
742
                    states_to_pop: 0,
743
                    nonterminal_produced: 2,
744
                }
745
            }
746
            23 => {
747
                __state_machine::SimulatedReduce::Reduce {
748
                    states_to_pop: 1,
749
                    nonterminal_produced: 2,
750
                }
751
            }
752
            24 => {
753
                __state_machine::SimulatedReduce::Reduce {
754
                    states_to_pop: 1,
755
                    nonterminal_produced: 3,
756
                }
757
            }
758
            25 => {
759
                __state_machine::SimulatedReduce::Reduce {
760
                    states_to_pop: 0,
761
                    nonterminal_produced: 3,
762
                }
763
            }
764
            26 => {
765
                __state_machine::SimulatedReduce::Reduce {
766
                    states_to_pop: 1,
767
                    nonterminal_produced: 4,
768
                }
769
            }
770
            27 => {
771
                __state_machine::SimulatedReduce::Reduce {
772
                    states_to_pop: 1,
773
                    nonterminal_produced: 5,
774
                }
775
            }
776
            28 => {
777
                __state_machine::SimulatedReduce::Reduce {
778
                    states_to_pop: 1,
779
                    nonterminal_produced: 5,
780
                }
781
            }
782
            29 => {
783
                __state_machine::SimulatedReduce::Reduce {
784
                    states_to_pop: 1,
785
                    nonterminal_produced: 5,
786
                }
787
            }
788
            30 => {
789
                __state_machine::SimulatedReduce::Reduce {
790
                    states_to_pop: 1,
791
                    nonterminal_produced: 5,
792
                }
793
            }
794
            31 => {
795
                __state_machine::SimulatedReduce::Reduce {
796
                    states_to_pop: 1,
797
                    nonterminal_produced: 5,
798
                }
799
            }
800
            32 => {
801
                __state_machine::SimulatedReduce::Reduce {
802
                    states_to_pop: 1,
803
                    nonterminal_produced: 5,
804
                }
805
            }
806
            33 => {
807
                __state_machine::SimulatedReduce::Reduce {
808
                    states_to_pop: 1,
809
                    nonterminal_produced: 5,
810
                }
811
            }
812
            34 => {
813
                __state_machine::SimulatedReduce::Reduce {
814
                    states_to_pop: 1,
815
                    nonterminal_produced: 5,
816
                }
817
            }
818
            35 => {
819
                __state_machine::SimulatedReduce::Reduce {
820
                    states_to_pop: 1,
821
                    nonterminal_produced: 5,
822
                }
823
            }
824
            36 => {
825
                __state_machine::SimulatedReduce::Reduce {
826
                    states_to_pop: 1,
827
                    nonterminal_produced: 5,
828
                }
829
            }
830
            37 => {
831
                __state_machine::SimulatedReduce::Reduce {
832
                    states_to_pop: 1,
833
                    nonterminal_produced: 5,
834
                }
835
            }
836
            38 => {
837
                __state_machine::SimulatedReduce::Reduce {
838
                    states_to_pop: 1,
839
                    nonterminal_produced: 5,
840
                }
841
            }
842
            39 => {
843
                __state_machine::SimulatedReduce::Reduce {
844
                    states_to_pop: 1,
845
                    nonterminal_produced: 6,
846
                }
847
            }
848
            40 => {
849
                __state_machine::SimulatedReduce::Reduce {
850
                    states_to_pop: 1,
851
                    nonterminal_produced: 6,
852
                }
853
            }
854
            41 => {
855
                __state_machine::SimulatedReduce::Reduce {
856
                    states_to_pop: 1,
857
                    nonterminal_produced: 6,
858
                }
859
            }
860
            42 => {
861
                __state_machine::SimulatedReduce::Reduce {
862
                    states_to_pop: 1,
863
                    nonterminal_produced: 6,
864
                }
865
            }
866
            43 => {
867
                __state_machine::SimulatedReduce::Reduce {
868
                    states_to_pop: 1,
869
                    nonterminal_produced: 6,
870
                }
871
            }
872
            44 => {
873
                __state_machine::SimulatedReduce::Reduce {
874
                    states_to_pop: 1,
875
                    nonterminal_produced: 6,
876
                }
877
            }
878
            45 => {
879
                __state_machine::SimulatedReduce::Reduce {
880
                    states_to_pop: 1,
881
                    nonterminal_produced: 6,
882
                }
883
            }
884
            46 => {
885
                __state_machine::SimulatedReduce::Reduce {
886
                    states_to_pop: 1,
887
                    nonterminal_produced: 6,
888
                }
889
            }
890
            47 => {
891
                __state_machine::SimulatedReduce::Reduce {
892
                    states_to_pop: 1,
893
                    nonterminal_produced: 6,
894
                }
895
            }
896
            48 => {
897
                __state_machine::SimulatedReduce::Reduce {
898
                    states_to_pop: 1,
899
                    nonterminal_produced: 6,
900
                }
901
            }
902
            49 => {
903
                __state_machine::SimulatedReduce::Reduce {
904
                    states_to_pop: 1,
905
                    nonterminal_produced: 6,
906
                }
907
            }
908
            50 => {
909
                __state_machine::SimulatedReduce::Reduce {
910
                    states_to_pop: 1,
911
                    nonterminal_produced: 6,
912
                }
913
            }
914
            51 => {
915
                __state_machine::SimulatedReduce::Reduce {
916
                    states_to_pop: 1,
917
                    nonterminal_produced: 6,
918
                }
919
            }
920
            52 => {
921
                __state_machine::SimulatedReduce::Reduce {
922
                    states_to_pop: 0,
923
                    nonterminal_produced: 7,
924
                }
925
            }
926
            53 => {
927
                __state_machine::SimulatedReduce::Reduce {
928
                    states_to_pop: 1,
929
                    nonterminal_produced: 7,
930
                }
931
            }
932
            54 => {
933
                __state_machine::SimulatedReduce::Reduce {
934
                    states_to_pop: 1,
935
                    nonterminal_produced: 8,
936
                }
937
            }
938
            55 => {
939
                __state_machine::SimulatedReduce::Reduce {
940
                    states_to_pop: 2,
941
                    nonterminal_produced: 8,
942
                }
943
            }
944
            56 => {
945
                __state_machine::SimulatedReduce::Reduce {
946
                    states_to_pop: 1,
947
                    nonterminal_produced: 9,
948
                }
949
            }
950
            57 => {
951
                __state_machine::SimulatedReduce::Reduce {
952
                    states_to_pop: 2,
953
                    nonterminal_produced: 9,
954
                }
955
            }
956
            58 => {
957
                __state_machine::SimulatedReduce::Reduce {
958
                    states_to_pop: 2,
959
                    nonterminal_produced: 9,
960
                }
961
            }
962
            59 => {
963
                __state_machine::SimulatedReduce::Reduce {
964
                    states_to_pop: 2,
965
                    nonterminal_produced: 9,
966
                }
967
            }
968
            60 => {
969
                __state_machine::SimulatedReduce::Reduce {
970
                    states_to_pop: 1,
971
                    nonterminal_produced: 10,
972
                }
973
            }
974
            61 => {
975
                __state_machine::SimulatedReduce::Reduce {
976
                    states_to_pop: 2,
977
                    nonterminal_produced: 10,
978
                }
979
            }
980
            62 => {
981
                __state_machine::SimulatedReduce::Reduce {
982
                    states_to_pop: 2,
983
                    nonterminal_produced: 11,
984
                }
985
            }
986
            63 => {
987
                __state_machine::SimulatedReduce::Reduce {
988
                    states_to_pop: 0,
989
                    nonterminal_produced: 12,
990
                }
991
            }
992
            64 => {
993
                __state_machine::SimulatedReduce::Reduce {
994
                    states_to_pop: 1,
995
                    nonterminal_produced: 12,
996
                }
997
            }
998
            65 => {
999
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 1,
                    nonterminal_produced: 13,
                }
            }
            66 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 2,
                    nonterminal_produced: 13,
                }
            }
            67 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 4,
                    nonterminal_produced: 14,
                }
            }
            68 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 5,
                    nonterminal_produced: 14,
                }
            }
            69 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 3,
                    nonterminal_produced: 14,
                }
            }
            70 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 4,
                    nonterminal_produced: 14,
                }
            }
            71 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 4,
                    nonterminal_produced: 14,
                }
            }
            72 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 3,
                    nonterminal_produced: 14,
                }
            }
            73 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 4,
                    nonterminal_produced: 14,
                }
            }
            74 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 1,
                    nonterminal_produced: 15,
                }
            }
            75 => {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop: 2,
                    nonterminal_produced: 15,
                }
            }
            76 => __state_machine::SimulatedReduce::Accept,
            _ => panic!("invalid reduction index {}", __reduce_index)
        }
    }
    pub(crate) struct RegexParser {
        _priv: (),
    }
    impl RegexParser {
        pub(crate) fn new() -> RegexParser {
            RegexParser {
                _priv: (),
            }
        }
        #[allow(dead_code)]
        pub(crate) fn parse<
            'input,
            __TOKEN: __ToTriple<'input, >,
            __TOKENS: IntoIterator<Item=__TOKEN>,
        >(
            &self,
            input: &'input str,
            __tokens0: __TOKENS,
        ) -> Result<Hir, __lalrpop_util::ParseError<usize, lexer::Token, LexicalError>>
        {
            let __tokens = __tokens0.into_iter();
            let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
            __state_machine::Parser::drive(
                __StateMachine {
                    input,
                    __phantom: core::marker::PhantomData::<(&())>,
                },
                __tokens,
            )
        }
    }
    fn __accepts<
        'input,
    >(
        __error_state: Option<i8>,
        __states: &[i8],
        __opt_integer: Option<usize>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> bool
    {
        let mut __states = __states.to_vec();
        __states.extend(__error_state);
        loop {
            let mut __states_len = __states.len();
            let __top = __states[__states_len - 1];
            let __action = match __opt_integer {
                None => __EOF_ACTION[__top as usize],
                Some(__integer) => __action(__top, __integer),
            };
            if __action == 0 { return false; }
            if __action > 0 { return true; }
            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<(&())>) {
                __state_machine::SimulatedReduce::Reduce {
                    states_to_pop, nonterminal_produced
                } => (states_to_pop, nonterminal_produced),
                __state_machine::SimulatedReduce::Accept => return true,
            };
            __states_len -= __to_pop;
            __states.truncate(__states_len);
            let __top = __states[__states_len - 1];
            let __next_state = __goto(__top, __nt);
            __states.push(__next_state);
        }
    }
    pub(crate) fn __reduce<
        'input,
    >(
        input: &'input str,
        __action: i8,
        __lookahead_start: Option<&usize>,
        __states: &mut alloc::vec::Vec<i8>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> Option<Result<Hir,__lalrpop_util::ParseError<usize, lexer::Token, LexicalError>>>
    {
        let (__pop_states, __nonterminal) = match __action {
            0 => {
                __reduce0(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            1 => {
                __reduce1(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            2 => {
                __reduce2(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            3 => {
                __reduce3(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            4 => {
                __reduce4(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            5 => {
                __reduce5(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            6 => {
                __reduce6(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            7 => {
                __reduce7(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            8 => {
                __reduce8(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            9 => {
                __reduce9(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            10 => {
                __reduce10(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            11 => {
                __reduce11(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            12 => {
                __reduce12(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            13 => {
                __reduce13(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            14 => {
                __reduce14(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            15 => {
                __reduce15(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            16 => {
                __reduce16(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            17 => {
                __reduce17(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            18 => {
                __reduce18(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            19 => {
                __reduce19(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            20 => {
                __reduce20(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            21 => {
                __reduce21(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            22 => {
                __reduce22(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            23 => {
                __reduce23(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            24 => {
                __reduce24(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            25 => {
                __reduce25(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            26 => {
                __reduce26(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            27 => {
                __reduce27(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            28 => {
                __reduce28(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            29 => {
                __reduce29(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            30 => {
                __reduce30(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            31 => {
                __reduce31(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            32 => {
                __reduce32(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            33 => {
                __reduce33(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            34 => {
                __reduce34(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            35 => {
                __reduce35(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            36 => {
                __reduce36(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            37 => {
                __reduce37(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            38 => {
                __reduce38(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            39 => {
                __reduce39(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            40 => {
                __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            41 => {
                __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            42 => {
                __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            43 => {
                __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            44 => {
                __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            45 => {
                __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            46 => {
                __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            47 => {
                __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            48 => {
                __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            49 => {
                __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            50 => {
                __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            51 => {
                __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            52 => {
                __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            53 => {
                __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            54 => {
                __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            55 => {
                __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            56 => {
                __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            57 => {
                __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            58 => {
                __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            59 => {
                __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            60 => {
                __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            61 => {
                __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            62 => {
                __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            63 => {
                __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            64 => {
                __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            65 => {
                __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            66 => {
                __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            67 => {
                __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            68 => {
                __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            69 => {
                __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            70 => {
                __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            71 => {
                __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            72 => {
                __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            73 => {
                __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            74 => {
                __reduce74(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            75 => {
                __reduce75(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
            }
            76 => {
                // __Regex = Regex => ActionFn(0);
                let __sym0 = __pop_Variant2(__symbols);
                let __start = __sym0.0;
                let __end = __sym0.2;
                let __nt = super::__action0::<>(input, __sym0);
                return Some(Ok(__nt));
            }
            _ => panic!("invalid action code {}", __action)
        };
        let __states_len = __states.len();
        __states.truncate(__states_len - __pop_states);
        let __state = *__states.last().unwrap();
        let __next_state = __goto(__state, __nonterminal);
        __states.push(__next_state);
        None
    }
    #[inline(never)]
    fn __symbol_type_mismatch() -> ! {
        panic!("symbol type mismatch")
    }
    fn __pop_Variant2<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, Hir, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    fn __pop_Variant1<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, Token, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    fn __pop_Variant5<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, alloc::vec::Vec<Hir>, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    fn __pop_Variant4<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, alloc::vec::Vec<Token>, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    fn __pop_Variant3<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, core::option::Option<lexer::Token>, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    fn __pop_Variant0<
    >(
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
    ) -> (usize, lexer::Token, usize)
     {
        match __symbols.pop() {
            Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r),
            _ => __symbol_type_mismatch()
        }
    }
    pub(crate) fn __reduce0<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = PIPE => ActionFn(46);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action46::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce1<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = STAR => ActionFn(47);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action47::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce2<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = PLUS => ActionFn(48);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action48::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce3<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = QUESTION => ActionFn(49);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action49::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce4<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = LPAREN => ActionFn(50);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action50::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce5<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = RPAREN => ActionFn(51);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action51::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce6<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = DOT => ActionFn(52);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action52::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce7<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = CARET => ActionFn(53);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action53::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce8<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = DOLLAR => ActionFn(54);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action54::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce9<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = BACKSLASH => ActionFn(55);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action55::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce10<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = LBRACKET => ActionFn(56);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action56::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce11<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = RBRACKET => ActionFn(57);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action57::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce12<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = DASH => ActionFn(58);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action58::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce13<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // AnyChar = OTHER => ActionFn(59);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action59::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 0)
    }
    pub(crate) fn __reduce14<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = LPAREN, Regex, RPAREN => ActionFn(10);
        assert!(__symbols.len() >= 3);
        let __sym2 = __pop_Variant0(__symbols);
        let __sym1 = __pop_Variant2(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym2.2;
        let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (3, 1)
    }
    pub(crate) fn __reduce15<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = Range => ActionFn(11);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action11::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce16<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = DOT => ActionFn(12);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action12::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce17<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = CARET => ActionFn(13);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action13::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce18<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = DOLLAR => ActionFn(14);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action14::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce19<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = BACKSLASH, AnyChar => ActionFn(15);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant1(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action15::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 1)
    }
    pub(crate) fn __reduce20<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = DASH => ActionFn(16);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action16::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce21<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Atom = OTHER => ActionFn(17);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action17::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 1)
    }
    pub(crate) fn __reduce22<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Branch =  => ActionFn(4);
        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
        let __end = __start.clone();
        let __nt = super::__action4::<>(input, &__start, &__end);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (0, 2)
    }
    pub(crate) fn __reduce23<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Branch = Piece+ => ActionFn(5);
        let __sym0 = __pop_Variant5(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action5::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 2)
    }
    pub(crate) fn __reduce24<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // CARET? = CARET => ActionFn(64);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action64::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
        (1, 3)
    }
    pub(crate) fn __reduce25<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // CARET? =  => ActionFn(65);
        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
        let __end = __start.clone();
        let __nt = super::__action65::<>(input, &__start, &__end);
        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
        (0, 3)
    }
    pub(crate) fn __reduce26<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // LBranch = Branch => ActionFn(2);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action2::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 4)
    }
    pub(crate) fn __reduce27<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = PIPE => ActionFn(34);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action34::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce28<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = STAR => ActionFn(35);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action35::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce29<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = PLUS => ActionFn(36);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action36::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce30<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = QUESTION => ActionFn(37);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action37::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce31<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = LPAREN => ActionFn(38);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action38::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce32<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = RPAREN => ActionFn(39);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action39::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce33<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = DOT => ActionFn(40);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action40::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce34<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = DOLLAR => ActionFn(41);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action41::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce35<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = BACKSLASH => ActionFn(42);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action42::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce36<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = LBRACKET => ActionFn(43);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action43::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce37<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = DASH => ActionFn(44);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action44::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce38<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotCaretNotRBracket = OTHER => ActionFn(45);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action45::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 5)
    }
    pub(crate) fn __reduce39<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = PIPE => ActionFn(21);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action21::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce40<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = STAR => ActionFn(22);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action22::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce41<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = PLUS => ActionFn(23);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action23::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce42<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = QUESTION => ActionFn(24);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action24::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce43<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = LPAREN => ActionFn(25);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action25::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce44<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = RPAREN => ActionFn(26);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action26::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce45<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = DOT => ActionFn(27);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action27::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce46<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = CARET => ActionFn(28);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action28::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce47<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = DOLLAR => ActionFn(29);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action29::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce48<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = BACKSLASH => ActionFn(30);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action30::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce49<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = LBRACKET => ActionFn(31);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action31::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce50<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = DASH => ActionFn(32);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action32::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce51<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket = OTHER => ActionFn(33);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action33::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
        (1, 6)
    }
    pub(crate) fn __reduce52<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket* =  => ActionFn(62);
        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
        let __end = __start.clone();
        let __nt = super::__action62::<>(input, &__start, &__end);
        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        (0, 7)
    }
    pub(crate) fn __reduce53<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket* = NotRBracket+ => ActionFn(63);
        let __sym0 = __pop_Variant4(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action63::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        (1, 7)
    }
    pub(crate) fn __reduce54<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket+ = NotRBracket => ActionFn(60);
        let __sym0 = __pop_Variant1(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action60::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        (1, 8)
    }
    pub(crate) fn __reduce55<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // NotRBracket+ = NotRBracket+, NotRBracket => ActionFn(61);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant1(__symbols);
        let __sym0 = __pop_Variant4(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action61::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        (2, 8)
    }
    pub(crate) fn __reduce56<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece = Atom => ActionFn(6);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action6::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 9)
    }
    pub(crate) fn __reduce57<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece = Atom, STAR => ActionFn(7);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action7::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 9)
    }
    pub(crate) fn __reduce58<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece = Atom, PLUS => ActionFn(8);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action8::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 9)
    }
    pub(crate) fn __reduce59<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece = Atom, QUESTION => ActionFn(9);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action9::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 9)
    }
    pub(crate) fn __reduce60<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece+ = Piece => ActionFn(66);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action66::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (1, 10)
    }
    pub(crate) fn __reduce61<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Piece+ = Piece+, Piece => ActionFn(67);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant2(__symbols);
        let __sym0 = __pop_Variant5(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action67::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (2, 10)
    }
    pub(crate) fn __reduce62<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // RBranch = PIPE, Branch => ActionFn(3);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant2(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action3::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 11)
    }
    pub(crate) fn __reduce63<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // RBranch* =  => ActionFn(68);
        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
        let __end = __start.clone();
        let __nt = super::__action68::<>(input, &__start, &__end);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (0, 12)
    }
    pub(crate) fn __reduce64<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // RBranch* = RBranch+ => ActionFn(69);
        let __sym0 = __pop_Variant5(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action69::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (1, 12)
    }
    pub(crate) fn __reduce65<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // RBranch+ = RBranch => ActionFn(70);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action70::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (1, 13)
    }
    pub(crate) fn __reduce66<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // RBranch+ = RBranch+, RBranch => ActionFn(71);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant2(__symbols);
        let __sym0 = __pop_Variant5(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action71::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
        (2, 13)
    }
    pub(crate) fn __reduce67<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, CARET, RBRACKET, RBRACKET => ActionFn(74);
        assert!(__symbols.len() >= 4);
        let __sym3 = __pop_Variant0(__symbols);
        let __sym2 = __pop_Variant0(__symbols);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym3.2;
        let __nt = super::__action74::<>(input, __sym0, __sym1, __sym2, __sym3);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (4, 14)
    }
    pub(crate) fn __reduce68<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, CARET, RBRACKET, NotRBracket+, RBRACKET => ActionFn(75);
        assert!(__symbols.len() >= 5);
        let __sym4 = __pop_Variant0(__symbols);
        let __sym3 = __pop_Variant4(__symbols);
        let __sym2 = __pop_Variant0(__symbols);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym4.2;
        let __nt = super::__action75::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (5, 14)
    }
    pub(crate) fn __reduce69<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, RBRACKET, RBRACKET => ActionFn(76);
        assert!(__symbols.len() >= 3);
        let __sym2 = __pop_Variant0(__symbols);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym2.2;
        let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (3, 14)
    }
    pub(crate) fn __reduce70<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, RBRACKET, NotRBracket+, RBRACKET => ActionFn(77);
        assert!(__symbols.len() >= 4);
        let __sym3 = __pop_Variant0(__symbols);
        let __sym2 = __pop_Variant4(__symbols);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym3.2;
        let __nt = super::__action77::<>(input, __sym0, __sym1, __sym2, __sym3);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (4, 14)
    }
    pub(crate) fn __reduce71<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, CARET, NotRBracket+, RBRACKET => ActionFn(19);
        assert!(__symbols.len() >= 4);
        let __sym3 = __pop_Variant0(__symbols);
        let __sym2 = __pop_Variant4(__symbols);
        let __sym1 = __pop_Variant0(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym3.2;
        let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2, __sym3);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (4, 14)
    }
    pub(crate) fn __reduce72<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, NotCaretNotRBracket, RBRACKET => ActionFn(78);
        assert!(__symbols.len() >= 3);
        let __sym2 = __pop_Variant0(__symbols);
        let __sym1 = __pop_Variant1(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym2.2;
        let __nt = super::__action78::<>(input, __sym0, __sym1, __sym2);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (3, 14)
    }
    pub(crate) fn __reduce73<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Range = LBRACKET, NotCaretNotRBracket, NotRBracket+, RBRACKET => ActionFn(79);
        assert!(__symbols.len() >= 4);
        let __sym3 = __pop_Variant0(__symbols);
        let __sym2 = __pop_Variant4(__symbols);
        let __sym1 = __pop_Variant1(__symbols);
        let __sym0 = __pop_Variant0(__symbols);
        let __start = __sym0.0;
        let __end = __sym3.2;
        let __nt = super::__action79::<>(input, __sym0, __sym1, __sym2, __sym3);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (4, 14)
    }
    pub(crate) fn __reduce74<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Regex = LBranch => ActionFn(80);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym0.2;
        let __nt = super::__action80::<>(input, __sym0);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (1, 15)
    }
    pub(crate) fn __reduce75<
        'input,
    >(
        input: &'input str,
        __lookahead_start: Option<&usize>,
        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
        _: core::marker::PhantomData<(&'input ())>,
    ) -> (usize, usize)
    {
        // Regex = LBranch, RBranch+ => ActionFn(81);
        assert!(__symbols.len() >= 2);
        let __sym1 = __pop_Variant5(__symbols);
        let __sym0 = __pop_Variant2(__symbols);
        let __start = __sym0.0;
        let __end = __sym1.2;
        let __nt = super::__action81::<>(input, __sym0, __sym1);
        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
        (2, 15)
    }
}
pub(crate) use self::__parse__Regex::RegexParser;
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action0<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Hir, usize),
) -> Hir
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action1<
    'input,
>(
    input: &'input str,
    (_, l, _): (usize, Hir, usize),
    (_, r, _): (usize, alloc::vec::Vec<Hir>, usize),
) -> Hir
{
    {
        let mut r = r;
        r.insert(0, l);
        // If any of the branches are empty, then that branch matches
        // everything, and we can just short circuit the whole
        // alternation.
        //
        // This is actually required for version 1.3.7 of the regex
        // crate, which is the version that is in Debian Bullseye.
        // See issue #694 for details.
        if r.iter().any(|b| *b.kind() == hir::HirKind::Empty) {
            hir::Hir::empty()
        } else {
            Hir::alternation(r)
        }
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action2<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Hir, usize),
) -> Hir
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action3<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, __0, _): (usize, Hir, usize),
) -> Hir
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action4<
    'input,
>(
    input: &'input str,
    __lookbehind: &usize,
    __lookahead: &usize,
) -> Hir
{
    {
        hir::Hir::empty()
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action5<
    'input,
>(
    input: &'input str,
    (_, p, _): (usize, alloc::vec::Vec<Hir>, usize),
) -> Hir
{
    {
        if p.iter().all(|p| *p.kind() == hir::HirKind::Empty) {
            // All pieces are empty.  Just return empty.
            hir::Hir::empty()
        } else {
            hir::Hir::concat(p)
        }
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action6<
    'input,
>(
    input: &'input str,
    (_, a, _): (usize, Hir, usize),
) -> Hir
{
    a
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action7<
    'input,
>(
    input: &'input str,
    (_, a, _): (usize, Hir, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        if *a.kind() == hir::HirKind::Empty {
            // Piece is empty.  This is equivalent to empty so just
            // return it.
            a
        } else {
            hir::Hir::repetition(hir::Repetition {
                min: 0,
                max: None,
                greedy: true,
                sub: Box::new(a)
            })
        }
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action8<
    'input,
>(
    input: &'input str,
    (_, a, _): (usize, Hir, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        if *a.kind() == hir::HirKind::Empty {
            // Piece is empty.  This is equivalent to empty so just
            // return it.
            a
        } else {
            hir::Hir::repetition(hir::Repetition {
                min: 1,
                max: None,
                greedy: true,
                sub: Box::new(a)
            })
        }
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action9<
    'input,
>(
    input: &'input str,
    (_, a, _): (usize, Hir, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        if *a.kind() == hir::HirKind::Empty {
            // Piece is empty.  This is equivalent to empty so just
            // return it.
            a
        } else {
            hir::Hir::repetition(hir::Repetition {
                min: 0,
                max: Some(1),
                greedy: true,
                sub: Box::new(a)
            })
        }
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action10<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, r, _): (usize, Hir, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        r
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action11<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Hir, usize),
) -> Hir
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action12<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        hir::Hir::dot(hir::Dot::AnyChar)
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action13<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        hir::Hir::look(hir::Look::Start)
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action14<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        hir::Hir::look(hir::Look::End)
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action15<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, t, _): (usize, Token, usize),
) -> Hir
{
    {
        // "A buffer of length four is large enough to encode any
        // char."
        //
        // https://doc.rust-lang.org/std/primitive.char.html#method.encode_utf8
        let mut buffer = [0; 4];
        // Convert the Unicode character t to a string.
        let s = t.to_char().encode_utf8(&mut buffer);
        hir::Hir::literal(s.as_bytes())
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action16<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        hir::Hir::literal("-".as_bytes())
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action17<
    'input,
>(
    input: &'input str,
    (_, t, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        // "A buffer of length four is large enough to encode any
        // char."
        //
        // https://doc.rust-lang.org/std/primitive.char.html#method.encode_utf8
        let mut buffer = [0; 4];
        let s = t.to_char().encode_utf8(&mut buffer);
        hir::Hir::literal(s.as_bytes())
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action18<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, c, _): (usize, core::option::Option<lexer::Token>, usize),
    (_, class1, _): (usize, lexer::Token, usize),
    (_, class2, _): (usize, alloc::vec::Vec<Token>, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        generate_class(c.is_some(),
                       std::iter::once(class1.to_char())
                       .chain(class2.into_iter().map(|t| t.to_char())))
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action19<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, _, _): (usize, lexer::Token, usize),
    (_, class, _): (usize, alloc::vec::Vec<Token>, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        generate_class(true,
                       class.into_iter().map(|t| t.to_char()))
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action20<
    'input,
>(
    input: &'input str,
    (_, _, _): (usize, lexer::Token, usize),
    (_, class1, _): (usize, Token, usize),
    (_, class2, _): (usize, alloc::vec::Vec<Token>, usize),
    (_, _, _): (usize, lexer::Token, usize),
) -> Hir
{
    {
        generate_class(false,
                       std::iter::once(class1.to_char())
                       .chain(class2.into_iter().map(|t| t.to_char())))
    }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action21<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('|')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action22<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('*')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action23<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('+')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action24<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('?')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action25<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('(')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action26<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER(')')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action27<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('.')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action28<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('^')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action29<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('$')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action30<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('\\')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action31<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('[')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action32<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('-')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action33<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action34<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('|')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action35<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('*')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action36<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('+')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action37<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('?')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action38<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('(')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action39<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER(')')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action40<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('.')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action41<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('$')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action42<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('\\')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action43<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('[')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action44<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('-')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action45<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action46<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('|')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action47<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('*')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action48<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('+')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action49<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('?')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action50<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('(')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action51<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER(')')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action52<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('.')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action53<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('^')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action54<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('$')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action55<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('\\')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action56<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('[')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action57<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER(']')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action58<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    Token::OTHER('-')
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action59<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> Token
{
    __0
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action60<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Token, usize),
) -> alloc::vec::Vec<Token>
{
    alloc::vec![__0]
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action61<
    'input,
>(
    input: &'input str,
    (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
    (_, e, _): (usize, Token, usize),
) -> alloc::vec::Vec<Token>
{
    { let mut v = v; v.push(e); v }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action62<
    'input,
>(
    input: &'input str,
    __lookbehind: &usize,
    __lookahead: &usize,
) -> alloc::vec::Vec<Token>
{
    alloc::vec![]
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action63<
    'input,
>(
    input: &'input str,
    (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
) -> alloc::vec::Vec<Token>
{
    v
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action64<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, lexer::Token, usize),
) -> core::option::Option<lexer::Token>
{
    Some(__0)
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action65<
    'input,
>(
    input: &'input str,
    __lookbehind: &usize,
    __lookahead: &usize,
) -> core::option::Option<lexer::Token>
{
    None
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action66<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Hir, usize),
) -> alloc::vec::Vec<Hir>
{
    alloc::vec![__0]
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action67<
    'input,
>(
    input: &'input str,
    (_, v, _): (usize, alloc::vec::Vec<Hir>, usize),
    (_, e, _): (usize, Hir, usize),
) -> alloc::vec::Vec<Hir>
{
    { let mut v = v; v.push(e); v }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action68<
    'input,
>(
    input: &'input str,
    __lookbehind: &usize,
    __lookahead: &usize,
) -> alloc::vec::Vec<Hir>
{
    alloc::vec![]
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action69<
    'input,
>(
    input: &'input str,
    (_, v, _): (usize, alloc::vec::Vec<Hir>, usize),
) -> alloc::vec::Vec<Hir>
{
    v
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action70<
    'input,
>(
    input: &'input str,
    (_, __0, _): (usize, Hir, usize),
) -> alloc::vec::Vec<Hir>
{
    alloc::vec![__0]
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action71<
    'input,
>(
    input: &'input str,
    (_, v, _): (usize, alloc::vec::Vec<Hir>, usize),
    (_, e, _): (usize, Hir, usize),
) -> alloc::vec::Vec<Hir>
{
    { let mut v = v; v.push(e); v }
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action72<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, lexer::Token, usize),
    __3: (usize, alloc::vec::Vec<Token>, usize),
    __4: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __1.0;
    let __end0 = __1.2;
    let __temp0 = __action64(
        input,
        __1,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action18(
        input,
        __0,
        __temp0,
        __2,
        __3,
        __4,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action73<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, alloc::vec::Vec<Token>, usize),
    __3: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __0.2;
    let __end0 = __1.0;
    let __temp0 = __action65(
        input,
        &__start0,
        &__end0,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action18(
        input,
        __0,
        __temp0,
        __1,
        __2,
        __3,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action74<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, lexer::Token, usize),
    __3: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __2.2;
    let __end0 = __3.0;
    let __temp0 = __action62(
        input,
        &__start0,
        &__end0,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action72(
        input,
        __0,
        __1,
        __2,
        __temp0,
        __3,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action75<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, lexer::Token, usize),
    __3: (usize, alloc::vec::Vec<Token>, usize),
    __4: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __3.0;
    let __end0 = __3.2;
    let __temp0 = __action63(
        input,
        __3,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action72(
        input,
        __0,
        __1,
        __2,
        __temp0,
        __4,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action76<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __1.2;
    let __end0 = __2.0;
    let __temp0 = __action62(
        input,
        &__start0,
        &__end0,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action73(
        input,
        __0,
        __1,
        __temp0,
        __2,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action77<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, lexer::Token, usize),
    __2: (usize, alloc::vec::Vec<Token>, usize),
    __3: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __2.0;
    let __end0 = __2.2;
    let __temp0 = __action63(
        input,
        __2,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action73(
        input,
        __0,
        __1,
        __temp0,
        __3,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action78<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, Token, usize),
    __2: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __1.2;
    let __end0 = __2.0;
    let __temp0 = __action62(
        input,
        &__start0,
        &__end0,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action20(
        input,
        __0,
        __1,
        __temp0,
        __2,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action79<
    'input,
>(
    input: &'input str,
    __0: (usize, lexer::Token, usize),
    __1: (usize, Token, usize),
    __2: (usize, alloc::vec::Vec<Token>, usize),
    __3: (usize, lexer::Token, usize),
) -> Hir
{
    let __start0 = __2.0;
    let __end0 = __2.2;
    let __temp0 = __action63(
        input,
        __2,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action20(
        input,
        __0,
        __1,
        __temp0,
        __3,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action80<
    'input,
>(
    input: &'input str,
    __0: (usize, Hir, usize),
) -> Hir
{
    let __start0 = __0.2;
    let __end0 = __0.2;
    let __temp0 = __action68(
        input,
        &__start0,
        &__end0,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action1(
        input,
        __0,
        __temp0,
    )
}
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
fn __action81<
    'input,
>(
    input: &'input str,
    __0: (usize, Hir, usize),
    __1: (usize, alloc::vec::Vec<Hir>, usize),
) -> Hir
{
    let __start0 = __1.0;
    let __end0 = __1.2;
    let __temp0 = __action69(
        input,
        __1,
    );
    let __temp0 = (__start0, __temp0, __end0);
    __action1(
        input,
        __0,
        __temp0,
    )
}
#[allow(clippy::type_complexity)]
pub trait __ToTriple<'input, >
{
    fn to_triple(value: Self) -> Result<(usize,lexer::Token,usize), __lalrpop_util::ParseError<usize, lexer::Token, LexicalError>>;
}
impl<'input, > __ToTriple<'input, > for (usize, lexer::Token, usize)
{
    fn to_triple(value: Self) -> Result<(usize,lexer::Token,usize), __lalrpop_util::ParseError<usize, lexer::Token, LexicalError>> {
        Ok(value)
    }
}
impl<'input, > __ToTriple<'input, > for Result<(usize, lexer::Token, usize), LexicalError>
{
    fn to_triple(value: Self) -> Result<(usize,lexer::Token,usize), __lalrpop_util::ParseError<usize, lexer::Token, LexicalError>> {
        match value {
            Ok(v) => Ok(v),
            Err(error) => Err(__lalrpop_util::ParseError::User { error }),
        }
    }
}