| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of scanner; | 5 part of scanner; |
| 6 | 6 |
| 7 const int EOF_TOKEN = 0; | 7 const int EOF_TOKEN = 0; |
| 8 | 8 |
| 9 const int KEYWORD_TOKEN = $k; | 9 const int KEYWORD_TOKEN = $k; |
| 10 const int IDENTIFIER_TOKEN = $a; | 10 const int IDENTIFIER_TOKEN = $a; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 const int PLUS_EQ_TOKEN = PLUS_PLUS_TOKEN + 1; | 68 const int PLUS_EQ_TOKEN = PLUS_PLUS_TOKEN + 1; |
| 69 const int MINUS_MINUS_TOKEN = PLUS_EQ_TOKEN + 1; | 69 const int MINUS_MINUS_TOKEN = PLUS_EQ_TOKEN + 1; |
| 70 const int MINUS_EQ_TOKEN = MINUS_MINUS_TOKEN + 1; | 70 const int MINUS_EQ_TOKEN = MINUS_MINUS_TOKEN + 1; |
| 71 const int TILDE_SLASH_EQ_TOKEN = MINUS_EQ_TOKEN + 1; | 71 const int TILDE_SLASH_EQ_TOKEN = MINUS_EQ_TOKEN + 1; |
| 72 const int TILDE_SLASH_TOKEN = TILDE_SLASH_EQ_TOKEN + 1; | 72 const int TILDE_SLASH_TOKEN = TILDE_SLASH_EQ_TOKEN + 1; |
| 73 const int PERCENT_EQ_TOKEN = TILDE_SLASH_TOKEN + 1; | 73 const int PERCENT_EQ_TOKEN = TILDE_SLASH_TOKEN + 1; |
| 74 const int GT_GT_TOKEN = PERCENT_EQ_TOKEN + 1; | 74 const int GT_GT_TOKEN = PERCENT_EQ_TOKEN + 1; |
| 75 const int CARET_EQ_TOKEN = GT_GT_TOKEN + 1; | 75 const int CARET_EQ_TOKEN = GT_GT_TOKEN + 1; |
| 76 const int COMMENT_TOKEN = CARET_EQ_TOKEN + 1; | 76 const int COMMENT_TOKEN = CARET_EQ_TOKEN + 1; |
| 77 const int STRING_INTERPOLATION_IDENTIFIER_TOKEN = COMMENT_TOKEN + 1; | 77 const int STRING_INTERPOLATION_IDENTIFIER_TOKEN = COMMENT_TOKEN + 1; |
| 78 const int QUESTION_PERIOD_TOKEN = STRING_INTERPOLATION_IDENTIFIER_TOKEN + 1; |
| 79 const int QUESTION_QUESTION_TOKEN = QUESTION_PERIOD_TOKEN + 1; |
| 80 const int QUESTION_QUESTION_EQ_TOKEN = QUESTION_QUESTION_TOKEN + 1; |
| 78 | 81 |
| 79 /** | 82 /** |
| 80 * A token that doubles as a linked list. | 83 * A token that doubles as a linked list. |
| 81 */ | 84 */ |
| 82 abstract class Token implements Spannable { | 85 abstract class Token implements Spannable { |
| 83 /** | 86 /** |
| 84 * The character offset of the start of this token within the source text. | 87 * The character offset of the start of this token within the source text. |
| 85 */ | 88 */ |
| 86 final int charOffset; | 89 final int charOffset; |
| 87 | 90 |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN); | 585 ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN); |
| 583 const PrecedenceInfo SLASH_EQ_INFO = | 586 const PrecedenceInfo SLASH_EQ_INFO = |
| 584 const PrecedenceInfo('/=', | 587 const PrecedenceInfo('/=', |
| 585 ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN); | 588 ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN); |
| 586 const PrecedenceInfo STAR_EQ_INFO = | 589 const PrecedenceInfo STAR_EQ_INFO = |
| 587 const PrecedenceInfo('*=', | 590 const PrecedenceInfo('*=', |
| 588 ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN); | 591 ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN); |
| 589 const PrecedenceInfo TILDE_SLASH_EQ_INFO = | 592 const PrecedenceInfo TILDE_SLASH_EQ_INFO = |
| 590 const PrecedenceInfo('~/=', | 593 const PrecedenceInfo('~/=', |
| 591 ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN); | 594 ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN); |
| 595 const PrecedenceInfo QUESTION_QUESTION_EQ_INFO = |
| 596 const PrecedenceInfo('??=', |
| 597 ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN); |
| 592 | 598 |
| 593 const PrecedenceInfo QUESTION_INFO = | 599 const PrecedenceInfo QUESTION_INFO = |
| 594 const PrecedenceInfo('?', 3, QUESTION_TOKEN); | 600 const PrecedenceInfo('?', 3, QUESTION_TOKEN); |
| 595 | 601 |
| 602 const PrecedenceInfo QUESTION_QUESTION_INFO = |
| 603 const PrecedenceInfo('??', 4, QUESTION_QUESTION_TOKEN); |
| 604 |
| 596 const PrecedenceInfo BAR_BAR_INFO = | 605 const PrecedenceInfo BAR_BAR_INFO = |
| 597 const PrecedenceInfo('||', 4, BAR_BAR_TOKEN); | 606 const PrecedenceInfo('||', 5, BAR_BAR_TOKEN); |
| 598 | 607 |
| 599 const PrecedenceInfo AMPERSAND_AMPERSAND_INFO = | 608 const PrecedenceInfo AMPERSAND_AMPERSAND_INFO = |
| 600 const PrecedenceInfo('&&', 5, AMPERSAND_AMPERSAND_TOKEN); | 609 const PrecedenceInfo('&&', 6, AMPERSAND_AMPERSAND_TOKEN); |
| 601 | 610 |
| 602 const PrecedenceInfo BAR_INFO = | 611 const PrecedenceInfo BAR_INFO = |
| 603 const PrecedenceInfo('|', 8, BAR_TOKEN); | 612 const PrecedenceInfo('|', 9, BAR_TOKEN); |
| 604 | 613 |
| 605 const PrecedenceInfo CARET_INFO = | 614 const PrecedenceInfo CARET_INFO = |
| 606 const PrecedenceInfo('^', 9, CARET_TOKEN); | 615 const PrecedenceInfo('^', 10, CARET_TOKEN); |
| 607 | 616 |
| 608 const PrecedenceInfo AMPERSAND_INFO = | 617 const PrecedenceInfo AMPERSAND_INFO = |
| 609 const PrecedenceInfo('&', 10, AMPERSAND_TOKEN); | 618 const PrecedenceInfo('&', 11, AMPERSAND_TOKEN); |
| 610 | 619 |
| 611 // Equality operators. | 620 // Equality operators. |
| 612 const int EQUALITY_PRECEDENCE = 6; | 621 const int EQUALITY_PRECEDENCE = 7; |
| 613 const PrecedenceInfo BANG_EQ_EQ_INFO = | 622 const PrecedenceInfo BANG_EQ_EQ_INFO = |
| 614 const PrecedenceInfo('!==', | 623 const PrecedenceInfo('!==', |
| 615 EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN); | 624 EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN); |
| 616 const PrecedenceInfo BANG_EQ_INFO = | 625 const PrecedenceInfo BANG_EQ_INFO = |
| 617 const PrecedenceInfo('!=', | 626 const PrecedenceInfo('!=', |
| 618 EQUALITY_PRECEDENCE, BANG_EQ_TOKEN); | 627 EQUALITY_PRECEDENCE, BANG_EQ_TOKEN); |
| 619 const PrecedenceInfo EQ_EQ_EQ_INFO = | 628 const PrecedenceInfo EQ_EQ_EQ_INFO = |
| 620 const PrecedenceInfo('===', | 629 const PrecedenceInfo('===', |
| 621 EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN); | 630 EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN); |
| 622 const PrecedenceInfo EQ_EQ_INFO = | 631 const PrecedenceInfo EQ_EQ_INFO = |
| 623 const PrecedenceInfo('==', | 632 const PrecedenceInfo('==', |
| 624 EQUALITY_PRECEDENCE, EQ_EQ_TOKEN); | 633 EQUALITY_PRECEDENCE, EQ_EQ_TOKEN); |
| 625 | 634 |
| 626 // Relational operators. | 635 // Relational operators. |
| 627 const int RELATIONAL_PRECEDENCE = 7; | 636 const int RELATIONAL_PRECEDENCE = 8; |
| 628 const PrecedenceInfo GT_EQ_INFO = | 637 const PrecedenceInfo GT_EQ_INFO = |
| 629 const PrecedenceInfo('>=', | 638 const PrecedenceInfo('>=', |
| 630 RELATIONAL_PRECEDENCE, GT_EQ_TOKEN); | 639 RELATIONAL_PRECEDENCE, GT_EQ_TOKEN); |
| 631 const PrecedenceInfo GT_INFO = | 640 const PrecedenceInfo GT_INFO = |
| 632 const PrecedenceInfo('>', | 641 const PrecedenceInfo('>', |
| 633 RELATIONAL_PRECEDENCE, GT_TOKEN); | 642 RELATIONAL_PRECEDENCE, GT_TOKEN); |
| 634 const PrecedenceInfo IS_INFO = | 643 const PrecedenceInfo IS_INFO = |
| 635 const PrecedenceInfo('is', | 644 const PrecedenceInfo('is', |
| 636 RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); | 645 RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); |
| 637 const PrecedenceInfo AS_INFO = | 646 const PrecedenceInfo AS_INFO = |
| 638 const PrecedenceInfo('as', | 647 const PrecedenceInfo('as', |
| 639 RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); | 648 RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); |
| 640 const PrecedenceInfo LT_EQ_INFO = | 649 const PrecedenceInfo LT_EQ_INFO = |
| 641 const PrecedenceInfo('<=', | 650 const PrecedenceInfo('<=', |
| 642 RELATIONAL_PRECEDENCE, LT_EQ_TOKEN); | 651 RELATIONAL_PRECEDENCE, LT_EQ_TOKEN); |
| 643 const PrecedenceInfo LT_INFO = | 652 const PrecedenceInfo LT_INFO = |
| 644 const PrecedenceInfo('<', | 653 const PrecedenceInfo('<', |
| 645 RELATIONAL_PRECEDENCE, LT_TOKEN); | 654 RELATIONAL_PRECEDENCE, LT_TOKEN); |
| 646 | 655 |
| 647 // Shift operators. | 656 // Shift operators. |
| 648 const PrecedenceInfo GT_GT_INFO = | 657 const PrecedenceInfo GT_GT_INFO = |
| 649 const PrecedenceInfo('>>', 11, GT_GT_TOKEN); | 658 const PrecedenceInfo('>>', 12, GT_GT_TOKEN); |
| 650 const PrecedenceInfo LT_LT_INFO = | 659 const PrecedenceInfo LT_LT_INFO = |
| 651 const PrecedenceInfo('<<', 11, LT_LT_TOKEN); | 660 const PrecedenceInfo('<<', 12, LT_LT_TOKEN); |
| 652 | 661 |
| 653 // Additive operators. | 662 // Additive operators. |
| 654 const PrecedenceInfo MINUS_INFO = | 663 const PrecedenceInfo MINUS_INFO = |
| 655 const PrecedenceInfo('-', 12, MINUS_TOKEN); | 664 const PrecedenceInfo('-', 13, MINUS_TOKEN); |
| 656 const PrecedenceInfo PLUS_INFO = | 665 const PrecedenceInfo PLUS_INFO = |
| 657 const PrecedenceInfo('+', 12, PLUS_TOKEN); | 666 const PrecedenceInfo('+', 13, PLUS_TOKEN); |
| 658 | 667 |
| 659 // Multiplicative operators. | 668 // Multiplicative operators. |
| 660 const PrecedenceInfo PERCENT_INFO = | 669 const PrecedenceInfo PERCENT_INFO = |
| 661 const PrecedenceInfo('%', 13, PERCENT_TOKEN); | 670 const PrecedenceInfo('%', 14, PERCENT_TOKEN); |
| 662 const PrecedenceInfo SLASH_INFO = | 671 const PrecedenceInfo SLASH_INFO = |
| 663 const PrecedenceInfo('/', 13, SLASH_TOKEN); | 672 const PrecedenceInfo('/', 14, SLASH_TOKEN); |
| 664 const PrecedenceInfo STAR_INFO = | 673 const PrecedenceInfo STAR_INFO = |
| 665 const PrecedenceInfo('*', 13, STAR_TOKEN); | 674 const PrecedenceInfo('*', 14, STAR_TOKEN); |
| 666 const PrecedenceInfo TILDE_SLASH_INFO = | 675 const PrecedenceInfo TILDE_SLASH_INFO = |
| 667 const PrecedenceInfo('~/', 13, TILDE_SLASH_TOKEN); | 676 const PrecedenceInfo('~/', 14, TILDE_SLASH_TOKEN); |
| 668 | 677 |
| 669 const int POSTFIX_PRECEDENCE = 14; | 678 const int POSTFIX_PRECEDENCE = 15; |
| 670 const PrecedenceInfo PERIOD_INFO = | 679 const PrecedenceInfo PERIOD_INFO = |
| 671 const PrecedenceInfo('.', POSTFIX_PRECEDENCE, | 680 const PrecedenceInfo('.', POSTFIX_PRECEDENCE, |
| 672 PERIOD_TOKEN); | 681 PERIOD_TOKEN); |
| 682 const PrecedenceInfo QUESTION_PERIOD_INFO = |
| 683 const PrecedenceInfo('?.', POSTFIX_PRECEDENCE, |
| 684 QUESTION_PERIOD_TOKEN); |
| 673 | 685 |
| 674 const PrecedenceInfo KEYWORD_INFO = | 686 const PrecedenceInfo KEYWORD_INFO = |
| 675 const PrecedenceInfo('keyword', 0, KEYWORD_TOKEN); | 687 const PrecedenceInfo('keyword', 0, KEYWORD_TOKEN); |
| 676 | 688 |
| 677 const PrecedenceInfo EOF_INFO = | 689 const PrecedenceInfo EOF_INFO = |
| 678 const PrecedenceInfo('EOF', 0, EOF_TOKEN); | 690 const PrecedenceInfo('EOF', 0, EOF_TOKEN); |
| 679 | 691 |
| 680 const PrecedenceInfo IDENTIFIER_INFO = | 692 const PrecedenceInfo IDENTIFIER_INFO = |
| 681 const PrecedenceInfo('identifier', 0, IDENTIFIER_TOKEN); | 693 const PrecedenceInfo('identifier', 0, IDENTIFIER_TOKEN); |
| 682 | 694 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 719 | 731 |
| 720 const PrecedenceInfo STRING_INTERPOLATION_IDENTIFIER_INFO = | 732 const PrecedenceInfo STRING_INTERPOLATION_IDENTIFIER_INFO = |
| 721 const PrecedenceInfo('\$', 0, | 733 const PrecedenceInfo('\$', 0, |
| 722 STRING_INTERPOLATION_IDENTIFIER_TOKEN); | 734 STRING_INTERPOLATION_IDENTIFIER_TOKEN); |
| 723 | 735 |
| 724 const PrecedenceInfo HEXADECIMAL_INFO = | 736 const PrecedenceInfo HEXADECIMAL_INFO = |
| 725 const PrecedenceInfo('hexadecimal', 0, HEXADECIMAL_TOKEN); | 737 const PrecedenceInfo('hexadecimal', 0, HEXADECIMAL_TOKEN); |
| 726 | 738 |
| 727 const PrecedenceInfo COMMENT_INFO = | 739 const PrecedenceInfo COMMENT_INFO = |
| 728 const PrecedenceInfo('comment', 0, COMMENT_TOKEN); | 740 const PrecedenceInfo('comment', 0, COMMENT_TOKEN); |
| OLD | NEW |