1use serde::{Deserialize, Serialize};
2
3use crate::source::Span;
4
5pub const MAX_TOKEN_LENGTH: usize = 65_536;
7
8#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Keyword {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
Keyword::If => "If",
Keyword::Do => "Do",
Keyword::Else => "Else",
Keyword::Int => "Int",
Keyword::Float => "Float",
Keyword::String => "String",
Keyword::Object => "Object",
Keyword::Return => "Return",
Keyword::While => "While",
Keyword::For => "For",
Keyword::Void => "Void",
Keyword::Case => "Case",
Keyword::Break => "Break",
Keyword::Struct => "Struct",
Keyword::Action => "Action",
Keyword::Switch => "Switch",
Keyword::Default => "Default",
Keyword::Include => "Include",
Keyword::Continue => "Continue",
Keyword::Vector => "Vector",
Keyword::Const => "Const",
Keyword::Define => "Define",
Keyword::ObjectSelf => "ObjectSelf",
Keyword::ObjectInvalid => "ObjectInvalid",
Keyword::EngineNumStructuresDefinition =>
"EngineNumStructuresDefinition",
Keyword::EngineStructureDefinition =>
"EngineStructureDefinition",
Keyword::JsonNull => "JsonNull",
Keyword::JsonFalse => "JsonFalse",
Keyword::JsonTrue => "JsonTrue",
Keyword::JsonObject => "JsonObject",
Keyword::JsonArray => "JsonArray",
Keyword::JsonString => "JsonString",
Keyword::LocationInvalid => "LocationInvalid",
Keyword::FunctionMacro => "FunctionMacro",
Keyword::FileMacro => "FileMacro",
Keyword::LineMacro => "LineMacro",
Keyword::DateMacro => "DateMacro",
Keyword::TimeMacro => "TimeMacro",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Keyword {
#[inline]
fn clone(&self) -> Keyword { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Keyword { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Keyword {
#[inline]
fn eq(&self, other: &Keyword) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Keyword {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Keyword {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Keyword {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
Keyword::If =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 0u32, "If"),
Keyword::Do =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 1u32, "Do"),
Keyword::Else =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 2u32, "Else"),
Keyword::Int =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 3u32, "Int"),
Keyword::Float =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 4u32, "Float"),
Keyword::String =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 5u32, "String"),
Keyword::Object =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 6u32, "Object"),
Keyword::Return =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 7u32, "Return"),
Keyword::While =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 8u32, "While"),
Keyword::For =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 9u32, "For"),
Keyword::Void =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 10u32, "Void"),
Keyword::Case =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 11u32, "Case"),
Keyword::Break =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 12u32, "Break"),
Keyword::Struct =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 13u32, "Struct"),
Keyword::Action =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 14u32, "Action"),
Keyword::Switch =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 15u32, "Switch"),
Keyword::Default =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 16u32, "Default"),
Keyword::Include =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 17u32, "Include"),
Keyword::Continue =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 18u32, "Continue"),
Keyword::Vector =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 19u32, "Vector"),
Keyword::Const =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 20u32, "Const"),
Keyword::Define =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 21u32, "Define"),
Keyword::ObjectSelf =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 22u32, "ObjectSelf"),
Keyword::ObjectInvalid =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 23u32, "ObjectInvalid"),
Keyword::EngineNumStructuresDefinition =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 24u32, "EngineNumStructuresDefinition"),
Keyword::EngineStructureDefinition =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 25u32, "EngineStructureDefinition"),
Keyword::JsonNull =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 26u32, "JsonNull"),
Keyword::JsonFalse =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 27u32, "JsonFalse"),
Keyword::JsonTrue =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 28u32, "JsonTrue"),
Keyword::JsonObject =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 29u32, "JsonObject"),
Keyword::JsonArray =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 30u32, "JsonArray"),
Keyword::JsonString =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 31u32, "JsonString"),
Keyword::LocationInvalid =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 32u32, "LocationInvalid"),
Keyword::FunctionMacro =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 33u32, "FunctionMacro"),
Keyword::FileMacro =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 34u32, "FileMacro"),
Keyword::LineMacro =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 35u32, "LineMacro"),
Keyword::DateMacro =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 36u32, "DateMacro"),
Keyword::TimeMacro =>
_serde::Serializer::serialize_unit_variant(__serializer,
"Keyword", 37u32, "TimeMacro"),
}
}
}
};Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for Keyword {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field {
__field0,
__field1,
__field2,
__field3,
__field4,
__field5,
__field6,
__field7,
__field8,
__field9,
__field10,
__field11,
__field12,
__field13,
__field14,
__field15,
__field16,
__field17,
__field18,
__field19,
__field20,
__field21,
__field22,
__field23,
__field24,
__field25,
__field26,
__field27,
__field28,
__field29,
__field30,
__field31,
__field32,
__field33,
__field34,
__field35,
__field36,
__field37,
}
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"variant identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
3u64 => _serde::__private228::Ok(__Field::__field3),
4u64 => _serde::__private228::Ok(__Field::__field4),
5u64 => _serde::__private228::Ok(__Field::__field5),
6u64 => _serde::__private228::Ok(__Field::__field6),
7u64 => _serde::__private228::Ok(__Field::__field7),
8u64 => _serde::__private228::Ok(__Field::__field8),
9u64 => _serde::__private228::Ok(__Field::__field9),
10u64 => _serde::__private228::Ok(__Field::__field10),
11u64 => _serde::__private228::Ok(__Field::__field11),
12u64 => _serde::__private228::Ok(__Field::__field12),
13u64 => _serde::__private228::Ok(__Field::__field13),
14u64 => _serde::__private228::Ok(__Field::__field14),
15u64 => _serde::__private228::Ok(__Field::__field15),
16u64 => _serde::__private228::Ok(__Field::__field16),
17u64 => _serde::__private228::Ok(__Field::__field17),
18u64 => _serde::__private228::Ok(__Field::__field18),
19u64 => _serde::__private228::Ok(__Field::__field19),
20u64 => _serde::__private228::Ok(__Field::__field20),
21u64 => _serde::__private228::Ok(__Field::__field21),
22u64 => _serde::__private228::Ok(__Field::__field22),
23u64 => _serde::__private228::Ok(__Field::__field23),
24u64 => _serde::__private228::Ok(__Field::__field24),
25u64 => _serde::__private228::Ok(__Field::__field25),
26u64 => _serde::__private228::Ok(__Field::__field26),
27u64 => _serde::__private228::Ok(__Field::__field27),
28u64 => _serde::__private228::Ok(__Field::__field28),
29u64 => _serde::__private228::Ok(__Field::__field29),
30u64 => _serde::__private228::Ok(__Field::__field30),
31u64 => _serde::__private228::Ok(__Field::__field31),
32u64 => _serde::__private228::Ok(__Field::__field32),
33u64 => _serde::__private228::Ok(__Field::__field33),
34u64 => _serde::__private228::Ok(__Field::__field34),
35u64 => _serde::__private228::Ok(__Field::__field35),
36u64 => _serde::__private228::Ok(__Field::__field36),
37u64 => _serde::__private228::Ok(__Field::__field37),
_ =>
_serde::__private228::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
&"variant index 0 <= i < 38")),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"If" => _serde::__private228::Ok(__Field::__field0),
"Do" => _serde::__private228::Ok(__Field::__field1),
"Else" => _serde::__private228::Ok(__Field::__field2),
"Int" => _serde::__private228::Ok(__Field::__field3),
"Float" => _serde::__private228::Ok(__Field::__field4),
"String" => _serde::__private228::Ok(__Field::__field5),
"Object" => _serde::__private228::Ok(__Field::__field6),
"Return" => _serde::__private228::Ok(__Field::__field7),
"While" => _serde::__private228::Ok(__Field::__field8),
"For" => _serde::__private228::Ok(__Field::__field9),
"Void" => _serde::__private228::Ok(__Field::__field10),
"Case" => _serde::__private228::Ok(__Field::__field11),
"Break" => _serde::__private228::Ok(__Field::__field12),
"Struct" => _serde::__private228::Ok(__Field::__field13),
"Action" => _serde::__private228::Ok(__Field::__field14),
"Switch" => _serde::__private228::Ok(__Field::__field15),
"Default" => _serde::__private228::Ok(__Field::__field16),
"Include" => _serde::__private228::Ok(__Field::__field17),
"Continue" => _serde::__private228::Ok(__Field::__field18),
"Vector" => _serde::__private228::Ok(__Field::__field19),
"Const" => _serde::__private228::Ok(__Field::__field20),
"Define" => _serde::__private228::Ok(__Field::__field21),
"ObjectSelf" =>
_serde::__private228::Ok(__Field::__field22),
"ObjectInvalid" =>
_serde::__private228::Ok(__Field::__field23),
"EngineNumStructuresDefinition" =>
_serde::__private228::Ok(__Field::__field24),
"EngineStructureDefinition" =>
_serde::__private228::Ok(__Field::__field25),
"JsonNull" => _serde::__private228::Ok(__Field::__field26),
"JsonFalse" => _serde::__private228::Ok(__Field::__field27),
"JsonTrue" => _serde::__private228::Ok(__Field::__field28),
"JsonObject" =>
_serde::__private228::Ok(__Field::__field29),
"JsonArray" => _serde::__private228::Ok(__Field::__field30),
"JsonString" =>
_serde::__private228::Ok(__Field::__field31),
"LocationInvalid" =>
_serde::__private228::Ok(__Field::__field32),
"FunctionMacro" =>
_serde::__private228::Ok(__Field::__field33),
"FileMacro" => _serde::__private228::Ok(__Field::__field34),
"LineMacro" => _serde::__private228::Ok(__Field::__field35),
"DateMacro" => _serde::__private228::Ok(__Field::__field36),
"TimeMacro" => _serde::__private228::Ok(__Field::__field37),
_ => {
_serde::__private228::Err(_serde::de::Error::unknown_variant(__value,
VARIANTS))
}
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"If" => _serde::__private228::Ok(__Field::__field0),
b"Do" => _serde::__private228::Ok(__Field::__field1),
b"Else" => _serde::__private228::Ok(__Field::__field2),
b"Int" => _serde::__private228::Ok(__Field::__field3),
b"Float" => _serde::__private228::Ok(__Field::__field4),
b"String" => _serde::__private228::Ok(__Field::__field5),
b"Object" => _serde::__private228::Ok(__Field::__field6),
b"Return" => _serde::__private228::Ok(__Field::__field7),
b"While" => _serde::__private228::Ok(__Field::__field8),
b"For" => _serde::__private228::Ok(__Field::__field9),
b"Void" => _serde::__private228::Ok(__Field::__field10),
b"Case" => _serde::__private228::Ok(__Field::__field11),
b"Break" => _serde::__private228::Ok(__Field::__field12),
b"Struct" => _serde::__private228::Ok(__Field::__field13),
b"Action" => _serde::__private228::Ok(__Field::__field14),
b"Switch" => _serde::__private228::Ok(__Field::__field15),
b"Default" => _serde::__private228::Ok(__Field::__field16),
b"Include" => _serde::__private228::Ok(__Field::__field17),
b"Continue" => _serde::__private228::Ok(__Field::__field18),
b"Vector" => _serde::__private228::Ok(__Field::__field19),
b"Const" => _serde::__private228::Ok(__Field::__field20),
b"Define" => _serde::__private228::Ok(__Field::__field21),
b"ObjectSelf" =>
_serde::__private228::Ok(__Field::__field22),
b"ObjectInvalid" =>
_serde::__private228::Ok(__Field::__field23),
b"EngineNumStructuresDefinition" =>
_serde::__private228::Ok(__Field::__field24),
b"EngineStructureDefinition" =>
_serde::__private228::Ok(__Field::__field25),
b"JsonNull" => _serde::__private228::Ok(__Field::__field26),
b"JsonFalse" =>
_serde::__private228::Ok(__Field::__field27),
b"JsonTrue" => _serde::__private228::Ok(__Field::__field28),
b"JsonObject" =>
_serde::__private228::Ok(__Field::__field29),
b"JsonArray" =>
_serde::__private228::Ok(__Field::__field30),
b"JsonString" =>
_serde::__private228::Ok(__Field::__field31),
b"LocationInvalid" =>
_serde::__private228::Ok(__Field::__field32),
b"FunctionMacro" =>
_serde::__private228::Ok(__Field::__field33),
b"FileMacro" =>
_serde::__private228::Ok(__Field::__field34),
b"LineMacro" =>
_serde::__private228::Ok(__Field::__field35),
b"DateMacro" =>
_serde::__private228::Ok(__Field::__field36),
b"TimeMacro" =>
_serde::__private228::Ok(__Field::__field37),
_ => {
let __value =
&_serde::__private228::from_utf8_lossy(__value);
_serde::__private228::Err(_serde::de::Error::unknown_variant(__value,
VARIANTS))
}
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de> {
marker: _serde::__private228::PhantomData<Keyword>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
type Value = Keyword;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"enum Keyword")
}
fn visit_enum<__A>(self, __data: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::EnumAccess<'de> {
match _serde::de::EnumAccess::variant(__data)? {
(__Field::__field0, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::If)
}
(__Field::__field1, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Do)
}
(__Field::__field2, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Else)
}
(__Field::__field3, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Int)
}
(__Field::__field4, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Float)
}
(__Field::__field5, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::String)
}
(__Field::__field6, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Object)
}
(__Field::__field7, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Return)
}
(__Field::__field8, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::While)
}
(__Field::__field9, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::For)
}
(__Field::__field10, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Void)
}
(__Field::__field11, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Case)
}
(__Field::__field12, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Break)
}
(__Field::__field13, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Struct)
}
(__Field::__field14, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Action)
}
(__Field::__field15, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Switch)
}
(__Field::__field16, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Default)
}
(__Field::__field17, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Include)
}
(__Field::__field18, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Continue)
}
(__Field::__field19, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Vector)
}
(__Field::__field20, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Const)
}
(__Field::__field21, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::Define)
}
(__Field::__field22, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::ObjectSelf)
}
(__Field::__field23, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::ObjectInvalid)
}
(__Field::__field24, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::EngineNumStructuresDefinition)
}
(__Field::__field25, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::EngineStructureDefinition)
}
(__Field::__field26, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonNull)
}
(__Field::__field27, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonFalse)
}
(__Field::__field28, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonTrue)
}
(__Field::__field29, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonObject)
}
(__Field::__field30, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonArray)
}
(__Field::__field31, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::JsonString)
}
(__Field::__field32, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::LocationInvalid)
}
(__Field::__field33, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::FunctionMacro)
}
(__Field::__field34, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::FileMacro)
}
(__Field::__field35, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::LineMacro)
}
(__Field::__field36, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::DateMacro)
}
(__Field::__field37, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(Keyword::TimeMacro)
}
}
}
}
#[doc(hidden)]
const VARIANTS: &'static [&'static str] =
&["If", "Do", "Else", "Int", "Float", "String", "Object",
"Return", "While", "For", "Void", "Case", "Break", "Struct",
"Action", "Switch", "Default", "Include", "Continue",
"Vector", "Const", "Define", "ObjectSelf", "ObjectInvalid",
"EngineNumStructuresDefinition",
"EngineStructureDefinition", "JsonNull", "JsonFalse",
"JsonTrue", "JsonObject", "JsonArray", "JsonString",
"LocationInvalid", "FunctionMacro", "FileMacro",
"LineMacro", "DateMacro", "TimeMacro"];
_serde::Deserializer::deserialize_enum(__deserializer,
"Keyword", VARIANTS,
__Visitor {
marker: _serde::__private228::PhantomData::<Keyword>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};Deserialize)]
10pub enum Keyword {
11 If,
13 Do,
15 Else,
17 Int,
19 Float,
21 String,
23 Object,
25 Return,
27 While,
29 For,
31 Void,
33 Case,
35 Break,
37 Struct,
39 Action,
41 Switch,
43 Default,
45 Include,
47 Continue,
49 Vector,
51 Const,
53 Define,
55 ObjectSelf,
57 ObjectInvalid,
59 EngineNumStructuresDefinition,
61 EngineStructureDefinition,
63 JsonNull,
65 JsonFalse,
67 JsonTrue,
69 JsonObject,
71 JsonArray,
73 JsonString,
75 LocationInvalid,
77 FunctionMacro,
79 FileMacro,
81 LineMacro,
83 DateMacro,
85 TimeMacro,
87}
88
89impl Keyword {
90 #[must_use]
92 pub const fn as_str(self) -> &'static str {
93 match self {
94 Self::If => "if",
95 Self::Do => "do",
96 Self::Else => "else",
97 Self::Int => "int",
98 Self::Float => "float",
99 Self::String => "string",
100 Self::Object => "object",
101 Self::Return => "return",
102 Self::While => "while",
103 Self::For => "for",
104 Self::Void => "void",
105 Self::Case => "case",
106 Self::Break => "break",
107 Self::Struct => "struct",
108 Self::Action => "action",
109 Self::Switch => "switch",
110 Self::Default => "default",
111 Self::Include => "#include",
112 Self::Continue => "continue",
113 Self::Vector => "vector",
114 Self::Const => "const",
115 Self::Define => "#define",
116 Self::ObjectSelf => "OBJECT_SELF",
117 Self::ObjectInvalid => "OBJECT_INVALID",
118 Self::EngineNumStructuresDefinition => "ENGINE_NUM_STRUCTURES",
119 Self::EngineStructureDefinition => "ENGINE_STRUCTURE_N",
120 Self::JsonNull => "JSON_NULL",
121 Self::JsonFalse => "JSON_FALSE",
122 Self::JsonTrue => "JSON_TRUE",
123 Self::JsonObject => "JSON_OBJECT",
124 Self::JsonArray => "JSON_ARRAY",
125 Self::JsonString => "JSON_STRING",
126 Self::LocationInvalid => "LOCATION_INVALID",
127 Self::FunctionMacro => "__FUNCTION__",
128 Self::FileMacro => "__FILE__",
129 Self::LineMacro => "__LINE__",
130 Self::DateMacro => "__DATE__",
131 Self::TimeMacro => "__TIME__",
132 }
133 }
134
135 #[must_use]
137 pub const fn upstream_token_code(self) -> u16 {
138 match self {
139 Self::If => 17,
140 Self::Do => 52,
141 Self::Else => 18,
142 Self::Int => 29,
143 Self::Float => 30,
144 Self::String => 31,
145 Self::Object => 32,
146 Self::Return => 49,
147 Self::While => 50,
148 Self::For => 51,
149 Self::Void => 53,
150 Self::Case => 103,
151 Self::Break => 104,
152 Self::Struct => 54,
153 Self::Action => 47,
154 Self::Switch => 105,
155 Self::Default => 106,
156 Self::Include => 57,
157 Self::Continue => 107,
158 Self::Vector => 59,
159 Self::Const => 108,
160 Self::Define => 60,
161 Self::ObjectSelf => 83,
162 Self::ObjectInvalid => 84,
163 Self::EngineNumStructuresDefinition => 61,
164 Self::EngineStructureDefinition => 62,
165 Self::JsonNull => 109,
166 Self::JsonFalse => 110,
167 Self::JsonTrue => 111,
168 Self::JsonObject => 112,
169 Self::JsonArray => 113,
170 Self::JsonString => 114,
171 Self::LocationInvalid => 115,
172 Self::FunctionMacro => 117,
173 Self::FileMacro => 118,
174 Self::LineMacro => 119,
175 Self::DateMacro => 120,
176 Self::TimeMacro => 121,
177 }
178 }
179
180 #[must_use]
182 pub fn from_lexeme(input: &str) -> Option<Self> {
183 match input {
184 "if" => Some(Self::If),
185 "do" => Some(Self::Do),
186 "else" => Some(Self::Else),
187 "int" => Some(Self::Int),
188 "float" => Some(Self::Float),
189 "string" => Some(Self::String),
190 "object" => Some(Self::Object),
191 "return" => Some(Self::Return),
192 "while" => Some(Self::While),
193 "for" => Some(Self::For),
194 "void" => Some(Self::Void),
195 "case" => Some(Self::Case),
196 "break" => Some(Self::Break),
197 "struct" => Some(Self::Struct),
198 "action" => Some(Self::Action),
199 "switch" => Some(Self::Switch),
200 "default" => Some(Self::Default),
201 "#include" => Some(Self::Include),
202 "continue" => Some(Self::Continue),
203 "vector" => Some(Self::Vector),
204 "const" => Some(Self::Const),
205 "#define" => Some(Self::Define),
206 "OBJECT_SELF" => Some(Self::ObjectSelf),
207 "OBJECT_INVALID" => Some(Self::ObjectInvalid),
208 "ENGINE_NUM_STRUCTURES" => Some(Self::EngineNumStructuresDefinition),
209 "ENGINE_STRUCTURE_0" | "ENGINE_STRUCTURE_1" | "ENGINE_STRUCTURE_2"
210 | "ENGINE_STRUCTURE_3" | "ENGINE_STRUCTURE_4" | "ENGINE_STRUCTURE_5"
211 | "ENGINE_STRUCTURE_6" | "ENGINE_STRUCTURE_7" | "ENGINE_STRUCTURE_8"
212 | "ENGINE_STRUCTURE_9" => Some(Self::EngineStructureDefinition),
213 "JSON_NULL" => Some(Self::JsonNull),
214 "JSON_FALSE" => Some(Self::JsonFalse),
215 "JSON_TRUE" => Some(Self::JsonTrue),
216 "JSON_OBJECT" => Some(Self::JsonObject),
217 "JSON_ARRAY" => Some(Self::JsonArray),
218 "JSON_STRING" => Some(Self::JsonString),
219 "LOCATION_INVALID" => Some(Self::LocationInvalid),
220 "__FUNCTION__" => Some(Self::FunctionMacro),
221 "__FILE__" => Some(Self::FileMacro),
222 "__LINE__" => Some(Self::LineMacro),
223 "__DATE__" => Some(Self::DateMacro),
224 "__TIME__" => Some(Self::TimeMacro),
225 _ => None,
226 }
227 }
228}
229
230#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TokenKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TokenKind::Eof => ::core::fmt::Formatter::write_str(f, "Eof"),
TokenKind::Identifier =>
::core::fmt::Formatter::write_str(f, "Identifier"),
TokenKind::Integer =>
::core::fmt::Formatter::write_str(f, "Integer"),
TokenKind::HexInteger =>
::core::fmt::Formatter::write_str(f, "HexInteger"),
TokenKind::BinaryInteger =>
::core::fmt::Formatter::write_str(f, "BinaryInteger"),
TokenKind::OctalInteger =>
::core::fmt::Formatter::write_str(f, "OctalInteger"),
TokenKind::Float => ::core::fmt::Formatter::write_str(f, "Float"),
TokenKind::String =>
::core::fmt::Formatter::write_str(f, "String"),
TokenKind::HashedString =>
::core::fmt::Formatter::write_str(f, "HashedString"),
TokenKind::Keyword(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Keyword", &__self_0),
TokenKind::Divide =>
::core::fmt::Formatter::write_str(f, "Divide"),
TokenKind::LogicalAnd =>
::core::fmt::Formatter::write_str(f, "LogicalAnd"),
TokenKind::LogicalOr =>
::core::fmt::Formatter::write_str(f, "LogicalOr"),
TokenKind::Minus => ::core::fmt::Formatter::write_str(f, "Minus"),
TokenKind::LeftBrace =>
::core::fmt::Formatter::write_str(f, "LeftBrace"),
TokenKind::RightBrace =>
::core::fmt::Formatter::write_str(f, "RightBrace"),
TokenKind::LeftParen =>
::core::fmt::Formatter::write_str(f, "LeftParen"),
TokenKind::RightParen =>
::core::fmt::Formatter::write_str(f, "RightParen"),
TokenKind::Semicolon =>
::core::fmt::Formatter::write_str(f, "Semicolon"),
TokenKind::Comma => ::core::fmt::Formatter::write_str(f, "Comma"),
TokenKind::GreaterEqual =>
::core::fmt::Formatter::write_str(f, "GreaterEqual"),
TokenKind::LessEqual =>
::core::fmt::Formatter::write_str(f, "LessEqual"),
TokenKind::GreaterThan =>
::core::fmt::Formatter::write_str(f, "GreaterThan"),
TokenKind::LessThan =>
::core::fmt::Formatter::write_str(f, "LessThan"),
TokenKind::NotEqual =>
::core::fmt::Formatter::write_str(f, "NotEqual"),
TokenKind::EqualEqual =>
::core::fmt::Formatter::write_str(f, "EqualEqual"),
TokenKind::Plus => ::core::fmt::Formatter::write_str(f, "Plus"),
TokenKind::Modulus =>
::core::fmt::Formatter::write_str(f, "Modulus"),
TokenKind::Assign =>
::core::fmt::Formatter::write_str(f, "Assign"),
TokenKind::InclusiveOr =>
::core::fmt::Formatter::write_str(f, "InclusiveOr"),
TokenKind::ExclusiveOr =>
::core::fmt::Formatter::write_str(f, "ExclusiveOr"),
TokenKind::BooleanAnd =>
::core::fmt::Formatter::write_str(f, "BooleanAnd"),
TokenKind::ShiftLeft =>
::core::fmt::Formatter::write_str(f, "ShiftLeft"),
TokenKind::ShiftRight =>
::core::fmt::Formatter::write_str(f, "ShiftRight"),
TokenKind::Multiply =>
::core::fmt::Formatter::write_str(f, "Multiply"),
TokenKind::UnsignedShiftRight =>
::core::fmt::Formatter::write_str(f, "UnsignedShiftRight"),
TokenKind::Tilde => ::core::fmt::Formatter::write_str(f, "Tilde"),
TokenKind::StructurePartSpecify =>
::core::fmt::Formatter::write_str(f, "StructurePartSpecify"),
TokenKind::BooleanNot =>
::core::fmt::Formatter::write_str(f, "BooleanNot"),
TokenKind::LeftSquareBracket =>
::core::fmt::Formatter::write_str(f, "LeftSquareBracket"),
TokenKind::RightSquareBracket =>
::core::fmt::Formatter::write_str(f, "RightSquareBracket"),
TokenKind::Increment =>
::core::fmt::Formatter::write_str(f, "Increment"),
TokenKind::Decrement =>
::core::fmt::Formatter::write_str(f, "Decrement"),
TokenKind::AssignMinus =>
::core::fmt::Formatter::write_str(f, "AssignMinus"),
TokenKind::AssignPlus =>
::core::fmt::Formatter::write_str(f, "AssignPlus"),
TokenKind::AssignMultiply =>
::core::fmt::Formatter::write_str(f, "AssignMultiply"),
TokenKind::AssignDivide =>
::core::fmt::Formatter::write_str(f, "AssignDivide"),
TokenKind::AssignModulus =>
::core::fmt::Formatter::write_str(f, "AssignModulus"),
TokenKind::AssignAnd =>
::core::fmt::Formatter::write_str(f, "AssignAnd"),
TokenKind::AssignXor =>
::core::fmt::Formatter::write_str(f, "AssignXor"),
TokenKind::AssignOr =>
::core::fmt::Formatter::write_str(f, "AssignOr"),
TokenKind::AssignShiftLeft =>
::core::fmt::Formatter::write_str(f, "AssignShiftLeft"),
TokenKind::AssignShiftRight =>
::core::fmt::Formatter::write_str(f, "AssignShiftRight"),
TokenKind::AssignUnsignedShiftRight =>
::core::fmt::Formatter::write_str(f,
"AssignUnsignedShiftRight"),
TokenKind::QuestionMark =>
::core::fmt::Formatter::write_str(f, "QuestionMark"),
TokenKind::Colon => ::core::fmt::Formatter::write_str(f, "Colon"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TokenKind {
#[inline]
fn clone(&self) -> TokenKind {
match self {
TokenKind::Eof => TokenKind::Eof,
TokenKind::Identifier => TokenKind::Identifier,
TokenKind::Integer => TokenKind::Integer,
TokenKind::HexInteger => TokenKind::HexInteger,
TokenKind::BinaryInteger => TokenKind::BinaryInteger,
TokenKind::OctalInteger => TokenKind::OctalInteger,
TokenKind::Float => TokenKind::Float,
TokenKind::String => TokenKind::String,
TokenKind::HashedString => TokenKind::HashedString,
TokenKind::Keyword(__self_0) =>
TokenKind::Keyword(::core::clone::Clone::clone(__self_0)),
TokenKind::Divide => TokenKind::Divide,
TokenKind::LogicalAnd => TokenKind::LogicalAnd,
TokenKind::LogicalOr => TokenKind::LogicalOr,
TokenKind::Minus => TokenKind::Minus,
TokenKind::LeftBrace => TokenKind::LeftBrace,
TokenKind::RightBrace => TokenKind::RightBrace,
TokenKind::LeftParen => TokenKind::LeftParen,
TokenKind::RightParen => TokenKind::RightParen,
TokenKind::Semicolon => TokenKind::Semicolon,
TokenKind::Comma => TokenKind::Comma,
TokenKind::GreaterEqual => TokenKind::GreaterEqual,
TokenKind::LessEqual => TokenKind::LessEqual,
TokenKind::GreaterThan => TokenKind::GreaterThan,
TokenKind::LessThan => TokenKind::LessThan,
TokenKind::NotEqual => TokenKind::NotEqual,
TokenKind::EqualEqual => TokenKind::EqualEqual,
TokenKind::Plus => TokenKind::Plus,
TokenKind::Modulus => TokenKind::Modulus,
TokenKind::Assign => TokenKind::Assign,
TokenKind::InclusiveOr => TokenKind::InclusiveOr,
TokenKind::ExclusiveOr => TokenKind::ExclusiveOr,
TokenKind::BooleanAnd => TokenKind::BooleanAnd,
TokenKind::ShiftLeft => TokenKind::ShiftLeft,
TokenKind::ShiftRight => TokenKind::ShiftRight,
TokenKind::Multiply => TokenKind::Multiply,
TokenKind::UnsignedShiftRight => TokenKind::UnsignedShiftRight,
TokenKind::Tilde => TokenKind::Tilde,
TokenKind::StructurePartSpecify =>
TokenKind::StructurePartSpecify,
TokenKind::BooleanNot => TokenKind::BooleanNot,
TokenKind::LeftSquareBracket => TokenKind::LeftSquareBracket,
TokenKind::RightSquareBracket => TokenKind::RightSquareBracket,
TokenKind::Increment => TokenKind::Increment,
TokenKind::Decrement => TokenKind::Decrement,
TokenKind::AssignMinus => TokenKind::AssignMinus,
TokenKind::AssignPlus => TokenKind::AssignPlus,
TokenKind::AssignMultiply => TokenKind::AssignMultiply,
TokenKind::AssignDivide => TokenKind::AssignDivide,
TokenKind::AssignModulus => TokenKind::AssignModulus,
TokenKind::AssignAnd => TokenKind::AssignAnd,
TokenKind::AssignXor => TokenKind::AssignXor,
TokenKind::AssignOr => TokenKind::AssignOr,
TokenKind::AssignShiftLeft => TokenKind::AssignShiftLeft,
TokenKind::AssignShiftRight => TokenKind::AssignShiftRight,
TokenKind::AssignUnsignedShiftRight =>
TokenKind::AssignUnsignedShiftRight,
TokenKind::QuestionMark => TokenKind::QuestionMark,
TokenKind::Colon => TokenKind::Colon,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TokenKind {
#[inline]
fn eq(&self, other: &TokenKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TokenKind::Keyword(__self_0), TokenKind::Keyword(__arg1_0))
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for TokenKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Keyword>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for TokenKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TokenKind::Keyword(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for TokenKind {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
match *self {
TokenKind::Eof =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 0u32, "Eof"),
TokenKind::Identifier =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 1u32, "Identifier"),
TokenKind::Integer =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 2u32, "Integer"),
TokenKind::HexInteger =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 3u32, "HexInteger"),
TokenKind::BinaryInteger =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 4u32, "BinaryInteger"),
TokenKind::OctalInteger =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 5u32, "OctalInteger"),
TokenKind::Float =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 6u32, "Float"),
TokenKind::String =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 7u32, "String"),
TokenKind::HashedString =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 8u32, "HashedString"),
TokenKind::Keyword(ref __field0) =>
_serde::Serializer::serialize_newtype_variant(__serializer,
"TokenKind", 9u32, "Keyword", __field0),
TokenKind::Divide =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 10u32, "Divide"),
TokenKind::LogicalAnd =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 11u32, "LogicalAnd"),
TokenKind::LogicalOr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 12u32, "LogicalOr"),
TokenKind::Minus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 13u32, "Minus"),
TokenKind::LeftBrace =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 14u32, "LeftBrace"),
TokenKind::RightBrace =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 15u32, "RightBrace"),
TokenKind::LeftParen =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 16u32, "LeftParen"),
TokenKind::RightParen =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 17u32, "RightParen"),
TokenKind::Semicolon =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 18u32, "Semicolon"),
TokenKind::Comma =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 19u32, "Comma"),
TokenKind::GreaterEqual =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 20u32, "GreaterEqual"),
TokenKind::LessEqual =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 21u32, "LessEqual"),
TokenKind::GreaterThan =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 22u32, "GreaterThan"),
TokenKind::LessThan =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 23u32, "LessThan"),
TokenKind::NotEqual =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 24u32, "NotEqual"),
TokenKind::EqualEqual =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 25u32, "EqualEqual"),
TokenKind::Plus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 26u32, "Plus"),
TokenKind::Modulus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 27u32, "Modulus"),
TokenKind::Assign =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 28u32, "Assign"),
TokenKind::InclusiveOr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 29u32, "InclusiveOr"),
TokenKind::ExclusiveOr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 30u32, "ExclusiveOr"),
TokenKind::BooleanAnd =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 31u32, "BooleanAnd"),
TokenKind::ShiftLeft =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 32u32, "ShiftLeft"),
TokenKind::ShiftRight =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 33u32, "ShiftRight"),
TokenKind::Multiply =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 34u32, "Multiply"),
TokenKind::UnsignedShiftRight =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 35u32, "UnsignedShiftRight"),
TokenKind::Tilde =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 36u32, "Tilde"),
TokenKind::StructurePartSpecify =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 37u32, "StructurePartSpecify"),
TokenKind::BooleanNot =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 38u32, "BooleanNot"),
TokenKind::LeftSquareBracket =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 39u32, "LeftSquareBracket"),
TokenKind::RightSquareBracket =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 40u32, "RightSquareBracket"),
TokenKind::Increment =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 41u32, "Increment"),
TokenKind::Decrement =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 42u32, "Decrement"),
TokenKind::AssignMinus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 43u32, "AssignMinus"),
TokenKind::AssignPlus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 44u32, "AssignPlus"),
TokenKind::AssignMultiply =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 45u32, "AssignMultiply"),
TokenKind::AssignDivide =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 46u32, "AssignDivide"),
TokenKind::AssignModulus =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 47u32, "AssignModulus"),
TokenKind::AssignAnd =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 48u32, "AssignAnd"),
TokenKind::AssignXor =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 49u32, "AssignXor"),
TokenKind::AssignOr =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 50u32, "AssignOr"),
TokenKind::AssignShiftLeft =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 51u32, "AssignShiftLeft"),
TokenKind::AssignShiftRight =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 52u32, "AssignShiftRight"),
TokenKind::AssignUnsignedShiftRight =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 53u32, "AssignUnsignedShiftRight"),
TokenKind::QuestionMark =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 54u32, "QuestionMark"),
TokenKind::Colon =>
_serde::Serializer::serialize_unit_variant(__serializer,
"TokenKind", 55u32, "Colon"),
}
}
}
};Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for TokenKind {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field {
__field0,
__field1,
__field2,
__field3,
__field4,
__field5,
__field6,
__field7,
__field8,
__field9,
__field10,
__field11,
__field12,
__field13,
__field14,
__field15,
__field16,
__field17,
__field18,
__field19,
__field20,
__field21,
__field22,
__field23,
__field24,
__field25,
__field26,
__field27,
__field28,
__field29,
__field30,
__field31,
__field32,
__field33,
__field34,
__field35,
__field36,
__field37,
__field38,
__field39,
__field40,
__field41,
__field42,
__field43,
__field44,
__field45,
__field46,
__field47,
__field48,
__field49,
__field50,
__field51,
__field52,
__field53,
__field54,
__field55,
}
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"variant identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
3u64 => _serde::__private228::Ok(__Field::__field3),
4u64 => _serde::__private228::Ok(__Field::__field4),
5u64 => _serde::__private228::Ok(__Field::__field5),
6u64 => _serde::__private228::Ok(__Field::__field6),
7u64 => _serde::__private228::Ok(__Field::__field7),
8u64 => _serde::__private228::Ok(__Field::__field8),
9u64 => _serde::__private228::Ok(__Field::__field9),
10u64 => _serde::__private228::Ok(__Field::__field10),
11u64 => _serde::__private228::Ok(__Field::__field11),
12u64 => _serde::__private228::Ok(__Field::__field12),
13u64 => _serde::__private228::Ok(__Field::__field13),
14u64 => _serde::__private228::Ok(__Field::__field14),
15u64 => _serde::__private228::Ok(__Field::__field15),
16u64 => _serde::__private228::Ok(__Field::__field16),
17u64 => _serde::__private228::Ok(__Field::__field17),
18u64 => _serde::__private228::Ok(__Field::__field18),
19u64 => _serde::__private228::Ok(__Field::__field19),
20u64 => _serde::__private228::Ok(__Field::__field20),
21u64 => _serde::__private228::Ok(__Field::__field21),
22u64 => _serde::__private228::Ok(__Field::__field22),
23u64 => _serde::__private228::Ok(__Field::__field23),
24u64 => _serde::__private228::Ok(__Field::__field24),
25u64 => _serde::__private228::Ok(__Field::__field25),
26u64 => _serde::__private228::Ok(__Field::__field26),
27u64 => _serde::__private228::Ok(__Field::__field27),
28u64 => _serde::__private228::Ok(__Field::__field28),
29u64 => _serde::__private228::Ok(__Field::__field29),
30u64 => _serde::__private228::Ok(__Field::__field30),
31u64 => _serde::__private228::Ok(__Field::__field31),
32u64 => _serde::__private228::Ok(__Field::__field32),
33u64 => _serde::__private228::Ok(__Field::__field33),
34u64 => _serde::__private228::Ok(__Field::__field34),
35u64 => _serde::__private228::Ok(__Field::__field35),
36u64 => _serde::__private228::Ok(__Field::__field36),
37u64 => _serde::__private228::Ok(__Field::__field37),
38u64 => _serde::__private228::Ok(__Field::__field38),
39u64 => _serde::__private228::Ok(__Field::__field39),
40u64 => _serde::__private228::Ok(__Field::__field40),
41u64 => _serde::__private228::Ok(__Field::__field41),
42u64 => _serde::__private228::Ok(__Field::__field42),
43u64 => _serde::__private228::Ok(__Field::__field43),
44u64 => _serde::__private228::Ok(__Field::__field44),
45u64 => _serde::__private228::Ok(__Field::__field45),
46u64 => _serde::__private228::Ok(__Field::__field46),
47u64 => _serde::__private228::Ok(__Field::__field47),
48u64 => _serde::__private228::Ok(__Field::__field48),
49u64 => _serde::__private228::Ok(__Field::__field49),
50u64 => _serde::__private228::Ok(__Field::__field50),
51u64 => _serde::__private228::Ok(__Field::__field51),
52u64 => _serde::__private228::Ok(__Field::__field52),
53u64 => _serde::__private228::Ok(__Field::__field53),
54u64 => _serde::__private228::Ok(__Field::__field54),
55u64 => _serde::__private228::Ok(__Field::__field55),
_ =>
_serde::__private228::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
&"variant index 0 <= i < 56")),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"Eof" => _serde::__private228::Ok(__Field::__field0),
"Identifier" => _serde::__private228::Ok(__Field::__field1),
"Integer" => _serde::__private228::Ok(__Field::__field2),
"HexInteger" => _serde::__private228::Ok(__Field::__field3),
"BinaryInteger" =>
_serde::__private228::Ok(__Field::__field4),
"OctalInteger" =>
_serde::__private228::Ok(__Field::__field5),
"Float" => _serde::__private228::Ok(__Field::__field6),
"String" => _serde::__private228::Ok(__Field::__field7),
"HashedString" =>
_serde::__private228::Ok(__Field::__field8),
"Keyword" => _serde::__private228::Ok(__Field::__field9),
"Divide" => _serde::__private228::Ok(__Field::__field10),
"LogicalAnd" =>
_serde::__private228::Ok(__Field::__field11),
"LogicalOr" => _serde::__private228::Ok(__Field::__field12),
"Minus" => _serde::__private228::Ok(__Field::__field13),
"LeftBrace" => _serde::__private228::Ok(__Field::__field14),
"RightBrace" =>
_serde::__private228::Ok(__Field::__field15),
"LeftParen" => _serde::__private228::Ok(__Field::__field16),
"RightParen" =>
_serde::__private228::Ok(__Field::__field17),
"Semicolon" => _serde::__private228::Ok(__Field::__field18),
"Comma" => _serde::__private228::Ok(__Field::__field19),
"GreaterEqual" =>
_serde::__private228::Ok(__Field::__field20),
"LessEqual" => _serde::__private228::Ok(__Field::__field21),
"GreaterThan" =>
_serde::__private228::Ok(__Field::__field22),
"LessThan" => _serde::__private228::Ok(__Field::__field23),
"NotEqual" => _serde::__private228::Ok(__Field::__field24),
"EqualEqual" =>
_serde::__private228::Ok(__Field::__field25),
"Plus" => _serde::__private228::Ok(__Field::__field26),
"Modulus" => _serde::__private228::Ok(__Field::__field27),
"Assign" => _serde::__private228::Ok(__Field::__field28),
"InclusiveOr" =>
_serde::__private228::Ok(__Field::__field29),
"ExclusiveOr" =>
_serde::__private228::Ok(__Field::__field30),
"BooleanAnd" =>
_serde::__private228::Ok(__Field::__field31),
"ShiftLeft" => _serde::__private228::Ok(__Field::__field32),
"ShiftRight" =>
_serde::__private228::Ok(__Field::__field33),
"Multiply" => _serde::__private228::Ok(__Field::__field34),
"UnsignedShiftRight" =>
_serde::__private228::Ok(__Field::__field35),
"Tilde" => _serde::__private228::Ok(__Field::__field36),
"StructurePartSpecify" =>
_serde::__private228::Ok(__Field::__field37),
"BooleanNot" =>
_serde::__private228::Ok(__Field::__field38),
"LeftSquareBracket" =>
_serde::__private228::Ok(__Field::__field39),
"RightSquareBracket" =>
_serde::__private228::Ok(__Field::__field40),
"Increment" => _serde::__private228::Ok(__Field::__field41),
"Decrement" => _serde::__private228::Ok(__Field::__field42),
"AssignMinus" =>
_serde::__private228::Ok(__Field::__field43),
"AssignPlus" =>
_serde::__private228::Ok(__Field::__field44),
"AssignMultiply" =>
_serde::__private228::Ok(__Field::__field45),
"AssignDivide" =>
_serde::__private228::Ok(__Field::__field46),
"AssignModulus" =>
_serde::__private228::Ok(__Field::__field47),
"AssignAnd" => _serde::__private228::Ok(__Field::__field48),
"AssignXor" => _serde::__private228::Ok(__Field::__field49),
"AssignOr" => _serde::__private228::Ok(__Field::__field50),
"AssignShiftLeft" =>
_serde::__private228::Ok(__Field::__field51),
"AssignShiftRight" =>
_serde::__private228::Ok(__Field::__field52),
"AssignUnsignedShiftRight" =>
_serde::__private228::Ok(__Field::__field53),
"QuestionMark" =>
_serde::__private228::Ok(__Field::__field54),
"Colon" => _serde::__private228::Ok(__Field::__field55),
_ => {
_serde::__private228::Err(_serde::de::Error::unknown_variant(__value,
VARIANTS))
}
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"Eof" => _serde::__private228::Ok(__Field::__field0),
b"Identifier" =>
_serde::__private228::Ok(__Field::__field1),
b"Integer" => _serde::__private228::Ok(__Field::__field2),
b"HexInteger" =>
_serde::__private228::Ok(__Field::__field3),
b"BinaryInteger" =>
_serde::__private228::Ok(__Field::__field4),
b"OctalInteger" =>
_serde::__private228::Ok(__Field::__field5),
b"Float" => _serde::__private228::Ok(__Field::__field6),
b"String" => _serde::__private228::Ok(__Field::__field7),
b"HashedString" =>
_serde::__private228::Ok(__Field::__field8),
b"Keyword" => _serde::__private228::Ok(__Field::__field9),
b"Divide" => _serde::__private228::Ok(__Field::__field10),
b"LogicalAnd" =>
_serde::__private228::Ok(__Field::__field11),
b"LogicalOr" =>
_serde::__private228::Ok(__Field::__field12),
b"Minus" => _serde::__private228::Ok(__Field::__field13),
b"LeftBrace" =>
_serde::__private228::Ok(__Field::__field14),
b"RightBrace" =>
_serde::__private228::Ok(__Field::__field15),
b"LeftParen" =>
_serde::__private228::Ok(__Field::__field16),
b"RightParen" =>
_serde::__private228::Ok(__Field::__field17),
b"Semicolon" =>
_serde::__private228::Ok(__Field::__field18),
b"Comma" => _serde::__private228::Ok(__Field::__field19),
b"GreaterEqual" =>
_serde::__private228::Ok(__Field::__field20),
b"LessEqual" =>
_serde::__private228::Ok(__Field::__field21),
b"GreaterThan" =>
_serde::__private228::Ok(__Field::__field22),
b"LessThan" => _serde::__private228::Ok(__Field::__field23),
b"NotEqual" => _serde::__private228::Ok(__Field::__field24),
b"EqualEqual" =>
_serde::__private228::Ok(__Field::__field25),
b"Plus" => _serde::__private228::Ok(__Field::__field26),
b"Modulus" => _serde::__private228::Ok(__Field::__field27),
b"Assign" => _serde::__private228::Ok(__Field::__field28),
b"InclusiveOr" =>
_serde::__private228::Ok(__Field::__field29),
b"ExclusiveOr" =>
_serde::__private228::Ok(__Field::__field30),
b"BooleanAnd" =>
_serde::__private228::Ok(__Field::__field31),
b"ShiftLeft" =>
_serde::__private228::Ok(__Field::__field32),
b"ShiftRight" =>
_serde::__private228::Ok(__Field::__field33),
b"Multiply" => _serde::__private228::Ok(__Field::__field34),
b"UnsignedShiftRight" =>
_serde::__private228::Ok(__Field::__field35),
b"Tilde" => _serde::__private228::Ok(__Field::__field36),
b"StructurePartSpecify" =>
_serde::__private228::Ok(__Field::__field37),
b"BooleanNot" =>
_serde::__private228::Ok(__Field::__field38),
b"LeftSquareBracket" =>
_serde::__private228::Ok(__Field::__field39),
b"RightSquareBracket" =>
_serde::__private228::Ok(__Field::__field40),
b"Increment" =>
_serde::__private228::Ok(__Field::__field41),
b"Decrement" =>
_serde::__private228::Ok(__Field::__field42),
b"AssignMinus" =>
_serde::__private228::Ok(__Field::__field43),
b"AssignPlus" =>
_serde::__private228::Ok(__Field::__field44),
b"AssignMultiply" =>
_serde::__private228::Ok(__Field::__field45),
b"AssignDivide" =>
_serde::__private228::Ok(__Field::__field46),
b"AssignModulus" =>
_serde::__private228::Ok(__Field::__field47),
b"AssignAnd" =>
_serde::__private228::Ok(__Field::__field48),
b"AssignXor" =>
_serde::__private228::Ok(__Field::__field49),
b"AssignOr" => _serde::__private228::Ok(__Field::__field50),
b"AssignShiftLeft" =>
_serde::__private228::Ok(__Field::__field51),
b"AssignShiftRight" =>
_serde::__private228::Ok(__Field::__field52),
b"AssignUnsignedShiftRight" =>
_serde::__private228::Ok(__Field::__field53),
b"QuestionMark" =>
_serde::__private228::Ok(__Field::__field54),
b"Colon" => _serde::__private228::Ok(__Field::__field55),
_ => {
let __value =
&_serde::__private228::from_utf8_lossy(__value);
_serde::__private228::Err(_serde::de::Error::unknown_variant(__value,
VARIANTS))
}
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de> {
marker: _serde::__private228::PhantomData<TokenKind>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
type Value = TokenKind;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"enum TokenKind")
}
fn visit_enum<__A>(self, __data: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::EnumAccess<'de> {
match _serde::de::EnumAccess::variant(__data)? {
(__Field::__field0, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Eof)
}
(__Field::__field1, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Identifier)
}
(__Field::__field2, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Integer)
}
(__Field::__field3, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::HexInteger)
}
(__Field::__field4, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::BinaryInteger)
}
(__Field::__field5, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::OctalInteger)
}
(__Field::__field6, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Float)
}
(__Field::__field7, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::String)
}
(__Field::__field8, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::HashedString)
}
(__Field::__field9, __variant) =>
_serde::__private228::Result::map(_serde::de::VariantAccess::newtype_variant::<Keyword>(__variant),
TokenKind::Keyword),
(__Field::__field10, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Divide)
}
(__Field::__field11, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LogicalAnd)
}
(__Field::__field12, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LogicalOr)
}
(__Field::__field13, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Minus)
}
(__Field::__field14, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LeftBrace)
}
(__Field::__field15, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::RightBrace)
}
(__Field::__field16, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LeftParen)
}
(__Field::__field17, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::RightParen)
}
(__Field::__field18, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Semicolon)
}
(__Field::__field19, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Comma)
}
(__Field::__field20, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::GreaterEqual)
}
(__Field::__field21, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LessEqual)
}
(__Field::__field22, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::GreaterThan)
}
(__Field::__field23, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LessThan)
}
(__Field::__field24, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::NotEqual)
}
(__Field::__field25, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::EqualEqual)
}
(__Field::__field26, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Plus)
}
(__Field::__field27, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Modulus)
}
(__Field::__field28, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Assign)
}
(__Field::__field29, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::InclusiveOr)
}
(__Field::__field30, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::ExclusiveOr)
}
(__Field::__field31, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::BooleanAnd)
}
(__Field::__field32, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::ShiftLeft)
}
(__Field::__field33, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::ShiftRight)
}
(__Field::__field34, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Multiply)
}
(__Field::__field35, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::UnsignedShiftRight)
}
(__Field::__field36, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Tilde)
}
(__Field::__field37, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::StructurePartSpecify)
}
(__Field::__field38, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::BooleanNot)
}
(__Field::__field39, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::LeftSquareBracket)
}
(__Field::__field40, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::RightSquareBracket)
}
(__Field::__field41, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Increment)
}
(__Field::__field42, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Decrement)
}
(__Field::__field43, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignMinus)
}
(__Field::__field44, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignPlus)
}
(__Field::__field45, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignMultiply)
}
(__Field::__field46, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignDivide)
}
(__Field::__field47, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignModulus)
}
(__Field::__field48, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignAnd)
}
(__Field::__field49, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignXor)
}
(__Field::__field50, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignOr)
}
(__Field::__field51, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignShiftLeft)
}
(__Field::__field52, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignShiftRight)
}
(__Field::__field53, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::AssignUnsignedShiftRight)
}
(__Field::__field54, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::QuestionMark)
}
(__Field::__field55, __variant) => {
_serde::de::VariantAccess::unit_variant(__variant)?;
_serde::__private228::Ok(TokenKind::Colon)
}
}
}
}
#[doc(hidden)]
const VARIANTS: &'static [&'static str] =
&["Eof", "Identifier", "Integer", "HexInteger",
"BinaryInteger", "OctalInteger", "Float", "String",
"HashedString", "Keyword", "Divide", "LogicalAnd",
"LogicalOr", "Minus", "LeftBrace", "RightBrace",
"LeftParen", "RightParen", "Semicolon", "Comma",
"GreaterEqual", "LessEqual", "GreaterThan", "LessThan",
"NotEqual", "EqualEqual", "Plus", "Modulus", "Assign",
"InclusiveOr", "ExclusiveOr", "BooleanAnd", "ShiftLeft",
"ShiftRight", "Multiply", "UnsignedShiftRight", "Tilde",
"StructurePartSpecify", "BooleanNot", "LeftSquareBracket",
"RightSquareBracket", "Increment", "Decrement",
"AssignMinus", "AssignPlus", "AssignMultiply",
"AssignDivide", "AssignModulus", "AssignAnd", "AssignXor",
"AssignOr", "AssignShiftLeft", "AssignShiftRight",
"AssignUnsignedShiftRight", "QuestionMark", "Colon"];
_serde::Deserializer::deserialize_enum(__deserializer,
"TokenKind", VARIANTS,
__Visitor {
marker: _serde::__private228::PhantomData::<TokenKind>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};Deserialize)]
232pub enum TokenKind {
233 Eof,
235 Identifier,
237 Integer,
239 HexInteger,
241 BinaryInteger,
243 OctalInteger,
245 Float,
247 String,
249 HashedString,
254 Keyword(Keyword),
256 Divide,
258 LogicalAnd,
260 LogicalOr,
262 Minus,
264 LeftBrace,
266 RightBrace,
268 LeftParen,
270 RightParen,
272 Semicolon,
274 Comma,
276 GreaterEqual,
278 LessEqual,
280 GreaterThan,
282 LessThan,
284 NotEqual,
286 EqualEqual,
288 Plus,
290 Modulus,
292 Assign,
294 InclusiveOr,
296 ExclusiveOr,
298 BooleanAnd,
300 ShiftLeft,
302 ShiftRight,
304 Multiply,
306 UnsignedShiftRight,
308 Tilde,
310 StructurePartSpecify,
312 BooleanNot,
314 LeftSquareBracket,
316 RightSquareBracket,
318 Increment,
320 Decrement,
322 AssignMinus,
324 AssignPlus,
326 AssignMultiply,
328 AssignDivide,
330 AssignModulus,
332 AssignAnd,
334 AssignXor,
336 AssignOr,
338 AssignShiftLeft,
340 AssignShiftRight,
342 AssignUnsignedShiftRight,
344 QuestionMark,
346 Colon,
348}
349
350#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Token {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Token", "kind",
&self.kind, "span", &self.span, "text", &&self.text)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Token {
#[inline]
fn clone(&self) -> Token {
Token {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
text: ::core::clone::Clone::clone(&self.text),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Token {
#[inline]
fn eq(&self, other: &Token) -> bool {
self.kind == other.kind && self.span == other.span &&
self.text == other.text
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Token {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TokenKind>;
let _: ::core::cmp::AssertParamIsEq<Span>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Token {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.span, state);
::core::hash::Hash::hash(&self.text, state)
}
}Hash, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl _serde::Serialize for Token {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer, "Token",
false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"kind", &self.kind)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"span", &self.span)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"text", &self.text)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for Token {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __field2, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"kind" => _serde::__private228::Ok(__Field::__field0),
"span" => _serde::__private228::Ok(__Field::__field1),
"text" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"kind" => _serde::__private228::Ok(__Field::__field0),
b"span" => _serde::__private228::Ok(__Field::__field1),
b"text" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de> {
marker: _serde::__private228::PhantomData<Token>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
type Value = Token;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct Token")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<TokenKind>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct Token with 3 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<Span>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct Token with 3 elements")),
};
let __field2 =
match _serde::de::SeqAccess::next_element::<String>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(2usize,
&"struct Token with 3 elements")),
};
_serde::__private228::Ok(Token {
kind: __field0,
span: __field1,
text: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<TokenKind> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<Span> =
_serde::__private228::None;
let mut __field2: _serde::__private228::Option<String> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("kind"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<TokenKind>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("span"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Span>(&mut __map)?);
}
__Field::__field2 => {
if _serde::__private228::Option::is_some(&__field2) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("text"));
}
__field2 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<String>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("kind")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("span")?,
};
let __field2 =
match __field2 {
_serde::__private228::Some(__field2) => __field2,
_serde::__private228::None =>
_serde::__private228::de::missing_field("text")?,
};
_serde::__private228::Ok(Token {
kind: __field0,
span: __field1,
text: __field2,
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["kind", "span", "text"];
_serde::Deserializer::deserialize_struct(__deserializer,
"Token", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<Token>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};Deserialize)]
352pub struct Token {
353 pub kind: TokenKind,
355 pub span: Span,
357 pub text: String,
359}
360
361impl Token {
362 pub fn new(kind: TokenKind, span: Span, text: impl Into<String>) -> Self {
364 Self {
365 kind,
366 span,
367 text: text.into(),
368 }
369 }
370}
371
372#[cfg(test)]
373mod tests {
374 use super::{Keyword, TokenKind};
375
376 #[test]
377 fn resolves_keyword_table_entries_from_upstream() {
378 assert_eq!(Keyword::from_lexeme("#include"), Some(Keyword::Include));
379 assert_eq!(
380 Keyword::from_lexeme("ENGINE_STRUCTURE_3"),
381 Some(Keyword::EngineStructureDefinition)
382 );
383 assert_eq!(Keyword::from_lexeme("__TIME__"), Some(Keyword::TimeMacro));
384 assert_eq!(Keyword::from_lexeme("not_a_keyword"), None);
385 }
386
387 #[test]
388 fn keyword_token_code_matches_upstream_header() {
389 assert_eq!(Keyword::Include.upstream_token_code(), 57);
390 assert_eq!(Keyword::JsonTrue.upstream_token_code(), 111);
391 assert_eq!(Keyword::TimeMacro.upstream_token_code(), 121);
392 }
393
394 #[test]
395 fn token_kind_equality_handles_keyword_payload() {
396 assert_eq!(
397 TokenKind::Keyword(Keyword::If),
398 TokenKind::Keyword(Keyword::If)
399 );
400 }
401}