1#![allow(clippy::match_same_arms, clippy::too_many_lines)]
4#![allow(missing_docs)]
7
8use 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
825impl PartialEq<u16> for Perl {
827 #[inline]
828 fn eq(&self, x: &u16) -> bool {
829 *self == Into::<Self>::into(*x)
830 }
831}
832
833impl PartialEq<Perl> for u16 {
835 #[inline]
836 fn eq(&self, x: &Perl) -> bool {
837 *x == *self
838 }
839}