kiki/
parser.rs

1// This code was generated by Kiki.
2// Kiki is an open-source minimalist parser generator for Rust.
3// You can read more at https://crates.io/crates/kiki
4//
5// This code was generated from a grammar with the following hash:
6// @sha256 f5515a070bee39f2c4814f2939108a718e489e1940112ade895b72e1cba7887f
7
8// Since this code is automatically generated,
9// some parts may be unidiomatic.
10// The linter often complains about these parts.
11// However, these warnings are not useful.
12// Therefore, we disable certain lints for this file.
13#![allow(non_snake_case)]
14#![allow(dead_code)]
15
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub enum Token {
18    Underscore(crate::data::ByteIndex),
19    Ident(crate::data::token::Ident),
20    TerminalIdent(crate::data::token::TerminalIdent),
21    OuterAttribute(crate::data::token::Attribute),
22    StartKw(crate::data::ByteIndex),
23    StructKw(crate::data::ByteIndex),
24    EnumKw(crate::data::ByteIndex),
25    TerminalKw(crate::data::ByteIndex),
26    Colon(crate::data::ByteIndex),
27    DoubleColon(crate::data::ByteIndex),
28    Comma(crate::data::ByteIndex),
29    LParen(crate::data::ByteIndex),
30    RParen(crate::data::ByteIndex),
31    LCurly(crate::data::ByteIndex),
32    RCurly(crate::data::ByteIndex),
33    LAngle(crate::data::ByteIndex),
34    RAngle(crate::data::ByteIndex),
35}
36
37pub struct File {
38    pub items: Box<OptItems>,
39}
40
41pub enum OptItems {
42    Nil,
43    Cons(
44        Box<OptItems>,
45        Box<FileItem>,
46    ),
47}
48
49pub enum FileItem {
50    Start(
51        crate::data::token::Ident,
52    ),
53    Struct(
54        Box<Struct>,
55    ),
56    Enum(
57        Box<Enum>,
58    ),
59    Terminal(
60        Box<TerminalEnum>,
61    ),
62}
63
64pub struct Struct {
65    pub attributes: Box<OptOuterAttributes>,
66    pub name: crate::data::token::Ident,
67    pub fieldset: Box<Fieldset>,
68}
69
70pub struct Enum {
71    pub attributes: Box<OptOuterAttributes>,
72    pub name: crate::data::token::Ident,
73    pub variants: Box<OptEnumVariants>,
74}
75
76pub struct TerminalEnum {
77    pub attributes: Box<OptOuterAttributes>,
78    pub name: crate::data::token::Ident,
79    pub variants: Box<OptTerminalEnumVariants>,
80}
81
82pub enum OptOuterAttributes {
83    Nil,
84    Cons(
85        Box<OptOuterAttributes>,
86        crate::data::token::Attribute,
87    ),
88}
89
90pub enum Fieldset {
91    Empty,
92    Named(
93        Box<NamedFieldset>,
94    ),
95    Tuple(
96        Box<TupleFieldset>,
97    ),
98}
99
100pub struct NamedFieldset {
101    pub fields: Box<NamedFields>,
102}
103
104pub enum NamedFields {
105    One(
106        Box<NamedField>,
107    ),
108    Cons(
109        Box<NamedFields>,
110        Box<NamedField>,
111    ),
112}
113
114pub struct NamedField {
115    pub name: Box<IdentOrUnderscore>,
116    pub symbol: Box<IdentOrTerminalIdent>,
117}
118
119pub struct TupleFieldset {
120    pub fields: Box<TupleFields>,
121}
122
123pub enum TupleFields {
124    One(
125        Box<TupleField>,
126    ),
127    Cons(
128        Box<TupleFields>,
129        Box<TupleField>,
130    ),
131}
132
133pub enum TupleField {
134    Used(
135        Box<IdentOrTerminalIdent>,
136    ),
137    Skipped(
138        Box<IdentOrTerminalIdent>,
139    ),
140}
141
142pub enum OptEnumVariants {
143    Nil,
144    Cons(
145        Box<OptEnumVariants>,
146        Box<EnumVariant>,
147    ),
148}
149
150pub struct EnumVariant {
151    pub name: crate::data::token::Ident,
152    pub fieldset: Box<Fieldset>,
153}
154
155pub enum OptTerminalEnumVariants {
156    Nil,
157    Cons(
158        Box<OptTerminalEnumVariants>,
159        Box<TerminalEnumVariant>,
160    ),
161}
162
163pub struct TerminalEnumVariant {
164    pub name: crate::data::token::TerminalIdent,
165    pub type_: Box<Type>,
166}
167
168pub enum Type {
169    Unit,
170    Path(
171        Box<Path>,
172    ),
173    Complex(
174        Box<ComplexType>,
175    ),
176}
177
178pub enum Path {
179    One(
180        crate::data::token::Ident,
181    ),
182    Cons(
183        Box<Path>,
184        crate::data::token::Ident,
185    ),
186}
187
188pub struct ComplexType {
189    pub callee: Box<Path>,
190    pub args: Box<CommaSeparatedTypes>,
191}
192
193pub enum CommaSeparatedTypes {
194    One(
195        Box<Type>,
196    ),
197    Cons(
198        Box<CommaSeparatedTypes>,
199        Box<Type>,
200    ),
201}
202
203#[derive(Debug, Clone, PartialEq, Eq)]
204pub enum IdentOrUnderscore {
205    Ident(
206        crate::data::token::Ident,
207    ),
208    Underscore(
209        crate::data::ByteIndex,
210    ),
211}
212
213#[derive(Debug, Clone, PartialEq, Eq)]
214pub enum IdentOrTerminalIdent {
215    Ident(
216        crate::data::token::Ident,
217    ),
218    Terminal(
219        crate::data::token::TerminalIdent,
220    ),
221}
222
223/// If the parser encounters an unexpected token `t`, it will return `Err(Some(t))`.
224/// If the parser encounters an unexpected end of input, it will return `Err(None)`.
225pub fn parse<S>(src: S) -> Result<File, Option<Token>>
226where S: IntoIterator<Item = Token> {
227    let mut quasiterminals = src.into_iter()
228        .map(Quasiterminal::Terminal)
229        .chain(std::iter::once(Quasiterminal::Eof))
230        .peekable();
231    let mut states = vec![State::S0];
232    let mut nodes: Vec<Node> = vec![];
233    loop {
234        let top_state = *states.last().unwrap();
235        let next_quasiterminal_kind = QuasiterminalKind::from_quasiterminal(quasiterminals.peek().unwrap());
236        match get_action(top_state, next_quasiterminal_kind) {
237            Action::Shift(new_state) => {
238                states.push(new_state);
239                nodes.push(Node::from_terminal(quasiterminals.next().unwrap().try_into_terminal().unwrap()));
240            }
241
242            Action::Reduce(rule_kind) => {
243                let (new_node, new_node_kind) = pop_and_reduce(&mut states, &mut nodes, rule_kind);
244                nodes.push(new_node);
245                let temp_top_state = *states.last().unwrap();
246                let Some(new_state) = get_goto(temp_top_state, new_node_kind) else {
247                    return Err(quasiterminals.next().unwrap().try_into_terminal().ok());
248                };
249                states.push(new_state);
250            }
251
252            Action::Accept => {
253                return Ok(File::try_from(nodes.pop().unwrap()).ok().unwrap());
254            }
255
256            Action::Err => {
257                return Err(quasiterminals.next().unwrap().try_into_terminal().ok());
258            }
259        }
260    }
261}
262
263enum Quasiterminal {
264    Terminal(Token),
265    Eof,
266}
267
268#[derive(Clone, Copy, Debug)]
269enum QuasiterminalKind {
270    Underscore = 0,
271    Ident = 1,
272    TerminalIdent = 2,
273    OuterAttribute = 3,
274    StartKw = 4,
275    StructKw = 5,
276    EnumKw = 6,
277    TerminalKw = 7,
278    Colon = 8,
279    DoubleColon = 9,
280    Comma = 10,
281    LParen = 11,
282    RParen = 12,
283    LCurly = 13,
284    RCurly = 14,
285    LAngle = 15,
286    RAngle = 16,
287    Eof = 17,
288}
289
290#[derive(Clone, Copy, Debug)]
291enum NonterminalKind {
292    File = 0,
293    OptItems = 1,
294    FileItem = 2,
295    Struct = 3,
296    Enum = 4,
297    TerminalEnum = 5,
298    OptOuterAttributes = 6,
299    Fieldset = 7,
300    NamedFieldset = 8,
301    NamedFields = 9,
302    NamedField = 10,
303    TupleFieldset = 11,
304    TupleFields = 12,
305    TupleField = 13,
306    OptEnumVariants = 14,
307    EnumVariant = 15,
308    OptTerminalEnumVariants = 16,
309    TerminalEnumVariant = 17,
310    Type = 18,
311    Path = 19,
312    ComplexType = 20,
313    CommaSeparatedTypes = 21,
314    IdentOrUnderscore = 22,
315    IdentOrTerminalIdent = 23,
316}
317
318#[derive(Clone, Copy, Debug)]
319enum State {
320    S0 = 0,
321    S1 = 1,
322    S2 = 2,
323    S3 = 3,
324    S4 = 4,
325    S5 = 5,
326    S6 = 6,
327    S7 = 7,
328    S8 = 8,
329    S9 = 9,
330    S10 = 10,
331    S11 = 11,
332    S12 = 12,
333    S13 = 13,
334    S14 = 14,
335    S15 = 15,
336    S16 = 16,
337    S17 = 17,
338    S18 = 18,
339    S19 = 19,
340    S20 = 20,
341    S21 = 21,
342    S22 = 22,
343    S23 = 23,
344    S24 = 24,
345    S25 = 25,
346    S26 = 26,
347    S27 = 27,
348    S28 = 28,
349    S29 = 29,
350    S30 = 30,
351    S31 = 31,
352    S32 = 32,
353    S33 = 33,
354    S34 = 34,
355    S35 = 35,
356    S36 = 36,
357    S37 = 37,
358    S38 = 38,
359    S39 = 39,
360    S40 = 40,
361    S41 = 41,
362    S42 = 42,
363    S43 = 43,
364    S44 = 44,
365    S45 = 45,
366    S46 = 46,
367    S47 = 47,
368    S48 = 48,
369    S49 = 49,
370    S50 = 50,
371    S51 = 51,
372    S52 = 52,
373    S53 = 53,
374    S54 = 54,
375    S55 = 55,
376    S56 = 56,
377    S57 = 57,
378    S58 = 58,
379    S59 = 59,
380    S60 = 60,
381    S61 = 61,
382    S62 = 62,
383    S63 = 63,
384    S64 = 64,
385    S65 = 65,
386    S66 = 66,
387}
388
389enum Node {
390    File(File),
391    OptItems(OptItems),
392    FileItem(FileItem),
393    Struct(Struct),
394    Enum(Enum),
395    TerminalEnum(TerminalEnum),
396    OptOuterAttributes(OptOuterAttributes),
397    Fieldset(Fieldset),
398    NamedFieldset(NamedFieldset),
399    NamedFields(NamedFields),
400    NamedField(NamedField),
401    TupleFieldset(TupleFieldset),
402    TupleFields(TupleFields),
403    TupleField(TupleField),
404    OptEnumVariants(OptEnumVariants),
405    EnumVariant(EnumVariant),
406    OptTerminalEnumVariants(OptTerminalEnumVariants),
407    TerminalEnumVariant(TerminalEnumVariant),
408    Type(Type),
409    Path(Path),
410    ComplexType(ComplexType),
411    CommaSeparatedTypes(CommaSeparatedTypes),
412    IdentOrUnderscore(IdentOrUnderscore),
413    IdentOrTerminalIdent(IdentOrTerminalIdent),
414    Underscore(crate::data::ByteIndex),
415    Ident(crate::data::token::Ident),
416    TerminalIdent(crate::data::token::TerminalIdent),
417    OuterAttribute(crate::data::token::Attribute),
418    StartKw(crate::data::ByteIndex),
419    StructKw(crate::data::ByteIndex),
420    EnumKw(crate::data::ByteIndex),
421    TerminalKw(crate::data::ByteIndex),
422    Colon(crate::data::ByteIndex),
423    DoubleColon(crate::data::ByteIndex),
424    Comma(crate::data::ByteIndex),
425    LParen(crate::data::ByteIndex),
426    RParen(crate::data::ByteIndex),
427    LCurly(crate::data::ByteIndex),
428    RCurly(crate::data::ByteIndex),
429    LAngle(crate::data::ByteIndex),
430    RAngle(crate::data::ByteIndex),
431}
432
433#[derive(Clone, Copy, Debug)]
434enum Action {
435    Shift(State),
436    Reduce(RuleKind),
437    Accept,
438    Err,
439}
440
441#[derive(Clone, Copy, Debug)]
442enum RuleKind {
443    R0 = 0,
444    R1 = 1,
445    R2 = 2,
446    R3 = 3,
447    R4 = 4,
448    R5 = 5,
449    R6 = 6,
450    R7 = 7,
451    R8 = 8,
452    R9 = 9,
453    R10 = 10,
454    R11 = 11,
455    R12 = 12,
456    R13 = 13,
457    R14 = 14,
458    R15 = 15,
459    R16 = 16,
460    R17 = 17,
461    R18 = 18,
462    R19 = 19,
463    R20 = 20,
464    R21 = 21,
465    R22 = 22,
466    R23 = 23,
467    R24 = 24,
468    R25 = 25,
469    R26 = 26,
470    R27 = 27,
471    R28 = 28,
472    R29 = 29,
473    R30 = 30,
474    R31 = 31,
475    R32 = 32,
476    R33 = 33,
477    R34 = 34,
478    R35 = 35,
479    R36 = 36,
480    R37 = 37,
481    R38 = 38,
482    R39 = 39,
483    R40 = 40,
484    R41 = 41,
485}
486
487fn pop_and_reduce(states: &mut Vec<State>, nodes: &mut Vec<Node>, rule_kind: RuleKind) -> (Node, NonterminalKind) {
488    match rule_kind {
489        RuleKind::R0 => {
490            let items_0 = Box::new(OptItems::try_from(nodes.pop().unwrap()).ok().unwrap());
491            
492            states.truncate(states.len() - 1);
493            
494            (
495                Node::File(File {
496                    items: items_0,
497                }),
498                NonterminalKind::File,
499            )
500        }
501        RuleKind::R1 => {
502            (
503                Node::OptItems(OptItems::Nil),
504                NonterminalKind::OptItems,
505            )
506        }
507        RuleKind::R2 => {
508            let t1 = Box::new(FileItem::try_from(nodes.pop().unwrap()).ok().unwrap());
509            let t0 = Box::new(OptItems::try_from(nodes.pop().unwrap()).ok().unwrap());
510            
511            states.truncate(states.len() - 2);
512            
513            (
514                Node::OptItems(OptItems::Cons(
515                    t0,
516                    t1,
517                )),
518                NonterminalKind::OptItems,
519            )
520        }
521        RuleKind::R3 => {
522            let t1 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
523            nodes.pop().unwrap();
524            
525            states.truncate(states.len() - 2);
526            
527            (
528                Node::FileItem(FileItem::Start(
529                    t1,
530                )),
531                NonterminalKind::FileItem,
532            )
533        }
534        RuleKind::R4 => {
535            let t0 = Box::new(Struct::try_from(nodes.pop().unwrap()).ok().unwrap());
536            
537            states.truncate(states.len() - 1);
538            
539            (
540                Node::FileItem(FileItem::Struct(
541                    t0,
542                )),
543                NonterminalKind::FileItem,
544            )
545        }
546        RuleKind::R5 => {
547            let t0 = Box::new(Enum::try_from(nodes.pop().unwrap()).ok().unwrap());
548            
549            states.truncate(states.len() - 1);
550            
551            (
552                Node::FileItem(FileItem::Enum(
553                    t0,
554                )),
555                NonterminalKind::FileItem,
556            )
557        }
558        RuleKind::R6 => {
559            let t0 = Box::new(TerminalEnum::try_from(nodes.pop().unwrap()).ok().unwrap());
560            
561            states.truncate(states.len() - 1);
562            
563            (
564                Node::FileItem(FileItem::Terminal(
565                    t0,
566                )),
567                NonterminalKind::FileItem,
568            )
569        }
570        RuleKind::R7 => {
571            let fieldset_3 = Box::new(Fieldset::try_from(nodes.pop().unwrap()).ok().unwrap());
572            let name_2 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
573            nodes.pop().unwrap();
574            let attributes_0 = Box::new(OptOuterAttributes::try_from(nodes.pop().unwrap()).ok().unwrap());
575            
576            states.truncate(states.len() - 4);
577            
578            (
579                Node::Struct(Struct {
580                    attributes: attributes_0,
581                    name: name_2,
582                    fieldset: fieldset_3,
583                }),
584                NonterminalKind::Struct,
585            )
586        }
587        RuleKind::R8 => {
588            nodes.pop().unwrap();
589            let variants_4 = Box::new(OptEnumVariants::try_from(nodes.pop().unwrap()).ok().unwrap());
590            nodes.pop().unwrap();
591            let name_2 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
592            nodes.pop().unwrap();
593            let attributes_0 = Box::new(OptOuterAttributes::try_from(nodes.pop().unwrap()).ok().unwrap());
594            
595            states.truncate(states.len() - 6);
596            
597            (
598                Node::Enum(Enum {
599                    attributes: attributes_0,
600                    name: name_2,
601                    variants: variants_4,
602                }),
603                NonterminalKind::Enum,
604            )
605        }
606        RuleKind::R9 => {
607            nodes.pop().unwrap();
608            let variants_4 = Box::new(OptTerminalEnumVariants::try_from(nodes.pop().unwrap()).ok().unwrap());
609            nodes.pop().unwrap();
610            let name_2 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
611            nodes.pop().unwrap();
612            let attributes_0 = Box::new(OptOuterAttributes::try_from(nodes.pop().unwrap()).ok().unwrap());
613            
614            states.truncate(states.len() - 6);
615            
616            (
617                Node::TerminalEnum(TerminalEnum {
618                    attributes: attributes_0,
619                    name: name_2,
620                    variants: variants_4,
621                }),
622                NonterminalKind::TerminalEnum,
623            )
624        }
625        RuleKind::R10 => {
626            (
627                Node::OptOuterAttributes(OptOuterAttributes::Nil),
628                NonterminalKind::OptOuterAttributes,
629            )
630        }
631        RuleKind::R11 => {
632            let t1 = nodes.pop().unwrap().try_into_outer_attribute_3().ok().unwrap();
633            let t0 = Box::new(OptOuterAttributes::try_from(nodes.pop().unwrap()).ok().unwrap());
634            
635            states.truncate(states.len() - 2);
636            
637            (
638                Node::OptOuterAttributes(OptOuterAttributes::Cons(
639                    t0,
640                    t1,
641                )),
642                NonterminalKind::OptOuterAttributes,
643            )
644        }
645        RuleKind::R12 => {
646            (
647                Node::Fieldset(Fieldset::Empty),
648                NonterminalKind::Fieldset,
649            )
650        }
651        RuleKind::R13 => {
652            let t0 = Box::new(NamedFieldset::try_from(nodes.pop().unwrap()).ok().unwrap());
653            
654            states.truncate(states.len() - 1);
655            
656            (
657                Node::Fieldset(Fieldset::Named(
658                    t0,
659                )),
660                NonterminalKind::Fieldset,
661            )
662        }
663        RuleKind::R14 => {
664            let t0 = Box::new(TupleFieldset::try_from(nodes.pop().unwrap()).ok().unwrap());
665            
666            states.truncate(states.len() - 1);
667            
668            (
669                Node::Fieldset(Fieldset::Tuple(
670                    t0,
671                )),
672                NonterminalKind::Fieldset,
673            )
674        }
675        RuleKind::R15 => {
676            nodes.pop().unwrap();
677            let fields_1 = Box::new(NamedFields::try_from(nodes.pop().unwrap()).ok().unwrap());
678            nodes.pop().unwrap();
679            
680            states.truncate(states.len() - 3);
681            
682            (
683                Node::NamedFieldset(NamedFieldset {
684                    fields: fields_1,
685                }),
686                NonterminalKind::NamedFieldset,
687            )
688        }
689        RuleKind::R16 => {
690            let t0 = Box::new(NamedField::try_from(nodes.pop().unwrap()).ok().unwrap());
691            
692            states.truncate(states.len() - 1);
693            
694            (
695                Node::NamedFields(NamedFields::One(
696                    t0,
697                )),
698                NonterminalKind::NamedFields,
699            )
700        }
701        RuleKind::R17 => {
702            let t1 = Box::new(NamedField::try_from(nodes.pop().unwrap()).ok().unwrap());
703            let t0 = Box::new(NamedFields::try_from(nodes.pop().unwrap()).ok().unwrap());
704            
705            states.truncate(states.len() - 2);
706            
707            (
708                Node::NamedFields(NamedFields::Cons(
709                    t0,
710                    t1,
711                )),
712                NonterminalKind::NamedFields,
713            )
714        }
715        RuleKind::R18 => {
716            let symbol_2 = Box::new(IdentOrTerminalIdent::try_from(nodes.pop().unwrap()).ok().unwrap());
717            nodes.pop().unwrap();
718            let name_0 = Box::new(IdentOrUnderscore::try_from(nodes.pop().unwrap()).ok().unwrap());
719            
720            states.truncate(states.len() - 3);
721            
722            (
723                Node::NamedField(NamedField {
724                    name: name_0,
725                    symbol: symbol_2,
726                }),
727                NonterminalKind::NamedField,
728            )
729        }
730        RuleKind::R19 => {
731            nodes.pop().unwrap();
732            let fields_1 = Box::new(TupleFields::try_from(nodes.pop().unwrap()).ok().unwrap());
733            nodes.pop().unwrap();
734            
735            states.truncate(states.len() - 3);
736            
737            (
738                Node::TupleFieldset(TupleFieldset {
739                    fields: fields_1,
740                }),
741                NonterminalKind::TupleFieldset,
742            )
743        }
744        RuleKind::R20 => {
745            let t0 = Box::new(TupleField::try_from(nodes.pop().unwrap()).ok().unwrap());
746            
747            states.truncate(states.len() - 1);
748            
749            (
750                Node::TupleFields(TupleFields::One(
751                    t0,
752                )),
753                NonterminalKind::TupleFields,
754            )
755        }
756        RuleKind::R21 => {
757            let t1 = Box::new(TupleField::try_from(nodes.pop().unwrap()).ok().unwrap());
758            let t0 = Box::new(TupleFields::try_from(nodes.pop().unwrap()).ok().unwrap());
759            
760            states.truncate(states.len() - 2);
761            
762            (
763                Node::TupleFields(TupleFields::Cons(
764                    t0,
765                    t1,
766                )),
767                NonterminalKind::TupleFields,
768            )
769        }
770        RuleKind::R22 => {
771            let t0 = Box::new(IdentOrTerminalIdent::try_from(nodes.pop().unwrap()).ok().unwrap());
772            
773            states.truncate(states.len() - 1);
774            
775            (
776                Node::TupleField(TupleField::Used(
777                    t0,
778                )),
779                NonterminalKind::TupleField,
780            )
781        }
782        RuleKind::R23 => {
783            let t2 = Box::new(IdentOrTerminalIdent::try_from(nodes.pop().unwrap()).ok().unwrap());
784            nodes.pop().unwrap();
785            nodes.pop().unwrap();
786            
787            states.truncate(states.len() - 3);
788            
789            (
790                Node::TupleField(TupleField::Skipped(
791                    t2,
792                )),
793                NonterminalKind::TupleField,
794            )
795        }
796        RuleKind::R24 => {
797            (
798                Node::OptEnumVariants(OptEnumVariants::Nil),
799                NonterminalKind::OptEnumVariants,
800            )
801        }
802        RuleKind::R25 => {
803            let t1 = Box::new(EnumVariant::try_from(nodes.pop().unwrap()).ok().unwrap());
804            let t0 = Box::new(OptEnumVariants::try_from(nodes.pop().unwrap()).ok().unwrap());
805            
806            states.truncate(states.len() - 2);
807            
808            (
809                Node::OptEnumVariants(OptEnumVariants::Cons(
810                    t0,
811                    t1,
812                )),
813                NonterminalKind::OptEnumVariants,
814            )
815        }
816        RuleKind::R26 => {
817            let fieldset_1 = Box::new(Fieldset::try_from(nodes.pop().unwrap()).ok().unwrap());
818            let name_0 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
819            
820            states.truncate(states.len() - 2);
821            
822            (
823                Node::EnumVariant(EnumVariant {
824                    name: name_0,
825                    fieldset: fieldset_1,
826                }),
827                NonterminalKind::EnumVariant,
828            )
829        }
830        RuleKind::R27 => {
831            (
832                Node::OptTerminalEnumVariants(OptTerminalEnumVariants::Nil),
833                NonterminalKind::OptTerminalEnumVariants,
834            )
835        }
836        RuleKind::R28 => {
837            let t1 = Box::new(TerminalEnumVariant::try_from(nodes.pop().unwrap()).ok().unwrap());
838            let t0 = Box::new(OptTerminalEnumVariants::try_from(nodes.pop().unwrap()).ok().unwrap());
839            
840            states.truncate(states.len() - 2);
841            
842            (
843                Node::OptTerminalEnumVariants(OptTerminalEnumVariants::Cons(
844                    t0,
845                    t1,
846                )),
847                NonterminalKind::OptTerminalEnumVariants,
848            )
849        }
850        RuleKind::R29 => {
851            let type__2 = Box::new(Type::try_from(nodes.pop().unwrap()).ok().unwrap());
852            nodes.pop().unwrap();
853            let name_0 = nodes.pop().unwrap().try_into_terminal_ident_2().ok().unwrap();
854            
855            states.truncate(states.len() - 3);
856            
857            (
858                Node::TerminalEnumVariant(TerminalEnumVariant {
859                    name: name_0,
860                    type_: type__2,
861                }),
862                NonterminalKind::TerminalEnumVariant,
863            )
864        }
865        RuleKind::R30 => {
866            nodes.pop().unwrap();
867            nodes.pop().unwrap();
868            
869            states.truncate(states.len() - 2);
870            
871            (
872                Node::Type(Type::Unit),
873                NonterminalKind::Type,
874            )
875        }
876        RuleKind::R31 => {
877            let t0 = Box::new(Path::try_from(nodes.pop().unwrap()).ok().unwrap());
878            
879            states.truncate(states.len() - 1);
880            
881            (
882                Node::Type(Type::Path(
883                    t0,
884                )),
885                NonterminalKind::Type,
886            )
887        }
888        RuleKind::R32 => {
889            let t0 = Box::new(ComplexType::try_from(nodes.pop().unwrap()).ok().unwrap());
890            
891            states.truncate(states.len() - 1);
892            
893            (
894                Node::Type(Type::Complex(
895                    t0,
896                )),
897                NonterminalKind::Type,
898            )
899        }
900        RuleKind::R33 => {
901            let t0 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
902            
903            states.truncate(states.len() - 1);
904            
905            (
906                Node::Path(Path::One(
907                    t0,
908                )),
909                NonterminalKind::Path,
910            )
911        }
912        RuleKind::R34 => {
913            let t2 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
914            nodes.pop().unwrap();
915            let t0 = Box::new(Path::try_from(nodes.pop().unwrap()).ok().unwrap());
916            
917            states.truncate(states.len() - 3);
918            
919            (
920                Node::Path(Path::Cons(
921                    t0,
922                    t2,
923                )),
924                NonterminalKind::Path,
925            )
926        }
927        RuleKind::R35 => {
928            nodes.pop().unwrap();
929            let args_2 = Box::new(CommaSeparatedTypes::try_from(nodes.pop().unwrap()).ok().unwrap());
930            nodes.pop().unwrap();
931            let callee_0 = Box::new(Path::try_from(nodes.pop().unwrap()).ok().unwrap());
932            
933            states.truncate(states.len() - 4);
934            
935            (
936                Node::ComplexType(ComplexType {
937                    callee: callee_0,
938                    args: args_2,
939                }),
940                NonterminalKind::ComplexType,
941            )
942        }
943        RuleKind::R36 => {
944            let t0 = Box::new(Type::try_from(nodes.pop().unwrap()).ok().unwrap());
945            
946            states.truncate(states.len() - 1);
947            
948            (
949                Node::CommaSeparatedTypes(CommaSeparatedTypes::One(
950                    t0,
951                )),
952                NonterminalKind::CommaSeparatedTypes,
953            )
954        }
955        RuleKind::R37 => {
956            let t2 = Box::new(Type::try_from(nodes.pop().unwrap()).ok().unwrap());
957            nodes.pop().unwrap();
958            let t0 = Box::new(CommaSeparatedTypes::try_from(nodes.pop().unwrap()).ok().unwrap());
959            
960            states.truncate(states.len() - 3);
961            
962            (
963                Node::CommaSeparatedTypes(CommaSeparatedTypes::Cons(
964                    t0,
965                    t2,
966                )),
967                NonterminalKind::CommaSeparatedTypes,
968            )
969        }
970        RuleKind::R38 => {
971            let t0 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
972            
973            states.truncate(states.len() - 1);
974            
975            (
976                Node::IdentOrUnderscore(IdentOrUnderscore::Ident(
977                    t0,
978                )),
979                NonterminalKind::IdentOrUnderscore,
980            )
981        }
982        RuleKind::R39 => {
983            let t0 = nodes.pop().unwrap().try_into_underscore_0().ok().unwrap();
984            
985            states.truncate(states.len() - 1);
986            
987            (
988                Node::IdentOrUnderscore(IdentOrUnderscore::Underscore(
989                    t0,
990                )),
991                NonterminalKind::IdentOrUnderscore,
992            )
993        }
994        RuleKind::R40 => {
995            let t0 = nodes.pop().unwrap().try_into_ident_1().ok().unwrap();
996            
997            states.truncate(states.len() - 1);
998            
999            (
1000                Node::IdentOrTerminalIdent(IdentOrTerminalIdent::Ident(
1001                    t0,
1002                )),
1003                NonterminalKind::IdentOrTerminalIdent,
1004            )
1005        }
1006        RuleKind::R41 => {
1007            let t0 = nodes.pop().unwrap().try_into_terminal_ident_2().ok().unwrap();
1008            
1009            states.truncate(states.len() - 1);
1010            
1011            (
1012                Node::IdentOrTerminalIdent(IdentOrTerminalIdent::Terminal(
1013                    t0,
1014                )),
1015                NonterminalKind::IdentOrTerminalIdent,
1016            )
1017        }
1018    }
1019}
1020
1021impl QuasiterminalKind {
1022    fn from_quasiterminal(quasiterminal: &Quasiterminal) -> Self {
1023        match quasiterminal {
1024            Quasiterminal::Terminal(terminal) => Self::from_terminal(terminal),
1025            Quasiterminal::Eof => Self::Eof,
1026        }
1027    }
1028
1029    fn from_terminal(terminal: &Token) -> Self {
1030        match terminal {
1031            Token::Underscore(_) => Self::Underscore,
1032            Token::Ident(_) => Self::Ident,
1033            Token::TerminalIdent(_) => Self::TerminalIdent,
1034            Token::OuterAttribute(_) => Self::OuterAttribute,
1035            Token::StartKw(_) => Self::StartKw,
1036            Token::StructKw(_) => Self::StructKw,
1037            Token::EnumKw(_) => Self::EnumKw,
1038            Token::TerminalKw(_) => Self::TerminalKw,
1039            Token::Colon(_) => Self::Colon,
1040            Token::DoubleColon(_) => Self::DoubleColon,
1041            Token::Comma(_) => Self::Comma,
1042            Token::LParen(_) => Self::LParen,
1043            Token::RParen(_) => Self::RParen,
1044            Token::LCurly(_) => Self::LCurly,
1045            Token::RCurly(_) => Self::RCurly,
1046            Token::LAngle(_) => Self::LAngle,
1047            Token::RAngle(_) => Self::RAngle,
1048        }
1049    }
1050}
1051
1052impl Node {
1053    fn from_terminal(terminal: Token) -> Self {
1054        match terminal {
1055            Token::Underscore(t) => Self::Underscore(t),
1056            Token::Ident(t) => Self::Ident(t),
1057            Token::TerminalIdent(t) => Self::TerminalIdent(t),
1058            Token::OuterAttribute(t) => Self::OuterAttribute(t),
1059            Token::StartKw(t) => Self::StartKw(t),
1060            Token::StructKw(t) => Self::StructKw(t),
1061            Token::EnumKw(t) => Self::EnumKw(t),
1062            Token::TerminalKw(t) => Self::TerminalKw(t),
1063            Token::Colon(t) => Self::Colon(t),
1064            Token::DoubleColon(t) => Self::DoubleColon(t),
1065            Token::Comma(t) => Self::Comma(t),
1066            Token::LParen(t) => Self::LParen(t),
1067            Token::RParen(t) => Self::RParen(t),
1068            Token::LCurly(t) => Self::LCurly(t),
1069            Token::RCurly(t) => Self::RCurly(t),
1070            Token::LAngle(t) => Self::LAngle(t),
1071            Token::RAngle(t) => Self::RAngle(t),
1072        }
1073    }
1074}
1075
1076impl Quasiterminal {
1077    fn try_into_terminal(self) -> Result<Token, ()> {
1078        match self {
1079            Self::Terminal(terminal) => Ok(terminal),
1080            Self::Eof => Err(()),
1081        }
1082    }
1083}
1084
1085const ACTION_TABLE: [[Action; 18]; 67] = [
1086    [
1087        Action::Err,
1088        Action::Err,
1089        Action::Err,
1090        Action::Reduce(RuleKind::R1),
1091        Action::Reduce(RuleKind::R1),
1092        Action::Reduce(RuleKind::R1),
1093        Action::Reduce(RuleKind::R1),
1094        Action::Reduce(RuleKind::R1),
1095        Action::Err,
1096        Action::Err,
1097        Action::Err,
1098        Action::Err,
1099        Action::Err,
1100        Action::Err,
1101        Action::Err,
1102        Action::Err,
1103        Action::Err,
1104        Action::Reduce(RuleKind::R1),
1105    ],
1106    [
1107        Action::Err,
1108        Action::Err,
1109        Action::Err,
1110        Action::Reduce(RuleKind::R10),
1111        Action::Shift(State::S3),
1112        Action::Reduce(RuleKind::R10),
1113        Action::Reduce(RuleKind::R10),
1114        Action::Reduce(RuleKind::R10),
1115        Action::Err,
1116        Action::Err,
1117        Action::Err,
1118        Action::Err,
1119        Action::Err,
1120        Action::Err,
1121        Action::Err,
1122        Action::Err,
1123        Action::Err,
1124        Action::Reduce(RuleKind::R0),
1125    ],
1126    [
1127        Action::Err,
1128        Action::Err,
1129        Action::Err,
1130        Action::Reduce(RuleKind::R2),
1131        Action::Reduce(RuleKind::R2),
1132        Action::Reduce(RuleKind::R2),
1133        Action::Reduce(RuleKind::R2),
1134        Action::Reduce(RuleKind::R2),
1135        Action::Err,
1136        Action::Err,
1137        Action::Err,
1138        Action::Err,
1139        Action::Err,
1140        Action::Err,
1141        Action::Err,
1142        Action::Err,
1143        Action::Err,
1144        Action::Reduce(RuleKind::R2),
1145    ],
1146    [
1147        Action::Err,
1148        Action::Shift(State::S4),
1149        Action::Err,
1150        Action::Err,
1151        Action::Err,
1152        Action::Err,
1153        Action::Err,
1154        Action::Err,
1155        Action::Err,
1156        Action::Err,
1157        Action::Err,
1158        Action::Err,
1159        Action::Err,
1160        Action::Err,
1161        Action::Err,
1162        Action::Err,
1163        Action::Err,
1164        Action::Err,
1165    ],
1166    [
1167        Action::Err,
1168        Action::Err,
1169        Action::Err,
1170        Action::Reduce(RuleKind::R3),
1171        Action::Reduce(RuleKind::R3),
1172        Action::Reduce(RuleKind::R3),
1173        Action::Reduce(RuleKind::R3),
1174        Action::Reduce(RuleKind::R3),
1175        Action::Err,
1176        Action::Err,
1177        Action::Err,
1178        Action::Err,
1179        Action::Err,
1180        Action::Err,
1181        Action::Err,
1182        Action::Err,
1183        Action::Err,
1184        Action::Reduce(RuleKind::R3),
1185    ],
1186    [
1187        Action::Err,
1188        Action::Err,
1189        Action::Err,
1190        Action::Reduce(RuleKind::R4),
1191        Action::Reduce(RuleKind::R4),
1192        Action::Reduce(RuleKind::R4),
1193        Action::Reduce(RuleKind::R4),
1194        Action::Reduce(RuleKind::R4),
1195        Action::Err,
1196        Action::Err,
1197        Action::Err,
1198        Action::Err,
1199        Action::Err,
1200        Action::Err,
1201        Action::Err,
1202        Action::Err,
1203        Action::Err,
1204        Action::Reduce(RuleKind::R4),
1205    ],
1206    [
1207        Action::Err,
1208        Action::Err,
1209        Action::Err,
1210        Action::Reduce(RuleKind::R5),
1211        Action::Reduce(RuleKind::R5),
1212        Action::Reduce(RuleKind::R5),
1213        Action::Reduce(RuleKind::R5),
1214        Action::Reduce(RuleKind::R5),
1215        Action::Err,
1216        Action::Err,
1217        Action::Err,
1218        Action::Err,
1219        Action::Err,
1220        Action::Err,
1221        Action::Err,
1222        Action::Err,
1223        Action::Err,
1224        Action::Reduce(RuleKind::R5),
1225    ],
1226    [
1227        Action::Err,
1228        Action::Err,
1229        Action::Err,
1230        Action::Reduce(RuleKind::R6),
1231        Action::Reduce(RuleKind::R6),
1232        Action::Reduce(RuleKind::R6),
1233        Action::Reduce(RuleKind::R6),
1234        Action::Reduce(RuleKind::R6),
1235        Action::Err,
1236        Action::Err,
1237        Action::Err,
1238        Action::Err,
1239        Action::Err,
1240        Action::Err,
1241        Action::Err,
1242        Action::Err,
1243        Action::Err,
1244        Action::Reduce(RuleKind::R6),
1245    ],
1246    [
1247        Action::Err,
1248        Action::Err,
1249        Action::Err,
1250        Action::Shift(State::S22),
1251        Action::Err,
1252        Action::Shift(State::S9),
1253        Action::Shift(State::S12),
1254        Action::Shift(State::S17),
1255        Action::Err,
1256        Action::Err,
1257        Action::Err,
1258        Action::Err,
1259        Action::Err,
1260        Action::Err,
1261        Action::Err,
1262        Action::Err,
1263        Action::Err,
1264        Action::Err,
1265    ],
1266    [
1267        Action::Err,
1268        Action::Shift(State::S10),
1269        Action::Err,
1270        Action::Err,
1271        Action::Err,
1272        Action::Err,
1273        Action::Err,
1274        Action::Err,
1275        Action::Err,
1276        Action::Err,
1277        Action::Err,
1278        Action::Err,
1279        Action::Err,
1280        Action::Err,
1281        Action::Err,
1282        Action::Err,
1283        Action::Err,
1284        Action::Err,
1285    ],
1286    [
1287        Action::Err,
1288        Action::Err,
1289        Action::Err,
1290        Action::Reduce(RuleKind::R12),
1291        Action::Reduce(RuleKind::R12),
1292        Action::Reduce(RuleKind::R12),
1293        Action::Reduce(RuleKind::R12),
1294        Action::Reduce(RuleKind::R12),
1295        Action::Err,
1296        Action::Err,
1297        Action::Err,
1298        Action::Shift(State::S34),
1299        Action::Err,
1300        Action::Shift(State::S26),
1301        Action::Err,
1302        Action::Err,
1303        Action::Err,
1304        Action::Reduce(RuleKind::R12),
1305    ],
1306    [
1307        Action::Err,
1308        Action::Err,
1309        Action::Err,
1310        Action::Reduce(RuleKind::R7),
1311        Action::Reduce(RuleKind::R7),
1312        Action::Reduce(RuleKind::R7),
1313        Action::Reduce(RuleKind::R7),
1314        Action::Reduce(RuleKind::R7),
1315        Action::Err,
1316        Action::Err,
1317        Action::Err,
1318        Action::Err,
1319        Action::Err,
1320        Action::Err,
1321        Action::Err,
1322        Action::Err,
1323        Action::Err,
1324        Action::Reduce(RuleKind::R7),
1325    ],
1326    [
1327        Action::Err,
1328        Action::Shift(State::S13),
1329        Action::Err,
1330        Action::Err,
1331        Action::Err,
1332        Action::Err,
1333        Action::Err,
1334        Action::Err,
1335        Action::Err,
1336        Action::Err,
1337        Action::Err,
1338        Action::Err,
1339        Action::Err,
1340        Action::Err,
1341        Action::Err,
1342        Action::Err,
1343        Action::Err,
1344        Action::Err,
1345    ],
1346    [
1347        Action::Err,
1348        Action::Err,
1349        Action::Err,
1350        Action::Err,
1351        Action::Err,
1352        Action::Err,
1353        Action::Err,
1354        Action::Err,
1355        Action::Err,
1356        Action::Err,
1357        Action::Err,
1358        Action::Err,
1359        Action::Err,
1360        Action::Shift(State::S14),
1361        Action::Err,
1362        Action::Err,
1363        Action::Err,
1364        Action::Err,
1365    ],
1366    [
1367        Action::Err,
1368        Action::Reduce(RuleKind::R24),
1369        Action::Err,
1370        Action::Err,
1371        Action::Err,
1372        Action::Err,
1373        Action::Err,
1374        Action::Err,
1375        Action::Err,
1376        Action::Err,
1377        Action::Err,
1378        Action::Err,
1379        Action::Err,
1380        Action::Err,
1381        Action::Reduce(RuleKind::R24),
1382        Action::Err,
1383        Action::Err,
1384        Action::Err,
1385    ],
1386    [
1387        Action::Err,
1388        Action::Shift(State::S23),
1389        Action::Err,
1390        Action::Err,
1391        Action::Err,
1392        Action::Err,
1393        Action::Err,
1394        Action::Err,
1395        Action::Err,
1396        Action::Err,
1397        Action::Err,
1398        Action::Err,
1399        Action::Err,
1400        Action::Err,
1401        Action::Shift(State::S16),
1402        Action::Err,
1403        Action::Err,
1404        Action::Err,
1405    ],
1406    [
1407        Action::Err,
1408        Action::Err,
1409        Action::Err,
1410        Action::Reduce(RuleKind::R8),
1411        Action::Reduce(RuleKind::R8),
1412        Action::Reduce(RuleKind::R8),
1413        Action::Reduce(RuleKind::R8),
1414        Action::Reduce(RuleKind::R8),
1415        Action::Err,
1416        Action::Err,
1417        Action::Err,
1418        Action::Err,
1419        Action::Err,
1420        Action::Err,
1421        Action::Err,
1422        Action::Err,
1423        Action::Err,
1424        Action::Reduce(RuleKind::R8),
1425    ],
1426    [
1427        Action::Err,
1428        Action::Shift(State::S18),
1429        Action::Err,
1430        Action::Err,
1431        Action::Err,
1432        Action::Err,
1433        Action::Err,
1434        Action::Err,
1435        Action::Err,
1436        Action::Err,
1437        Action::Err,
1438        Action::Err,
1439        Action::Err,
1440        Action::Err,
1441        Action::Err,
1442        Action::Err,
1443        Action::Err,
1444        Action::Err,
1445    ],
1446    [
1447        Action::Err,
1448        Action::Err,
1449        Action::Err,
1450        Action::Err,
1451        Action::Err,
1452        Action::Err,
1453        Action::Err,
1454        Action::Err,
1455        Action::Err,
1456        Action::Err,
1457        Action::Err,
1458        Action::Err,
1459        Action::Err,
1460        Action::Shift(State::S19),
1461        Action::Err,
1462        Action::Err,
1463        Action::Err,
1464        Action::Err,
1465    ],
1466    [
1467        Action::Err,
1468        Action::Err,
1469        Action::Reduce(RuleKind::R27),
1470        Action::Err,
1471        Action::Err,
1472        Action::Err,
1473        Action::Err,
1474        Action::Err,
1475        Action::Err,
1476        Action::Err,
1477        Action::Err,
1478        Action::Err,
1479        Action::Err,
1480        Action::Err,
1481        Action::Reduce(RuleKind::R27),
1482        Action::Err,
1483        Action::Err,
1484        Action::Err,
1485    ],
1486    [
1487        Action::Err,
1488        Action::Err,
1489        Action::Shift(State::S46),
1490        Action::Err,
1491        Action::Err,
1492        Action::Err,
1493        Action::Err,
1494        Action::Err,
1495        Action::Err,
1496        Action::Err,
1497        Action::Err,
1498        Action::Err,
1499        Action::Err,
1500        Action::Err,
1501        Action::Shift(State::S21),
1502        Action::Err,
1503        Action::Err,
1504        Action::Err,
1505    ],
1506    [
1507        Action::Err,
1508        Action::Err,
1509        Action::Err,
1510        Action::Reduce(RuleKind::R9),
1511        Action::Reduce(RuleKind::R9),
1512        Action::Reduce(RuleKind::R9),
1513        Action::Reduce(RuleKind::R9),
1514        Action::Reduce(RuleKind::R9),
1515        Action::Err,
1516        Action::Err,
1517        Action::Err,
1518        Action::Err,
1519        Action::Err,
1520        Action::Err,
1521        Action::Err,
1522        Action::Err,
1523        Action::Err,
1524        Action::Reduce(RuleKind::R9),
1525    ],
1526    [
1527        Action::Err,
1528        Action::Err,
1529        Action::Err,
1530        Action::Reduce(RuleKind::R11),
1531        Action::Err,
1532        Action::Reduce(RuleKind::R11),
1533        Action::Reduce(RuleKind::R11),
1534        Action::Reduce(RuleKind::R11),
1535        Action::Err,
1536        Action::Err,
1537        Action::Err,
1538        Action::Err,
1539        Action::Err,
1540        Action::Err,
1541        Action::Err,
1542        Action::Err,
1543        Action::Err,
1544        Action::Err,
1545    ],
1546    [
1547        Action::Err,
1548        Action::Reduce(RuleKind::R12),
1549        Action::Err,
1550        Action::Err,
1551        Action::Err,
1552        Action::Err,
1553        Action::Err,
1554        Action::Err,
1555        Action::Err,
1556        Action::Err,
1557        Action::Err,
1558        Action::Shift(State::S34),
1559        Action::Err,
1560        Action::Shift(State::S26),
1561        Action::Reduce(RuleKind::R12),
1562        Action::Err,
1563        Action::Err,
1564        Action::Err,
1565    ],
1566    [
1567        Action::Err,
1568        Action::Reduce(RuleKind::R13),
1569        Action::Err,
1570        Action::Reduce(RuleKind::R13),
1571        Action::Reduce(RuleKind::R13),
1572        Action::Reduce(RuleKind::R13),
1573        Action::Reduce(RuleKind::R13),
1574        Action::Reduce(RuleKind::R13),
1575        Action::Err,
1576        Action::Err,
1577        Action::Err,
1578        Action::Err,
1579        Action::Err,
1580        Action::Err,
1581        Action::Reduce(RuleKind::R13),
1582        Action::Err,
1583        Action::Err,
1584        Action::Reduce(RuleKind::R13),
1585    ],
1586    [
1587        Action::Err,
1588        Action::Reduce(RuleKind::R14),
1589        Action::Err,
1590        Action::Reduce(RuleKind::R14),
1591        Action::Reduce(RuleKind::R14),
1592        Action::Reduce(RuleKind::R14),
1593        Action::Reduce(RuleKind::R14),
1594        Action::Reduce(RuleKind::R14),
1595        Action::Err,
1596        Action::Err,
1597        Action::Err,
1598        Action::Err,
1599        Action::Err,
1600        Action::Err,
1601        Action::Reduce(RuleKind::R14),
1602        Action::Err,
1603        Action::Err,
1604        Action::Reduce(RuleKind::R14),
1605    ],
1606    [
1607        Action::Shift(State::S63),
1608        Action::Shift(State::S62),
1609        Action::Err,
1610        Action::Err,
1611        Action::Err,
1612        Action::Err,
1613        Action::Err,
1614        Action::Err,
1615        Action::Err,
1616        Action::Err,
1617        Action::Err,
1618        Action::Err,
1619        Action::Err,
1620        Action::Err,
1621        Action::Err,
1622        Action::Err,
1623        Action::Err,
1624        Action::Err,
1625    ],
1626    [
1627        Action::Shift(State::S63),
1628        Action::Shift(State::S62),
1629        Action::Err,
1630        Action::Err,
1631        Action::Err,
1632        Action::Err,
1633        Action::Err,
1634        Action::Err,
1635        Action::Err,
1636        Action::Err,
1637        Action::Err,
1638        Action::Err,
1639        Action::Err,
1640        Action::Err,
1641        Action::Shift(State::S28),
1642        Action::Err,
1643        Action::Err,
1644        Action::Err,
1645    ],
1646    [
1647        Action::Err,
1648        Action::Reduce(RuleKind::R15),
1649        Action::Err,
1650        Action::Reduce(RuleKind::R15),
1651        Action::Reduce(RuleKind::R15),
1652        Action::Reduce(RuleKind::R15),
1653        Action::Reduce(RuleKind::R15),
1654        Action::Reduce(RuleKind::R15),
1655        Action::Err,
1656        Action::Err,
1657        Action::Err,
1658        Action::Err,
1659        Action::Err,
1660        Action::Err,
1661        Action::Reduce(RuleKind::R15),
1662        Action::Err,
1663        Action::Err,
1664        Action::Reduce(RuleKind::R15),
1665    ],
1666    [
1667        Action::Reduce(RuleKind::R16),
1668        Action::Reduce(RuleKind::R16),
1669        Action::Err,
1670        Action::Err,
1671        Action::Err,
1672        Action::Err,
1673        Action::Err,
1674        Action::Err,
1675        Action::Err,
1676        Action::Err,
1677        Action::Err,
1678        Action::Err,
1679        Action::Err,
1680        Action::Err,
1681        Action::Reduce(RuleKind::R16),
1682        Action::Err,
1683        Action::Err,
1684        Action::Err,
1685    ],
1686    [
1687        Action::Reduce(RuleKind::R17),
1688        Action::Reduce(RuleKind::R17),
1689        Action::Err,
1690        Action::Err,
1691        Action::Err,
1692        Action::Err,
1693        Action::Err,
1694        Action::Err,
1695        Action::Err,
1696        Action::Err,
1697        Action::Err,
1698        Action::Err,
1699        Action::Err,
1700        Action::Err,
1701        Action::Reduce(RuleKind::R17),
1702        Action::Err,
1703        Action::Err,
1704        Action::Err,
1705    ],
1706    [
1707        Action::Err,
1708        Action::Err,
1709        Action::Err,
1710        Action::Err,
1711        Action::Err,
1712        Action::Err,
1713        Action::Err,
1714        Action::Err,
1715        Action::Shift(State::S32),
1716        Action::Err,
1717        Action::Err,
1718        Action::Err,
1719        Action::Err,
1720        Action::Err,
1721        Action::Err,
1722        Action::Err,
1723        Action::Err,
1724        Action::Err,
1725    ],
1726    [
1727        Action::Err,
1728        Action::Shift(State::S64),
1729        Action::Shift(State::S65),
1730        Action::Err,
1731        Action::Err,
1732        Action::Err,
1733        Action::Err,
1734        Action::Err,
1735        Action::Err,
1736        Action::Err,
1737        Action::Err,
1738        Action::Err,
1739        Action::Err,
1740        Action::Err,
1741        Action::Err,
1742        Action::Err,
1743        Action::Err,
1744        Action::Err,
1745    ],
1746    [
1747        Action::Reduce(RuleKind::R18),
1748        Action::Reduce(RuleKind::R18),
1749        Action::Err,
1750        Action::Err,
1751        Action::Err,
1752        Action::Err,
1753        Action::Err,
1754        Action::Err,
1755        Action::Err,
1756        Action::Err,
1757        Action::Err,
1758        Action::Err,
1759        Action::Err,
1760        Action::Err,
1761        Action::Reduce(RuleKind::R18),
1762        Action::Err,
1763        Action::Err,
1764        Action::Err,
1765    ],
1766    [
1767        Action::Shift(State::S40),
1768        Action::Shift(State::S64),
1769        Action::Shift(State::S65),
1770        Action::Err,
1771        Action::Err,
1772        Action::Err,
1773        Action::Err,
1774        Action::Err,
1775        Action::Err,
1776        Action::Err,
1777        Action::Err,
1778        Action::Err,
1779        Action::Err,
1780        Action::Err,
1781        Action::Err,
1782        Action::Err,
1783        Action::Err,
1784        Action::Err,
1785    ],
1786    [
1787        Action::Shift(State::S40),
1788        Action::Shift(State::S64),
1789        Action::Shift(State::S65),
1790        Action::Err,
1791        Action::Err,
1792        Action::Err,
1793        Action::Err,
1794        Action::Err,
1795        Action::Err,
1796        Action::Err,
1797        Action::Err,
1798        Action::Err,
1799        Action::Shift(State::S36),
1800        Action::Err,
1801        Action::Err,
1802        Action::Err,
1803        Action::Err,
1804        Action::Err,
1805    ],
1806    [
1807        Action::Err,
1808        Action::Reduce(RuleKind::R19),
1809        Action::Err,
1810        Action::Reduce(RuleKind::R19),
1811        Action::Reduce(RuleKind::R19),
1812        Action::Reduce(RuleKind::R19),
1813        Action::Reduce(RuleKind::R19),
1814        Action::Reduce(RuleKind::R19),
1815        Action::Err,
1816        Action::Err,
1817        Action::Err,
1818        Action::Err,
1819        Action::Err,
1820        Action::Err,
1821        Action::Reduce(RuleKind::R19),
1822        Action::Err,
1823        Action::Err,
1824        Action::Reduce(RuleKind::R19),
1825    ],
1826    [
1827        Action::Reduce(RuleKind::R20),
1828        Action::Reduce(RuleKind::R20),
1829        Action::Reduce(RuleKind::R20),
1830        Action::Err,
1831        Action::Err,
1832        Action::Err,
1833        Action::Err,
1834        Action::Err,
1835        Action::Err,
1836        Action::Err,
1837        Action::Err,
1838        Action::Err,
1839        Action::Reduce(RuleKind::R20),
1840        Action::Err,
1841        Action::Err,
1842        Action::Err,
1843        Action::Err,
1844        Action::Err,
1845    ],
1846    [
1847        Action::Reduce(RuleKind::R21),
1848        Action::Reduce(RuleKind::R21),
1849        Action::Reduce(RuleKind::R21),
1850        Action::Err,
1851        Action::Err,
1852        Action::Err,
1853        Action::Err,
1854        Action::Err,
1855        Action::Err,
1856        Action::Err,
1857        Action::Err,
1858        Action::Err,
1859        Action::Reduce(RuleKind::R21),
1860        Action::Err,
1861        Action::Err,
1862        Action::Err,
1863        Action::Err,
1864        Action::Err,
1865    ],
1866    [
1867        Action::Reduce(RuleKind::R22),
1868        Action::Reduce(RuleKind::R22),
1869        Action::Reduce(RuleKind::R22),
1870        Action::Err,
1871        Action::Err,
1872        Action::Err,
1873        Action::Err,
1874        Action::Err,
1875        Action::Err,
1876        Action::Err,
1877        Action::Err,
1878        Action::Err,
1879        Action::Reduce(RuleKind::R22),
1880        Action::Err,
1881        Action::Err,
1882        Action::Err,
1883        Action::Err,
1884        Action::Err,
1885    ],
1886    [
1887        Action::Err,
1888        Action::Err,
1889        Action::Err,
1890        Action::Err,
1891        Action::Err,
1892        Action::Err,
1893        Action::Err,
1894        Action::Err,
1895        Action::Shift(State::S41),
1896        Action::Err,
1897        Action::Err,
1898        Action::Err,
1899        Action::Err,
1900        Action::Err,
1901        Action::Err,
1902        Action::Err,
1903        Action::Err,
1904        Action::Err,
1905    ],
1906    [
1907        Action::Err,
1908        Action::Shift(State::S64),
1909        Action::Shift(State::S65),
1910        Action::Err,
1911        Action::Err,
1912        Action::Err,
1913        Action::Err,
1914        Action::Err,
1915        Action::Err,
1916        Action::Err,
1917        Action::Err,
1918        Action::Err,
1919        Action::Err,
1920        Action::Err,
1921        Action::Err,
1922        Action::Err,
1923        Action::Err,
1924        Action::Err,
1925    ],
1926    [
1927        Action::Reduce(RuleKind::R23),
1928        Action::Reduce(RuleKind::R23),
1929        Action::Reduce(RuleKind::R23),
1930        Action::Err,
1931        Action::Err,
1932        Action::Err,
1933        Action::Err,
1934        Action::Err,
1935        Action::Err,
1936        Action::Err,
1937        Action::Err,
1938        Action::Err,
1939        Action::Reduce(RuleKind::R23),
1940        Action::Err,
1941        Action::Err,
1942        Action::Err,
1943        Action::Err,
1944        Action::Err,
1945    ],
1946    [
1947        Action::Err,
1948        Action::Reduce(RuleKind::R25),
1949        Action::Err,
1950        Action::Err,
1951        Action::Err,
1952        Action::Err,
1953        Action::Err,
1954        Action::Err,
1955        Action::Err,
1956        Action::Err,
1957        Action::Err,
1958        Action::Err,
1959        Action::Err,
1960        Action::Err,
1961        Action::Reduce(RuleKind::R25),
1962        Action::Err,
1963        Action::Err,
1964        Action::Err,
1965    ],
1966    [
1967        Action::Err,
1968        Action::Reduce(RuleKind::R26),
1969        Action::Err,
1970        Action::Err,
1971        Action::Err,
1972        Action::Err,
1973        Action::Err,
1974        Action::Err,
1975        Action::Err,
1976        Action::Err,
1977        Action::Err,
1978        Action::Err,
1979        Action::Err,
1980        Action::Err,
1981        Action::Reduce(RuleKind::R26),
1982        Action::Err,
1983        Action::Err,
1984        Action::Err,
1985    ],
1986    [
1987        Action::Err,
1988        Action::Err,
1989        Action::Reduce(RuleKind::R28),
1990        Action::Err,
1991        Action::Err,
1992        Action::Err,
1993        Action::Err,
1994        Action::Err,
1995        Action::Err,
1996        Action::Err,
1997        Action::Err,
1998        Action::Err,
1999        Action::Err,
2000        Action::Err,
2001        Action::Reduce(RuleKind::R28),
2002        Action::Err,
2003        Action::Err,
2004        Action::Err,
2005    ],
2006    [
2007        Action::Err,
2008        Action::Err,
2009        Action::Err,
2010        Action::Err,
2011        Action::Err,
2012        Action::Err,
2013        Action::Err,
2014        Action::Err,
2015        Action::Shift(State::S47),
2016        Action::Err,
2017        Action::Err,
2018        Action::Err,
2019        Action::Err,
2020        Action::Err,
2021        Action::Err,
2022        Action::Err,
2023        Action::Err,
2024        Action::Err,
2025    ],
2026    [
2027        Action::Err,
2028        Action::Shift(State::S55),
2029        Action::Err,
2030        Action::Err,
2031        Action::Err,
2032        Action::Err,
2033        Action::Err,
2034        Action::Err,
2035        Action::Err,
2036        Action::Err,
2037        Action::Err,
2038        Action::Shift(State::S51),
2039        Action::Err,
2040        Action::Err,
2041        Action::Err,
2042        Action::Err,
2043        Action::Err,
2044        Action::Err,
2045    ],
2046    [
2047        Action::Err,
2048        Action::Err,
2049        Action::Reduce(RuleKind::R29),
2050        Action::Err,
2051        Action::Err,
2052        Action::Err,
2053        Action::Err,
2054        Action::Err,
2055        Action::Err,
2056        Action::Err,
2057        Action::Err,
2058        Action::Err,
2059        Action::Err,
2060        Action::Err,
2061        Action::Reduce(RuleKind::R29),
2062        Action::Err,
2063        Action::Err,
2064        Action::Err,
2065    ],
2066    [
2067        Action::Err,
2068        Action::Shift(State::S55),
2069        Action::Err,
2070        Action::Err,
2071        Action::Err,
2072        Action::Err,
2073        Action::Err,
2074        Action::Err,
2075        Action::Err,
2076        Action::Err,
2077        Action::Err,
2078        Action::Shift(State::S51),
2079        Action::Err,
2080        Action::Err,
2081        Action::Err,
2082        Action::Err,
2083        Action::Err,
2084        Action::Err,
2085    ],
2086    [
2087        Action::Err,
2088        Action::Shift(State::S55),
2089        Action::Err,
2090        Action::Err,
2091        Action::Err,
2092        Action::Err,
2093        Action::Err,
2094        Action::Err,
2095        Action::Err,
2096        Action::Err,
2097        Action::Err,
2098        Action::Shift(State::S51),
2099        Action::Err,
2100        Action::Err,
2101        Action::Err,
2102        Action::Err,
2103        Action::Err,
2104        Action::Err,
2105    ],
2106    [
2107        Action::Err,
2108        Action::Err,
2109        Action::Err,
2110        Action::Err,
2111        Action::Err,
2112        Action::Err,
2113        Action::Err,
2114        Action::Err,
2115        Action::Err,
2116        Action::Err,
2117        Action::Err,
2118        Action::Err,
2119        Action::Shift(State::S52),
2120        Action::Err,
2121        Action::Err,
2122        Action::Err,
2123        Action::Err,
2124        Action::Err,
2125    ],
2126    [
2127        Action::Err,
2128        Action::Err,
2129        Action::Reduce(RuleKind::R30),
2130        Action::Err,
2131        Action::Err,
2132        Action::Err,
2133        Action::Err,
2134        Action::Err,
2135        Action::Err,
2136        Action::Err,
2137        Action::Reduce(RuleKind::R30),
2138        Action::Err,
2139        Action::Err,
2140        Action::Err,
2141        Action::Reduce(RuleKind::R30),
2142        Action::Err,
2143        Action::Reduce(RuleKind::R30),
2144        Action::Err,
2145    ],
2146    [
2147        Action::Err,
2148        Action::Err,
2149        Action::Reduce(RuleKind::R31),
2150        Action::Err,
2151        Action::Err,
2152        Action::Err,
2153        Action::Err,
2154        Action::Err,
2155        Action::Err,
2156        Action::Shift(State::S56),
2157        Action::Reduce(RuleKind::R31),
2158        Action::Err,
2159        Action::Err,
2160        Action::Err,
2161        Action::Reduce(RuleKind::R31),
2162        Action::Shift(State::S49),
2163        Action::Reduce(RuleKind::R31),
2164        Action::Err,
2165    ],
2166    [
2167        Action::Err,
2168        Action::Err,
2169        Action::Reduce(RuleKind::R32),
2170        Action::Err,
2171        Action::Err,
2172        Action::Err,
2173        Action::Err,
2174        Action::Err,
2175        Action::Err,
2176        Action::Err,
2177        Action::Reduce(RuleKind::R32),
2178        Action::Err,
2179        Action::Err,
2180        Action::Err,
2181        Action::Reduce(RuleKind::R32),
2182        Action::Err,
2183        Action::Reduce(RuleKind::R32),
2184        Action::Err,
2185    ],
2186    [
2187        Action::Err,
2188        Action::Err,
2189        Action::Reduce(RuleKind::R33),
2190        Action::Err,
2191        Action::Err,
2192        Action::Err,
2193        Action::Err,
2194        Action::Err,
2195        Action::Err,
2196        Action::Reduce(RuleKind::R33),
2197        Action::Reduce(RuleKind::R33),
2198        Action::Err,
2199        Action::Err,
2200        Action::Err,
2201        Action::Reduce(RuleKind::R33),
2202        Action::Reduce(RuleKind::R33),
2203        Action::Reduce(RuleKind::R33),
2204        Action::Err,
2205    ],
2206    [
2207        Action::Err,
2208        Action::Shift(State::S57),
2209        Action::Err,
2210        Action::Err,
2211        Action::Err,
2212        Action::Err,
2213        Action::Err,
2214        Action::Err,
2215        Action::Err,
2216        Action::Err,
2217        Action::Err,
2218        Action::Err,
2219        Action::Err,
2220        Action::Err,
2221        Action::Err,
2222        Action::Err,
2223        Action::Err,
2224        Action::Err,
2225    ],
2226    [
2227        Action::Err,
2228        Action::Err,
2229        Action::Reduce(RuleKind::R34),
2230        Action::Err,
2231        Action::Err,
2232        Action::Err,
2233        Action::Err,
2234        Action::Err,
2235        Action::Err,
2236        Action::Reduce(RuleKind::R34),
2237        Action::Reduce(RuleKind::R34),
2238        Action::Err,
2239        Action::Err,
2240        Action::Err,
2241        Action::Reduce(RuleKind::R34),
2242        Action::Reduce(RuleKind::R34),
2243        Action::Reduce(RuleKind::R34),
2244        Action::Err,
2245    ],
2246    [
2247        Action::Err,
2248        Action::Err,
2249        Action::Err,
2250        Action::Err,
2251        Action::Err,
2252        Action::Err,
2253        Action::Err,
2254        Action::Err,
2255        Action::Err,
2256        Action::Err,
2257        Action::Shift(State::S50),
2258        Action::Err,
2259        Action::Err,
2260        Action::Err,
2261        Action::Err,
2262        Action::Err,
2263        Action::Shift(State::S59),
2264        Action::Err,
2265    ],
2266    [
2267        Action::Err,
2268        Action::Err,
2269        Action::Reduce(RuleKind::R35),
2270        Action::Err,
2271        Action::Err,
2272        Action::Err,
2273        Action::Err,
2274        Action::Err,
2275        Action::Err,
2276        Action::Err,
2277        Action::Reduce(RuleKind::R35),
2278        Action::Err,
2279        Action::Err,
2280        Action::Err,
2281        Action::Reduce(RuleKind::R35),
2282        Action::Err,
2283        Action::Reduce(RuleKind::R35),
2284        Action::Err,
2285    ],
2286    [
2287        Action::Err,
2288        Action::Err,
2289        Action::Err,
2290        Action::Err,
2291        Action::Err,
2292        Action::Err,
2293        Action::Err,
2294        Action::Err,
2295        Action::Err,
2296        Action::Err,
2297        Action::Reduce(RuleKind::R36),
2298        Action::Err,
2299        Action::Err,
2300        Action::Err,
2301        Action::Err,
2302        Action::Err,
2303        Action::Reduce(RuleKind::R36),
2304        Action::Err,
2305    ],
2306    [
2307        Action::Err,
2308        Action::Err,
2309        Action::Err,
2310        Action::Err,
2311        Action::Err,
2312        Action::Err,
2313        Action::Err,
2314        Action::Err,
2315        Action::Err,
2316        Action::Err,
2317        Action::Reduce(RuleKind::R37),
2318        Action::Err,
2319        Action::Err,
2320        Action::Err,
2321        Action::Err,
2322        Action::Err,
2323        Action::Reduce(RuleKind::R37),
2324        Action::Err,
2325    ],
2326    [
2327        Action::Err,
2328        Action::Err,
2329        Action::Err,
2330        Action::Err,
2331        Action::Err,
2332        Action::Err,
2333        Action::Err,
2334        Action::Err,
2335        Action::Reduce(RuleKind::R38),
2336        Action::Err,
2337        Action::Err,
2338        Action::Err,
2339        Action::Err,
2340        Action::Err,
2341        Action::Err,
2342        Action::Err,
2343        Action::Err,
2344        Action::Err,
2345    ],
2346    [
2347        Action::Err,
2348        Action::Err,
2349        Action::Err,
2350        Action::Err,
2351        Action::Err,
2352        Action::Err,
2353        Action::Err,
2354        Action::Err,
2355        Action::Reduce(RuleKind::R39),
2356        Action::Err,
2357        Action::Err,
2358        Action::Err,
2359        Action::Err,
2360        Action::Err,
2361        Action::Err,
2362        Action::Err,
2363        Action::Err,
2364        Action::Err,
2365    ],
2366    [
2367        Action::Reduce(RuleKind::R40),
2368        Action::Reduce(RuleKind::R40),
2369        Action::Reduce(RuleKind::R40),
2370        Action::Err,
2371        Action::Err,
2372        Action::Err,
2373        Action::Err,
2374        Action::Err,
2375        Action::Err,
2376        Action::Err,
2377        Action::Err,
2378        Action::Err,
2379        Action::Reduce(RuleKind::R40),
2380        Action::Err,
2381        Action::Reduce(RuleKind::R40),
2382        Action::Err,
2383        Action::Err,
2384        Action::Err,
2385    ],
2386    [
2387        Action::Reduce(RuleKind::R41),
2388        Action::Reduce(RuleKind::R41),
2389        Action::Reduce(RuleKind::R41),
2390        Action::Err,
2391        Action::Err,
2392        Action::Err,
2393        Action::Err,
2394        Action::Err,
2395        Action::Err,
2396        Action::Err,
2397        Action::Err,
2398        Action::Err,
2399        Action::Reduce(RuleKind::R41),
2400        Action::Err,
2401        Action::Reduce(RuleKind::R41),
2402        Action::Err,
2403        Action::Err,
2404        Action::Err,
2405    ],
2406    [
2407        Action::Err,
2408        Action::Err,
2409        Action::Err,
2410        Action::Err,
2411        Action::Err,
2412        Action::Err,
2413        Action::Err,
2414        Action::Err,
2415        Action::Err,
2416        Action::Err,
2417        Action::Err,
2418        Action::Err,
2419        Action::Err,
2420        Action::Err,
2421        Action::Err,
2422        Action::Err,
2423        Action::Err,
2424        Action::Accept,
2425    ],
2426];
2427
2428fn get_action(top_state: State, next_quasiterminal_kind: QuasiterminalKind) -> Action {
2429    ACTION_TABLE[top_state as usize][next_quasiterminal_kind as usize]
2430}
2431
2432const GOTO_TABLE: [[Option<State>; 24]; 67] = [
2433    [
2434        Some(State::S66),
2435        Some(State::S1),
2436        None,
2437        None,
2438        None,
2439        None,
2440        None,
2441        None,
2442        None,
2443        None,
2444        None,
2445        None,
2446        None,
2447        None,
2448        None,
2449        None,
2450        None,
2451        None,
2452        None,
2453        None,
2454        None,
2455        None,
2456        None,
2457        None,
2458    ],
2459    [
2460        None,
2461        None,
2462        Some(State::S2),
2463        Some(State::S5),
2464        Some(State::S6),
2465        Some(State::S7),
2466        Some(State::S8),
2467        None,
2468        None,
2469        None,
2470        None,
2471        None,
2472        None,
2473        None,
2474        None,
2475        None,
2476        None,
2477        None,
2478        None,
2479        None,
2480        None,
2481        None,
2482        None,
2483        None,
2484    ],
2485    [
2486        None,
2487        None,
2488        None,
2489        None,
2490        None,
2491        None,
2492        None,
2493        None,
2494        None,
2495        None,
2496        None,
2497        None,
2498        None,
2499        None,
2500        None,
2501        None,
2502        None,
2503        None,
2504        None,
2505        None,
2506        None,
2507        None,
2508        None,
2509        None,
2510    ],
2511    [
2512        None,
2513        None,
2514        None,
2515        None,
2516        None,
2517        None,
2518        None,
2519        None,
2520        None,
2521        None,
2522        None,
2523        None,
2524        None,
2525        None,
2526        None,
2527        None,
2528        None,
2529        None,
2530        None,
2531        None,
2532        None,
2533        None,
2534        None,
2535        None,
2536    ],
2537    [
2538        None,
2539        None,
2540        None,
2541        None,
2542        None,
2543        None,
2544        None,
2545        None,
2546        None,
2547        None,
2548        None,
2549        None,
2550        None,
2551        None,
2552        None,
2553        None,
2554        None,
2555        None,
2556        None,
2557        None,
2558        None,
2559        None,
2560        None,
2561        None,
2562    ],
2563    [
2564        None,
2565        None,
2566        None,
2567        None,
2568        None,
2569        None,
2570        None,
2571        None,
2572        None,
2573        None,
2574        None,
2575        None,
2576        None,
2577        None,
2578        None,
2579        None,
2580        None,
2581        None,
2582        None,
2583        None,
2584        None,
2585        None,
2586        None,
2587        None,
2588    ],
2589    [
2590        None,
2591        None,
2592        None,
2593        None,
2594        None,
2595        None,
2596        None,
2597        None,
2598        None,
2599        None,
2600        None,
2601        None,
2602        None,
2603        None,
2604        None,
2605        None,
2606        None,
2607        None,
2608        None,
2609        None,
2610        None,
2611        None,
2612        None,
2613        None,
2614    ],
2615    [
2616        None,
2617        None,
2618        None,
2619        None,
2620        None,
2621        None,
2622        None,
2623        None,
2624        None,
2625        None,
2626        None,
2627        None,
2628        None,
2629        None,
2630        None,
2631        None,
2632        None,
2633        None,
2634        None,
2635        None,
2636        None,
2637        None,
2638        None,
2639        None,
2640    ],
2641    [
2642        None,
2643        None,
2644        None,
2645        None,
2646        None,
2647        None,
2648        None,
2649        None,
2650        None,
2651        None,
2652        None,
2653        None,
2654        None,
2655        None,
2656        None,
2657        None,
2658        None,
2659        None,
2660        None,
2661        None,
2662        None,
2663        None,
2664        None,
2665        None,
2666    ],
2667    [
2668        None,
2669        None,
2670        None,
2671        None,
2672        None,
2673        None,
2674        None,
2675        None,
2676        None,
2677        None,
2678        None,
2679        None,
2680        None,
2681        None,
2682        None,
2683        None,
2684        None,
2685        None,
2686        None,
2687        None,
2688        None,
2689        None,
2690        None,
2691        None,
2692    ],
2693    [
2694        None,
2695        None,
2696        None,
2697        None,
2698        None,
2699        None,
2700        None,
2701        Some(State::S11),
2702        Some(State::S24),
2703        None,
2704        None,
2705        Some(State::S25),
2706        None,
2707        None,
2708        None,
2709        None,
2710        None,
2711        None,
2712        None,
2713        None,
2714        None,
2715        None,
2716        None,
2717        None,
2718    ],
2719    [
2720        None,
2721        None,
2722        None,
2723        None,
2724        None,
2725        None,
2726        None,
2727        None,
2728        None,
2729        None,
2730        None,
2731        None,
2732        None,
2733        None,
2734        None,
2735        None,
2736        None,
2737        None,
2738        None,
2739        None,
2740        None,
2741        None,
2742        None,
2743        None,
2744    ],
2745    [
2746        None,
2747        None,
2748        None,
2749        None,
2750        None,
2751        None,
2752        None,
2753        None,
2754        None,
2755        None,
2756        None,
2757        None,
2758        None,
2759        None,
2760        None,
2761        None,
2762        None,
2763        None,
2764        None,
2765        None,
2766        None,
2767        None,
2768        None,
2769        None,
2770    ],
2771    [
2772        None,
2773        None,
2774        None,
2775        None,
2776        None,
2777        None,
2778        None,
2779        None,
2780        None,
2781        None,
2782        None,
2783        None,
2784        None,
2785        None,
2786        None,
2787        None,
2788        None,
2789        None,
2790        None,
2791        None,
2792        None,
2793        None,
2794        None,
2795        None,
2796    ],
2797    [
2798        None,
2799        None,
2800        None,
2801        None,
2802        None,
2803        None,
2804        None,
2805        None,
2806        None,
2807        None,
2808        None,
2809        None,
2810        None,
2811        None,
2812        Some(State::S15),
2813        None,
2814        None,
2815        None,
2816        None,
2817        None,
2818        None,
2819        None,
2820        None,
2821        None,
2822    ],
2823    [
2824        None,
2825        None,
2826        None,
2827        None,
2828        None,
2829        None,
2830        None,
2831        None,
2832        None,
2833        None,
2834        None,
2835        None,
2836        None,
2837        None,
2838        None,
2839        Some(State::S43),
2840        None,
2841        None,
2842        None,
2843        None,
2844        None,
2845        None,
2846        None,
2847        None,
2848    ],
2849    [
2850        None,
2851        None,
2852        None,
2853        None,
2854        None,
2855        None,
2856        None,
2857        None,
2858        None,
2859        None,
2860        None,
2861        None,
2862        None,
2863        None,
2864        None,
2865        None,
2866        None,
2867        None,
2868        None,
2869        None,
2870        None,
2871        None,
2872        None,
2873        None,
2874    ],
2875    [
2876        None,
2877        None,
2878        None,
2879        None,
2880        None,
2881        None,
2882        None,
2883        None,
2884        None,
2885        None,
2886        None,
2887        None,
2888        None,
2889        None,
2890        None,
2891        None,
2892        None,
2893        None,
2894        None,
2895        None,
2896        None,
2897        None,
2898        None,
2899        None,
2900    ],
2901    [
2902        None,
2903        None,
2904        None,
2905        None,
2906        None,
2907        None,
2908        None,
2909        None,
2910        None,
2911        None,
2912        None,
2913        None,
2914        None,
2915        None,
2916        None,
2917        None,
2918        None,
2919        None,
2920        None,
2921        None,
2922        None,
2923        None,
2924        None,
2925        None,
2926    ],
2927    [
2928        None,
2929        None,
2930        None,
2931        None,
2932        None,
2933        None,
2934        None,
2935        None,
2936        None,
2937        None,
2938        None,
2939        None,
2940        None,
2941        None,
2942        None,
2943        None,
2944        Some(State::S20),
2945        None,
2946        None,
2947        None,
2948        None,
2949        None,
2950        None,
2951        None,
2952    ],
2953    [
2954        None,
2955        None,
2956        None,
2957        None,
2958        None,
2959        None,
2960        None,
2961        None,
2962        None,
2963        None,
2964        None,
2965        None,
2966        None,
2967        None,
2968        None,
2969        None,
2970        None,
2971        Some(State::S45),
2972        None,
2973        None,
2974        None,
2975        None,
2976        None,
2977        None,
2978    ],
2979    [
2980        None,
2981        None,
2982        None,
2983        None,
2984        None,
2985        None,
2986        None,
2987        None,
2988        None,
2989        None,
2990        None,
2991        None,
2992        None,
2993        None,
2994        None,
2995        None,
2996        None,
2997        None,
2998        None,
2999        None,
3000        None,
3001        None,
3002        None,
3003        None,
3004    ],
3005    [
3006        None,
3007        None,
3008        None,
3009        None,
3010        None,
3011        None,
3012        None,
3013        None,
3014        None,
3015        None,
3016        None,
3017        None,
3018        None,
3019        None,
3020        None,
3021        None,
3022        None,
3023        None,
3024        None,
3025        None,
3026        None,
3027        None,
3028        None,
3029        None,
3030    ],
3031    [
3032        None,
3033        None,
3034        None,
3035        None,
3036        None,
3037        None,
3038        None,
3039        Some(State::S44),
3040        Some(State::S24),
3041        None,
3042        None,
3043        Some(State::S25),
3044        None,
3045        None,
3046        None,
3047        None,
3048        None,
3049        None,
3050        None,
3051        None,
3052        None,
3053        None,
3054        None,
3055        None,
3056    ],
3057    [
3058        None,
3059        None,
3060        None,
3061        None,
3062        None,
3063        None,
3064        None,
3065        None,
3066        None,
3067        None,
3068        None,
3069        None,
3070        None,
3071        None,
3072        None,
3073        None,
3074        None,
3075        None,
3076        None,
3077        None,
3078        None,
3079        None,
3080        None,
3081        None,
3082    ],
3083    [
3084        None,
3085        None,
3086        None,
3087        None,
3088        None,
3089        None,
3090        None,
3091        None,
3092        None,
3093        None,
3094        None,
3095        None,
3096        None,
3097        None,
3098        None,
3099        None,
3100        None,
3101        None,
3102        None,
3103        None,
3104        None,
3105        None,
3106        None,
3107        None,
3108    ],
3109    [
3110        None,
3111        None,
3112        None,
3113        None,
3114        None,
3115        None,
3116        None,
3117        None,
3118        None,
3119        Some(State::S27),
3120        Some(State::S29),
3121        None,
3122        None,
3123        None,
3124        None,
3125        None,
3126        None,
3127        None,
3128        None,
3129        None,
3130        None,
3131        None,
3132        Some(State::S31),
3133        None,
3134    ],
3135    [
3136        None,
3137        None,
3138        None,
3139        None,
3140        None,
3141        None,
3142        None,
3143        None,
3144        None,
3145        None,
3146        Some(State::S30),
3147        None,
3148        None,
3149        None,
3150        None,
3151        None,
3152        None,
3153        None,
3154        None,
3155        None,
3156        None,
3157        None,
3158        Some(State::S31),
3159        None,
3160    ],
3161    [
3162        None,
3163        None,
3164        None,
3165        None,
3166        None,
3167        None,
3168        None,
3169        None,
3170        None,
3171        None,
3172        None,
3173        None,
3174        None,
3175        None,
3176        None,
3177        None,
3178        None,
3179        None,
3180        None,
3181        None,
3182        None,
3183        None,
3184        None,
3185        None,
3186    ],
3187    [
3188        None,
3189        None,
3190        None,
3191        None,
3192        None,
3193        None,
3194        None,
3195        None,
3196        None,
3197        None,
3198        None,
3199        None,
3200        None,
3201        None,
3202        None,
3203        None,
3204        None,
3205        None,
3206        None,
3207        None,
3208        None,
3209        None,
3210        None,
3211        None,
3212    ],
3213    [
3214        None,
3215        None,
3216        None,
3217        None,
3218        None,
3219        None,
3220        None,
3221        None,
3222        None,
3223        None,
3224        None,
3225        None,
3226        None,
3227        None,
3228        None,
3229        None,
3230        None,
3231        None,
3232        None,
3233        None,
3234        None,
3235        None,
3236        None,
3237        None,
3238    ],
3239    [
3240        None,
3241        None,
3242        None,
3243        None,
3244        None,
3245        None,
3246        None,
3247        None,
3248        None,
3249        None,
3250        None,
3251        None,
3252        None,
3253        None,
3254        None,
3255        None,
3256        None,
3257        None,
3258        None,
3259        None,
3260        None,
3261        None,
3262        None,
3263        None,
3264    ],
3265    [
3266        None,
3267        None,
3268        None,
3269        None,
3270        None,
3271        None,
3272        None,
3273        None,
3274        None,
3275        None,
3276        None,
3277        None,
3278        None,
3279        None,
3280        None,
3281        None,
3282        None,
3283        None,
3284        None,
3285        None,
3286        None,
3287        None,
3288        None,
3289        Some(State::S33),
3290    ],
3291    [
3292        None,
3293        None,
3294        None,
3295        None,
3296        None,
3297        None,
3298        None,
3299        None,
3300        None,
3301        None,
3302        None,
3303        None,
3304        None,
3305        None,
3306        None,
3307        None,
3308        None,
3309        None,
3310        None,
3311        None,
3312        None,
3313        None,
3314        None,
3315        None,
3316    ],
3317    [
3318        None,
3319        None,
3320        None,
3321        None,
3322        None,
3323        None,
3324        None,
3325        None,
3326        None,
3327        None,
3328        None,
3329        None,
3330        Some(State::S35),
3331        Some(State::S37),
3332        None,
3333        None,
3334        None,
3335        None,
3336        None,
3337        None,
3338        None,
3339        None,
3340        None,
3341        Some(State::S39),
3342    ],
3343    [
3344        None,
3345        None,
3346        None,
3347        None,
3348        None,
3349        None,
3350        None,
3351        None,
3352        None,
3353        None,
3354        None,
3355        None,
3356        None,
3357        Some(State::S38),
3358        None,
3359        None,
3360        None,
3361        None,
3362        None,
3363        None,
3364        None,
3365        None,
3366        None,
3367        Some(State::S39),
3368    ],
3369    [
3370        None,
3371        None,
3372        None,
3373        None,
3374        None,
3375        None,
3376        None,
3377        None,
3378        None,
3379        None,
3380        None,
3381        None,
3382        None,
3383        None,
3384        None,
3385        None,
3386        None,
3387        None,
3388        None,
3389        None,
3390        None,
3391        None,
3392        None,
3393        None,
3394    ],
3395    [
3396        None,
3397        None,
3398        None,
3399        None,
3400        None,
3401        None,
3402        None,
3403        None,
3404        None,
3405        None,
3406        None,
3407        None,
3408        None,
3409        None,
3410        None,
3411        None,
3412        None,
3413        None,
3414        None,
3415        None,
3416        None,
3417        None,
3418        None,
3419        None,
3420    ],
3421    [
3422        None,
3423        None,
3424        None,
3425        None,
3426        None,
3427        None,
3428        None,
3429        None,
3430        None,
3431        None,
3432        None,
3433        None,
3434        None,
3435        None,
3436        None,
3437        None,
3438        None,
3439        None,
3440        None,
3441        None,
3442        None,
3443        None,
3444        None,
3445        None,
3446    ],
3447    [
3448        None,
3449        None,
3450        None,
3451        None,
3452        None,
3453        None,
3454        None,
3455        None,
3456        None,
3457        None,
3458        None,
3459        None,
3460        None,
3461        None,
3462        None,
3463        None,
3464        None,
3465        None,
3466        None,
3467        None,
3468        None,
3469        None,
3470        None,
3471        None,
3472    ],
3473    [
3474        None,
3475        None,
3476        None,
3477        None,
3478        None,
3479        None,
3480        None,
3481        None,
3482        None,
3483        None,
3484        None,
3485        None,
3486        None,
3487        None,
3488        None,
3489        None,
3490        None,
3491        None,
3492        None,
3493        None,
3494        None,
3495        None,
3496        None,
3497        None,
3498    ],
3499    [
3500        None,
3501        None,
3502        None,
3503        None,
3504        None,
3505        None,
3506        None,
3507        None,
3508        None,
3509        None,
3510        None,
3511        None,
3512        None,
3513        None,
3514        None,
3515        None,
3516        None,
3517        None,
3518        None,
3519        None,
3520        None,
3521        None,
3522        None,
3523        Some(State::S42),
3524    ],
3525    [
3526        None,
3527        None,
3528        None,
3529        None,
3530        None,
3531        None,
3532        None,
3533        None,
3534        None,
3535        None,
3536        None,
3537        None,
3538        None,
3539        None,
3540        None,
3541        None,
3542        None,
3543        None,
3544        None,
3545        None,
3546        None,
3547        None,
3548        None,
3549        None,
3550    ],
3551    [
3552        None,
3553        None,
3554        None,
3555        None,
3556        None,
3557        None,
3558        None,
3559        None,
3560        None,
3561        None,
3562        None,
3563        None,
3564        None,
3565        None,
3566        None,
3567        None,
3568        None,
3569        None,
3570        None,
3571        None,
3572        None,
3573        None,
3574        None,
3575        None,
3576    ],
3577    [
3578        None,
3579        None,
3580        None,
3581        None,
3582        None,
3583        None,
3584        None,
3585        None,
3586        None,
3587        None,
3588        None,
3589        None,
3590        None,
3591        None,
3592        None,
3593        None,
3594        None,
3595        None,
3596        None,
3597        None,
3598        None,
3599        None,
3600        None,
3601        None,
3602    ],
3603    [
3604        None,
3605        None,
3606        None,
3607        None,
3608        None,
3609        None,
3610        None,
3611        None,
3612        None,
3613        None,
3614        None,
3615        None,
3616        None,
3617        None,
3618        None,
3619        None,
3620        None,
3621        None,
3622        None,
3623        None,
3624        None,
3625        None,
3626        None,
3627        None,
3628    ],
3629    [
3630        None,
3631        None,
3632        None,
3633        None,
3634        None,
3635        None,
3636        None,
3637        None,
3638        None,
3639        None,
3640        None,
3641        None,
3642        None,
3643        None,
3644        None,
3645        None,
3646        None,
3647        None,
3648        None,
3649        None,
3650        None,
3651        None,
3652        None,
3653        None,
3654    ],
3655    [
3656        None,
3657        None,
3658        None,
3659        None,
3660        None,
3661        None,
3662        None,
3663        None,
3664        None,
3665        None,
3666        None,
3667        None,
3668        None,
3669        None,
3670        None,
3671        None,
3672        None,
3673        None,
3674        Some(State::S48),
3675        Some(State::S53),
3676        Some(State::S54),
3677        None,
3678        None,
3679        None,
3680    ],
3681    [
3682        None,
3683        None,
3684        None,
3685        None,
3686        None,
3687        None,
3688        None,
3689        None,
3690        None,
3691        None,
3692        None,
3693        None,
3694        None,
3695        None,
3696        None,
3697        None,
3698        None,
3699        None,
3700        None,
3701        None,
3702        None,
3703        None,
3704        None,
3705        None,
3706    ],
3707    [
3708        None,
3709        None,
3710        None,
3711        None,
3712        None,
3713        None,
3714        None,
3715        None,
3716        None,
3717        None,
3718        None,
3719        None,
3720        None,
3721        None,
3722        None,
3723        None,
3724        None,
3725        None,
3726        Some(State::S60),
3727        Some(State::S53),
3728        Some(State::S54),
3729        Some(State::S58),
3730        None,
3731        None,
3732    ],
3733    [
3734        None,
3735        None,
3736        None,
3737        None,
3738        None,
3739        None,
3740        None,
3741        None,
3742        None,
3743        None,
3744        None,
3745        None,
3746        None,
3747        None,
3748        None,
3749        None,
3750        None,
3751        None,
3752        Some(State::S61),
3753        Some(State::S53),
3754        Some(State::S54),
3755        None,
3756        None,
3757        None,
3758    ],
3759    [
3760        None,
3761        None,
3762        None,
3763        None,
3764        None,
3765        None,
3766        None,
3767        None,
3768        None,
3769        None,
3770        None,
3771        None,
3772        None,
3773        None,
3774        None,
3775        None,
3776        None,
3777        None,
3778        None,
3779        None,
3780        None,
3781        None,
3782        None,
3783        None,
3784    ],
3785    [
3786        None,
3787        None,
3788        None,
3789        None,
3790        None,
3791        None,
3792        None,
3793        None,
3794        None,
3795        None,
3796        None,
3797        None,
3798        None,
3799        None,
3800        None,
3801        None,
3802        None,
3803        None,
3804        None,
3805        None,
3806        None,
3807        None,
3808        None,
3809        None,
3810    ],
3811    [
3812        None,
3813        None,
3814        None,
3815        None,
3816        None,
3817        None,
3818        None,
3819        None,
3820        None,
3821        None,
3822        None,
3823        None,
3824        None,
3825        None,
3826        None,
3827        None,
3828        None,
3829        None,
3830        None,
3831        None,
3832        None,
3833        None,
3834        None,
3835        None,
3836    ],
3837    [
3838        None,
3839        None,
3840        None,
3841        None,
3842        None,
3843        None,
3844        None,
3845        None,
3846        None,
3847        None,
3848        None,
3849        None,
3850        None,
3851        None,
3852        None,
3853        None,
3854        None,
3855        None,
3856        None,
3857        None,
3858        None,
3859        None,
3860        None,
3861        None,
3862    ],
3863    [
3864        None,
3865        None,
3866        None,
3867        None,
3868        None,
3869        None,
3870        None,
3871        None,
3872        None,
3873        None,
3874        None,
3875        None,
3876        None,
3877        None,
3878        None,
3879        None,
3880        None,
3881        None,
3882        None,
3883        None,
3884        None,
3885        None,
3886        None,
3887        None,
3888    ],
3889    [
3890        None,
3891        None,
3892        None,
3893        None,
3894        None,
3895        None,
3896        None,
3897        None,
3898        None,
3899        None,
3900        None,
3901        None,
3902        None,
3903        None,
3904        None,
3905        None,
3906        None,
3907        None,
3908        None,
3909        None,
3910        None,
3911        None,
3912        None,
3913        None,
3914    ],
3915    [
3916        None,
3917        None,
3918        None,
3919        None,
3920        None,
3921        None,
3922        None,
3923        None,
3924        None,
3925        None,
3926        None,
3927        None,
3928        None,
3929        None,
3930        None,
3931        None,
3932        None,
3933        None,
3934        None,
3935        None,
3936        None,
3937        None,
3938        None,
3939        None,
3940    ],
3941    [
3942        None,
3943        None,
3944        None,
3945        None,
3946        None,
3947        None,
3948        None,
3949        None,
3950        None,
3951        None,
3952        None,
3953        None,
3954        None,
3955        None,
3956        None,
3957        None,
3958        None,
3959        None,
3960        None,
3961        None,
3962        None,
3963        None,
3964        None,
3965        None,
3966    ],
3967    [
3968        None,
3969        None,
3970        None,
3971        None,
3972        None,
3973        None,
3974        None,
3975        None,
3976        None,
3977        None,
3978        None,
3979        None,
3980        None,
3981        None,
3982        None,
3983        None,
3984        None,
3985        None,
3986        None,
3987        None,
3988        None,
3989        None,
3990        None,
3991        None,
3992    ],
3993    [
3994        None,
3995        None,
3996        None,
3997        None,
3998        None,
3999        None,
4000        None,
4001        None,
4002        None,
4003        None,
4004        None,
4005        None,
4006        None,
4007        None,
4008        None,
4009        None,
4010        None,
4011        None,
4012        None,
4013        None,
4014        None,
4015        None,
4016        None,
4017        None,
4018    ],
4019    [
4020        None,
4021        None,
4022        None,
4023        None,
4024        None,
4025        None,
4026        None,
4027        None,
4028        None,
4029        None,
4030        None,
4031        None,
4032        None,
4033        None,
4034        None,
4035        None,
4036        None,
4037        None,
4038        None,
4039        None,
4040        None,
4041        None,
4042        None,
4043        None,
4044    ],
4045    [
4046        None,
4047        None,
4048        None,
4049        None,
4050        None,
4051        None,
4052        None,
4053        None,
4054        None,
4055        None,
4056        None,
4057        None,
4058        None,
4059        None,
4060        None,
4061        None,
4062        None,
4063        None,
4064        None,
4065        None,
4066        None,
4067        None,
4068        None,
4069        None,
4070    ],
4071    [
4072        None,
4073        None,
4074        None,
4075        None,
4076        None,
4077        None,
4078        None,
4079        None,
4080        None,
4081        None,
4082        None,
4083        None,
4084        None,
4085        None,
4086        None,
4087        None,
4088        None,
4089        None,
4090        None,
4091        None,
4092        None,
4093        None,
4094        None,
4095        None,
4096    ],
4097    [
4098        None,
4099        None,
4100        None,
4101        None,
4102        None,
4103        None,
4104        None,
4105        None,
4106        None,
4107        None,
4108        None,
4109        None,
4110        None,
4111        None,
4112        None,
4113        None,
4114        None,
4115        None,
4116        None,
4117        None,
4118        None,
4119        None,
4120        None,
4121        None,
4122    ],
4123    [
4124        None,
4125        None,
4126        None,
4127        None,
4128        None,
4129        None,
4130        None,
4131        None,
4132        None,
4133        None,
4134        None,
4135        None,
4136        None,
4137        None,
4138        None,
4139        None,
4140        None,
4141        None,
4142        None,
4143        None,
4144        None,
4145        None,
4146        None,
4147        None,
4148    ],
4149    [
4150        None,
4151        None,
4152        None,
4153        None,
4154        None,
4155        None,
4156        None,
4157        None,
4158        None,
4159        None,
4160        None,
4161        None,
4162        None,
4163        None,
4164        None,
4165        None,
4166        None,
4167        None,
4168        None,
4169        None,
4170        None,
4171        None,
4172        None,
4173        None,
4174    ],
4175];
4176
4177fn get_goto(top_state: State, new_node_kind: NonterminalKind) -> Option<State> {
4178    GOTO_TABLE[top_state as usize][new_node_kind as usize]
4179}
4180
4181impl TryFrom<Node> for File {
4182    type Error = Node;
4183
4184    fn try_from(node: Node) -> Result<Self, Self::Error> {
4185        match node {
4186            Node::File(n) => Ok(n),
4187            _ => Err(node),
4188        }
4189    }
4190}
4191
4192impl TryFrom<Node> for OptItems {
4193    type Error = Node;
4194
4195    fn try_from(node: Node) -> Result<Self, Self::Error> {
4196        match node {
4197            Node::OptItems(n) => Ok(n),
4198            _ => Err(node),
4199        }
4200    }
4201}
4202
4203impl TryFrom<Node> for FileItem {
4204    type Error = Node;
4205
4206    fn try_from(node: Node) -> Result<Self, Self::Error> {
4207        match node {
4208            Node::FileItem(n) => Ok(n),
4209            _ => Err(node),
4210        }
4211    }
4212}
4213
4214impl TryFrom<Node> for Struct {
4215    type Error = Node;
4216
4217    fn try_from(node: Node) -> Result<Self, Self::Error> {
4218        match node {
4219            Node::Struct(n) => Ok(n),
4220            _ => Err(node),
4221        }
4222    }
4223}
4224
4225impl TryFrom<Node> for Enum {
4226    type Error = Node;
4227
4228    fn try_from(node: Node) -> Result<Self, Self::Error> {
4229        match node {
4230            Node::Enum(n) => Ok(n),
4231            _ => Err(node),
4232        }
4233    }
4234}
4235
4236impl TryFrom<Node> for TerminalEnum {
4237    type Error = Node;
4238
4239    fn try_from(node: Node) -> Result<Self, Self::Error> {
4240        match node {
4241            Node::TerminalEnum(n) => Ok(n),
4242            _ => Err(node),
4243        }
4244    }
4245}
4246
4247impl TryFrom<Node> for OptOuterAttributes {
4248    type Error = Node;
4249
4250    fn try_from(node: Node) -> Result<Self, Self::Error> {
4251        match node {
4252            Node::OptOuterAttributes(n) => Ok(n),
4253            _ => Err(node),
4254        }
4255    }
4256}
4257
4258impl TryFrom<Node> for Fieldset {
4259    type Error = Node;
4260
4261    fn try_from(node: Node) -> Result<Self, Self::Error> {
4262        match node {
4263            Node::Fieldset(n) => Ok(n),
4264            _ => Err(node),
4265        }
4266    }
4267}
4268
4269impl TryFrom<Node> for NamedFieldset {
4270    type Error = Node;
4271
4272    fn try_from(node: Node) -> Result<Self, Self::Error> {
4273        match node {
4274            Node::NamedFieldset(n) => Ok(n),
4275            _ => Err(node),
4276        }
4277    }
4278}
4279
4280impl TryFrom<Node> for NamedFields {
4281    type Error = Node;
4282
4283    fn try_from(node: Node) -> Result<Self, Self::Error> {
4284        match node {
4285            Node::NamedFields(n) => Ok(n),
4286            _ => Err(node),
4287        }
4288    }
4289}
4290
4291impl TryFrom<Node> for NamedField {
4292    type Error = Node;
4293
4294    fn try_from(node: Node) -> Result<Self, Self::Error> {
4295        match node {
4296            Node::NamedField(n) => Ok(n),
4297            _ => Err(node),
4298        }
4299    }
4300}
4301
4302impl TryFrom<Node> for TupleFieldset {
4303    type Error = Node;
4304
4305    fn try_from(node: Node) -> Result<Self, Self::Error> {
4306        match node {
4307            Node::TupleFieldset(n) => Ok(n),
4308            _ => Err(node),
4309        }
4310    }
4311}
4312
4313impl TryFrom<Node> for TupleFields {
4314    type Error = Node;
4315
4316    fn try_from(node: Node) -> Result<Self, Self::Error> {
4317        match node {
4318            Node::TupleFields(n) => Ok(n),
4319            _ => Err(node),
4320        }
4321    }
4322}
4323
4324impl TryFrom<Node> for TupleField {
4325    type Error = Node;
4326
4327    fn try_from(node: Node) -> Result<Self, Self::Error> {
4328        match node {
4329            Node::TupleField(n) => Ok(n),
4330            _ => Err(node),
4331        }
4332    }
4333}
4334
4335impl TryFrom<Node> for OptEnumVariants {
4336    type Error = Node;
4337
4338    fn try_from(node: Node) -> Result<Self, Self::Error> {
4339        match node {
4340            Node::OptEnumVariants(n) => Ok(n),
4341            _ => Err(node),
4342        }
4343    }
4344}
4345
4346impl TryFrom<Node> for EnumVariant {
4347    type Error = Node;
4348
4349    fn try_from(node: Node) -> Result<Self, Self::Error> {
4350        match node {
4351            Node::EnumVariant(n) => Ok(n),
4352            _ => Err(node),
4353        }
4354    }
4355}
4356
4357impl TryFrom<Node> for OptTerminalEnumVariants {
4358    type Error = Node;
4359
4360    fn try_from(node: Node) -> Result<Self, Self::Error> {
4361        match node {
4362            Node::OptTerminalEnumVariants(n) => Ok(n),
4363            _ => Err(node),
4364        }
4365    }
4366}
4367
4368impl TryFrom<Node> for TerminalEnumVariant {
4369    type Error = Node;
4370
4371    fn try_from(node: Node) -> Result<Self, Self::Error> {
4372        match node {
4373            Node::TerminalEnumVariant(n) => Ok(n),
4374            _ => Err(node),
4375        }
4376    }
4377}
4378
4379impl TryFrom<Node> for Type {
4380    type Error = Node;
4381
4382    fn try_from(node: Node) -> Result<Self, Self::Error> {
4383        match node {
4384            Node::Type(n) => Ok(n),
4385            _ => Err(node),
4386        }
4387    }
4388}
4389
4390impl TryFrom<Node> for Path {
4391    type Error = Node;
4392
4393    fn try_from(node: Node) -> Result<Self, Self::Error> {
4394        match node {
4395            Node::Path(n) => Ok(n),
4396            _ => Err(node),
4397        }
4398    }
4399}
4400
4401impl TryFrom<Node> for ComplexType {
4402    type Error = Node;
4403
4404    fn try_from(node: Node) -> Result<Self, Self::Error> {
4405        match node {
4406            Node::ComplexType(n) => Ok(n),
4407            _ => Err(node),
4408        }
4409    }
4410}
4411
4412impl TryFrom<Node> for CommaSeparatedTypes {
4413    type Error = Node;
4414
4415    fn try_from(node: Node) -> Result<Self, Self::Error> {
4416        match node {
4417            Node::CommaSeparatedTypes(n) => Ok(n),
4418            _ => Err(node),
4419        }
4420    }
4421}
4422
4423impl TryFrom<Node> for IdentOrUnderscore {
4424    type Error = Node;
4425
4426    fn try_from(node: Node) -> Result<Self, Self::Error> {
4427        match node {
4428            Node::IdentOrUnderscore(n) => Ok(n),
4429            _ => Err(node),
4430        }
4431    }
4432}
4433
4434impl TryFrom<Node> for IdentOrTerminalIdent {
4435    type Error = Node;
4436
4437    fn try_from(node: Node) -> Result<Self, Self::Error> {
4438        match node {
4439            Node::IdentOrTerminalIdent(n) => Ok(n),
4440            _ => Err(node),
4441        }
4442    }
4443}
4444
4445impl Node {
4446    fn try_into_underscore_0(self) -> Result<crate::data::ByteIndex, Self> {
4447        match self {
4448            Self::Underscore(t) => Ok(t),
4449            _ => Err(self),
4450        }
4451    }
4452    
4453    fn try_into_ident_1(self) -> Result<crate::data::token::Ident, Self> {
4454        match self {
4455            Self::Ident(t) => Ok(t),
4456            _ => Err(self),
4457        }
4458    }
4459    
4460    fn try_into_terminal_ident_2(self) -> Result<crate::data::token::TerminalIdent, Self> {
4461        match self {
4462            Self::TerminalIdent(t) => Ok(t),
4463            _ => Err(self),
4464        }
4465    }
4466    
4467    fn try_into_outer_attribute_3(self) -> Result<crate::data::token::Attribute, Self> {
4468        match self {
4469            Self::OuterAttribute(t) => Ok(t),
4470            _ => Err(self),
4471        }
4472    }
4473    
4474    fn try_into_start_kw_4(self) -> Result<crate::data::ByteIndex, Self> {
4475        match self {
4476            Self::StartKw(t) => Ok(t),
4477            _ => Err(self),
4478        }
4479    }
4480    
4481    fn try_into_struct_kw_5(self) -> Result<crate::data::ByteIndex, Self> {
4482        match self {
4483            Self::StructKw(t) => Ok(t),
4484            _ => Err(self),
4485        }
4486    }
4487    
4488    fn try_into_enum_kw_6(self) -> Result<crate::data::ByteIndex, Self> {
4489        match self {
4490            Self::EnumKw(t) => Ok(t),
4491            _ => Err(self),
4492        }
4493    }
4494    
4495    fn try_into_terminal_kw_7(self) -> Result<crate::data::ByteIndex, Self> {
4496        match self {
4497            Self::TerminalKw(t) => Ok(t),
4498            _ => Err(self),
4499        }
4500    }
4501    
4502    fn try_into_colon_8(self) -> Result<crate::data::ByteIndex, Self> {
4503        match self {
4504            Self::Colon(t) => Ok(t),
4505            _ => Err(self),
4506        }
4507    }
4508    
4509    fn try_into_double_colon_9(self) -> Result<crate::data::ByteIndex, Self> {
4510        match self {
4511            Self::DoubleColon(t) => Ok(t),
4512            _ => Err(self),
4513        }
4514    }
4515    
4516    fn try_into_comma_10(self) -> Result<crate::data::ByteIndex, Self> {
4517        match self {
4518            Self::Comma(t) => Ok(t),
4519            _ => Err(self),
4520        }
4521    }
4522    
4523    fn try_into_l_paren_11(self) -> Result<crate::data::ByteIndex, Self> {
4524        match self {
4525            Self::LParen(t) => Ok(t),
4526            _ => Err(self),
4527        }
4528    }
4529    
4530    fn try_into_r_paren_12(self) -> Result<crate::data::ByteIndex, Self> {
4531        match self {
4532            Self::RParen(t) => Ok(t),
4533            _ => Err(self),
4534        }
4535    }
4536    
4537    fn try_into_l_curly_13(self) -> Result<crate::data::ByteIndex, Self> {
4538        match self {
4539            Self::LCurly(t) => Ok(t),
4540            _ => Err(self),
4541        }
4542    }
4543    
4544    fn try_into_r_curly_14(self) -> Result<crate::data::ByteIndex, Self> {
4545        match self {
4546            Self::RCurly(t) => Ok(t),
4547            _ => Err(self),
4548        }
4549    }
4550    
4551    fn try_into_l_angle_15(self) -> Result<crate::data::ByteIndex, Self> {
4552        match self {
4553            Self::LAngle(t) => Ok(t),
4554            _ => Err(self),
4555        }
4556    }
4557    
4558    fn try_into_r_angle_16(self) -> Result<crate::data::ByteIndex, Self> {
4559        match self {
4560            Self::RAngle(t) => Ok(t),
4561            _ => Err(self),
4562        }
4563    }
4564}