/
token.hpp
65 lines (54 loc) · 921 Bytes
/
token.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef _TOKEN_
#define _TOKEN_
#include <string>
enum ETokenKind {
Illegal,
Useless,
At,
/* Scope keywords */
KwMacro,
KwEnd,
KwExtern,
KwIntern,
KwSub,
KwEndsub,
KwGosub,
KwJumpsub,
KwReturn,
KwGoto,
/* Stacking keywords */
KwEmpty,
KwDrop,
KwSwap,
KwDuplicate,
/* Operator keywords */
KwEqual,
KwNotEqual,
KwHigher,
KwHigherEqual,
KwLower,
KwLowerEqual,
/* Operators */
OpEqual,
OpAdd,
OpSub,
OpMul,
OpDiv,
/* Literals */
StringLiteral,
NumLiteral,
/* Others */
Identifier,
Newline,
EndOfFile
};
class CToken {
public:
std::string m_Raw;
ETokenKind m_Kind;
CToken(std::string Raw, ETokenKind Kind) {
m_Raw = Raw;
m_Kind = Kind;
}
};
#endif