1 #include 2 #include 3 #include 4 5 namespace Lexer 6 { 7 using variable_t = std::map; 8 // kind is for token type 9 enum class Kind : char 10 { 11 end, print = ';', plus = '+', minus = '-', mult = '*', div = '/' assign = '=', p_open = '(', p_close = ')', nu mber, variable 12 13 14 }; 15 struct Token 16 { 17 Kind kind; 18 std::string var2; 19 double number; 20 21 } 22 Class ClassLexer 23 { 24 private: 25 std::istream& m_stream; 26 Token m_current_token; 27 28 public: 29 ClassLexer() : m_stream{ std::cin }{ } 30 Token& get_current_token(); 31 32 Token fetch_next_token(); 33 34 } 35 36 }