diff options
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/src/lexer.c b/src/lexer.c index 6a5621c..404082b 100644 --- a/src/lexer.c +++ b/src/lexer.c | |||
@@ -406,18 +406,12 @@ scan_token(Scanner *scanner) { | |||
406 | Scanner current = *scanner; | 406 | Scanner current = *scanner; |
407 | char c = scan_next(scanner); | 407 | char c = scan_next(scanner); |
408 | switch (c) { | 408 | switch (c) { |
409 | case '(': | 409 | case '(': return emit_token(current, scanner, TOK_LPAREN); |
410 | return emit_token(current, scanner, TOK_LPAREN); | 410 | case ')': return emit_token(current, scanner, TOK_RPAREN); |
411 | case ')': | 411 | case '[': return emit_token(current, scanner, TOK_LSQUARE); |
412 | return emit_token(current, scanner, TOK_RPAREN); | 412 | case ']': return emit_token(current, scanner, TOK_RSQUARE); |
413 | case '[': | 413 | case '{': return emit_token(current, scanner, TOK_LCURLY); |
414 | return emit_token(current, scanner, TOK_LSQUARE); | 414 | case '}': return emit_token(current, scanner, TOK_RCURLY); |
415 | case ']': | ||
416 | return emit_token(current, scanner, TOK_RSQUARE); | ||
417 | case '{': | ||
418 | return emit_token(current, scanner, TOK_LCURLY); | ||
419 | case '}': | ||
420 | return emit_token(current, scanner, TOK_RCURLY); | ||
421 | case '+': { | 415 | case '+': { |
422 | char p = scan_peek(scanner); | 416 | char p = scan_peek(scanner); |
423 | if (p >= '0' && p <= '9') { | 417 | if (p >= '0' && p <= '9') { |
@@ -434,12 +428,9 @@ scan_token(Scanner *scanner) { | |||
434 | } | 428 | } |
435 | return emit_token(current, scanner, TOK_SUB); | 429 | return emit_token(current, scanner, TOK_SUB); |
436 | }; | 430 | }; |
437 | case '*': | 431 | case '*': return emit_token(current, scanner, TOK_MUL); |
438 | return emit_token(current, scanner, TOK_MUL); | 432 | case '/': return emit_token(current, scanner, TOK_DIV); |
439 | case '/': | 433 | case '%': return emit_token(current, scanner, TOK_MOD); |
440 | return emit_token(current, scanner, TOK_DIV); | ||
441 | case '%': | ||
442 | return emit_token(current, scanner, TOK_MOD); | ||
443 | case '!': { | 434 | case '!': { |
444 | if (scan_peek(scanner) == '=') { | 435 | if (scan_peek(scanner) == '=') { |
445 | scan_next(scanner); | 436 | scan_next(scanner); |
@@ -478,8 +469,7 @@ scan_token(Scanner *scanner) { | |||
478 | } | 469 | } |
479 | return emit_token(current, scanner, TOK_GT); | 470 | return emit_token(current, scanner, TOK_GT); |
480 | }; | 471 | }; |
481 | case '~': | 472 | case '~': return emit_token(current, scanner, TOK_BITNOT); |
482 | return emit_token(current, scanner, TOK_BITNOT); | ||
483 | case '&': { | 473 | case '&': { |
484 | if (scan_peek(scanner) == '&') { | 474 | if (scan_peek(scanner) == '&') { |
485 | scan_next(scanner); | 475 | scan_next(scanner); |
@@ -494,12 +484,9 @@ scan_token(Scanner *scanner) { | |||
494 | } | 484 | } |
495 | return emit_token(current, scanner, TOK_BITOR); | 485 | return emit_token(current, scanner, TOK_BITOR); |
496 | }; | 486 | }; |
497 | case ':': | 487 | case ':': return emit_token(current, scanner, TOK_COLON); |
498 | return emit_token(current, scanner, TOK_COLON); | 488 | case '.': return emit_token(current, scanner, TOK_DOT); |
499 | case '.': | 489 | case '@': return emit_token(current, scanner, TOK_AT); |
500 | return emit_token(current, scanner, TOK_DOT); | ||
501 | case '@': | ||
502 | return emit_token(current, scanner, TOK_AT); | ||
503 | case '"': { | 490 | case '"': { |
504 | while (scan_has_next(scanner)) { | 491 | while (scan_has_next(scanner)) { |
505 | c = scan_next(scanner); | 492 | c = scan_next(scanner); |