#pragma once #include #include #include #include namespace math::server::lexer::token { enum class Type { WHITESPACE, PLUS, MINUS, ASTERISK, SLASH, LEFT_PAREN, RIGHT_PAREN, NUMBER, }; using TypeInt = std::underlying_type::type; using TypeSet = std::unordered_set; TypeInt type_to_int(Type); std::string type_to_int_string(Type); bool is_const_token(Type); const TypeSet& const_tokens(); bool token_has_value(Type); std::string type_to_string(Type); Type type_from_string(const std::string&); std::ostream& operator<<(std::ostream&, const Type&); }