diff options
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 16 |
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(¤t, | 329 | return emit_token_err(¤t, |
@@ -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(¤t, cstr("malformed number")); | 348 | return emit_token_err(¤t, 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(¤t, cstr("malformed number")); | 370 | return emit_token_err(¤t, 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(¤t, cstr("malformed number")); | 393 | return emit_token_err(¤t, cstr("malformed number")); |