| Index: src/scanner-base.cc
|
| diff --git a/src/scanner-base.cc b/src/scanner-base.cc
|
| index 66bbcf94a231269e4ffd8cf624c79ee0bd01b73c..53cf1450f9920eeb5b6188dad879c404bf727ad6 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,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::COLON, // 0x3a
|
| + Token::SEMICOLON, // 0x3b
|
| + 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;
|
| }
|
|
|