aboutsummaryrefslogtreecommitdiffstats
path: root/src/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.c')
-rw-r--r--src/lexer.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lexer.c b/src/lexer.c
index 404082b..997a9f3 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -14,7 +14,8 @@ typedef enum TokenKind {
14 TOK_RCURLY, // } 14 TOK_RCURLY, // }
15 15
16 // Basic literals. 16 // Basic literals.
17 TOK_NUMBER, 17 TOK_NUM_INT,
18 TOK_NUM_FLOAT,
18 TOK_SYMBOL, 19 TOK_SYMBOL,
19 TOK_STRING, 20 TOK_STRING,
20 21
@@ -81,7 +82,8 @@ Str token_str[] = {
81 [TOK_RCURLY] = cstr("RCURLY"), 82 [TOK_RCURLY] = cstr("RCURLY"),
82 83
83 // Basic literals. 84 // Basic literals.
84 [TOK_NUMBER] = cstr("NUMBER"), 85 [TOK_NUM_INT] = cstr("INUMBER"),
86 [TOK_NUM_FLOAT] = cstr("FNUMBER"),
85 [TOK_SYMBOL] = cstr("SYMBOL"), 87 [TOK_SYMBOL] = cstr("SYMBOL"),
86 [TOK_STRING] = cstr("STRING"), 88 [TOK_STRING] = cstr("STRING"),
87 89
@@ -304,7 +306,7 @@ emit_token_number(Scanner *scanner) {
304 continue; 306 continue;
305 } 307 }
306 if (scan_is_valid_split(c)) { 308 if (scan_is_valid_split(c)) {
307 return emit_token(current, scanner, TOK_NUMBER); 309 return emit_token(current, scanner, TOK_NUM_INT);
308 } 310 }
309 scan_skip_until_valid(scanner); 311 scan_skip_until_valid(scanner);
310 return emit_token_err( 312 return emit_token_err(
@@ -321,7 +323,7 @@ emit_token_number(Scanner *scanner) {
321 continue; 323 continue;
322 } 324 }
323 if (scan_is_valid_split(c)) { 325 if (scan_is_valid_split(c)) {
324 return emit_token(current, scanner, TOK_NUMBER); 326 return emit_token(current, scanner, TOK_NUM_INT);
325 } 327 }
326 scan_skip_until_valid(scanner); 328 scan_skip_until_valid(scanner);
327 return emit_token_err(&current, 329 return emit_token_err(&current,
@@ -340,7 +342,7 @@ emit_token_number(Scanner *scanner) {
340 continue; 342 continue;
341 } 343 }
342 if (scan_is_valid_split(c)) { 344 if (scan_is_valid_split(c)) {
343 return emit_token(current, scanner, TOK_NUMBER); 345 return emit_token(current, scanner, TOK_NUM_INT);
344 } 346 }
345 scan_skip_until_valid(scanner); 347 scan_skip_until_valid(scanner);
346 return emit_token_err(&current, cstr("malformed number")); 348 return emit_token_err(&current, cstr("malformed number"));
@@ -362,7 +364,7 @@ emit_token_number(Scanner *scanner) {
362 continue; 364 continue;
363 } 365 }
364 if (scan_is_valid_split(c)) { 366 if (scan_is_valid_split(c)) {
365 return emit_token(current, scanner, TOK_NUMBER); 367 return emit_token(current, scanner, TOK_NUM_FLOAT);
366 } 368 }
367 scan_skip_until_valid(scanner); 369 scan_skip_until_valid(scanner);
368 return emit_token_err(&current, cstr("malformed number")); 370 return emit_token_err(&current, cstr("malformed number"));
@@ -385,7 +387,7 @@ emit_token_number(Scanner *scanner) {
385 cstr("malformed number: decimals not allowed on exponent")); 387 cstr("malformed number: decimals not allowed on exponent"));
386 } 388 }
387 if (scan_is_valid_split(c)) { 389 if (scan_is_valid_split(c)) {
388 return emit_token(current, scanner, TOK_NUMBER); 390 return emit_token(current, scanner, TOK_NUM_FLOAT);
389 } 391 }
390 scan_skip_until_valid(scanner); 392 scan_skip_until_valid(scanner);
391 return emit_token_err(&current, cstr("malformed number")); 393 return emit_token_err(&current, cstr("malformed number"));