Skip to main content

big_code_analysis_ast/languages/
language_objc.rs

1// See `src/languages/mod.rs` for the rationale behind the per-file
2// pedantic carve-outs below.
3#![allow(clippy::match_same_arms, clippy::too_many_lines)]
4// One variant per grammar kind id, named after the rule; the name is
5// the documentation and there is nothing per-variant to add.
6#![allow(missing_docs)]
7
8// Code generated; DO NOT EDIT.
9
10use num_derive::FromPrimitive;
11
12#[derive(Clone, Debug, PartialEq, Eq, FromPrimitive)]
13pub enum Objc {
14    End = 0,
15    Identifier = 1,
16    HASHinclude = 2,
17    HASHimport = 3,
18    PreprocIncludeToken3 = 4,
19    HASHdefine = 5,
20    LPAREN = 6,
21    DOTDOTDOT = 7,
22    COMMA = 8,
23    RPAREN = 9,
24    HASHif = 10,
25    LF = 11,
26    HASHendif = 12,
27    HASHifdef = 13,
28    HASHifndef = 14,
29    HASHelse = 15,
30    HASHelif = 16,
31    HASHelifdef = 17,
32    HASHelifndef = 18,
33    PreprocArg = 19,
34    PreprocDirective = 20,
35    LPAREN2 = 21,
36    Defined = 22,
37    BANG = 23,
38    TILDE = 24,
39    DASH = 25,
40    PLUS = 26,
41    STAR = 27,
42    SLASH = 28,
43    PERCENT = 29,
44    PIPEPIPE = 30,
45    AMPAMP = 31,
46    PIPE = 32,
47    CARET = 33,
48    AMP = 34,
49    EQEQ = 35,
50    BANGEQ = 36,
51    GT = 37,
52    GTEQ = 38,
53    LTEQ = 39,
54    LT = 40,
55    LTLT = 41,
56    GTGT = 42,
57    SEMI = 43,
58    Extension = 44,
59    Typedef = 45,
60    Extern = 46,
61    Attribute2 = 47,
62    Attribute3 = 48,
63    Noreturn = 49,
64    Nothrow = 50,
65    COLONCOLON = 51,
66    LBRACK = 52,
67    RBRACK = 53,
68    Declspec = 54,
69    Based = 55,
70    Cdecl = 56,
71    Clrcall = 57,
72    Stdcall = 58,
73    Fastcall = 59,
74    Thiscall = 60,
75    Vectorcall = 61,
76    MsRestrictModifier = 62,
77    MsUnsignedPtrModifier = 63,
78    MsSignedPtrModifier = 64,
79    Unaligned = 65,
80    Unaligned2 = 66,
81    LBRACE = 67,
82    RBRACE = 68,
83    Signed = 69,
84    Unsigned = 70,
85    Long = 71,
86    Short = 72,
87    Static = 73,
88    EQ = 74,
89    ATautoreleasepool = 75,
90    Auto = 76,
91    Register = 77,
92    Inline = 78,
93    Inline2 = 79,
94    Inline3 = 80,
95    Forceinline = 81,
96    ThreadLocal = 82,
97    Thread = 83,
98    CGEXTERN = 84,
99    CGINLINE = 85,
100    FOUNDATIONEXPORT = 86,
101    FOUNDATIONEXTERN = 87,
102    FOUNDATIONSTATICINLINE = 88,
103    IBOutlet = 89,
104    IBInspectable = 90,
105    IBDESIGNABLE = 91,
106    NSINLINE = 92,
107    NSVALIDUNTILENDOFSCOPE = 93,
108    OBJCEXPORT = 94,
109    OBJCROOTCLASS = 95,
110    UIKITEXTERN = 96,
111    Const = 97,
112    Constexpr = 98,
113    Volatile = 99,
114    Restrict = 100,
115    Restrict2 = 101,
116    Atomic = 102,
117    Noreturn2 = 103,
118    Nonnull = 104,
119    Nullable = 105,
120    Complex = 106,
121    Nullable2 = 107,
122    NullableResult = 108,
123    NullUnspecified = 109,
124    Autoreleasing = 110,
125    Block = 111,
126    Bridge = 112,
127    BridgeRetained = 113,
128    BridgeTransfer = 114,
129    Complex2 = 115,
130    Const2 = 116,
131    Imag = 117,
132    Kindof = 118,
133    Nonnull2 = 119,
134    Nullable3 = 120,
135    PtrauthObjcClassRo = 121,
136    PtrauthObjcIsaPointer = 122,
137    PtrauthObjcSuperPointer = 123,
138    Real = 124,
139    Strong = 125,
140    UnsafeUnretained = 126,
141    Unused = 127,
142    Weak = 128,
143    Alignas = 129,
144    Alignas2 = 130,
145    PrimitiveType = 131,
146    Enum = 132,
147    COLON = 133,
148    Struct = 134,
149    Union = 135,
150    If = 136,
151    Else = 137,
152    Switch = 138,
153    Case = 139,
154    Default = 140,
155    While = 141,
156    Do = 142,
157    For = 143,
158    In = 144,
159    Return = 145,
160    Break = 146,
161    Continue = 147,
162    Goto = 148,
163    QMARK = 149,
164    STAREQ = 150,
165    SLASHEQ = 151,
166    PERCENTEQ = 152,
167    PLUSEQ = 153,
168    DASHEQ = 154,
169    LTLTEQ = 155,
170    GTGTEQ = 156,
171    AMPEQ = 157,
172    CARETEQ = 158,
173    PIPEEQ = 159,
174    DASHDASH = 160,
175    PLUSPLUS = 161,
176    Sizeof = 162,
177    Alignof = 163,
178    Alignof2 = 164,
179    Alignof3 = 165,
180    Alignof4 = 166,
181    Alignof5 = 167,
182    Offsetof = 168,
183    Generic = 169,
184    Asm = 170,
185    Asm2 = 171,
186    Asm3 = 172,
187    Volatile2 = 173,
188    LT2 = 174,
189    DOT = 175,
190    DASHGT = 176,
191    NumberLiteral = 177,
192    LSQUOTE = 178,
193    USQUOTE = 179,
194    USQUOTE2 = 180,
195    U8SQUOTE = 181,
196    SQUOTE = 182,
197    Character = 183,
198    AT = 184,
199    DQUOTE = 185,
200    LDQUOTE = 186,
201    UDQUOTE = 187,
202    UDQUOTE2 = 188,
203    U8DQUOTE = 189,
204    StringContent = 190,
205    EscapeSequence = 191,
206    SystemLibString = 192,
207    True = 193,
208    False = 194,
209    NULL = 195,
210    Nullptr = 196,
211    Comment = 197,
212    ObjcBridgeRelated = 198,
213    Typeof = 199,
214    Typeof2 = 200,
215    Typeof3 = 201,
216    Availability2 = 202,
217    VersionNumber = 203,
218    Ios = 204,
219    Tvos = 205,
220    Macos = 206,
221    Macosx = 207,
222    Watchos = 208,
223    ATimport = 209,
224    HASHundef = 210,
225    HASH = 211,
226    NSAUTOMATEDREFCOUNTUNAVAILABLE = 212,
227    NSROOTCLASS = 213,
228    NSUNAVAILABLE = 214,
229    NSREQUIRESNILTERMINATION = 215,
230    CFRETURNSRETAINED = 216,
231    CFRETURNSNOTRETAINED = 217,
232    DEPRECATEDATTRIBUTE = 218,
233    UIAPPEARANCESELECTOR = 219,
234    UNAVAILABLEATTRIBUTE = 220,
235    CFFORMATFUNCTION = 221,
236    NSAVAILABLE = 222,
237    IOSAVAILABLE = 223,
238    NSAVAILABLEIOS = 224,
239    APIAVAILABLE = 225,
240    APIUNAVAILABLE = 226,
241    APIDEPRECATED = 227,
242    NSENUMAVAILABLEIOS = 228,
243    NSDEPRECATEDIOS = 229,
244    NSENUMDEPRECATEDIOS = 230,
245    NSFORMATFUNCTION = 231,
246    DEPRECATEDMSGATTRIBUTE = 232,
247    DeprecatedMsg = 233,
248    DeprecatedEnumMsg = 234,
249    NSSWIFTNAME = 235,
250    NSSWIFTUNAVAILABLE = 236,
251    NSEXTENSIONUNAVAILABLEIOS = 237,
252    NSCLASSAVAILABLEIOS = 238,
253    NSCLASSDEPRECATEDIOS = 239,
254    OSXAVAILABLESTARTING = 240,
255    ATprotocol = 241,
256    Class = 242,
257    ATend = 243,
258    ATinterface = 244,
259    ATimplementation = 245,
260    Covariant = 246,
261    Contravariant = 247,
262    ATprivate = 248,
263    ATprotected = 249,
264    ATpackage = 250,
265    ATpublic = 251,
266    ATcompatibilityAlias = 252,
267    AToptional = 253,
268    ATrequired = 254,
269    ATsynthesize = 255,
270    ATdynamic = 256,
271    LPARENclassRPAREN = 257,
272    ATproperty = 258,
273    ATtry = 259,
274    Try = 260,
275    ATcatch = 261,
276    Catch = 262,
277    ATfinally = 263,
278    Finally = 264,
279    ATthrow = 265,
280    ATselector = 266,
281    SelectorExpressionToken1 = 267,
282    ATavailable = 268,
283    BuiltinAvailable = 269,
284    VaArg = 270,
285    MsAsmBlockToken1 = 271,
286    ATencode = 272,
287    ATsynchronized = 273,
288    BOOL = 274,
289    IMP = 275,
290    SEL = 276,
291    Class2 = 277,
292    Id = 278,
293    ATdefs = 279,
294    Out = 280,
295    Inout = 281,
296    Bycopy = 282,
297    Byref = 283,
298    Oneway = 284,
299    COLON2 = 285,
300    TranslationUnit = 286,
301    TopLevelItem = 287,
302    BlockItem = 288,
303    PreprocInclude = 289,
304    PreprocDef = 290,
305    PreprocFunctionDef = 291,
306    PreprocParams = 292,
307    PreprocCall = 293,
308    PreprocIf = 294,
309    PreprocIfdef = 295,
310    PreprocElse = 296,
311    PreprocElif = 297,
312    PreprocElifdef = 298,
313    PreprocIf2 = 299,
314    PreprocIfdef2 = 300,
315    PreprocElse2 = 301,
316    PreprocElif2 = 302,
317    PreprocElifdef2 = 303,
318    PreprocExpression = 304,
319    ParenthesizedExpression = 305,
320    PreprocDefined = 306,
321    UnaryExpression = 307,
322    CallExpression = 308,
323    ArgumentList = 309,
324    BinaryExpression = 310,
325    FunctionDefinition = 311,
326    FunctionDefinition2 = 312,
327    Declaration = 313,
328    TypeDefinition = 314,
329    TypeDefinitionType = 315,
330    TypeDefinitionDeclarators = 316,
331    DeclarationModifiers = 317,
332    DeclarationSpecifiers = 318,
333    LinkageSpecification = 319,
334    AttributeSpecifier = 320,
335    Attribute = 321,
336    AttributeDeclaration = 322,
337    MsDeclspecModifier = 323,
338    MsBasedModifier = 324,
339    MsCallModifier = 325,
340    MsUnalignedPtrModifier = 326,
341    MsPointerModifier = 327,
342    DeclarationList = 328,
343    Declarator = 329,
344    FieldDeclarator = 330,
345    TypeDeclarator = 331,
346    AbstractDeclarator = 332,
347    ParenthesizedDeclarator = 333,
348    ParenthesizedDeclarator2 = 334,
349    ParenthesizedDeclarator3 = 335,
350    AbstractParenthesizedDeclarator = 336,
351    AttributedDeclarator = 337,
352    PointerDeclarator = 338,
353    PointerDeclarator2 = 339,
354    PointerDeclarator3 = 340,
355    AbstractPointerDeclarator = 341,
356    FunctionDeclarator = 342,
357    FunctionDeclarator2 = 343,
358    FunctionDeclarator3 = 344,
359    AbstractFunctionDeclarator = 345,
360    FunctionDeclarator4 = 346,
361    ArrayDeclarator = 347,
362    ArrayDeclarator2 = 348,
363    ArrayDeclarator3 = 349,
364    AbstractArrayDeclarator = 350,
365    InitDeclarator = 351,
366    CompoundStatement = 352,
367    StorageClassSpecifier = 353,
368    TypeQualifier = 354,
369    AlignasQualifier = 355,
370    TypeSpecifier = 356,
371    SizedTypeSpecifier = 357,
372    EnumSpecifier = 358,
373    EnumeratorList = 359,
374    StructSpecifier = 360,
375    UnionSpecifier = 361,
376    FieldDeclarationList = 362,
377    FieldDeclarationListItem = 363,
378    FieldDeclaration = 364,
379    BitfieldClause = 365,
380    Enumerator = 366,
381    VariadicParameter = 367,
382    ParameterList = 368,
383    ParameterList2 = 369,
384    ParameterDeclaration = 370,
385    AttributedStatement = 371,
386    Statement = 372,
387    TopLevelStatement = 373,
388    LabeledStatement = 374,
389    ExpressionStatement = 375,
390    ExpressionStatement2 = 376,
391    IfStatement = 377,
392    ElseClause = 378,
393    SwitchStatement = 379,
394    CaseStatement = 380,
395    WhileStatement = 381,
396    DoStatement = 382,
397    ForStatement = 383,
398    ForStatementBody = 384,
399    ReturnStatement = 385,
400    BreakStatement = 386,
401    ContinueStatement = 387,
402    GotoStatement = 388,
403    Expression = 389,
404    String = 390,
405    CommaExpression = 391,
406    ConditionalExpression = 392,
407    AssignmentExpression = 393,
408    PointerExpression = 394,
409    UnaryExpression2 = 395,
410    BinaryExpression2 = 396,
411    UpdateExpression = 397,
412    CastExpression = 398,
413    TypeDescriptor = 399,
414    SizeofExpression = 400,
415    AlignofExpression = 401,
416    OffsetofExpression = 402,
417    GenericExpression = 403,
418    SubscriptExpression = 404,
419    CallExpression2 = 405,
420    GnuAsmExpression = 406,
421    GnuAsmQualifier = 407,
422    GnuAsmOutputOperandList = 408,
423    GnuAsmOutputOperand = 409,
424    GnuAsmInputOperandList = 410,
425    GnuAsmInputOperand = 411,
426    GnuAsmClobberList = 412,
427    GnuAsmGotoList = 413,
428    ExtensionExpression = 414,
429    ArgumentList2 = 415,
430    FieldExpression = 416,
431    CompoundLiteralExpression = 417,
432    ParenthesizedExpression2 = 418,
433    InitializerList = 419,
434    InitializerPair = 420,
435    SubscriptDesignator = 421,
436    SubscriptRangeDesignator = 422,
437    FieldDesignator = 423,
438    CharLiteral = 424,
439    ConcatenatedString = 425,
440    StringLiteral = 426,
441    Null = 427,
442    EmptyDeclaration = 428,
443    MacroTypeSpecifier = 429,
444    ObjcBridge = 430,
445    TypeofSpecifier = 431,
446    Availability = 432,
447    Version = 433,
448    Platform = 434,
449    ModuleImport = 435,
450    PreprocIf3 = 436,
451    PreprocElse3 = 437,
452    PreprocElif3 = 438,
453    PreprocIf4 = 439,
454    PreprocElse4 = 440,
455    PreprocElif4 = 441,
456    PreprocIfdef3 = 442,
457    PreprocElse5 = 443,
458    PreprocElif5 = 444,
459    PreprocUndef = 445,
460    PreprocLinemarker = 446,
461    AvailabilityAttributeSpecifier = 447,
462    ProtocolForwardDeclaration = 448,
463    ClassDeclaration = 449,
464    ClassInterface = 450,
465    ClassInterfaceHeader = 451,
466    TypeParams = 452,
467    ClassInterfaceInheritance = 453,
468    ClassImplementation = 454,
469    ClassImplementationHeader = 455,
470    ClassImplementationInheritance = 456,
471    ProtocolReferenceList = 457,
472    ParameterizedArguments = 458,
473    GenericArguments = 459,
474    InstanceVariables = 460,
475    InstanceVariable = 461,
476    VisibilitySpecification = 462,
477    ProtocolDeclaration = 463,
478    CompatibilityAliasDeclaration = 464,
479    QualifiedProtocolInterfaceDeclaration = 465,
480    ImplementationDefinition = 466,
481    PropertyImplementation = 467,
482    MethodDefinition = 468,
483    MethodType = 469,
484    KeywordDeclarator = 470,
485    PropertyDeclaration = 471,
486    PropertyAttributesDeclaration = 472,
487    PropertyAttribute = 473,
488    MethodDeclaration = 474,
489    MethodParameter = 475,
490    MethodParameter2 = 476,
491    StructDeclaration = 477,
492    AtomicDeclaration = 478,
493    SpecifierQualifier = 479,
494    StructDeclarator = 480,
495    TryStatement = 481,
496    CatchClause = 482,
497    FinallyClause = 483,
498    ThrowStatement = 484,
499    SelectorExpression = 485,
500    AvailableExpression = 486,
501    RangeExpression = 487,
502    BlockLiteral = 488,
503    MessageExpression = 489,
504    VaArgExpression = 490,
505    MsAsmBlock = 491,
506    EncodeExpression = 492,
507    SynchronizedStatement = 493,
508    BlockPointerDeclarator = 494,
509    BlockPointerDeclarator2 = 495,
510    BlockPointerDeclarator3 = 496,
511    AbstractBlockPointerDeclarator = 497,
512    GenericSpecifier = 498,
513    TypedefedSpecifier = 499,
514    ArrayTypeSpecifier = 500,
515    AtdefField = 501,
516    ProtocolQualifier = 502,
517    TypeName = 503,
518    AtExpression = 504,
519    DictionaryLiteral = 505,
520    DictionaryPair = 506,
521    ArrayLiteral = 507,
522    MethodIdentifier = 508,
523    TranslationUnitRepeat1 = 509,
524    PreprocParamsRepeat1 = 510,
525    PreprocIfRepeat1 = 511,
526    PreprocIfInFieldDeclarationListRepeat1 = 512,
527    PreprocArgumentListRepeat1 = 513,
528    OldStyleFunctionDefinitionRepeat1 = 514,
529    DeclarationRepeat1 = 515,
530    TypeDefinitionTypeRepeat1 = 516,
531    TypeDefinitionDeclaratorsRepeat1 = 517,
532    DeclarationSpecifiersRepeat1 = 518,
533    AttributeSpecifierRepeat1 = 519,
534    AttributeRepeat1 = 520,
535    AttributeDeclarationRepeat1 = 521,
536    DeclarationListRepeat1 = 522,
537    AttributedFieldDeclaratorRepeat1 = 523,
538    PointerDeclaratorRepeat1 = 524,
539    FunctionDeclaratorRepeat1 = 525,
540    FunctionFieldDeclaratorRepeat1 = 526,
541    ArrayDeclaratorRepeat1 = 527,
542    SizedTypeSpecifierRepeat1 = 528,
543    EnumeratorListRepeat1 = 529,
544    FieldDeclarationRepeat1 = 530,
545    ParameterListRepeat1 = 531,
546    OldStyleParameterListRepeat1 = 532,
547    CaseStatementRepeat1 = 533,
548    GenericExpressionRepeat1 = 534,
549    GnuAsmExpressionRepeat1 = 535,
550    GnuAsmOutputOperandListRepeat1 = 536,
551    GnuAsmInputOperandListRepeat1 = 537,
552    GnuAsmClobberListRepeat1 = 538,
553    GnuAsmGotoListRepeat1 = 539,
554    ArgumentListRepeat1 = 540,
555    ArgumentListRepeat2 = 541,
556    InitializerListRepeat1 = 542,
557    InitializerPairRepeat1 = 543,
558    CharLiteralRepeat1 = 544,
559    ConcatenatedStringRepeat1 = 545,
560    StringLiteralRepeat1 = 546,
561    AvailabilityRepeat1 = 547,
562    VersionRepeat1 = 548,
563    ModuleImportRepeat1 = 549,
564    PreprocIfInImplementationDefinitionRepeat1 = 550,
565    PreprocIfInInterfaceDeclarationRepeat1 = 551,
566    PreprocIfdefInEnumeratorRepeat1 = 552,
567    AvailabilityAttributeSpecifierRepeat1 = 553,
568    ProtocolForwardDeclarationRepeat1 = 554,
569    ClassDeclarationRepeat1 = 555,
570    ClassInterfaceRepeat1 = 556,
571    ClassImplementationRepeat1 = 557,
572    ParameterizedArgumentsRepeat1 = 558,
573    ParameterizedArgumentsRepeat2 = 559,
574    GenericArgumentsRepeat1 = 560,
575    InstanceVariablesRepeat1 = 561,
576    ProtocolDeclarationRepeat1 = 562,
577    PropertyImplementationRepeat1 = 563,
578    MethodDefinitionRepeat1 = 564,
579    MethodDefinitionRepeat2 = 565,
580    MethodTypeRepeat1 = 566,
581    KeywordSelectorRepeat1 = 567,
582    PropertyAttributesDeclarationRepeat1 = 568,
583    MethodDeclarationRepeat1 = 569,
584    MethodDeclarationRepeat2 = 570,
585    CMethodParameterRepeat1 = 571,
586    StructDeclarationRepeat1 = 572,
587    StructDeclarationRepeat2 = 573,
588    TryStatementRepeat1 = 574,
589    SelectorExpressionRepeat1 = 575,
590    SelectorExpressionRepeat2 = 576,
591    AvailableExpressionRepeat1 = 577,
592    MessageExpressionRepeat1 = 578,
593    MessageExpressionRepeat2 = 579,
594    GenericSpecifierRepeat1 = 580,
595    TypeNameRepeat1 = 581,
596    DictionaryLiteralRepeat1 = 582,
597    MethodIdentifierRepeat1 = 583,
598    MethodIdentifierRepeat2 = 584,
599    FieldIdentifier = 585,
600    StatementIdentifier = 586,
601    TypeIdentifier = 587,
602    Error = 588,
603}
604
605impl From<Objc> for &'static str {
606    #[inline]
607    fn from(tok: Objc) -> Self {
608        match tok {
609            Objc::End => "end",
610            Objc::Identifier => "identifier",
611            Objc::HASHinclude => "#include",
612            Objc::HASHimport => "#import",
613            Objc::PreprocIncludeToken3 => "preproc_include_token3",
614            Objc::HASHdefine => "#define",
615            Objc::LPAREN => "(",
616            Objc::DOTDOTDOT => "...",
617            Objc::COMMA => ",",
618            Objc::RPAREN => ")",
619            Objc::HASHif => "#if",
620            Objc::LF => "\n",
621            Objc::HASHendif => "#endif",
622            Objc::HASHifdef => "#ifdef",
623            Objc::HASHifndef => "#ifndef",
624            Objc::HASHelse => "#else",
625            Objc::HASHelif => "#elif",
626            Objc::HASHelifdef => "#elifdef",
627            Objc::HASHelifndef => "#elifndef",
628            Objc::PreprocArg => "preproc_arg",
629            Objc::PreprocDirective => "preproc_directive",
630            Objc::LPAREN2 => "(",
631            Objc::Defined => "defined",
632            Objc::BANG => "!",
633            Objc::TILDE => "~",
634            Objc::DASH => "-",
635            Objc::PLUS => "+",
636            Objc::STAR => "*",
637            Objc::SLASH => "/",
638            Objc::PERCENT => "%",
639            Objc::PIPEPIPE => "||",
640            Objc::AMPAMP => "&&",
641            Objc::PIPE => "|",
642            Objc::CARET => "^",
643            Objc::AMP => "&",
644            Objc::EQEQ => "==",
645            Objc::BANGEQ => "!=",
646            Objc::GT => ">",
647            Objc::GTEQ => ">=",
648            Objc::LTEQ => "<=",
649            Objc::LT => "<",
650            Objc::LTLT => "<<",
651            Objc::GTGT => ">>",
652            Objc::SEMI => ";",
653            Objc::Extension => "__extension__",
654            Objc::Typedef => "typedef",
655            Objc::Extern => "extern",
656            Objc::Attribute2 => "__attribute__",
657            Objc::Attribute3 => "__attribute",
658            Objc::Noreturn => "noreturn",
659            Objc::Nothrow => "nothrow",
660            Objc::COLONCOLON => "::",
661            Objc::LBRACK => "[",
662            Objc::RBRACK => "]",
663            Objc::Declspec => "__declspec",
664            Objc::Based => "__based",
665            Objc::Cdecl => "__cdecl",
666            Objc::Clrcall => "__clrcall",
667            Objc::Stdcall => "__stdcall",
668            Objc::Fastcall => "__fastcall",
669            Objc::Thiscall => "__thiscall",
670            Objc::Vectorcall => "__vectorcall",
671            Objc::MsRestrictModifier => "ms_restrict_modifier",
672            Objc::MsUnsignedPtrModifier => "ms_unsigned_ptr_modifier",
673            Objc::MsSignedPtrModifier => "ms_signed_ptr_modifier",
674            Objc::Unaligned => "_unaligned",
675            Objc::Unaligned2 => "__unaligned",
676            Objc::LBRACE => "{",
677            Objc::RBRACE => "}",
678            Objc::Signed => "signed",
679            Objc::Unsigned => "unsigned",
680            Objc::Long => "long",
681            Objc::Short => "short",
682            Objc::Static => "static",
683            Objc::EQ => "=",
684            Objc::ATautoreleasepool => "@autoreleasepool",
685            Objc::Auto => "auto",
686            Objc::Register => "register",
687            Objc::Inline => "inline",
688            Objc::Inline2 => "__inline",
689            Objc::Inline3 => "__inline__",
690            Objc::Forceinline => "__forceinline",
691            Objc::ThreadLocal => "thread_local",
692            Objc::Thread => "__thread",
693            Objc::CGEXTERN => "CG_EXTERN",
694            Objc::CGINLINE => "CG_INLINE",
695            Objc::FOUNDATIONEXPORT => "FOUNDATION_EXPORT",
696            Objc::FOUNDATIONEXTERN => "FOUNDATION_EXTERN",
697            Objc::FOUNDATIONSTATICINLINE => "FOUNDATION_STATIC_INLINE",
698            Objc::IBOutlet => "IBOutlet",
699            Objc::IBInspectable => "IBInspectable",
700            Objc::IBDESIGNABLE => "IB_DESIGNABLE",
701            Objc::NSINLINE => "NS_INLINE",
702            Objc::NSVALIDUNTILENDOFSCOPE => "NS_VALID_UNTIL_END_OF_SCOPE",
703            Objc::OBJCEXPORT => "OBJC_EXPORT",
704            Objc::OBJCROOTCLASS => "OBJC_ROOT_CLASS",
705            Objc::UIKITEXTERN => "UIKIT_EXTERN",
706            Objc::Const => "const",
707            Objc::Constexpr => "constexpr",
708            Objc::Volatile => "volatile",
709            Objc::Restrict => "restrict",
710            Objc::Restrict2 => "__restrict__",
711            Objc::Atomic => "_Atomic",
712            Objc::Noreturn2 => "_Noreturn",
713            Objc::Nonnull => "_Nonnull",
714            Objc::Nullable => "nullable",
715            Objc::Complex => "_Complex",
716            Objc::Nullable2 => "_Nullable",
717            Objc::NullableResult => "_Nullable_result",
718            Objc::NullUnspecified => "_Null_unspecified",
719            Objc::Autoreleasing => "__autoreleasing",
720            Objc::Block => "__block",
721            Objc::Bridge => "__bridge",
722            Objc::BridgeRetained => "__bridge_retained",
723            Objc::BridgeTransfer => "__bridge_transfer",
724            Objc::Complex2 => "__complex",
725            Objc::Const2 => "__const",
726            Objc::Imag => "__imag",
727            Objc::Kindof => "__kindof",
728            Objc::Nonnull2 => "__nonnull",
729            Objc::Nullable3 => "__nullable",
730            Objc::PtrauthObjcClassRo => "__ptrauth_objc_class_ro",
731            Objc::PtrauthObjcIsaPointer => "__ptrauth_objc_isa_pointer",
732            Objc::PtrauthObjcSuperPointer => "__ptrauth_objc_super_pointer",
733            Objc::Real => "__real",
734            Objc::Strong => "__strong",
735            Objc::UnsafeUnretained => "__unsafe_unretained",
736            Objc::Unused => "__unused",
737            Objc::Weak => "__weak",
738            Objc::Alignas => "alignas",
739            Objc::Alignas2 => "_Alignas",
740            Objc::PrimitiveType => "primitive_type",
741            Objc::Enum => "enum",
742            Objc::COLON => ":",
743            Objc::Struct => "struct",
744            Objc::Union => "union",
745            Objc::If => "if",
746            Objc::Else => "else",
747            Objc::Switch => "switch",
748            Objc::Case => "case",
749            Objc::Default => "default",
750            Objc::While => "while",
751            Objc::Do => "do",
752            Objc::For => "for",
753            Objc::In => "in",
754            Objc::Return => "return",
755            Objc::Break => "break",
756            Objc::Continue => "continue",
757            Objc::Goto => "goto",
758            Objc::QMARK => "?",
759            Objc::STAREQ => "*=",
760            Objc::SLASHEQ => "/=",
761            Objc::PERCENTEQ => "%=",
762            Objc::PLUSEQ => "+=",
763            Objc::DASHEQ => "-=",
764            Objc::LTLTEQ => "<<=",
765            Objc::GTGTEQ => ">>=",
766            Objc::AMPEQ => "&=",
767            Objc::CARETEQ => "^=",
768            Objc::PIPEEQ => "|=",
769            Objc::DASHDASH => "--",
770            Objc::PLUSPLUS => "++",
771            Objc::Sizeof => "sizeof",
772            Objc::Alignof => "__alignof__",
773            Objc::Alignof2 => "__alignof",
774            Objc::Alignof3 => "_alignof",
775            Objc::Alignof4 => "alignof",
776            Objc::Alignof5 => "_Alignof",
777            Objc::Offsetof => "offsetof",
778            Objc::Generic => "_Generic",
779            Objc::Asm => "asm",
780            Objc::Asm2 => "__asm__",
781            Objc::Asm3 => "__asm",
782            Objc::Volatile2 => "__volatile__",
783            Objc::LT2 => "<",
784            Objc::DOT => ".",
785            Objc::DASHGT => "->",
786            Objc::NumberLiteral => "number_literal",
787            Objc::LSQUOTE => "L'",
788            Objc::USQUOTE => "u'",
789            Objc::USQUOTE2 => "U'",
790            Objc::U8SQUOTE => "u8'",
791            Objc::SQUOTE => "'",
792            Objc::Character => "character",
793            Objc::AT => "@",
794            Objc::DQUOTE => "\"",
795            Objc::LDQUOTE => "L\"",
796            Objc::UDQUOTE => "u\"",
797            Objc::UDQUOTE2 => "U\"",
798            Objc::U8DQUOTE => "u8\"",
799            Objc::StringContent => "string_content",
800            Objc::EscapeSequence => "escape_sequence",
801            Objc::SystemLibString => "system_lib_string",
802            Objc::True => "true",
803            Objc::False => "false",
804            Objc::NULL => "NULL",
805            Objc::Nullptr => "nullptr",
806            Objc::Comment => "comment",
807            Objc::ObjcBridgeRelated => "objc_bridge_related",
808            Objc::Typeof => "__typeof__",
809            Objc::Typeof2 => "__typeof",
810            Objc::Typeof3 => "typeof",
811            Objc::Availability2 => "availability",
812            Objc::VersionNumber => "version_number",
813            Objc::Ios => "ios",
814            Objc::Tvos => "tvos",
815            Objc::Macos => "macos",
816            Objc::Macosx => "macosx",
817            Objc::Watchos => "watchos",
818            Objc::ATimport => "@import",
819            Objc::HASHundef => "#undef",
820            Objc::HASH => "#",
821            Objc::NSAUTOMATEDREFCOUNTUNAVAILABLE => "NS_AUTOMATED_REFCOUNT_UNAVAILABLE",
822            Objc::NSROOTCLASS => "NS_ROOT_CLASS",
823            Objc::NSUNAVAILABLE => "NS_UNAVAILABLE",
824            Objc::NSREQUIRESNILTERMINATION => "NS_REQUIRES_NIL_TERMINATION",
825            Objc::CFRETURNSRETAINED => "CF_RETURNS_RETAINED",
826            Objc::CFRETURNSNOTRETAINED => "CF_RETURNS_NOT_RETAINED",
827            Objc::DEPRECATEDATTRIBUTE => "DEPRECATED_ATTRIBUTE",
828            Objc::UIAPPEARANCESELECTOR => "UI_APPEARANCE_SELECTOR",
829            Objc::UNAVAILABLEATTRIBUTE => "UNAVAILABLE_ATTRIBUTE",
830            Objc::CFFORMATFUNCTION => "CF_FORMAT_FUNCTION",
831            Objc::NSAVAILABLE => "NS_AVAILABLE",
832            Objc::IOSAVAILABLE => "__IOS_AVAILABLE",
833            Objc::NSAVAILABLEIOS => "NS_AVAILABLE_IOS",
834            Objc::APIAVAILABLE => "API_AVAILABLE",
835            Objc::APIUNAVAILABLE => "API_UNAVAILABLE",
836            Objc::APIDEPRECATED => "API_DEPRECATED",
837            Objc::NSENUMAVAILABLEIOS => "NS_ENUM_AVAILABLE_IOS",
838            Objc::NSDEPRECATEDIOS => "NS_DEPRECATED_IOS",
839            Objc::NSENUMDEPRECATEDIOS => "NS_ENUM_DEPRECATED_IOS",
840            Objc::NSFORMATFUNCTION => "NS_FORMAT_FUNCTION",
841            Objc::DEPRECATEDMSGATTRIBUTE => "DEPRECATED_MSG_ATTRIBUTE",
842            Objc::DeprecatedMsg => "__deprecated_msg",
843            Objc::DeprecatedEnumMsg => "__deprecated_enum_msg",
844            Objc::NSSWIFTNAME => "NS_SWIFT_NAME",
845            Objc::NSSWIFTUNAVAILABLE => "NS_SWIFT_UNAVAILABLE",
846            Objc::NSEXTENSIONUNAVAILABLEIOS => "NS_EXTENSION_UNAVAILABLE_IOS",
847            Objc::NSCLASSAVAILABLEIOS => "NS_CLASS_AVAILABLE_IOS",
848            Objc::NSCLASSDEPRECATEDIOS => "NS_CLASS_DEPRECATED_IOS",
849            Objc::OSXAVAILABLESTARTING => "__OSX_AVAILABLE_STARTING",
850            Objc::ATprotocol => "@protocol",
851            Objc::Class => "class",
852            Objc::ATend => "@end",
853            Objc::ATinterface => "@interface",
854            Objc::ATimplementation => "@implementation",
855            Objc::Covariant => "__covariant",
856            Objc::Contravariant => "__contravariant",
857            Objc::ATprivate => "@private",
858            Objc::ATprotected => "@protected",
859            Objc::ATpackage => "@package",
860            Objc::ATpublic => "@public",
861            Objc::ATcompatibilityAlias => "@compatibility_alias",
862            Objc::AToptional => "@optional",
863            Objc::ATrequired => "@required",
864            Objc::ATsynthesize => "@synthesize",
865            Objc::ATdynamic => "@dynamic",
866            Objc::LPARENclassRPAREN => "(class)",
867            Objc::ATproperty => "@property",
868            Objc::ATtry => "@try",
869            Objc::Try => "__try",
870            Objc::ATcatch => "@catch",
871            Objc::Catch => "__catch",
872            Objc::ATfinally => "@finally",
873            Objc::Finally => "__finally",
874            Objc::ATthrow => "@throw",
875            Objc::ATselector => "@selector",
876            Objc::SelectorExpressionToken1 => "selector_expression_token1",
877            Objc::ATavailable => "@available",
878            Objc::BuiltinAvailable => "__builtin_available",
879            Objc::VaArg => "va_arg",
880            Objc::MsAsmBlockToken1 => "ms_asm_block_token1",
881            Objc::ATencode => "@encode",
882            Objc::ATsynchronized => "@synchronized",
883            Objc::BOOL => "BOOL",
884            Objc::IMP => "IMP",
885            Objc::SEL => "SEL",
886            Objc::Class2 => "Class",
887            Objc::Id => "id",
888            Objc::ATdefs => "@defs",
889            Objc::Out => "out",
890            Objc::Inout => "inout",
891            Objc::Bycopy => "bycopy",
892            Objc::Byref => "byref",
893            Objc::Oneway => "oneway",
894            Objc::COLON2 => ":",
895            Objc::TranslationUnit => "translation_unit",
896            Objc::TopLevelItem => "_top_level_item",
897            Objc::BlockItem => "_block_item",
898            Objc::PreprocInclude => "preproc_include",
899            Objc::PreprocDef => "preproc_def",
900            Objc::PreprocFunctionDef => "preproc_function_def",
901            Objc::PreprocParams => "preproc_params",
902            Objc::PreprocCall => "preproc_call",
903            Objc::PreprocIf => "preproc_if",
904            Objc::PreprocIfdef => "preproc_ifdef",
905            Objc::PreprocElse => "preproc_else",
906            Objc::PreprocElif => "preproc_elif",
907            Objc::PreprocElifdef => "preproc_elifdef",
908            Objc::PreprocIf2 => "preproc_if",
909            Objc::PreprocIfdef2 => "preproc_ifdef",
910            Objc::PreprocElse2 => "preproc_else",
911            Objc::PreprocElif2 => "preproc_elif",
912            Objc::PreprocElifdef2 => "preproc_elifdef",
913            Objc::PreprocExpression => "_preproc_expression",
914            Objc::ParenthesizedExpression => "parenthesized_expression",
915            Objc::PreprocDefined => "preproc_defined",
916            Objc::UnaryExpression => "unary_expression",
917            Objc::CallExpression => "call_expression",
918            Objc::ArgumentList => "argument_list",
919            Objc::BinaryExpression => "binary_expression",
920            Objc::FunctionDefinition => "function_definition",
921            Objc::FunctionDefinition2 => "function_definition",
922            Objc::Declaration => "declaration",
923            Objc::TypeDefinition => "type_definition",
924            Objc::TypeDefinitionType => "_type_definition_type",
925            Objc::TypeDefinitionDeclarators => "_type_definition_declarators",
926            Objc::DeclarationModifiers => "_declaration_modifiers",
927            Objc::DeclarationSpecifiers => "_declaration_specifiers",
928            Objc::LinkageSpecification => "linkage_specification",
929            Objc::AttributeSpecifier => "attribute_specifier",
930            Objc::Attribute => "attribute",
931            Objc::AttributeDeclaration => "attribute_declaration",
932            Objc::MsDeclspecModifier => "ms_declspec_modifier",
933            Objc::MsBasedModifier => "ms_based_modifier",
934            Objc::MsCallModifier => "ms_call_modifier",
935            Objc::MsUnalignedPtrModifier => "ms_unaligned_ptr_modifier",
936            Objc::MsPointerModifier => "ms_pointer_modifier",
937            Objc::DeclarationList => "declaration_list",
938            Objc::Declarator => "_declarator",
939            Objc::FieldDeclarator => "_field_declarator",
940            Objc::TypeDeclarator => "_type_declarator",
941            Objc::AbstractDeclarator => "_abstract_declarator",
942            Objc::ParenthesizedDeclarator => "parenthesized_declarator",
943            Objc::ParenthesizedDeclarator2 => "parenthesized_declarator",
944            Objc::ParenthesizedDeclarator3 => "parenthesized_declarator",
945            Objc::AbstractParenthesizedDeclarator => "abstract_parenthesized_declarator",
946            Objc::AttributedDeclarator => "attributed_declarator",
947            Objc::PointerDeclarator => "pointer_declarator",
948            Objc::PointerDeclarator2 => "pointer_declarator",
949            Objc::PointerDeclarator3 => "pointer_declarator",
950            Objc::AbstractPointerDeclarator => "abstract_pointer_declarator",
951            Objc::FunctionDeclarator => "function_declarator",
952            Objc::FunctionDeclarator2 => "function_declarator",
953            Objc::FunctionDeclarator3 => "function_declarator",
954            Objc::AbstractFunctionDeclarator => "abstract_function_declarator",
955            Objc::FunctionDeclarator4 => "function_declarator",
956            Objc::ArrayDeclarator => "array_declarator",
957            Objc::ArrayDeclarator2 => "array_declarator",
958            Objc::ArrayDeclarator3 => "array_declarator",
959            Objc::AbstractArrayDeclarator => "abstract_array_declarator",
960            Objc::InitDeclarator => "init_declarator",
961            Objc::CompoundStatement => "compound_statement",
962            Objc::StorageClassSpecifier => "storage_class_specifier",
963            Objc::TypeQualifier => "type_qualifier",
964            Objc::AlignasQualifier => "alignas_qualifier",
965            Objc::TypeSpecifier => "type_specifier",
966            Objc::SizedTypeSpecifier => "sized_type_specifier",
967            Objc::EnumSpecifier => "enum_specifier",
968            Objc::EnumeratorList => "enumerator_list",
969            Objc::StructSpecifier => "struct_specifier",
970            Objc::UnionSpecifier => "union_specifier",
971            Objc::FieldDeclarationList => "field_declaration_list",
972            Objc::FieldDeclarationListItem => "_field_declaration_list_item",
973            Objc::FieldDeclaration => "field_declaration",
974            Objc::BitfieldClause => "bitfield_clause",
975            Objc::Enumerator => "enumerator",
976            Objc::VariadicParameter => "variadic_parameter",
977            Objc::ParameterList => "parameter_list",
978            Objc::ParameterList2 => "parameter_list",
979            Objc::ParameterDeclaration => "parameter_declaration",
980            Objc::AttributedStatement => "attributed_statement",
981            Objc::Statement => "statement",
982            Objc::TopLevelStatement => "_top_level_statement",
983            Objc::LabeledStatement => "labeled_statement",
984            Objc::ExpressionStatement => "expression_statement",
985            Objc::ExpressionStatement2 => "expression_statement",
986            Objc::IfStatement => "if_statement",
987            Objc::ElseClause => "else_clause",
988            Objc::SwitchStatement => "switch_statement",
989            Objc::CaseStatement => "case_statement",
990            Objc::WhileStatement => "while_statement",
991            Objc::DoStatement => "do_statement",
992            Objc::ForStatement => "for_statement",
993            Objc::ForStatementBody => "_for_statement_body",
994            Objc::ReturnStatement => "return_statement",
995            Objc::BreakStatement => "break_statement",
996            Objc::ContinueStatement => "continue_statement",
997            Objc::GotoStatement => "goto_statement",
998            Objc::Expression => "expression",
999            Objc::String => "_string",
1000            Objc::CommaExpression => "comma_expression",
1001            Objc::ConditionalExpression => "conditional_expression",
1002            Objc::AssignmentExpression => "assignment_expression",
1003            Objc::PointerExpression => "pointer_expression",
1004            Objc::UnaryExpression2 => "unary_expression",
1005            Objc::BinaryExpression2 => "binary_expression",
1006            Objc::UpdateExpression => "update_expression",
1007            Objc::CastExpression => "cast_expression",
1008            Objc::TypeDescriptor => "type_descriptor",
1009            Objc::SizeofExpression => "sizeof_expression",
1010            Objc::AlignofExpression => "alignof_expression",
1011            Objc::OffsetofExpression => "offsetof_expression",
1012            Objc::GenericExpression => "generic_expression",
1013            Objc::SubscriptExpression => "subscript_expression",
1014            Objc::CallExpression2 => "call_expression",
1015            Objc::GnuAsmExpression => "gnu_asm_expression",
1016            Objc::GnuAsmQualifier => "gnu_asm_qualifier",
1017            Objc::GnuAsmOutputOperandList => "gnu_asm_output_operand_list",
1018            Objc::GnuAsmOutputOperand => "gnu_asm_output_operand",
1019            Objc::GnuAsmInputOperandList => "gnu_asm_input_operand_list",
1020            Objc::GnuAsmInputOperand => "gnu_asm_input_operand",
1021            Objc::GnuAsmClobberList => "gnu_asm_clobber_list",
1022            Objc::GnuAsmGotoList => "gnu_asm_goto_list",
1023            Objc::ExtensionExpression => "extension_expression",
1024            Objc::ArgumentList2 => "argument_list",
1025            Objc::FieldExpression => "field_expression",
1026            Objc::CompoundLiteralExpression => "compound_literal_expression",
1027            Objc::ParenthesizedExpression2 => "parenthesized_expression",
1028            Objc::InitializerList => "initializer_list",
1029            Objc::InitializerPair => "initializer_pair",
1030            Objc::SubscriptDesignator => "subscript_designator",
1031            Objc::SubscriptRangeDesignator => "subscript_range_designator",
1032            Objc::FieldDesignator => "field_designator",
1033            Objc::CharLiteral => "char_literal",
1034            Objc::ConcatenatedString => "concatenated_string",
1035            Objc::StringLiteral => "string_literal",
1036            Objc::Null => "null",
1037            Objc::EmptyDeclaration => "_empty_declaration",
1038            Objc::MacroTypeSpecifier => "macro_type_specifier",
1039            Objc::ObjcBridge => "objc_bridge",
1040            Objc::TypeofSpecifier => "typeof_specifier",
1041            Objc::Availability => "availability",
1042            Objc::Version => "version",
1043            Objc::Platform => "platform",
1044            Objc::ModuleImport => "module_import",
1045            Objc::PreprocIf3 => "preproc_if",
1046            Objc::PreprocElse3 => "preproc_else",
1047            Objc::PreprocElif3 => "preproc_elif",
1048            Objc::PreprocIf4 => "preproc_if",
1049            Objc::PreprocElse4 => "preproc_else",
1050            Objc::PreprocElif4 => "preproc_elif",
1051            Objc::PreprocIfdef3 => "preproc_ifdef",
1052            Objc::PreprocElse5 => "preproc_else",
1053            Objc::PreprocElif5 => "preproc_elif",
1054            Objc::PreprocUndef => "preproc_undef",
1055            Objc::PreprocLinemarker => "preproc_linemarker",
1056            Objc::AvailabilityAttributeSpecifier => "availability_attribute_specifier",
1057            Objc::ProtocolForwardDeclaration => "protocol_forward_declaration",
1058            Objc::ClassDeclaration => "class_declaration",
1059            Objc::ClassInterface => "class_interface",
1060            Objc::ClassInterfaceHeader => "_class_interface_header",
1061            Objc::TypeParams => "_type_params",
1062            Objc::ClassInterfaceInheritance => "_class_interface_inheritance",
1063            Objc::ClassImplementation => "class_implementation",
1064            Objc::ClassImplementationHeader => "_class_implementation_header",
1065            Objc::ClassImplementationInheritance => "_class_implementation_inheritance",
1066            Objc::ProtocolReferenceList => "protocol_reference_list",
1067            Objc::ParameterizedArguments => "parameterized_arguments",
1068            Objc::GenericArguments => "generic_arguments",
1069            Objc::InstanceVariables => "instance_variables",
1070            Objc::InstanceVariable => "instance_variable",
1071            Objc::VisibilitySpecification => "visibility_specification",
1072            Objc::ProtocolDeclaration => "protocol_declaration",
1073            Objc::CompatibilityAliasDeclaration => "compatibility_alias_declaration",
1074            Objc::QualifiedProtocolInterfaceDeclaration => {
1075                "qualified_protocol_interface_declaration"
1076            }
1077            Objc::ImplementationDefinition => "implementation_definition",
1078            Objc::PropertyImplementation => "property_implementation",
1079            Objc::MethodDefinition => "method_definition",
1080            Objc::MethodType => "method_type",
1081            Objc::KeywordDeclarator => "keyword_declarator",
1082            Objc::PropertyDeclaration => "property_declaration",
1083            Objc::PropertyAttributesDeclaration => "property_attributes_declaration",
1084            Objc::PropertyAttribute => "property_attribute",
1085            Objc::MethodDeclaration => "method_declaration",
1086            Objc::MethodParameter => "method_parameter",
1087            Objc::MethodParameter2 => "method_parameter",
1088            Objc::StructDeclaration => "struct_declaration",
1089            Objc::AtomicDeclaration => "atomic_declaration",
1090            Objc::SpecifierQualifier => "specifier_qualifier",
1091            Objc::StructDeclarator => "struct_declarator",
1092            Objc::TryStatement => "try_statement",
1093            Objc::CatchClause => "catch_clause",
1094            Objc::FinallyClause => "finally_clause",
1095            Objc::ThrowStatement => "throw_statement",
1096            Objc::SelectorExpression => "selector_expression",
1097            Objc::AvailableExpression => "available_expression",
1098            Objc::RangeExpression => "range_expression",
1099            Objc::BlockLiteral => "block_literal",
1100            Objc::MessageExpression => "message_expression",
1101            Objc::VaArgExpression => "va_arg_expression",
1102            Objc::MsAsmBlock => "ms_asm_block",
1103            Objc::EncodeExpression => "encode_expression",
1104            Objc::SynchronizedStatement => "synchronized_statement",
1105            Objc::BlockPointerDeclarator => "block_pointer_declarator",
1106            Objc::BlockPointerDeclarator2 => "block_pointer_declarator",
1107            Objc::BlockPointerDeclarator3 => "block_pointer_declarator",
1108            Objc::AbstractBlockPointerDeclarator => "abstract_block_pointer_declarator",
1109            Objc::GenericSpecifier => "generic_specifier",
1110            Objc::TypedefedSpecifier => "typedefed_specifier",
1111            Objc::ArrayTypeSpecifier => "array_type_specifier",
1112            Objc::AtdefField => "atdef_field",
1113            Objc::ProtocolQualifier => "protocol_qualifier",
1114            Objc::TypeName => "type_name",
1115            Objc::AtExpression => "at_expression",
1116            Objc::DictionaryLiteral => "dictionary_literal",
1117            Objc::DictionaryPair => "dictionary_pair",
1118            Objc::ArrayLiteral => "array_literal",
1119            Objc::MethodIdentifier => "method_identifier",
1120            Objc::TranslationUnitRepeat1 => "translation_unit_repeat1",
1121            Objc::PreprocParamsRepeat1 => "preproc_params_repeat1",
1122            Objc::PreprocIfRepeat1 => "preproc_if_repeat1",
1123            Objc::PreprocIfInFieldDeclarationListRepeat1 => {
1124                "preproc_if_in_field_declaration_list_repeat1"
1125            }
1126            Objc::PreprocArgumentListRepeat1 => "preproc_argument_list_repeat1",
1127            Objc::OldStyleFunctionDefinitionRepeat1 => "_old_style_function_definition_repeat1",
1128            Objc::DeclarationRepeat1 => "declaration_repeat1",
1129            Objc::TypeDefinitionTypeRepeat1 => "_type_definition_type_repeat1",
1130            Objc::TypeDefinitionDeclaratorsRepeat1 => "_type_definition_declarators_repeat1",
1131            Objc::DeclarationSpecifiersRepeat1 => "_declaration_specifiers_repeat1",
1132            Objc::AttributeSpecifierRepeat1 => "attribute_specifier_repeat1",
1133            Objc::AttributeRepeat1 => "attribute_repeat1",
1134            Objc::AttributeDeclarationRepeat1 => "attribute_declaration_repeat1",
1135            Objc::DeclarationListRepeat1 => "declaration_list_repeat1",
1136            Objc::AttributedFieldDeclaratorRepeat1 => "attributed_field_declarator_repeat1",
1137            Objc::PointerDeclaratorRepeat1 => "pointer_declarator_repeat1",
1138            Objc::FunctionDeclaratorRepeat1 => "function_declarator_repeat1",
1139            Objc::FunctionFieldDeclaratorRepeat1 => "function_field_declarator_repeat1",
1140            Objc::ArrayDeclaratorRepeat1 => "array_declarator_repeat1",
1141            Objc::SizedTypeSpecifierRepeat1 => "sized_type_specifier_repeat1",
1142            Objc::EnumeratorListRepeat1 => "enumerator_list_repeat1",
1143            Objc::FieldDeclarationRepeat1 => "field_declaration_repeat1",
1144            Objc::ParameterListRepeat1 => "parameter_list_repeat1",
1145            Objc::OldStyleParameterListRepeat1 => "_old_style_parameter_list_repeat1",
1146            Objc::CaseStatementRepeat1 => "case_statement_repeat1",
1147            Objc::GenericExpressionRepeat1 => "generic_expression_repeat1",
1148            Objc::GnuAsmExpressionRepeat1 => "gnu_asm_expression_repeat1",
1149            Objc::GnuAsmOutputOperandListRepeat1 => "gnu_asm_output_operand_list_repeat1",
1150            Objc::GnuAsmInputOperandListRepeat1 => "gnu_asm_input_operand_list_repeat1",
1151            Objc::GnuAsmClobberListRepeat1 => "gnu_asm_clobber_list_repeat1",
1152            Objc::GnuAsmGotoListRepeat1 => "gnu_asm_goto_list_repeat1",
1153            Objc::ArgumentListRepeat1 => "argument_list_repeat1",
1154            Objc::ArgumentListRepeat2 => "argument_list_repeat2",
1155            Objc::InitializerListRepeat1 => "initializer_list_repeat1",
1156            Objc::InitializerPairRepeat1 => "initializer_pair_repeat1",
1157            Objc::CharLiteralRepeat1 => "char_literal_repeat1",
1158            Objc::ConcatenatedStringRepeat1 => "concatenated_string_repeat1",
1159            Objc::StringLiteralRepeat1 => "string_literal_repeat1",
1160            Objc::AvailabilityRepeat1 => "availability_repeat1",
1161            Objc::VersionRepeat1 => "version_repeat1",
1162            Objc::ModuleImportRepeat1 => "module_import_repeat1",
1163            Objc::PreprocIfInImplementationDefinitionRepeat1 => {
1164                "preproc_if_in_implementation_definition_repeat1"
1165            }
1166            Objc::PreprocIfInInterfaceDeclarationRepeat1 => {
1167                "preproc_if_in_interface_declaration_repeat1"
1168            }
1169            Objc::PreprocIfdefInEnumeratorRepeat1 => "preproc_ifdef_in_enumerator_repeat1",
1170            Objc::AvailabilityAttributeSpecifierRepeat1 => {
1171                "availability_attribute_specifier_repeat1"
1172            }
1173            Objc::ProtocolForwardDeclarationRepeat1 => "protocol_forward_declaration_repeat1",
1174            Objc::ClassDeclarationRepeat1 => "class_declaration_repeat1",
1175            Objc::ClassInterfaceRepeat1 => "class_interface_repeat1",
1176            Objc::ClassImplementationRepeat1 => "class_implementation_repeat1",
1177            Objc::ParameterizedArgumentsRepeat1 => "parameterized_arguments_repeat1",
1178            Objc::ParameterizedArgumentsRepeat2 => "parameterized_arguments_repeat2",
1179            Objc::GenericArgumentsRepeat1 => "generic_arguments_repeat1",
1180            Objc::InstanceVariablesRepeat1 => "instance_variables_repeat1",
1181            Objc::ProtocolDeclarationRepeat1 => "protocol_declaration_repeat1",
1182            Objc::PropertyImplementationRepeat1 => "property_implementation_repeat1",
1183            Objc::MethodDefinitionRepeat1 => "method_definition_repeat1",
1184            Objc::MethodDefinitionRepeat2 => "method_definition_repeat2",
1185            Objc::MethodTypeRepeat1 => "method_type_repeat1",
1186            Objc::KeywordSelectorRepeat1 => "keyword_selector_repeat1",
1187            Objc::PropertyAttributesDeclarationRepeat1 => "property_attributes_declaration_repeat1",
1188            Objc::MethodDeclarationRepeat1 => "method_declaration_repeat1",
1189            Objc::MethodDeclarationRepeat2 => "method_declaration_repeat2",
1190            Objc::CMethodParameterRepeat1 => "c_method_parameter_repeat1",
1191            Objc::StructDeclarationRepeat1 => "struct_declaration_repeat1",
1192            Objc::StructDeclarationRepeat2 => "struct_declaration_repeat2",
1193            Objc::TryStatementRepeat1 => "try_statement_repeat1",
1194            Objc::SelectorExpressionRepeat1 => "selector_expression_repeat1",
1195            Objc::SelectorExpressionRepeat2 => "selector_expression_repeat2",
1196            Objc::AvailableExpressionRepeat1 => "available_expression_repeat1",
1197            Objc::MessageExpressionRepeat1 => "message_expression_repeat1",
1198            Objc::MessageExpressionRepeat2 => "message_expression_repeat2",
1199            Objc::GenericSpecifierRepeat1 => "generic_specifier_repeat1",
1200            Objc::TypeNameRepeat1 => "type_name_repeat1",
1201            Objc::DictionaryLiteralRepeat1 => "dictionary_literal_repeat1",
1202            Objc::MethodIdentifierRepeat1 => "method_identifier_repeat1",
1203            Objc::MethodIdentifierRepeat2 => "method_identifier_repeat2",
1204            Objc::FieldIdentifier => "field_identifier",
1205            Objc::StatementIdentifier => "statement_identifier",
1206            Objc::TypeIdentifier => "type_identifier",
1207            Objc::Error => "ERROR",
1208        }
1209    }
1210}
1211
1212impl From<u16> for Objc {
1213    #[inline]
1214    fn from(x: u16) -> Self {
1215        num_traits::FromPrimitive::from_u16(x).unwrap_or(Self::Error)
1216    }
1217}
1218
1219// Objc == u16
1220impl PartialEq<u16> for Objc {
1221    #[inline]
1222    fn eq(&self, x: &u16) -> bool {
1223        *self == Into::<Self>::into(*x)
1224    }
1225}
1226
1227// u16 == Objc
1228impl PartialEq<Objc> for u16 {
1229    #[inline]
1230    fn eq(&self, x: &Objc) -> bool {
1231        *x == *self
1232    }
1233}