mjplusplus  v0.4.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
token.hpp
Go to the documentation of this file.
1 #ifndef TOKEN_HPP
2 #define TOKEN_HPP
3 
4 #include <string>
5 #include <unordered_map>
6 #include "../globals.hpp"
7 #include "../semantic_analysis/symbol_table/Symbol.hpp"
8 
9 namespace lexer
10 {
11  class Token
12  {
13  private:
17  static std::unordered_map<std::string, shptr<semantic::symbol::Symbol>> stringTable;
18 
19  public:
22  {
27  TOKEN_OPERATOR,// only used before distinction which operator
29  /* Keywords */
46  /* Operators */
67  };
71  std::string const* string_value;
74 
76  Token(Token_type const& token_type, std::string const& string_value, source_position_t const& position);
77 
79  Token(Token_type const& token_type, std::string const* string_value, source_position_t const& position);
80 
82  void print() const;
83 
84  static std::string const& getTableReference(std::string const& value);
85 
86  static shptr<semantic::symbol::Symbol>& getSymbol(std::string const& value);
87 
91  static std::string const* type_to_ref[];
92  };
93 }
94 #endif
Definition: token.hpp:34
Definition: token.hpp:33
Definition: token.hpp:66
Token(Token_type const &token_type, std::string const &string_value, source_position_t const &position)
Definition: token.cpp:9
Definition: token.hpp:48
Definition: token.hpp:47
Definition: token.hpp:40
Definition: token.hpp:32
Definition: token.hpp:42
Definition: token.hpp:39
Definition: PositionAwareNode.hpp:6
Definition: token.hpp:58
Definition: token.hpp:63
Definition: token.hpp:57
Definition: token.hpp:36
Definition: token.hpp:51
Definition: token.hpp:11
std::string const * string_value
Definition: token.hpp:71
Definition: token.hpp:40
std::pair< unsigned int, unsigned int > source_position_t
Definition: globals.hpp:10
Definition: token.hpp:23
Definition: token.hpp:37
Definition: token.hpp:66
Definition: token.hpp:35
Definition: token.hpp:55
Definition: token.hpp:64
Definition: token.hpp:52
Definition: token.hpp:32
Definition: token.hpp:44
Definition: token.hpp:32
Definition: token.hpp:27
Definition: token.hpp:35
Definition: token.hpp:48
Definition: token.hpp:38
void print() const
Definition: token.cpp:21
Definition: token.hpp:61
Definition: token.hpp:55
Definition: token.hpp:35
Definition: token.hpp:37
Token_type
Definition: token.hpp:21
Definition: token.hpp:56
source_position_t position
Definition: token.hpp:73
Definition: token.hpp:56
Definition: token.hpp:62
Definition: token.hpp:34
Definition: token.hpp:44
Definition: token.hpp:53
Definition: token.hpp:50
Definition: token.hpp:54
Definition: token.hpp:59
std::shared_ptr< T > shptr
Definition: globals.hpp:7
Definition: token.hpp:58
Definition: token.hpp:58
Definition: token.hpp:30
Definition: token.hpp:42
Definition: token.hpp:26
Definition: token.hpp:49
Definition: token.hpp:52
Definition: token.hpp:47
Definition: token.hpp:25
Definition: token.hpp:34
Definition: token.hpp:52
Definition: token.hpp:31
Definition: token.hpp:43
static std::string const & getTableReference(std::string const &value)
Definition: token.cpp:48
Definition: token.hpp:64
Definition: token.hpp:61
Definition: token.hpp:50
Definition: token.hpp:42
Definition: token.hpp:37
Definition: token.hpp:49
Definition: token.hpp:28
Definition: token.hpp:31
Definition: token.hpp:58
Definition: token.hpp:42
Definition: token.hpp:32
Definition: token.hpp:43
Definition: token.hpp:43
Definition: token.hpp:37
Definition: token.hpp:41
Token_type token_type
Definition: token.hpp:69
Definition: token.hpp:63
Definition: token.hpp:30
Definition: token.hpp:45
Definition: token.hpp:61
Definition: token.hpp:35
Definition: token.hpp:32
Definition: token.hpp:33
Definition: token.hpp:35
Definition: token.hpp:33
Definition: token.hpp:40
static std::string const * type_to_ref[]
Definition: token.hpp:91
static shptr< semantic::symbol::Symbol > & getSymbol(std::string const &value)
Definition: token.cpp:53
Definition: token.hpp:43
Definition: token.hpp:57
Definition: token.hpp:42
Definition: token.hpp:60
Definition: token.hpp:66
Definition: token.hpp:39
Definition: token.hpp:37
Definition: token.hpp:56
Definition: token.hpp:58
Definition: token.hpp:60
Definition: token.hpp:58
Definition: token.hpp:65
Definition: token.hpp:39
Definition: token.hpp:37
Definition: token.hpp:32
Definition: token.hpp:40
Definition: token.hpp:31
Definition: token.hpp:56
Definition: token.hpp:42
Definition: token.hpp:43
Definition: token.hpp:43
Definition: token.hpp:54
Definition: token.hpp:50
Definition: token.hpp:24
Definition: token.hpp:62