29 ModToken token(value, Token::REAL, pos);
32 return Parser::make_REAL(float_value, pos);
51 if (text !=
nullptr) {
58 return Parser::make_INTEGER(int_value, pos);
79 return Parser::make_NAME(value, pos);
94 ModToken token(text, Token::PRIME, pos);
95 auto order = std::count(text.begin(), text.end(),
'\'');
99 assert(order <= std::numeric_limits<int>::max());
100 auto prime_order =
new ast::Integer(
static_cast<int>(order),
nullptr);
103 return Parser::make_PRIME(value, pos);
114 ModToken token(text, Token::STRING, pos);
117 return Parser::make_STRING(value, pos);
137 if (type == Token::UNKNOWN) {
145 switch (
static_cast<int>(type)) {
147 return Parser::make_AFTER(token, pos);
148 case Token::BBCOREPOINTER:
149 return Parser::make_BBCOREPOINTER(token, pos);
151 return Parser::make_BEFORE(token, pos);
152 case Token::BREAKPOINT:
153 return Parser::make_BREAKPOINT(token, pos);
155 return Parser::make_BY(token, pos);
156 case Token::COMPARTMENT:
157 return Parser::make_COMPARTMENT(token, pos);
158 case Token::CONDUCTANCE:
159 return Parser::make_CONDUCTANCE(token, pos);
160 case Token::CONSERVE:
161 return Parser::make_CONSERVE(token, pos);
162 case Token::CONSTANT:
163 return Parser::make_CONSTANT(token, pos);
164 case Token::CONSTRUCTOR:
165 return Parser::make_CONSTRUCTOR(token, pos);
167 return Parser::make_DEFINE1(token, pos);
169 return Parser::make_DEPEND(token, pos);
170 case Token::ASSIGNED:
171 return Parser::make_ASSIGNED(token, pos);
172 case Token::DERIVATIVE:
173 return Parser::make_DERIVATIVE(token, pos);
174 case Token::DESTRUCTOR:
175 return Parser::make_DESTRUCTOR(token, pos);
176 case Token::DISCRETE:
177 return Parser::make_DISCRETE(token, pos);
178 case Token::ELECTRODE_CURRENT:
179 return Parser::make_ELECTRODE_CURRENT(token, pos);
181 return Parser::make_ELSE(token, pos);
182 case Token::EQUATION:
183 return Parser::make_EQUATION(token, pos);
184 case Token::EXTERNAL:
185 return Parser::make_EXTERNAL(token, pos);
186 case Token::FOR_NETCONS:
187 return Parser::make_FOR_NETCONS(token, pos);
189 return Parser::make_FROM(token, pos);
190 case Token::FUNCTION1:
191 return Parser::make_FUNCTION1(token, pos);
192 case Token::FUNCTION_TABLE:
193 return Parser::make_FUNCTION_TABLE(token, pos);
195 return Parser::make_GLOBAL(token, pos);
197 return Parser::make_IF(token, pos);
198 case Token::INCLUDE1:
199 return Parser::make_INCLUDE1(token, pos);
200 case Token::INDEPENDENT:
201 return Parser::make_INDEPENDENT(token, pos);
202 case Token::INITIAL1:
203 return Parser::make_INITIAL1(token, pos);
205 return Parser::make_KINETIC(token, pos);
207 return Parser::make_LAG(token, pos);
209 return Parser::make_LINEAR(token, pos);
211 return Parser::make_LOCAL(token, pos);
212 case Token::LONGDIFUS:
213 return Parser::make_LONGDIFUS(token, pos);
215 return Parser::make_MODEL(token, pos);
216 case Token::NETRECEIVE:
217 return Parser::make_NETRECEIVE(token, pos);
219 return Parser::make_NEURON(token, pos);
220 case Token::NONLINEAR:
221 return Parser::make_NONLINEAR(token, pos);
222 case Token::NONSPECIFIC:
223 return Parser::make_NONSPECIFIC(token, pos);
224 case Token::NRNMUTEXLOCK:
225 return Parser::make_NRNMUTEXLOCK(token, pos);
226 case Token::NRNMUTEXUNLOCK:
227 return Parser::make_NRNMUTEXUNLOCK(token, pos);
228 case Token::PARAMETER:
229 return Parser::make_PARAMETER(token, pos);
231 return Parser::make_POINTER(token, pos);
232 case Token::PROCEDURE:
233 return Parser::make_PROCEDURE(token, pos);
235 return Parser::make_PROTECT(token, pos);
237 return Parser::make_RANDOM(token, pos);
239 return Parser::make_RANGE(token, pos);
241 return Parser::make_READ(token, pos);
243 return Parser::make_SOLVE(token, pos);
244 case Token::SOLVEFOR:
245 return Parser::make_SOLVEFOR(token, pos);
247 return Parser::make_START1(token, pos);
249 return Parser::make_STATE(token, pos);
250 case Token::STEADYSTATE:
251 return Parser::make_STEADYSTATE(token, pos);
253 return Parser::make_STEP(token, pos);
255 return Parser::make_SWEEP(token, pos);
257 return Parser::make_TABLE(token, pos);
258 case Token::THREADSAFE:
259 return Parser::make_THREADSAFE(token, pos);
261 return Parser::make_TO(token, pos);
263 return Parser::make_UNITS(token, pos);
264 case Token::UNITSOFF:
265 return Parser::make_UNITSOFF(token, pos);
267 return Parser::make_UNITSON(token, pos);
269 return Parser::make_USEION(token, pos);
271 return Parser::make_USING(token, pos);
273 return Parser::make_VS(token, pos);
275 return Parser::make_WATCH(token, pos);
277 return Parser::make_WHILE(token, pos);
279 return Parser::make_WITH(token, pos);
281 return Parser::make_WRITE(token, pos);
283 return Parser::make_REACT1(token, pos);
285 return Parser::make_NONLIN1(token, pos);
287 return Parser::make_LIN1(token, pos);
288 case Token::REACTION:
289 return Parser::make_REACTION(token, pos);
291 return Parser::make_GT(token, pos);
293 return Parser::make_GE(token, pos);
295 return Parser::make_LT(token, pos);
297 return Parser::make_LE(token, pos);
299 return Parser::make_EQ(token, pos);
301 return Parser::make_NE(token, pos);
303 return Parser::make_NOT(token, pos);
305 return Parser::make_AND(token, pos);
307 return Parser::make_OR(token, pos);
308 case Token::OPEN_BRACE:
309 return Parser::make_OPEN_BRACE(token, pos);
310 case Token::CLOSE_BRACE:
311 return Parser::make_CLOSE_BRACE(token, pos);
312 case Token::OPEN_PARENTHESIS:
313 return Parser::make_OPEN_PARENTHESIS(token, pos);
314 case Token::CLOSE_PARENTHESIS:
315 return Parser::make_CLOSE_PARENTHESIS(token, pos);
316 case Token::OPEN_BRACKET:
317 return Parser::make_OPEN_BRACKET(token, pos);
318 case Token::CLOSE_BRACKET:
319 return Parser::make_CLOSE_BRACKET(token, pos);
321 return Parser::make_AT(token, pos);
323 return Parser::make_ADD(token, pos);
325 return Parser::make_MINUS(token, pos);
326 case Token::MULTIPLY:
327 return Parser::make_MULTIPLY(token, pos);
329 return Parser::make_DIVIDE(token, pos);
331 return Parser::make_EQUAL(token, pos);
333 return Parser::make_CARET(token, pos);
335 return Parser::make_COLON(token, pos);
337 return Parser::make_COMMA(token, pos);
339 return Parser::make_PERIOD(token, pos);
340 case Token::REPRESENTS:
341 return Parser::make_REPRESENTS(token, pos);
347 auto msg =
"Token type not found while creating a symbol!";
348 throw std::runtime_error(msg);