Chromium Code Reviews| Index: src/scanner-base.cc |
| diff --git a/src/scanner-base.cc b/src/scanner-base.cc |
| index 66bbcf94a231269e4ffd8cf624c79ee0bd01b73c..ba262d072b6fcac21f8152588246827e641dc460 100644 |
| --- a/src/scanner-base.cc |
| +++ b/src/scanner-base.cc |
| @@ -89,10 +89,158 @@ void JavaScriptScanner::Initialize(UC16CharacterStream* source) { |
| Scan(); |
| } |
| + |
| +// Ensure that tokens can be stored in a byte. |
| +STATIC_ASSERT(Token::NUM_TOKENS <= 0x100); |
| + |
| +// Table of one-character tokens, by character (0x00..0x7f only). |
| +static byte one_char_tokens[] = { |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::LPAREN, // 0x28 |
| + Token::RPAREN, // 0x29 |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::COMMA, // 0x2c |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, // 0x30 |
|
Rico
2011/08/09 10:16:19
Why?
Lasse Reichstein
2011/08/09 11:27:12
At some point I thought I wanted to know where I w
|
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::COLON, // 0x3a |
| + Token::ILLEGAL, |
|
Lasse Reichstein
2011/08/09 11:27:12
Added semicolon.
|
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::CONDITIONAL, // 0x3f |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::LBRACK, // 0x5b |
| + Token::ILLEGAL, |
| + Token::RBRACK, // 0x5d |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::ILLEGAL, |
| + Token::LBRACE, // 0x7b |
| + Token::ILLEGAL, |
| + Token::RBRACE, // 0x7d |
| + Token::BIT_NOT, // 0x7e |
| + Token::ILLEGAL |
| +}; |
| + |
| + |
| Token::Value JavaScriptScanner::Next() { |
| current_ = next_; |
| has_line_terminator_before_next_ = false; |
| has_multiline_comment_before_next_ = false; |
| + if (static_cast<unsigned>(c0_) <= 0x7f) { |
| + Token::Value token = static_cast<Token::Value>(one_char_tokens[c0_]); |
| + if (token != Token::ILLEGAL) { |
| + int pos = source_pos(); |
| + next_.token = token; |
| + next_.location.beg_pos = pos; |
| + next_.location.end_pos = pos + 1; |
| + Advance(); |
| + return current_.token; |
| + } |
| + } |
| Scan(); |
| return current_.token; |
| } |