| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Features shared by parsing and pre-parsing scanners. | 5 // Features shared by parsing and pre-parsing scanners. |
| 6 | 6 |
| 7 #include "src/parsing/scanner.h" | 7 #include "src/parsing/scanner.h" |
| 8 | 8 |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 } | 100 } |
| 101 | 101 |
| 102 return x; | 102 return x; |
| 103 } | 103 } |
| 104 | 104 |
| 105 | 105 |
| 106 // Ensure that tokens can be stored in a byte. | 106 // Ensure that tokens can be stored in a byte. |
| 107 STATIC_ASSERT(Token::NUM_TOKENS <= 0x100); | 107 STATIC_ASSERT(Token::NUM_TOKENS <= 0x100); |
| 108 | 108 |
| 109 // Table of one-character tokens, by character (0x00..0x7f only). | 109 // Table of one-character tokens, by character (0x00..0x7f only). |
| 110 // clang-format off |
| 110 static const byte one_char_tokens[] = { | 111 static const byte one_char_tokens[] = { |
| 111 Token::ILLEGAL, | 112 Token::ILLEGAL, |
| 112 Token::ILLEGAL, | 113 Token::ILLEGAL, |
| 113 Token::ILLEGAL, | 114 Token::ILLEGAL, |
| 114 Token::ILLEGAL, | 115 Token::ILLEGAL, |
| 115 Token::ILLEGAL, | 116 Token::ILLEGAL, |
| 116 Token::ILLEGAL, | 117 Token::ILLEGAL, |
| 117 Token::ILLEGAL, | 118 Token::ILLEGAL, |
| 118 Token::ILLEGAL, | 119 Token::ILLEGAL, |
| 119 Token::ILLEGAL, | 120 Token::ILLEGAL, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 136 Token::ILLEGAL, | 137 Token::ILLEGAL, |
| 137 Token::ILLEGAL, | 138 Token::ILLEGAL, |
| 138 Token::ILLEGAL, | 139 Token::ILLEGAL, |
| 139 Token::ILLEGAL, | 140 Token::ILLEGAL, |
| 140 Token::ILLEGAL, | 141 Token::ILLEGAL, |
| 141 Token::ILLEGAL, | 142 Token::ILLEGAL, |
| 142 Token::ILLEGAL, | 143 Token::ILLEGAL, |
| 143 Token::ILLEGAL, | 144 Token::ILLEGAL, |
| 144 Token::ILLEGAL, | 145 Token::ILLEGAL, |
| 145 Token::ILLEGAL, | 146 Token::ILLEGAL, |
| 147 Token::HASH, // 0x23 |
| 146 Token::ILLEGAL, | 148 Token::ILLEGAL, |
| 147 Token::ILLEGAL, | 149 Token::ILLEGAL, |
| 148 Token::ILLEGAL, | 150 Token::ILLEGAL, |
| 149 Token::ILLEGAL, | |
| 150 Token::ILLEGAL, | 151 Token::ILLEGAL, |
| 151 Token::LPAREN, // 0x28 | 152 Token::LPAREN, // 0x28 |
| 152 Token::RPAREN, // 0x29 | 153 Token::RPAREN, // 0x29 |
| 153 Token::ILLEGAL, | 154 Token::ILLEGAL, |
| 154 Token::ILLEGAL, | 155 Token::ILLEGAL, |
| 155 Token::COMMA, // 0x2c | 156 Token::COMMA, // 0x2c |
| 156 Token::ILLEGAL, | 157 Token::ILLEGAL, |
| 157 Token::ILLEGAL, | 158 Token::ILLEGAL, |
| 158 Token::ILLEGAL, | 159 Token::ILLEGAL, |
| 159 Token::ILLEGAL, | 160 Token::ILLEGAL, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 Token::ILLEGAL, | 231 Token::ILLEGAL, |
| 231 Token::ILLEGAL, | 232 Token::ILLEGAL, |
| 232 Token::ILLEGAL, | 233 Token::ILLEGAL, |
| 233 Token::ILLEGAL, | 234 Token::ILLEGAL, |
| 234 Token::LBRACE, // 0x7b | 235 Token::LBRACE, // 0x7b |
| 235 Token::ILLEGAL, | 236 Token::ILLEGAL, |
| 236 Token::RBRACE, // 0x7d | 237 Token::RBRACE, // 0x7d |
| 237 Token::BIT_NOT, // 0x7e | 238 Token::BIT_NOT, // 0x7e |
| 238 Token::ILLEGAL | 239 Token::ILLEGAL |
| 239 }; | 240 }; |
| 240 | 241 // clang-format on |
| 241 | 242 |
| 242 Token::Value Scanner::Next() { | 243 Token::Value Scanner::Next() { |
| 243 if (next_.token == Token::EOS) { | 244 if (next_.token == Token::EOS) { |
| 244 next_.location.beg_pos = current_.location.beg_pos; | 245 next_.location.beg_pos = current_.location.beg_pos; |
| 245 next_.location.end_pos = current_.location.end_pos; | 246 next_.location.end_pos = current_.location.end_pos; |
| 246 } | 247 } |
| 247 current_ = next_; | 248 current_ = next_; |
| 248 if (V8_UNLIKELY(next_next_.token != Token::UNINITIALIZED)) { | 249 if (V8_UNLIKELY(next_next_.token != Token::UNINITIALIZED)) { |
| 249 next_ = next_next_; | 250 next_ = next_next_; |
| 250 next_next_.token = Token::UNINITIALIZED; | 251 next_next_.token = Token::UNINITIALIZED; |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 704 break; | 705 break; |
| 705 | 706 |
| 706 case '?': | 707 case '?': |
| 707 token = Select(Token::CONDITIONAL); | 708 token = Select(Token::CONDITIONAL); |
| 708 break; | 709 break; |
| 709 | 710 |
| 710 case '~': | 711 case '~': |
| 711 token = Select(Token::BIT_NOT); | 712 token = Select(Token::BIT_NOT); |
| 712 break; | 713 break; |
| 713 | 714 |
| 715 case '#': |
| 716 token = Select(Token::HASH); |
| 717 break; |
| 718 |
| 714 case '`': | 719 case '`': |
| 715 token = ScanTemplateStart(); | 720 token = ScanTemplateStart(); |
| 716 break; | 721 break; |
| 717 | 722 |
| 718 default: | 723 default: |
| 719 if (c0_ < 0) { | 724 if (c0_ < 0) { |
| 720 token = Token::EOS; | 725 token = Token::EOS; |
| 721 } else if (unicode_cache_->IsIdentifierStart(c0_)) { | 726 } else if (unicode_cache_->IsIdentifierStart(c0_)) { |
| 722 token = ScanIdentifierOrKeyword(); | 727 token = ScanIdentifierOrKeyword(); |
| 723 } else if (IsDecimalDigit(c0_)) { | 728 } else if (IsDecimalDigit(c0_)) { |
| (...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 to->token = from->token; | 1636 to->token = from->token; |
| 1632 to->location = from->location; | 1637 to->location = from->location; |
| 1633 to->literal_chars->CopyFrom(from->literal_chars); | 1638 to->literal_chars->CopyFrom(from->literal_chars); |
| 1634 to->raw_literal_chars->CopyFrom(from->raw_literal_chars); | 1639 to->raw_literal_chars->CopyFrom(from->raw_literal_chars); |
| 1635 } | 1640 } |
| 1636 | 1641 |
| 1637 | 1642 |
| 1638 | 1643 |
| 1639 } // namespace internal | 1644 } // namespace internal |
| 1640 } // namespace v8 | 1645 } // namespace v8 |
| OLD | NEW |