From 00863566ec4601c65c435b74e575d49546a1c707 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 7 Dec 2019 03:36:21 +0300 Subject: split server into multiple components In a vague attempt to make header files more readable, split server/ into a number of components. Also, refactor the unit tests to use the "Data-driven test cases" of Boost.Test. --- server/lexer/token_type.hpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 server/lexer/token_type.hpp (limited to 'server/lexer/token_type.hpp') diff --git a/server/lexer/token_type.hpp b/server/lexer/token_type.hpp new file mode 100644 index 0000000..9489915 --- /dev/null +++ b/server/lexer/token_type.hpp @@ -0,0 +1,37 @@ +#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&); + +} -- cgit v1.2.3