Line data Source code
1 : #include "../../inc/lexicalAnalysis/type.h"
2 :
3 : namespace nicole {
4 :
5 0 : std::string tokenTypeToString(const TokenType &tk) noexcept {
6 0 : switch (tk) {
7 0 : case TokenType::SPACE:
8 0 : return "SPACE";
9 0 : case TokenType::COMMENT:
10 0 : return "COMMENT";
11 :
12 0 : case TokenType::NUMBER_FLOAT:
13 0 : return "NUMBER_FLOAT";
14 0 : case TokenType::NUMBER_DOUBLE:
15 0 : return "NUMBER_DOUBLE";
16 0 : case TokenType::NUMBER_INT:
17 0 : return "NUMBER_INT";
18 0 : case TokenType::CHAR:
19 0 : return "CHAR";
20 0 : case TokenType::STRING:
21 0 : return "STRING";
22 0 : case TokenType::TRUE:
23 0 : return "TRUE";
24 0 : case TokenType::FALSE:
25 0 : return "FALSE";
26 0 : case TokenType::NULLPTR:
27 0 : return "NULLPTR";
28 :
29 0 : case TokenType::TYPE_VOID:
30 0 : return "TYPE_VOID";
31 0 : case TokenType::TYPE_INT:
32 0 : return "TYPE_INT";
33 0 : case TokenType::TYPE_BOOL:
34 0 : return "TYPE_BOOL";
35 0 : case TokenType::TYPE_CHAR:
36 0 : return "TYPE_CHAR";
37 0 : case TokenType::TYPE_FLOAT:
38 0 : return "TYPE_FLOAT";
39 0 : case TokenType::TYPE_DOUBLE:
40 0 : return "TYPE_DOUBLE";
41 0 : case TokenType::TYPE_STR:
42 0 : return "TYPE_STR";
43 :
44 0 : case TokenType::LET:
45 0 : return "LET";
46 0 : case TokenType::CONST:
47 0 : return "CONST";
48 0 : case TokenType::AUTO:
49 0 : return "AUTO";
50 0 : case TokenType::PTR:
51 0 : return "PTR";
52 :
53 0 : case TokenType::VECTOR:
54 0 : return "VECTOR";
55 :
56 0 : case TokenType::NEW:
57 0 : return "NEW";
58 0 : case TokenType::DELETE:
59 0 : return "DELETE";
60 :
61 0 : case TokenType::IMPORT:
62 0 : return "IMPORT";
63 0 : case TokenType::PRINT:
64 0 : return "PRINT";
65 0 : case TokenType::SYSTEM:
66 0 : return "SYSTEM";
67 0 : case TokenType::TYPE:
68 0 : return "TYPE";
69 :
70 0 : case TokenType::IF:
71 0 : return "IF";
72 0 : case TokenType::ELSE:
73 0 : return "ELSE";
74 0 : case TokenType::SWITCH:
75 0 : return "SWITCH";
76 0 : case TokenType::CASE:
77 0 : return "CASE";
78 0 : case TokenType::DEFAULT:
79 0 : return "DEFAULT";
80 :
81 0 : case TokenType::WHILE:
82 0 : return "WHILE";
83 0 : case TokenType::FOR:
84 0 : return "FOR";
85 0 : case TokenType::DO:
86 0 : return "DO";
87 0 : case TokenType::STOP:
88 0 : return "STOP";
89 0 : case TokenType::PASS:
90 0 : return "PASS";
91 :
92 0 : case TokenType::RETURN:
93 0 : return "RETURN";
94 0 : case TokenType::FUNCTION:
95 0 : return "FUNCTION";
96 :
97 0 : case TokenType::ENUM:
98 0 : return "ENUM";
99 0 : case TokenType::STRUCT:
100 0 : return "STRUCT";
101 0 : case TokenType::CLASS:
102 0 : return "CLASS";
103 0 : case TokenType::PRIVATE:
104 0 : return "PRIVATE";
105 0 : case TokenType::PUBLIC:
106 0 : return "PUBLIC";
107 0 : case TokenType::PROTECTED:
108 0 : return "PROTECTED";
109 0 : case TokenType::EXTENDS:
110 0 : return "EXTENDS";
111 0 : case TokenType::METHOD:
112 0 : return "METHOD";
113 0 : case TokenType::ATTR:
114 0 : return "ATTR";
115 0 : case TokenType::THIS:
116 0 : return "THIS";
117 0 : case TokenType::OVERRIDE:
118 0 : return "OVERRIDE";
119 0 : case TokenType::CONSTRUCTOR:
120 0 : return "CONSTRUCTOR";
121 0 : case TokenType::DESTRUCTOR:
122 0 : return "DESTRUCTOR";
123 0 : case TokenType::SUPER:
124 0 : return "SUPER";
125 0 : case TokenType::VIRTUAL:
126 0 : return "VIRTUAL";
127 :
128 0 : case TokenType::OR:
129 0 : return "OR";
130 0 : case TokenType::AND:
131 0 : return "AND";
132 :
133 0 : case TokenType::ID:
134 0 : return "ID";
135 :
136 0 : case TokenType::RP:
137 0 : return "RP"; // Right Parenthesis ')'
138 0 : case TokenType::LP:
139 0 : return "LP"; // Left Parenthesis '('
140 0 : case TokenType::RB:
141 0 : return "RB"; // Right Bracket ']'
142 0 : case TokenType::LB:
143 0 : return "LB"; // Left Bracket '['
144 0 : case TokenType::RC:
145 0 : return "RC"; // Right Curly Brace '}'
146 0 : case TokenType::LC:
147 0 : return "LC"; // Left Curly Brace '{'
148 :
149 0 : case TokenType::SEMICOLON:
150 0 : return "SEMICOLON";
151 :
152 0 : case TokenType::COMMA:
153 0 : return "COMMA";
154 :
155 0 : case TokenType::TERNARY:
156 0 : return "TERNARY";
157 :
158 0 : case TokenType::DOT:
159 0 : return "DOT";
160 0 : case TokenType::DOTDOT:
161 0 : return "DOTDOT"; // :
162 :
163 0 : case TokenType::SMALLEREQUAL:
164 0 : return "SMALLEREQUAL";
165 0 : case TokenType::BIGGEREQUAL:
166 0 : return "BIGGEREQUAL";
167 0 : case TokenType::NOTEQUAL:
168 0 : return "NOTEQUAL";
169 0 : case TokenType::EQUAL:
170 0 : return "EQUAL";
171 0 : case TokenType::ASSIGNMENT:
172 0 : return "ASSIGNMENT"; // '='
173 :
174 0 : case TokenType::INCREMENT:
175 0 : return "INCREMENT"; // '++'
176 0 : case TokenType::DECREMENT:
177 0 : return "DECREMENT"; // '--'
178 :
179 0 : case TokenType::OPERATOR_ADD:
180 0 : return "OPERATOR_ADD"; // '+'
181 0 : case TokenType::OPERATOR_SUB:
182 0 : return "OPERATOR_SUB"; // '-'
183 0 : case TokenType::OPERATOR_MULT:
184 0 : return "OPERATOR_MULT"; // '*'
185 0 : case TokenType::OPERATOR_DIV:
186 0 : return "OPERATOR_DIV"; // '/'
187 0 : case TokenType::OPERATOR_SMALLER:
188 0 : return "OPERATOR_SMALLER"; // '<'
189 0 : case TokenType::OPERATOR_GREATER:
190 0 : return "OPERATOR_GREATER"; // '>'
191 0 : case TokenType::OPERATOR_NOT:
192 0 : return "OPERATOR_NOT"; // '!'
193 0 : case TokenType::OPERATOR_MODULE:
194 0 : return "OPERATOR_MODULE"; // '%'
195 :
196 0 : case TokenType::SELF_ADD:
197 0 : return "SELF_ADD";
198 0 : case TokenType::SELF_SUB:
199 0 : return "SELF_SUB";
200 0 : case TokenType::SELF_MULT:
201 0 : return "SELF_MULT";
202 0 : case TokenType::SELF_DIV:
203 0 : return "SELF_DIV";
204 0 : case TokenType::DOTDOT_ASSIGNMENT:
205 0 : return "DOTDOT_ASSIGNMENT";
206 :
207 0 : case TokenType::MAIN:
208 0 : return "SELF_DIV";
209 :
210 0 : case TokenType::UNMATCHED:
211 0 : return "UNMATCHED"; // For unrecognized tokens
212 0 : case TokenType::ALL:
213 0 : return "ALL"; // Catch-all case for all tokens
214 0 : default:
215 0 : return "UNKNOWN"; // In case of an unrecognized token type
216 0 : }
217 0 : }
218 :
219 : } // namespace nicole
|