28 |
28 |
29 #ifndef TOKENS_H |
29 #ifndef TOKENS_H |
30 #define TOKENS_H |
30 #define TOKENS_H |
31 |
31 |
32 #include <climits> |
32 #include <climits> |
|
33 #include "Macros.h" |
33 |
34 |
34 // ======================================================= |
35 // ======================================================= |
35 enum EToken |
36 named_enum TokenType |
36 { |
37 { |
37 // Non-word tokens |
38 // Non-word tokens |
38 tkLeftShiftAssign, |
39 TK_LeftShiftAssign, |
39 tkRightShiftAssign, |
40 TK_RightShiftAssign, |
40 tkEquals, |
41 TK_Equals, |
41 tkNotEquals, |
42 TK_NotEquals, |
42 tkAddAssign, |
43 TK_AddAssign, |
43 tkSubAssign, |
44 TK_SubAssign, |
44 tkMultiplyAssign, |
45 TK_MultiplyAssign, |
45 tkDivideAssign, |
46 TK_DivideAssign, |
46 tkModulusAssign, |
47 TK_ModulusAssign, |
47 tkLeftShift, |
48 TK_LeftShift, |
48 tkRightShift, |
49 TK_RightShift, |
49 tkAtLeast, |
50 TK_AtLeast, |
50 tkAtMost, |
51 TK_AtMost, |
51 tkDoubleAmperstand, |
52 TK_DoubleAmperstand, |
52 tkDoubleBar, |
53 TK_DoubleBar, |
53 tkDoublePlus, |
54 TK_DoublePlus, |
54 tkDoubleMinus, |
55 TK_DoubleMinus, |
55 tkSingleQuote, |
56 TK_SingleQuote, |
56 tkDollarSign, |
57 TK_DollarSign, |
57 tkParenStart, |
58 TK_ParenStart, |
58 tkParenEnd, |
59 TK_ParenEnd, |
59 tkBracketStart, |
60 TK_BracketStart, |
60 tkBracketEnd, |
61 TK_BracketEnd, |
61 tkBraceStart, |
62 TK_BraceStart, |
62 tkBraceEnd, |
63 TK_BraceEnd, |
63 tkAssign, |
64 TK_Assign, |
64 tkPlus, |
65 TK_Plus, |
65 tkMinus, |
66 TK_Minus, |
66 tkMultiply, |
67 TK_Multiply, |
67 tkDivide, |
68 TK_Divide, |
68 tkModulus, |
69 TK_Modulus, |
69 tkComma, |
70 TK_Comma, |
70 tkLesser, |
71 TK_Lesser, |
71 tkGreater, |
72 TK_Greater, |
72 tkDot, |
73 TK_Dot, |
73 tkColon, |
74 TK_Colon, |
74 tkSemicolon, |
75 TK_Semicolon, |
75 tkHash, |
76 TK_Hash, |
76 tkExclamationMark, |
77 TK_ExclamationMark, |
77 tkAmperstand, |
78 TK_Amperstand, |
78 tkBar, |
79 TK_Bar, |
79 tkCaret, |
80 TK_Caret, |
80 tkQuMARK_stion, |
81 TK_QuestionMark, |
81 tkArrow, |
82 TK_Arrow, |
82 |
83 |
83 // -------------- |
84 // -------------- |
84 // Named tokens |
85 // Named tokens |
85 tkBool, |
86 TK_Bool, |
86 tkBreak, |
87 TK_Break, |
87 tkCase, |
88 TK_Case, |
88 tkContinue, |
89 TK_Continue, |
89 tkConst, |
90 TK_Const, |
90 tkDefault, |
91 TK_Default, |
91 tkDo, |
92 TK_Do, |
92 tkElse, |
93 TK_Else, |
93 tkEvent, |
94 TK_Event, |
94 tkEventdef, |
95 TK_Eventdef, |
95 tkFor, |
96 TK_For, |
96 tkFuncdef, |
97 TK_Funcdef, |
97 tkGoto, |
98 TK_Goto, |
98 tkIf, |
99 TK_If, |
99 tkInt, |
100 TK_Int, |
100 tkMainloop, |
101 TK_Mainloop, |
101 tkOnenter, |
102 TK_Onenter, |
102 tkOnexit, |
103 TK_Onexit, |
103 tkState, |
104 TK_State, |
104 tkSwitch, |
105 TK_Switch, |
105 tkStr, |
106 TK_Str, |
106 tkVar, |
107 TK_Var, |
107 tkVoid, |
108 TK_Void, |
108 tkWhile, |
109 TK_While, |
109 tkTrue, |
110 TK_True, |
110 tkFalse, |
111 TK_False, |
111 |
112 |
112 // These ones aren't implemented yet but I plan to do so, thus they are |
113 // These ones aren't implemented yet but I plan to do so, thus they are |
113 // reserved. Also serves as a to-do list of sorts for me. >:F |
114 // reserved. Also serves as a to-do list of sorts for me. >:F |
114 tkEnum, |
115 TK_Enum, |
115 tkFunc, |
116 TK_Func, |
116 tkReturn, |
117 TK_Return, |
117 |
118 |
118 // -------------- |
119 // -------------- |
119 // Generic tokens |
120 // Generic tokens |
120 tkSymbol, |
121 TK_Symbol, |
121 tkNumber, |
122 TK_Number, |
122 tkString, |
123 TK_String, |
123 |
124 TK_Any, |
124 tkFirstNamedToken = tkBool, |
|
125 tkLastNamedToken = (int) tkSymbol - 1, |
|
126 tkAny = INT_MAX |
|
127 }; |
125 }; |
128 |
126 |
|
127 static const int gFirstNamedToken = TK_Bool; |
|
128 static const int gLastNamedToken = (int) TK_Symbol - 1; |
|
129 |
129 #endif |
130 #endif |