use super::TokenKind;
use std::collections::HashMap;
pub fn keyword_map() -> HashMap<&'static str, TokenKind> {
let mut m = HashMap::new();
m.insert("auto", TokenKind::Auto);
m.insert("break", TokenKind::Break);
m.insert("case", TokenKind::Case);
m.insert("char", TokenKind::Char);
m.insert("const", TokenKind::Const);
m.insert("continue", TokenKind::Continue);
m.insert("default", TokenKind::Default);
m.insert("do", TokenKind::Do);
m.insert("double", TokenKind::Double);
m.insert("else", TokenKind::Else);
m.insert("enum", TokenKind::Enum);
m.insert("extern", TokenKind::Extern);
m.insert("float", TokenKind::Float);
m.insert("for", TokenKind::For);
m.insert("goto", TokenKind::Goto);
m.insert("if", TokenKind::If);
m.insert("inline", TokenKind::Inline);
m.insert("int", TokenKind::Int);
m.insert("long", TokenKind::Long);
m.insert("register", TokenKind::Register);
m.insert("restrict", TokenKind::Restrict);
m.insert("return", TokenKind::Return);
m.insert("short", TokenKind::Short);
m.insert("signed", TokenKind::Signed);
m.insert("sizeof", TokenKind::Sizeof);
m.insert("static", TokenKind::Static);
m.insert("struct", TokenKind::Struct);
m.insert("switch", TokenKind::Switch);
m.insert("typedef", TokenKind::Typedef);
m.insert("union", TokenKind::Union);
m.insert("unsigned", TokenKind::Unsigned);
m.insert("void", TokenKind::Void);
m.insert("volatile", TokenKind::Volatile);
m.insert("while", TokenKind::While);
m.insert("_Bool", TokenKind::Bool);
m.insert("_Complex", TokenKind::Complex);
m.insert("_Imaginary", TokenKind::Imaginary);
m.insert("alignas", TokenKind::Alignas);
m.insert("alignof", TokenKind::Alignof);
m.insert("and", TokenKind::And);
m.insert("and_eq", TokenKind::AndEq);
m.insert("asm", TokenKind::Asm);
m.insert("bitand", TokenKind::Bitand);
m.insert("bitor", TokenKind::Bitor);
m.insert("catch", TokenKind::Catch);
m.insert("class", TokenKind::Class);
m.insert("compl", TokenKind::Compl);
m.insert("concept", TokenKind::Concept);
m.insert("const_cast", TokenKind::ConstCast);
m.insert("constexpr", TokenKind::Constexpr);
m.insert("constinit", TokenKind::Constinit);
m.insert("decltype", TokenKind::Decltype);
m.insert("delete", TokenKind::Delete);
m.insert("dynamic_cast", TokenKind::DynamicCast);
m.insert("explicit", TokenKind::Explicit);
m.insert("export", TokenKind::Export);
m.insert("friend", TokenKind::Friend);
m.insert("mutable", TokenKind::Mutable);
m.insert("namespace", TokenKind::Namespace);
m.insert("new", TokenKind::New);
m.insert("noexcept", TokenKind::Noexcept);
m.insert("not", TokenKind::Not);
m.insert("not_eq", TokenKind::NotEq);
m.insert("nullptr", TokenKind::Nullptr);
m.insert("operator", TokenKind::Operator);
m.insert("or", TokenKind::Or);
m.insert("or_eq", TokenKind::OrEq);
m.insert("override", TokenKind::Override);
m.insert("private", TokenKind::Private);
m.insert("protected", TokenKind::Protected);
m.insert("public", TokenKind::Public);
m.insert("reinterpret_cast", TokenKind::ReinterpretCast);
m.insert("requires", TokenKind::Requires);
m.insert("static_cast", TokenKind::StaticCast);
m.insert("static_assert", TokenKind::StaticAssert);
m.insert("template", TokenKind::Template);
m.insert("this", TokenKind::This);
m.insert("thread_local", TokenKind::ThreadLocal);
m.insert("throw", TokenKind::Throw);
m.insert("try", TokenKind::Try);
m.insert("typeid", TokenKind::Typeid);
m.insert("typename", TokenKind::Typename);
m.insert("using", TokenKind::Using);
m.insert("virtual", TokenKind::Virtual);
m.insert("xor", TokenKind::Xor);
m.insert("xor_eq", TokenKind::XorEq);
m.insert("co_await", TokenKind::CoAwait);
m.insert("co_return", TokenKind::CoReturn);
m.insert("co_yield", TokenKind::CoYield);
m.insert("char16_t", TokenKind::Char16);
m.insert("char32_t", TokenKind::Char32);
m.insert("wchar_t", TokenKind::WcharT);
m.insert("true", TokenKind::True);
m.insert("false", TokenKind::False);
m.insert("NULL", TokenKind::Null);
m
}