Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static std::array<Wide::Lexer::TokenType, 256> single_character_punctuation(
- []() -> std::array<Wide::Lexer::TokenType, 256> {
- std::array<Wide::Lexer::TokenType, 256> result = {};
- result[L'{'] = Wide::Lexer::TokenType::OpenCurlyBracket;
- result[L'}'] = Wide::Lexer::TokenType::CloseCurlyBracket;
- result[L'('] = Wide::Lexer::TokenType::OpenBracket;
- result[L')'] = Wide::Lexer::TokenType::CloseBracket;
- result[L'['] = Wide::Lexer::TokenType::OpenSquareBracket;
- result[L']'] = Wide::Lexer::TokenType::CloseSquareBracket;
- result[L','] = Wide::Lexer::TokenType::Comma;
- result[L':'] = Wide::Lexer::TokenType::Colon;
- result[L'.'] = Wide::Lexer::TokenType::Dot;
- result[L'~'] = Wide::Lexer::TokenType::BinaryNOT;
- result[L';'] = Wide::Lexer::TokenType::Semicolon;
- result[L'-'] = Wide::Lexer::TokenType::Minus;
- result[L'*'] = Wide::Lexer::TokenType::Multiply;
- result[L'&'] = Wide::Lexer::TokenType::BinaryAND;
- result[L'^'] = Wide::Lexer::TokenType::BinaryXOR;
- result[L'%'] = Wide::Lexer::TokenType::Modulus;
- result[L'!'] = Wide::Lexer::TokenType::LogicalNOT;
- result[L'/'] = Wide::Lexer::TokenType::Divide;
- result[L'>'] = Wide::Lexer::TokenType::GreaterThan;
- result[L'<'] = Wide::Lexer::TokenType::LessThan;
- result[L'|'] = Wide::Lexer::TokenType::BinaryOR;
- result[L'='] = Wide::Lexer::TokenType::Equals;
- result[L'+'] = Wide::Lexer::TokenType::Plus;
- return result;
- }()
- );
- static std::array<std::array<Wide::Lexer::TokenType, 256>, 256> double_character_punctuation(
- []() -> std::array<std::array<Wide::Lexer::TokenType, 256>, 256> {
- std::array<std::array<Wide::Lexer::TokenType, 256>, 256> result = {};
- result[L'-'][L'>'] = Wide::Lexer::TokenType::PointerAccess;
- result[L'-'][L'-'] = Wide::Lexer::TokenType::Decrement;
- result[L'-'][L'='] = Wide::Lexer::TokenType::MinusEquals;
- result[L'+'][L'+'] = Wide::Lexer::TokenType::Increment;
- result[L'+'][L'='] = Wide::Lexer::TokenType::PlusEquals;
- result[L'*'][L'='] = Wide::Lexer::TokenType::MulEquals;
- result[L'&'][L'='] = Wide::Lexer::TokenType::BinaryANDEquals;
- result[L'&'][L'&'] = Wide::Lexer::TokenType::LogicalAnd;
- result[L'^'][L'='] = Wide::Lexer::TokenType::BinaryXOREquals;
- result[L'%'][L'='] = Wide::Lexer::TokenType::ModulusEquals;
- result[L'!'][L'='] = Wide::Lexer::TokenType::NotEquals;
- result[L'/'][L'='] = Wide::Lexer::TokenType::DivEquals;
- result[L'>'][L'='] = Wide::Lexer::TokenType::GreaterThanOrEqualTo;
- result[L'>'][L'>'] = Wide::Lexer::TokenType::RightShift;
- result[L'<'][L'='] = Wide::Lexer::TokenType::LessThanOrEqualTo;
- result[L'<'][L'<'] = Wide::Lexer::TokenType::LeftShift;
- result[L'|'][L'|'] = Wide::Lexer::TokenType::LogicalOr;
- result[L'|'][L'='] = Wide::Lexer::TokenType::BinaryOREquals;
- result[L'='][L'='] = Wide::Lexer::TokenType::EqualTo;
- return result;
- }()
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement