tcalc 0.2.0
 
Loading...
Searching...
No Matches
token.hpp
Go to the documentation of this file.
1
12#pragma once
13
14#include <cstdint>
15#include <string>
16#include <unordered_map>
17
18namespace tcalc::token {
19
24enum class TokenType : uint8_t
25{
26 PLUS,
27 MINUS,
28 MULTIPLY,
29 DIVIDE,
30 LPAREN,
31 RPAREN,
32 COMMA,
33 SEMICOLON,
34 ASSIGN,
35 GREATER,
36 LESS,
37 NOT,
38 NUMBER,
40 DEF,
41 LET,
42 IF,
43 THEN,
44 ELSE,
45 IMPORT,
46 EQUAL,
47 NOTEQUAL,
49 LESSEQUAL,
50 AND,
51 OR,
52 EOI,
53};
54
59struct Token
60{
61 TokenType type;
62 std::string text;
63};
64
65inline const std::unordered_map<TokenType, std::string> TOKEN_TYPE_NAMES = {
66 { TokenType::PLUS, "PLUS" },
67 { TokenType::MINUS, "MINUS" },
68 { TokenType::MULTIPLY, "MULTIPLY" },
69 { TokenType::DIVIDE, "DIVIDE" },
70 { TokenType::LPAREN, "LPAREN" },
71 { TokenType::RPAREN, "RPAREN" },
72 { TokenType::COMMA, "COMMA" },
73 { TokenType::SEMICOLON, "SEMICOLON" },
74 { TokenType::ASSIGN, "ASSIGN" },
75 { TokenType::GREATER, "GREATER" },
76 { TokenType::LESS, "LESS" },
77 { TokenType::NOT, "NOT" },
78 { TokenType::NUMBER, "NUMBER" },
79 { TokenType::IDENTIFIER, "IDENTIFIER" },
80 { TokenType::DEF, "DEF" },
81 { TokenType::LET, "LET" },
82 { TokenType::IF, "IF" },
83 { TokenType::THEN, "THEN" },
84 { TokenType::ELSE, "ELSE" },
85 { TokenType::IMPORT, "IMPORT" },
86 { TokenType::EQUAL, "EQUAL" },
87 { TokenType::NOTEQUAL, "NOTEQUAL" },
88 { TokenType::GREATEREQUAL, "GREATEREQUAL" },
89 { TokenType::LESSEQUAL, "LESSEQUAL" },
90 { TokenType::AND, "AND" },
91 { TokenType::OR, "OR" },
92 { TokenType::EOI, "EOI" },
93};
95}
Token structure.
Definition token.hpp:60
const std::unordered_map< TokenType, std::string > TOKEN_TYPE_NAMES
Definition token.hpp:65
TokenType
Token type, some values are ASCII code of the corresponding character.
Definition token.hpp:25