Skip to main content

big_code_analysis_ast/languages/
language_perl.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 Perl {
14    End = 0,
15    Identifier = 1,
16    LTLT = 2,
17    PodStatementToken1 = 3,
18    FILE = 4,
19    LINE = 5,
20    PACKAGE = 6,
21    SUB = 7,
22    END = 8,
23    DATA = 9,
24    Use = 10,
25    Parent = 11,
26    COMMA = 12,
27    LPAREN = 13,
28    RPAREN = 14,
29    Constant = 15,
30    Sub = 16,
31    BEGIN = 17,
32    UNITCHECK = 18,
33    CHECK = 19,
34    INIT = 20,
35    END2 = 21,
36    Package = 22,
37    DOTDOTDOT = 23,
38    No = 24,
39    Feature = 25,
40    If = 26,
41    DASHGT = 27,
42    Import = 28,
43    Subs = 29,
44    Require = 30,
45    Unless = 31,
46    While = 32,
47    Until = 33,
48    For = 34,
49    Foreach = 35,
50    When = 36,
51    Elsif = 37,
52    Else = 38,
53    Continue2 = 39,
54    BSLASH = 40,
55    Our = 41,
56    State = 42,
57    My = 43,
58    Local = 44,
59    COLON = 45,
60    Prototype2 = 46,
61    LBRACE = 47,
62    RBRACE = 48,
63    Prototype = 49,
64    Return = 50,
65    COLONCOLON = 51,
66    COLONCOLON2 = 52,
67    Bless2 = 53,
68    Goto = 54,
69    QMARK = 55,
70    PLUSPLUS = 56,
71    DASHDASH = 57,
72    STARSTAR = 58,
73    BANG = 59,
74    TILDE = 60,
75    PLUS = 61,
76    DASH = 62,
77    EQTILDE = 63,
78    BANGTILDE = 64,
79    STAR = 65,
80    Bodmas1Token1 = 66,
81    Bodmas1Token2 = 67,
82    Bodmas1Token3 = 68,
83    Bodmas1Token4 = 69,
84    DOT = 70,
85    GTGT = 71,
86    LT = 72,
87    GT = 73,
88    LTEQ = 74,
89    GTEQ = 75,
90    Lt = 76,
91    Gt = 77,
92    Le = 78,
93    Ge = 79,
94    EQEQ = 80,
95    BANGEQ = 81,
96    Eq = 82,
97    Ne = 83,
98    LTEQGT = 84,
99    Cmp = 85,
100    TILDETILDE = 86,
101    Isa = 87,
102    BitwiseAndExpToken1 = 88,
103    PIPE = 89,
104    CARET = 90,
105    AMPAMP = 91,
106    PIPEPIPE = 92,
107    SLASHSLASH = 93,
108    DOTDOT = 94,
109    EQ = 95,
110    STARSTAREQ = 96,
111    PLUSEQ = 97,
112    STAREQ = 98,
113    AMPEQ = 99,
114    AMPDOTEQ = 100,
115    LTLTEQ = 101,
116    AMPAMPEQ = 102,
117    DASHEQ = 103,
118    SLASHEQ = 104,
119    PIPEEQ = 105,
120    PIPEDOTEQ = 106,
121    GTGTEQ = 107,
122    PIPEPIPEEQ = 108,
123    DOTEQ = 109,
124    PERCENTEQ = 110,
125    CARETEQ = 111,
126    CARETDOTEQ = 112,
127    SLASHSLASHEQ = 113,
128    XEQ = 114,
129    Not = 115,
130    And = 116,
131    Or = 117,
132    Xor = 118,
133    FileHandleOperatorToken1 = 119,
134    StandardInputToken1 = 120,
135    StandardInputToken2 = 121,
136    StandardInputToken3 = 122,
137    StandardInputToken4 = 123,
138    FileHandle = 124,
139    GT2 = 125,
140    Method = 126,
141    Func = 127,
142    Integer = 128,
143    FloatingPoint = 129,
144    ScientificNotation = 130,
145    Hexadecimal = 131,
146    Octal = 132,
147    VersionToken1 = 133,
148    VersionToken2 = 134,
149    VersionToken3 = 135,
150    Next = 136,
151    Last = 137,
152    Redo = 138,
153    SQUOTE = 139,
154    ModuleNameToken1 = 140,
155    DQUOTE = 141,
156    SEMI = 142,
157    Q = 143,
158    Qq = 144,
159    Qx = 145,
160    BQUOTE = 146,
161    BacktickQuotedToken1 = 147,
162    Qw = 148,
163    M = 149,
164    SLASH = 150,
165    Qr = 151,
166    S = 152,
167    Tr = 153,
168    Y = 154,
169    LBRACK = 155,
170    RegexPatternContentToken1 = 156,
171    RegexPatternContentToken2 = 157,
172    RBRACK = 158,
173    RegexPatternContentToken3 = 159,
174    HASH = 160,
175    RegexOption = 161,
176    RegexOptionForSubstitution = 162,
177    RegexOptionForTransliteration = 163,
178    EscapeSequenceToken1 = 164,
179    DASHGTLBRACK = 165,
180    LBRACK2 = 166,
181    True = 167,
182    False = 168,
183    DOLLAR = 169,
184    SpecialScalarVariableToken1 = 170,
185    ArrayVariableToken1 = 171,
186    ArrayVariableToken2 = 172,
187    ArrayVariableToken3 = 173,
188    HashVariableToken1 = 174,
189    HashVariableToken2 = 175,
190    HashVariableToken3 = 176,
191    DOLLARHASH = 177,
192    AT = 178,
193    PERCENT = 179,
194    FatComma = 180,
195    Super = 181,
196    NoRequire = 182,
197    CommentsToken1 = 183,
198    ScalarVariableExternal = 184,
199    StartDelimiter = 185,
200    EndDelimiter = 186,
201    StringContent = 187,
202    StringSingleQuotedContent = 188,
203    StringSingleQQuotedContent = 189,
204    StringQqQuotedContent = 190,
205    StringDoubleQuotedContent = 191,
206    StartDelimiterQw = 192,
207    ListItem = 193,
208    EndDelimiterQw = 194,
209    StartDelimiter2 = 195,
210    StartDelimiterSlash = 196,
211    RegexPattern = 197,
212    EndDelimiter2 = 198,
213    StartDelimiter3 = 199,
214    SearchReplaceContent = 200,
215    SeparatorDelimiter = 201,
216    EndDelimiter3 = 202,
217    StartDelimiter4 = 203,
218    TransliterationContent = 204,
219    SeparatorDelimiter2 = 205,
220    EndDelimiter4 = 206,
221    ImaginaryHeredocStart = 207,
222    HeredocStartIdentifier = 208,
223    HeredocContent = 209,
224    HeredocEndIdentifier = 210,
225    PodContent = 211,
226    DataNotForCompiler = 212,
227    AutomaticSemicolon = 213,
228    SourceFile = 214,
229    Statement = 215,
230    HeredocInitializer = 216,
231    HeredocOperator = 217,
232    HeredocBodyStatement = 218,
233    PodStatement = 219,
234    SpecialLiteral = 220,
235    UseParentStatement = 221,
236    UseConstantStatement = 222,
237    SpecialBlock = 223,
238    PackageStatement = 224,
239    EllipsisStatement = 225,
240    UseNoVersion = 226,
241    UseNoFeatureStatement = 227,
242    ExpressionOrReturnExpression = 228,
243    SingleLineStatement = 229,
244    StatementModifiers = 230,
245    CompoundStatement = 231,
246    ExpressionStatement = 232,
247    UseNoStatement = 233,
248    UseNoIfStatement = 234,
249    BarewordImport = 235,
250    UseNoSubsStatement = 236,
251    RequireStatement = 237,
252    IfSimpleStatement = 238,
253    IfSimple = 239,
254    UnlessSimpleStatement = 240,
255    WhileSimpleStatement = 241,
256    UntilSimpleStatement = 242,
257    ForSimpleStatement = 243,
258    WhenSimpleStatement = 244,
259    IfStatement = 245,
260    UnlessStatement = 246,
261    ElsifClause = 247,
262    ElseClause = 248,
263    WhileStatement = 249,
264    Continue = 250,
265    UntilStatement = 251,
266    ForStatement1 = 252,
267    ForStatement2 = 253,
268    ForParenthesize = 254,
269    Declaration = 255,
270    VariableDeclaration = 256,
271    VariableDec = 257,
272    Scope = 258,
273    FunctionOptions = 259,
274    FunctionDefinition = 260,
275    FunctionDefinitionWithoutSub = 261,
276    AnonymousFunction = 262,
277    Block = 263,
278    FunctionSignature2 = 264,
279    FunctionPrototype = 265,
280    FunctionAttribute = 266,
281    StandaloneBlock = 267,
282    Label = 268,
283    BlockStatements = 269,
284    LoopControlStatement = 270,
285    ReturnExpression = 271,
286    ExpressionWithoutLValue = 272,
287    ExpressionWithoutBareword = 273,
288    Expression = 274,
289    PackageVariable = 275,
290    Bless = 276,
291    GotoExpression = 277,
292    BinaryExpression = 278,
293    UnaryExpression = 279,
294    TernaryExpression = 280,
295    AutoIncrementDecrement = 281,
296    Exponentiation = 282,
297    SymbolicUnary = 283,
298    BindingExpression = 284,
299    Bodmas1 = 285,
300    Bodmas2 = 286,
301    ShiftExpression = 287,
302    RelationalExpression = 288,
303    EqualityExpression = 289,
304    ClassInstanceExp = 290,
305    BitwiseAndExp = 291,
306    BitwiseOrXorExp = 292,
307    LogicalAndExp = 293,
308    LogicalOrsExp = 294,
309    RangeExp = 295,
310    AssignmentExp = 296,
311    UnaryNot = 297,
312    UnaryAnd = 298,
313    LogicalVerbalOrXor = 299,
314    FileHandleOperator = 300,
315    IOOperator = 301,
316    StandardInput = 302,
317    StandardInputToIdentifier = 303,
318    StandardInputToVariable = 304,
319    CallExpressionWithSpacedArgs = 305,
320    CallExpressionWithSub = 306,
321    CallExpressionWithArgsWithBrackets = 307,
322    CallExpressionWithVariable = 308,
323    CallExpressionWithBareword = 309,
324    AndBeforeSub = 310,
325    MethodInvocation = 311,
326    ArgumentChoice = 312,
327    ParenthesizedArgument = 313,
328    Arguments = 314,
329    CallExpressionRecursive = 315,
330    PrimitiveExpression = 316,
331    Variables = 317,
332    AccessVariables = 318,
333    ScalarType = 319,
334    String = 320,
335    InterpolatableString = 321,
336    ResolvesToDigit = 322,
337    ArrayType = 323,
338    NumericLiterals = 324,
339    Version = 325,
340    LoopControlKeyword = 326,
341    PackageName = 327,
342    ModuleName = 328,
343    StringSingleQuoted = 329,
344    StringQQuoted = 330,
345    StringDoubleQuoted = 331,
346    StringQqQuoted = 332,
347    CommandQxQuoted = 333,
348    BacktickQuoted = 334,
349    WordListQw = 335,
350    PatternMatcherM = 336,
351    PatternMatcher = 337,
352    RegexPatternQr = 338,
353    SubstitutionPatternS = 339,
354    TransliterationTrOrY = 340,
355    RegexPatternContent = 341,
356    EscapeSequence = 342,
357    Interpolation = 343,
358    HashAccessInInterpolation = 344,
359    ArrayAccessInInterpolation = 345,
360    Boolean = 346,
361    SpecialScalarVariable = 347,
362    ScalarVariable = 348,
363    Typeglob = 349,
364    ArrayAccessVariable = 350,
365    HashAccessVariableSimple = 351,
366    HashAccessVariable = 352,
367    ArrayVariable = 353,
368    HashVariable = 354,
369    List = 355,
370    Array = 356,
371    ArrayRef = 357,
372    HashRef = 358,
373    Reference = 359,
374    ToReference = 360,
375    Dereference = 361,
376    ScalarDereference = 362,
377    LengthExpression = 363,
378    ArrayDereference = 364,
379    HashDereference = 365,
380    KeywordsInHashKey = 366,
381    ArrowOperator = 367,
382    CommaOperator = 368,
383    NormalComma = 369,
384    Comments = 370,
385    SourceFileRepeat1 = 371,
386    HeredocBodyStatementRepeat1 = 372,
387    UseParentStatementRepeat1 = 373,
388    ExpressionStatementRepeat1 = 374,
389    IfStatementRepeat1 = 375,
390    BlockRepeat1 = 376,
391    FunctionAttributeRepeat1 = 377,
392    PackageVariableRepeat1 = 378,
393    RelationalExpressionRepeat1 = 379,
394    EqualityExpressionRepeat1 = 380,
395    PackageNameRepeat1 = 381,
396    StringSingleQuotedRepeat1 = 382,
397    StringQQuotedRepeat1 = 383,
398    StringDoubleQuotedRepeat1 = 384,
399    StringQqQuotedRepeat1 = 385,
400    BacktickQuotedRepeat1 = 386,
401    WordListQwRepeat1 = 387,
402    PatternMatcherMRepeat1 = 388,
403    SubstitutionPatternSRepeat1 = 389,
404    TransliterationTrOrYRepeat1 = 390,
405    RegexPatternContentRepeat1 = 391,
406    RegexPatternContentRepeat2 = 392,
407    HashAccessInInterpolationRepeat1 = 393,
408    ArrayAccessInInterpolationRepeat1 = 394,
409    FunctionSignature = 395,
410    Error = 396,
411}
412
413impl From<Perl> for &'static str {
414    #[inline]
415    fn from(tok: Perl) -> Self {
416        match tok {
417            Perl::End => "end",
418            Perl::Identifier => "identifier",
419            Perl::LTLT => "<<",
420            Perl::PodStatementToken1 => "pod_statement_token1",
421            Perl::FILE => "__FILE__",
422            Perl::LINE => "__LINE__",
423            Perl::PACKAGE => "__PACKAGE__",
424            Perl::SUB => "__SUB__",
425            Perl::END => "__END__",
426            Perl::DATA => "__DATA__",
427            Perl::Use => "use",
428            Perl::Parent => "parent",
429            Perl::COMMA => ",",
430            Perl::LPAREN => "(",
431            Perl::RPAREN => ")",
432            Perl::Constant => "constant",
433            Perl::Sub => "sub",
434            Perl::BEGIN => "BEGIN",
435            Perl::UNITCHECK => "UNITCHECK",
436            Perl::CHECK => "CHECK",
437            Perl::INIT => "INIT",
438            Perl::END2 => "END",
439            Perl::Package => "package",
440            Perl::DOTDOTDOT => "...",
441            Perl::No => "no",
442            Perl::Feature => "feature",
443            Perl::If => "if",
444            Perl::DASHGT => "->",
445            Perl::Import => "import",
446            Perl::Subs => "subs",
447            Perl::Require => "require",
448            Perl::Unless => "unless",
449            Perl::While => "while",
450            Perl::Until => "until",
451            Perl::For => "for",
452            Perl::Foreach => "foreach",
453            Perl::When => "when",
454            Perl::Elsif => "elsif",
455            Perl::Else => "else",
456            Perl::Continue2 => "continue",
457            Perl::BSLASH => "\\",
458            Perl::Our => "our",
459            Perl::State => "state",
460            Perl::My => "my",
461            Perl::Local => "local",
462            Perl::COLON => ":",
463            Perl::Prototype2 => "prototype",
464            Perl::LBRACE => "{",
465            Perl::RBRACE => "}",
466            Perl::Prototype => "prototype",
467            Perl::Return => "return",
468            Perl::COLONCOLON => "::",
469            Perl::COLONCOLON2 => "::",
470            Perl::Bless2 => "bless",
471            Perl::Goto => "goto",
472            Perl::QMARK => "?",
473            Perl::PLUSPLUS => "++",
474            Perl::DASHDASH => "--",
475            Perl::STARSTAR => "**",
476            Perl::BANG => "!",
477            Perl::TILDE => "~",
478            Perl::PLUS => "+",
479            Perl::DASH => "-",
480            Perl::EQTILDE => "=~",
481            Perl::BANGTILDE => "!~",
482            Perl::STAR => "*",
483            Perl::Bodmas1Token1 => "_bodmas_1_token1",
484            Perl::Bodmas1Token2 => "_bodmas_1_token2",
485            Perl::Bodmas1Token3 => "_bodmas_1_token3",
486            Perl::Bodmas1Token4 => "_bodmas_1_token4",
487            Perl::DOT => ".",
488            Perl::GTGT => ">>",
489            Perl::LT => "<",
490            Perl::GT => ">",
491            Perl::LTEQ => "<=",
492            Perl::GTEQ => ">=",
493            Perl::Lt => "lt",
494            Perl::Gt => "gt",
495            Perl::Le => "le",
496            Perl::Ge => "ge",
497            Perl::EQEQ => "==",
498            Perl::BANGEQ => "!=",
499            Perl::Eq => "eq",
500            Perl::Ne => "ne",
501            Perl::LTEQGT => "<=>",
502            Perl::Cmp => "cmp",
503            Perl::TILDETILDE => "~~",
504            Perl::Isa => "isa",
505            Perl::BitwiseAndExpToken1 => "_bitwise_and_exp_token1",
506            Perl::PIPE => "|",
507            Perl::CARET => "^",
508            Perl::AMPAMP => "&&",
509            Perl::PIPEPIPE => "||",
510            Perl::SLASHSLASH => "//",
511            Perl::DOTDOT => "..",
512            Perl::EQ => "=",
513            Perl::STARSTAREQ => "**=",
514            Perl::PLUSEQ => "+=",
515            Perl::STAREQ => "*=",
516            Perl::AMPEQ => "&=",
517            Perl::AMPDOTEQ => "&.=",
518            Perl::LTLTEQ => "<<=",
519            Perl::AMPAMPEQ => "&&=",
520            Perl::DASHEQ => "-=",
521            Perl::SLASHEQ => "/=",
522            Perl::PIPEEQ => "|=",
523            Perl::PIPEDOTEQ => "|.=",
524            Perl::GTGTEQ => ">>=",
525            Perl::PIPEPIPEEQ => "||=",
526            Perl::DOTEQ => ".=",
527            Perl::PERCENTEQ => "%=",
528            Perl::CARETEQ => "^=",
529            Perl::CARETDOTEQ => "^.=",
530            Perl::SLASHSLASHEQ => "//=",
531            Perl::XEQ => "X=",
532            Perl::Not => "not",
533            Perl::And => "and",
534            Perl::Or => "or",
535            Perl::Xor => "xor",
536            Perl::FileHandleOperatorToken1 => "file_handle_operator_token1",
537            Perl::StandardInputToken1 => "standard_input_token1",
538            Perl::StandardInputToken2 => "standard_input_token2",
539            Perl::StandardInputToken3 => "standard_input_token3",
540            Perl::StandardInputToken4 => "standard_input_token4",
541            Perl::FileHandle => "file_handle",
542            Perl::GT2 => ">",
543            Perl::Method => "method",
544            Perl::Func => "func",
545            Perl::Integer => "integer",
546            Perl::FloatingPoint => "floating_point",
547            Perl::ScientificNotation => "scientific_notation",
548            Perl::Hexadecimal => "hexadecimal",
549            Perl::Octal => "octal",
550            Perl::VersionToken1 => "version_token1",
551            Perl::VersionToken2 => "version_token2",
552            Perl::VersionToken3 => "version_token3",
553            Perl::Next => "next",
554            Perl::Last => "last",
555            Perl::Redo => "redo",
556            Perl::SQUOTE => "'",
557            Perl::ModuleNameToken1 => "module_name_token1",
558            Perl::DQUOTE => "\"",
559            Perl::SEMI => ";",
560            Perl::Q => "q",
561            Perl::Qq => "qq",
562            Perl::Qx => "qx",
563            Perl::BQUOTE => "`",
564            Perl::BacktickQuotedToken1 => "backtick_quoted_token1",
565            Perl::Qw => "qw",
566            Perl::M => "m",
567            Perl::SLASH => "/",
568            Perl::Qr => "qr",
569            Perl::S => "s",
570            Perl::Tr => "tr",
571            Perl::Y => "y",
572            Perl::LBRACK => "[",
573            Perl::RegexPatternContentToken1 => "regex_pattern_content_token1",
574            Perl::RegexPatternContentToken2 => "regex_pattern_content_token2",
575            Perl::RBRACK => "]",
576            Perl::RegexPatternContentToken3 => "regex_pattern_content_token3",
577            Perl::HASH => "#",
578            Perl::RegexOption => "regex_option",
579            Perl::RegexOptionForSubstitution => "regex_option_for_substitution",
580            Perl::RegexOptionForTransliteration => "regex_option_for_transliteration",
581            Perl::EscapeSequenceToken1 => "escape_sequence_token1",
582            Perl::DASHGTLBRACK => "->[",
583            Perl::LBRACK2 => "[",
584            Perl::True => "true",
585            Perl::False => "false",
586            Perl::DOLLAR => "$",
587            Perl::SpecialScalarVariableToken1 => "special_scalar_variable_token1",
588            Perl::ArrayVariableToken1 => "array_variable_token1",
589            Perl::ArrayVariableToken2 => "array_variable_token2",
590            Perl::ArrayVariableToken3 => "array_variable_token3",
591            Perl::HashVariableToken1 => "hash_variable_token1",
592            Perl::HashVariableToken2 => "hash_variable_token2",
593            Perl::HashVariableToken3 => "hash_variable_token3",
594            Perl::DOLLARHASH => "$#",
595            Perl::AT => "@",
596            Perl::PERCENT => "%",
597            Perl::FatComma => "fat_comma",
598            Perl::Super => "super",
599            Perl::NoRequire => "no_require",
600            Perl::CommentsToken1 => "comments_token1",
601            Perl::ScalarVariableExternal => "_scalar_variable_external",
602            Perl::StartDelimiter => "start_delimiter",
603            Perl::EndDelimiter => "end_delimiter",
604            Perl::StringContent => "_string_content",
605            Perl::StringSingleQuotedContent => "_string_single_quoted_content",
606            Perl::StringSingleQQuotedContent => "_string_single_q_quoted_content",
607            Perl::StringQqQuotedContent => "_string_qq_quoted_content",
608            Perl::StringDoubleQuotedContent => "_string_double_quoted_content",
609            Perl::StartDelimiterQw => "start_delimiter_qw",
610            Perl::ListItem => "list_item",
611            Perl::EndDelimiterQw => "end_delimiter_qw",
612            Perl::StartDelimiter2 => "start_delimiter",
613            Perl::StartDelimiterSlash => "_start_delimiter_slash",
614            Perl::RegexPattern => "_regex_pattern",
615            Perl::EndDelimiter2 => "end_delimiter",
616            Perl::StartDelimiter3 => "start_delimiter",
617            Perl::SearchReplaceContent => "_search_replace_content",
618            Perl::SeparatorDelimiter => "separator_delimiter",
619            Perl::EndDelimiter3 => "end_delimiter",
620            Perl::StartDelimiter4 => "start_delimiter",
621            Perl::TransliterationContent => "_transliteration_content",
622            Perl::SeparatorDelimiter2 => "separator_delimiter",
623            Perl::EndDelimiter4 => "end_delimiter",
624            Perl::ImaginaryHeredocStart => "_imaginary_heredoc_start",
625            Perl::HeredocStartIdentifier => "heredoc_start_identifier",
626            Perl::HeredocContent => "_heredoc_content",
627            Perl::HeredocEndIdentifier => "heredoc_end_identifier",
628            Perl::PodContent => "_pod_content",
629            Perl::DataNotForCompiler => "data_not_for_compiler",
630            Perl::AutomaticSemicolon => "_automatic_semicolon",
631            Perl::SourceFile => "source_file",
632            Perl::Statement => "_statement",
633            Perl::HeredocInitializer => "heredoc_initializer",
634            Perl::HeredocOperator => "_heredoc_operator",
635            Perl::HeredocBodyStatement => "heredoc_body_statement",
636            Perl::PodStatement => "pod_statement",
637            Perl::SpecialLiteral => "special_literal",
638            Perl::UseParentStatement => "use_parent_statement",
639            Perl::UseConstantStatement => "use_constant_statement",
640            Perl::SpecialBlock => "special_block",
641            Perl::PackageStatement => "package_statement",
642            Perl::EllipsisStatement => "ellipsis_statement",
643            Perl::UseNoVersion => "use_no_version",
644            Perl::UseNoFeatureStatement => "use_no_feature_statement",
645            Perl::ExpressionOrReturnExpression => "_expression_or_return_expression",
646            Perl::SingleLineStatement => "single_line_statement",
647            Perl::StatementModifiers => "_statement_modifiers",
648            Perl::CompoundStatement => "_compound_statement",
649            Perl::ExpressionStatement => "_expression_statement",
650            Perl::UseNoStatement => "use_no_statement",
651            Perl::UseNoIfStatement => "use_no_if_statement",
652            Perl::BarewordImport => "bareword_import",
653            Perl::UseNoSubsStatement => "use_no_subs_statement",
654            Perl::RequireStatement => "require_statement",
655            Perl::IfSimpleStatement => "if_simple_statement",
656            Perl::IfSimple => "_if_simple",
657            Perl::UnlessSimpleStatement => "unless_simple_statement",
658            Perl::WhileSimpleStatement => "while_simple_statement",
659            Perl::UntilSimpleStatement => "until_simple_statement",
660            Perl::ForSimpleStatement => "for_simple_statement",
661            Perl::WhenSimpleStatement => "when_simple_statement",
662            Perl::IfStatement => "if_statement",
663            Perl::UnlessStatement => "unless_statement",
664            Perl::ElsifClause => "elsif_clause",
665            Perl::ElseClause => "else_clause",
666            Perl::WhileStatement => "while_statement",
667            Perl::Continue => "continue",
668            Perl::UntilStatement => "until_statement",
669            Perl::ForStatement1 => "for_statement_1",
670            Perl::ForStatement2 => "for_statement_2",
671            Perl::ForParenthesize => "_for_parenthesize",
672            Perl::Declaration => "_declaration",
673            Perl::VariableDeclaration => "variable_declaration",
674            Perl::VariableDec => "_variable_dec",
675            Perl::Scope => "scope",
676            Perl::FunctionOptions => "_function_options",
677            Perl::FunctionDefinition => "function_definition",
678            Perl::FunctionDefinitionWithoutSub => "function_definition_without_sub",
679            Perl::AnonymousFunction => "anonymous_function",
680            Perl::Block => "block",
681            Perl::FunctionSignature2 => "_function_signature",
682            Perl::FunctionPrototype => "function_prototype",
683            Perl::FunctionAttribute => "function_attribute",
684            Perl::StandaloneBlock => "standalone_block",
685            Perl::Label => "label",
686            Perl::BlockStatements => "_block_statements",
687            Perl::LoopControlStatement => "loop_control_statement",
688            Perl::ReturnExpression => "return_expression",
689            Perl::ExpressionWithoutLValue => "_expression_without_l_value",
690            Perl::ExpressionWithoutBareword => "_expression_without_bareword",
691            Perl::Expression => "_expression",
692            Perl::PackageVariable => "package_variable",
693            Perl::Bless => "bless",
694            Perl::GotoExpression => "goto_expression",
695            Perl::BinaryExpression => "binary_expression",
696            Perl::UnaryExpression => "unary_expression",
697            Perl::TernaryExpression => "ternary_expression",
698            Perl::AutoIncrementDecrement => "_auto_increment_decrement",
699            Perl::Exponentiation => "_exponentiation",
700            Perl::SymbolicUnary => "_symbolic_unary",
701            Perl::BindingExpression => "_binding_expression",
702            Perl::Bodmas1 => "_bodmas_1",
703            Perl::Bodmas2 => "_bodmas_2",
704            Perl::ShiftExpression => "_shift_expression",
705            Perl::RelationalExpression => "_relational_expression",
706            Perl::EqualityExpression => "_equality_expression",
707            Perl::ClassInstanceExp => "_class_instance_exp",
708            Perl::BitwiseAndExp => "_bitwise_and_exp",
709            Perl::BitwiseOrXorExp => "_bitwise_or_xor_exp",
710            Perl::LogicalAndExp => "_logical_and_exp",
711            Perl::LogicalOrsExp => "_logical_ors_exp",
712            Perl::RangeExp => "_range_exp",
713            Perl::AssignmentExp => "_assignment_exp",
714            Perl::UnaryNot => "_unary_not",
715            Perl::UnaryAnd => "_unary_and",
716            Perl::LogicalVerbalOrXor => "_logical_verbal_or_xor",
717            Perl::FileHandleOperator => "file_handle_operator",
718            Perl::IOOperator => "_i_o_operator",
719            Perl::StandardInput => "standard_input",
720            Perl::StandardInputToIdentifier => "standard_input_to_identifier",
721            Perl::StandardInputToVariable => "standard_input_to_variable",
722            Perl::CallExpressionWithSpacedArgs => "call_expression_with_spaced_args",
723            Perl::CallExpressionWithSub => "call_expression_with_sub",
724            Perl::CallExpressionWithArgsWithBrackets => "call_expression_with_args_with_brackets",
725            Perl::CallExpressionWithVariable => "call_expression_with_variable",
726            Perl::CallExpressionWithBareword => "call_expression_with_bareword",
727            Perl::AndBeforeSub => "_and_before_sub",
728            Perl::MethodInvocation => "method_invocation",
729            Perl::ArgumentChoice => "_argument_choice",
730            Perl::ParenthesizedArgument => "parenthesized_argument",
731            Perl::Arguments => "arguments",
732            Perl::CallExpressionRecursive => "call_expression_recursive",
733            Perl::PrimitiveExpression => "_primitive_expression",
734            Perl::Variables => "_variables",
735            Perl::AccessVariables => "_access_variables",
736            Perl::ScalarType => "_scalar_type",
737            Perl::String => "_string",
738            Perl::InterpolatableString => "_interpolatable_string",
739            Perl::ResolvesToDigit => "_resolves_to_digit",
740            Perl::ArrayType => "_array_type",
741            Perl::NumericLiterals => "_numeric_literals",
742            Perl::Version => "version",
743            Perl::LoopControlKeyword => "loop_control_keyword",
744            Perl::PackageName => "package_name",
745            Perl::ModuleName => "module_name",
746            Perl::StringSingleQuoted => "string_single_quoted",
747            Perl::StringQQuoted => "string_q_quoted",
748            Perl::StringDoubleQuoted => "string_double_quoted",
749            Perl::StringQqQuoted => "string_qq_quoted",
750            Perl::CommandQxQuoted => "command_qx_quoted",
751            Perl::BacktickQuoted => "backtick_quoted",
752            Perl::WordListQw => "word_list_qw",
753            Perl::PatternMatcherM => "pattern_matcher_m",
754            Perl::PatternMatcher => "pattern_matcher",
755            Perl::RegexPatternQr => "regex_pattern_qr",
756            Perl::SubstitutionPatternS => "substitution_pattern_s",
757            Perl::TransliterationTrOrY => "transliteration_tr_or_y",
758            Perl::RegexPatternContent => "regex_pattern_content",
759            Perl::EscapeSequence => "escape_sequence",
760            Perl::Interpolation => "interpolation",
761            Perl::HashAccessInInterpolation => "hash_access_in_interpolation",
762            Perl::ArrayAccessInInterpolation => "array_access_in_interpolation",
763            Perl::Boolean => "_boolean",
764            Perl::SpecialScalarVariable => "special_scalar_variable",
765            Perl::ScalarVariable => "scalar_variable",
766            Perl::Typeglob => "typeglob",
767            Perl::ArrayAccessVariable => "array_access_variable",
768            Perl::HashAccessVariableSimple => "hash_access_variable_simple",
769            Perl::HashAccessVariable => "hash_access_variable",
770            Perl::ArrayVariable => "array_variable",
771            Perl::HashVariable => "hash_variable",
772            Perl::List => "_list",
773            Perl::Array => "array",
774            Perl::ArrayRef => "array_ref",
775            Perl::HashRef => "hash_ref",
776            Perl::Reference => "_reference",
777            Perl::ToReference => "to_reference",
778            Perl::Dereference => "_dereference",
779            Perl::ScalarDereference => "scalar_dereference",
780            Perl::LengthExpression => "length_expression",
781            Perl::ArrayDereference => "array_dereference",
782            Perl::HashDereference => "hash_dereference",
783            Perl::KeywordsInHashKey => "keywords_in_hash_key",
784            Perl::ArrowOperator => "arrow_operator",
785            Perl::CommaOperator => "_comma_operator",
786            Perl::NormalComma => "normal_comma",
787            Perl::Comments => "comments",
788            Perl::SourceFileRepeat1 => "source_file_repeat1",
789            Perl::HeredocBodyStatementRepeat1 => "heredoc_body_statement_repeat1",
790            Perl::UseParentStatementRepeat1 => "use_parent_statement_repeat1",
791            Perl::ExpressionStatementRepeat1 => "_expression_statement_repeat1",
792            Perl::IfStatementRepeat1 => "if_statement_repeat1",
793            Perl::BlockRepeat1 => "block_repeat1",
794            Perl::FunctionAttributeRepeat1 => "function_attribute_repeat1",
795            Perl::PackageVariableRepeat1 => "package_variable_repeat1",
796            Perl::RelationalExpressionRepeat1 => "_relational_expression_repeat1",
797            Perl::EqualityExpressionRepeat1 => "_equality_expression_repeat1",
798            Perl::PackageNameRepeat1 => "package_name_repeat1",
799            Perl::StringSingleQuotedRepeat1 => "string_single_quoted_repeat1",
800            Perl::StringQQuotedRepeat1 => "string_q_quoted_repeat1",
801            Perl::StringDoubleQuotedRepeat1 => "string_double_quoted_repeat1",
802            Perl::StringQqQuotedRepeat1 => "string_qq_quoted_repeat1",
803            Perl::BacktickQuotedRepeat1 => "backtick_quoted_repeat1",
804            Perl::WordListQwRepeat1 => "word_list_qw_repeat1",
805            Perl::PatternMatcherMRepeat1 => "pattern_matcher_m_repeat1",
806            Perl::SubstitutionPatternSRepeat1 => "substitution_pattern_s_repeat1",
807            Perl::TransliterationTrOrYRepeat1 => "transliteration_tr_or_y_repeat1",
808            Perl::RegexPatternContentRepeat1 => "regex_pattern_content_repeat1",
809            Perl::RegexPatternContentRepeat2 => "regex_pattern_content_repeat2",
810            Perl::HashAccessInInterpolationRepeat1 => "hash_access_in_interpolation_repeat1",
811            Perl::ArrayAccessInInterpolationRepeat1 => "array_access_in_interpolation_repeat1",
812            Perl::FunctionSignature => "function_signature",
813            Perl::Error => "ERROR",
814        }
815    }
816}
817
818impl From<u16> for Perl {
819    #[inline]
820    fn from(x: u16) -> Self {
821        num_traits::FromPrimitive::from_u16(x).unwrap_or(Self::Error)
822    }
823}
824
825// Perl == u16
826impl PartialEq<u16> for Perl {
827    #[inline]
828    fn eq(&self, x: &u16) -> bool {
829        *self == Into::<Self>::into(*x)
830    }
831}
832
833// u16 == Perl
834impl PartialEq<Perl> for u16 {
835    #[inline]
836    fn eq(&self, x: &Perl) -> bool {
837        *x == *self
838    }
839}