#![allow(clippy::match_same_arms, clippy::too_many_lines)]
use num_derive::FromPrimitive;
#[derive(Clone, Debug, PartialEq, Eq, FromPrimitive)]
pub enum Javascript {
End = 0,
Identifier = 1,
HashBangLine = 2,
Export = 3,
STAR = 4,
Default = 5,
As = 6,
LBRACE = 7,
COMMA = 8,
RBRACE = 9,
Import2 = 10,
From = 11,
With = 12,
Var = 13,
Let = 14,
Const = 15,
Using = 16,
Await = 17,
Of = 18,
Else = 19,
If = 20,
Switch = 21,
For = 22,
LPAREN = 23,
SEMI = 24,
RPAREN = 25,
In = 26,
While = 27,
Do = 28,
Try = 29,
Break = 30,
Continue = 31,
Debugger = 32,
Return = 33,
Throw = 34,
COLON = 35,
Case = 36,
Catch = 37,
Finally = 38,
Yield = 39,
EQ = 40,
LBRACK = 41,
RBRACK = 42,
HtmlCharacterReference = 43,
LT = 44,
GT = 45,
Identifier2 = 46,
DOT = 47,
LTSLASH = 48,
SLASHGT = 49,
DQUOTE = 50,
SQUOTE = 51,
StringFragment = 52,
StringFragment2 = 53,
Class2 = 54,
Extends = 55,
Async = 56,
Function = 57,
EQGT = 58,
OptionalChain = 59,
New = 60,
PLUSEQ = 61,
DASHEQ = 62,
STAREQ = 63,
SLASHEQ = 64,
PERCENTEQ = 65,
CARETEQ = 66,
AMPEQ = 67,
PIPEEQ = 68,
GTGTEQ = 69,
GTGTGTEQ = 70,
LTLTEQ = 71,
STARSTAREQ = 72,
AMPAMPEQ = 73,
PIPEPIPEEQ = 74,
QMARKQMARKEQ = 75,
DOTDOTDOT = 76,
AMPAMP = 77,
PIPEPIPE = 78,
GTGT = 79,
GTGTGT = 80,
LTLT = 81,
AMP = 82,
CARET = 83,
PIPE = 84,
PLUS = 85,
DASH = 86,
SLASH = 87,
PERCENT = 88,
STARSTAR = 89,
LTEQ = 90,
EQEQ = 91,
EQEQEQ = 92,
BANGEQ = 93,
BANGEQEQ = 94,
GTEQ = 95,
QMARKQMARK = 96,
Instanceof = 97,
BANG = 98,
TILDE = 99,
Typeof = 100,
Void = 101,
Delete = 102,
PLUSPLUS = 103,
DASHDASH = 104,
StringFragment3 = 105,
StringFragment4 = 106,
EscapeSequence = 107,
Comment = 108,
BQUOTE = 109,
DOLLARLBRACE = 110,
SLASH2 = 111,
RegexPattern = 112,
RegexFlags = 113,
Number = 114,
PrivatePropertyIdentifier = 115,
Target = 116,
Meta = 117,
This = 118,
Super = 119,
True = 120,
False = 121,
Null = 122,
Undefined = 123,
AT = 124,
Static = 125,
Staticget = 126,
Get = 127,
Set = 128,
AutomaticSemicolon = 129,
StringFragment5 = 130,
QMARK = 131,
HtmlComment = 132,
JsxText = 133,
Program = 134,
ExportStatement = 135,
NamespaceExport = 136,
ExportClause = 137,
ExportSpecifier = 138,
ModuleExportName = 139,
Declaration = 140,
Import = 141,
ImportStatement = 142,
ImportClause = 143,
FromClause = 144,
NamespaceImport = 145,
NamedImports = 146,
ImportSpecifier = 147,
ImportAttribute = 148,
Statement = 149,
ExpressionStatement = 150,
VariableDeclaration = 151,
LexicalDeclaration = 152,
UsingDeclaration = 153,
VariableDeclarator = 154,
StatementBlock = 155,
ElseClause = 156,
IfStatement = 157,
SwitchStatement = 158,
ForStatement = 159,
ForInStatement = 160,
ForHeader = 161,
WhileStatement = 162,
DoStatement = 163,
TryStatement = 164,
WithStatement = 165,
BreakStatement = 166,
ContinueStatement = 167,
DebuggerStatement = 168,
ReturnStatement = 169,
ThrowStatement = 170,
EmptyStatement = 171,
LabeledStatement = 172,
SwitchBody = 173,
SwitchCase = 174,
SwitchDefault = 175,
CatchClause = 176,
FinallyClause = 177,
ParenthesizedExpression = 178,
Expression = 179,
PrimaryExpression = 180,
YieldExpression = 181,
Object = 182,
ObjectPattern = 183,
AssignmentPattern = 184,
ObjectAssignmentPattern = 185,
Array = 186,
ArrayPattern = 187,
JsxElement = 188,
JsxExpression = 189,
JsxOpeningElement = 190,
MemberExpression = 191,
JsxNamespaceName = 192,
JsxClosingElement = 193,
JsxSelfClosingElement = 194,
JsxAttribute = 195,
String = 196,
Class = 197,
ClassDeclaration = 198,
ClassHeritage = 199,
FunctionExpression = 200,
FunctionDeclaration = 201,
GeneratorFunction = 202,
GeneratorFunctionDeclaration = 203,
ArrowFunction = 204,
CallExpression = 205,
NewExpression = 206,
AwaitExpression = 207,
MemberExpression2 = 208,
SubscriptExpression = 209,
AssignmentExpression = 210,
AugmentedAssignmentLhs = 211,
AugmentedAssignmentExpression = 212,
Initializer = 213,
DestructuringPattern = 214,
SpreadElement = 215,
TernaryExpression = 216,
BinaryExpression = 217,
UnaryExpression = 218,
UpdateExpression = 219,
SequenceExpression = 220,
String2 = 221,
TemplateString = 222,
TemplateSubstitution = 223,
Regex = 224,
MetaProperty = 225,
Arguments = 226,
Decorator = 227,
MemberExpression3 = 228,
CallExpression2 = 229,
ClassBody = 230,
FieldDefinition = 231,
FormalParameters = 232,
ClassStaticBlock = 233,
Pattern = 234,
RestPattern = 235,
MethodDefinition = 236,
Pair = 237,
PairPattern = 238,
PropertyName = 239,
ComputedPropertyName = 240,
ProgramRepeat1 = 241,
ExportStatementRepeat1 = 242,
ExportClauseRepeat1 = 243,
NamedImportsRepeat1 = 244,
VariableDeclarationRepeat1 = 245,
SwitchBodyRepeat1 = 246,
ObjectRepeat1 = 247,
ObjectPatternRepeat1 = 248,
ArrayRepeat1 = 249,
ArrayPatternRepeat1 = 250,
JsxElementRepeat1 = 251,
JsxOpeningElementRepeat1 = 252,
JsxStringRepeat1 = 253,
JsxStringRepeat2 = 254,
SequenceExpressionRepeat1 = 255,
StringRepeat1 = 256,
StringRepeat2 = 257,
TemplateStringRepeat1 = 258,
ClassBodyRepeat1 = 259,
FormalParametersRepeat1 = 260,
PropertyIdentifier = 261,
ShorthandPropertyIdentifier = 262,
ShorthandPropertyIdentifierPattern = 263,
StatementIdentifier = 264,
Error = 265,
}
impl From<Javascript> for &'static str {
#[inline]
fn from(tok: Javascript) -> Self {
match tok {
Javascript::End => "end",
Javascript::Identifier => "identifier",
Javascript::HashBangLine => "hash_bang_line",
Javascript::Export => "export",
Javascript::STAR => "*",
Javascript::Default => "default",
Javascript::As => "as",
Javascript::LBRACE => "{",
Javascript::COMMA => ",",
Javascript::RBRACE => "}",
Javascript::Import2 => "import",
Javascript::From => "from",
Javascript::With => "with",
Javascript::Var => "var",
Javascript::Let => "let",
Javascript::Const => "const",
Javascript::Using => "using",
Javascript::Await => "await",
Javascript::Of => "of",
Javascript::Else => "else",
Javascript::If => "if",
Javascript::Switch => "switch",
Javascript::For => "for",
Javascript::LPAREN => "(",
Javascript::SEMI => ";",
Javascript::RPAREN => ")",
Javascript::In => "in",
Javascript::While => "while",
Javascript::Do => "do",
Javascript::Try => "try",
Javascript::Break => "break",
Javascript::Continue => "continue",
Javascript::Debugger => "debugger",
Javascript::Return => "return",
Javascript::Throw => "throw",
Javascript::COLON => ":",
Javascript::Case => "case",
Javascript::Catch => "catch",
Javascript::Finally => "finally",
Javascript::Yield => "yield",
Javascript::EQ => "=",
Javascript::LBRACK => "[",
Javascript::RBRACK => "]",
Javascript::HtmlCharacterReference => "html_character_reference",
Javascript::LT => "<",
Javascript::GT => ">",
Javascript::Identifier2 => "identifier",
Javascript::DOT => ".",
Javascript::LTSLASH => "</",
Javascript::SLASHGT => "/>",
Javascript::DQUOTE => "\"",
Javascript::SQUOTE => "'",
Javascript::StringFragment => "string_fragment",
Javascript::StringFragment2 => "string_fragment",
Javascript::Class2 => "class",
Javascript::Extends => "extends",
Javascript::Async => "async",
Javascript::Function => "function",
Javascript::EQGT => "=>",
Javascript::OptionalChain => "optional_chain",
Javascript::New => "new",
Javascript::PLUSEQ => "+=",
Javascript::DASHEQ => "-=",
Javascript::STAREQ => "*=",
Javascript::SLASHEQ => "/=",
Javascript::PERCENTEQ => "%=",
Javascript::CARETEQ => "^=",
Javascript::AMPEQ => "&=",
Javascript::PIPEEQ => "|=",
Javascript::GTGTEQ => ">>=",
Javascript::GTGTGTEQ => ">>>=",
Javascript::LTLTEQ => "<<=",
Javascript::STARSTAREQ => "**=",
Javascript::AMPAMPEQ => "&&=",
Javascript::PIPEPIPEEQ => "||=",
Javascript::QMARKQMARKEQ => "??=",
Javascript::DOTDOTDOT => "...",
Javascript::AMPAMP => "&&",
Javascript::PIPEPIPE => "||",
Javascript::GTGT => ">>",
Javascript::GTGTGT => ">>>",
Javascript::LTLT => "<<",
Javascript::AMP => "&",
Javascript::CARET => "^",
Javascript::PIPE => "|",
Javascript::PLUS => "+",
Javascript::DASH => "-",
Javascript::SLASH => "/",
Javascript::PERCENT => "%",
Javascript::STARSTAR => "**",
Javascript::LTEQ => "<=",
Javascript::EQEQ => "==",
Javascript::EQEQEQ => "===",
Javascript::BANGEQ => "!=",
Javascript::BANGEQEQ => "!==",
Javascript::GTEQ => ">=",
Javascript::QMARKQMARK => "??",
Javascript::Instanceof => "instanceof",
Javascript::BANG => "!",
Javascript::TILDE => "~",
Javascript::Typeof => "typeof",
Javascript::Void => "void",
Javascript::Delete => "delete",
Javascript::PLUSPLUS => "++",
Javascript::DASHDASH => "--",
Javascript::StringFragment3 => "string_fragment",
Javascript::StringFragment4 => "string_fragment",
Javascript::EscapeSequence => "escape_sequence",
Javascript::Comment => "comment",
Javascript::BQUOTE => "`",
Javascript::DOLLARLBRACE => "${",
Javascript::SLASH2 => "/",
Javascript::RegexPattern => "regex_pattern",
Javascript::RegexFlags => "regex_flags",
Javascript::Number => "number",
Javascript::PrivatePropertyIdentifier => "private_property_identifier",
Javascript::Target => "target",
Javascript::Meta => "meta",
Javascript::This => "this",
Javascript::Super => "super",
Javascript::True => "true",
Javascript::False => "false",
Javascript::Null => "null",
Javascript::Undefined => "undefined",
Javascript::AT => "@",
Javascript::Static => "static",
Javascript::Staticget => "static get",
Javascript::Get => "get",
Javascript::Set => "set",
Javascript::AutomaticSemicolon => "_automatic_semicolon",
Javascript::StringFragment5 => "string_fragment",
Javascript::QMARK => "?",
Javascript::HtmlComment => "html_comment",
Javascript::JsxText => "jsx_text",
Javascript::Program => "program",
Javascript::ExportStatement => "export_statement",
Javascript::NamespaceExport => "namespace_export",
Javascript::ExportClause => "export_clause",
Javascript::ExportSpecifier => "export_specifier",
Javascript::ModuleExportName => "_module_export_name",
Javascript::Declaration => "declaration",
Javascript::Import => "import",
Javascript::ImportStatement => "import_statement",
Javascript::ImportClause => "import_clause",
Javascript::FromClause => "_from_clause",
Javascript::NamespaceImport => "namespace_import",
Javascript::NamedImports => "named_imports",
Javascript::ImportSpecifier => "import_specifier",
Javascript::ImportAttribute => "import_attribute",
Javascript::Statement => "statement",
Javascript::ExpressionStatement => "expression_statement",
Javascript::VariableDeclaration => "variable_declaration",
Javascript::LexicalDeclaration => "lexical_declaration",
Javascript::UsingDeclaration => "using_declaration",
Javascript::VariableDeclarator => "variable_declarator",
Javascript::StatementBlock => "statement_block",
Javascript::ElseClause => "else_clause",
Javascript::IfStatement => "if_statement",
Javascript::SwitchStatement => "switch_statement",
Javascript::ForStatement => "for_statement",
Javascript::ForInStatement => "for_in_statement",
Javascript::ForHeader => "_for_header",
Javascript::WhileStatement => "while_statement",
Javascript::DoStatement => "do_statement",
Javascript::TryStatement => "try_statement",
Javascript::WithStatement => "with_statement",
Javascript::BreakStatement => "break_statement",
Javascript::ContinueStatement => "continue_statement",
Javascript::DebuggerStatement => "debugger_statement",
Javascript::ReturnStatement => "return_statement",
Javascript::ThrowStatement => "throw_statement",
Javascript::EmptyStatement => "empty_statement",
Javascript::LabeledStatement => "labeled_statement",
Javascript::SwitchBody => "switch_body",
Javascript::SwitchCase => "switch_case",
Javascript::SwitchDefault => "switch_default",
Javascript::CatchClause => "catch_clause",
Javascript::FinallyClause => "finally_clause",
Javascript::ParenthesizedExpression => "parenthesized_expression",
Javascript::Expression => "expression",
Javascript::PrimaryExpression => "primary_expression",
Javascript::YieldExpression => "yield_expression",
Javascript::Object => "object",
Javascript::ObjectPattern => "object_pattern",
Javascript::AssignmentPattern => "assignment_pattern",
Javascript::ObjectAssignmentPattern => "object_assignment_pattern",
Javascript::Array => "array",
Javascript::ArrayPattern => "array_pattern",
Javascript::JsxElement => "jsx_element",
Javascript::JsxExpression => "jsx_expression",
Javascript::JsxOpeningElement => "jsx_opening_element",
Javascript::MemberExpression => "member_expression",
Javascript::JsxNamespaceName => "jsx_namespace_name",
Javascript::JsxClosingElement => "jsx_closing_element",
Javascript::JsxSelfClosingElement => "jsx_self_closing_element",
Javascript::JsxAttribute => "jsx_attribute",
Javascript::String => "string",
Javascript::Class => "class",
Javascript::ClassDeclaration => "class_declaration",
Javascript::ClassHeritage => "class_heritage",
Javascript::FunctionExpression => "function_expression",
Javascript::FunctionDeclaration => "function_declaration",
Javascript::GeneratorFunction => "generator_function",
Javascript::GeneratorFunctionDeclaration => "generator_function_declaration",
Javascript::ArrowFunction => "arrow_function",
Javascript::CallExpression => "call_expression",
Javascript::NewExpression => "new_expression",
Javascript::AwaitExpression => "await_expression",
Javascript::MemberExpression2 => "member_expression",
Javascript::SubscriptExpression => "subscript_expression",
Javascript::AssignmentExpression => "assignment_expression",
Javascript::AugmentedAssignmentLhs => "_augmented_assignment_lhs",
Javascript::AugmentedAssignmentExpression => "augmented_assignment_expression",
Javascript::Initializer => "_initializer",
Javascript::DestructuringPattern => "_destructuring_pattern",
Javascript::SpreadElement => "spread_element",
Javascript::TernaryExpression => "ternary_expression",
Javascript::BinaryExpression => "binary_expression",
Javascript::UnaryExpression => "unary_expression",
Javascript::UpdateExpression => "update_expression",
Javascript::SequenceExpression => "sequence_expression",
Javascript::String2 => "string",
Javascript::TemplateString => "template_string",
Javascript::TemplateSubstitution => "template_substitution",
Javascript::Regex => "regex",
Javascript::MetaProperty => "meta_property",
Javascript::Arguments => "arguments",
Javascript::Decorator => "decorator",
Javascript::MemberExpression3 => "member_expression",
Javascript::CallExpression2 => "call_expression",
Javascript::ClassBody => "class_body",
Javascript::FieldDefinition => "field_definition",
Javascript::FormalParameters => "formal_parameters",
Javascript::ClassStaticBlock => "class_static_block",
Javascript::Pattern => "pattern",
Javascript::RestPattern => "rest_pattern",
Javascript::MethodDefinition => "method_definition",
Javascript::Pair => "pair",
Javascript::PairPattern => "pair_pattern",
Javascript::PropertyName => "_property_name",
Javascript::ComputedPropertyName => "computed_property_name",
Javascript::ProgramRepeat1 => "program_repeat1",
Javascript::ExportStatementRepeat1 => "export_statement_repeat1",
Javascript::ExportClauseRepeat1 => "export_clause_repeat1",
Javascript::NamedImportsRepeat1 => "named_imports_repeat1",
Javascript::VariableDeclarationRepeat1 => "variable_declaration_repeat1",
Javascript::SwitchBodyRepeat1 => "switch_body_repeat1",
Javascript::ObjectRepeat1 => "object_repeat1",
Javascript::ObjectPatternRepeat1 => "object_pattern_repeat1",
Javascript::ArrayRepeat1 => "array_repeat1",
Javascript::ArrayPatternRepeat1 => "array_pattern_repeat1",
Javascript::JsxElementRepeat1 => "jsx_element_repeat1",
Javascript::JsxOpeningElementRepeat1 => "jsx_opening_element_repeat1",
Javascript::JsxStringRepeat1 => "_jsx_string_repeat1",
Javascript::JsxStringRepeat2 => "_jsx_string_repeat2",
Javascript::SequenceExpressionRepeat1 => "sequence_expression_repeat1",
Javascript::StringRepeat1 => "string_repeat1",
Javascript::StringRepeat2 => "string_repeat2",
Javascript::TemplateStringRepeat1 => "template_string_repeat1",
Javascript::ClassBodyRepeat1 => "class_body_repeat1",
Javascript::FormalParametersRepeat1 => "formal_parameters_repeat1",
Javascript::PropertyIdentifier => "property_identifier",
Javascript::ShorthandPropertyIdentifier => "shorthand_property_identifier",
Javascript::ShorthandPropertyIdentifierPattern => {
"shorthand_property_identifier_pattern"
}
Javascript::StatementIdentifier => "statement_identifier",
Javascript::Error => "ERROR",
}
}
}
impl From<u16> for Javascript {
#[inline]
fn from(x: u16) -> Self {
num::FromPrimitive::from_u16(x).unwrap_or(Self::Error)
}
}
impl PartialEq<u16> for Javascript {
#[inline]
fn eq(&self, x: &u16) -> bool {
*self == Into::<Self>::into(*x)
}
}
impl PartialEq<Javascript> for u16 {
#[inline]
fn eq(&self, x: &Javascript) -> bool {
*x == *self
}
}