// Copyright (c) 2019 Egor Tensin // This file is part of the "math-server" project. // For details, see https://github.com/egor-tensin/math-server. // Distributed under the MIT License. #pragma once #include #include #include #include namespace math::server::lexer::token { enum class Type { WHITESPACE, PLUS, MINUS, ASTERISK, SLASH, CARET, 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&); }