Index: src/scanner-base.h |
diff --git a/src/scanner-base.h b/src/scanner-base.h |
index 22844bbaf9f1757e539d45bd0eecd80a6379741e..d3776e5f8996719561bd037f6c764e28171608d0 100644 |
--- a/src/scanner-base.h |
+++ b/src/scanner-base.h |
@@ -542,151 +542,6 @@ class JavaScriptScanner : public Scanner { |
bool has_multiline_comment_before_next_; |
}; |
- |
-// ---------------------------------------------------------------------------- |
-// Keyword matching state machine. |
- |
-class KeywordMatcher { |
-// Incrementally recognize keywords. |
-// |
-// We distinguish between normal future reserved words and words that are |
-// considered to be future reserved words only in strict mode as required by |
-// ECMA-262 7.6.1.2. |
-// |
-// Recognized as keywords: |
-// break, case, catch, const*, continue, debugger, default, delete, do, |
-// else, finally, false, for, function, if, in, instanceof, new, null, |
-// return, switch, this, throw, true, try, typeof, var, void, while, with. |
-// |
-// Recognized as Future Reserved Keywords: |
-// class, enum, export, extends, import, super. |
-// |
-// Recognized as Future Reserved Keywords (strict mode only): |
-// implements, interface, let, package, private, protected, public, |
-// static, yield. |
-// |
-// *: Actually a "future reserved keyword". It's the only one we are |
-// recognizing outside of ES5 strict mode, the remaining are allowed |
-// as identifiers. |
-// |
- public: |
- KeywordMatcher() |
- : state_(INITIAL), |
- token_(Token::IDENTIFIER), |
- keyword_(NULL), |
- counter_(0), |
- keyword_token_(Token::ILLEGAL) {} |
- |
- Token::Value token() { return token_; } |
- |
- inline bool AddChar(unibrow::uchar input) { |
- if (state_ != UNMATCHABLE) { |
- Step(input); |
- } |
- return state_ != UNMATCHABLE; |
- } |
- |
- void Fail() { |
- token_ = Token::IDENTIFIER; |
- state_ = UNMATCHABLE; |
- } |
- |
- private: |
- enum State { |
- UNMATCHABLE, |
- INITIAL, |
- KEYWORD_PREFIX, |
- KEYWORD_MATCHED, |
- C, |
- CA, |
- CO, |
- CON, |
- D, |
- DE, |
- E, |
- EX, |
- F, |
- I, |
- IM, |
- IMP, |
- IN, |
- N, |
- P, |
- PR, |
- S, |
- T, |
- TH, |
- TR, |
- V, |
- W |
- }; |
- |
- struct FirstState { |
- const char* keyword; |
- State state; |
- Token::Value token; |
- }; |
- |
- // Range of possible first characters of a keyword. |
- static const unsigned int kFirstCharRangeMin = 'b'; |
- static const unsigned int kFirstCharRangeMax = 'y'; |
- static const unsigned int kFirstCharRangeLength = |
- kFirstCharRangeMax - kFirstCharRangeMin + 1; |
- // State map for first keyword character range. |
- static const FirstState first_states_[kFirstCharRangeLength]; |
- |
- // If input equals keyword's character at position, continue matching keyword |
- // from that position. |
- inline bool MatchKeywordStart(unibrow::uchar input, |
- const char* keyword, |
- int position, |
- Token::Value token_if_match) { |
- if (input != static_cast<unibrow::uchar>(keyword[position])) { |
- return false; |
- } |
- state_ = KEYWORD_PREFIX; |
- this->keyword_ = keyword; |
- this->counter_ = position + 1; |
- this->keyword_token_ = token_if_match; |
- return true; |
- } |
- |
- // If input equals match character, transition to new state and return true. |
- inline bool MatchState(unibrow::uchar input, char match, State new_state) { |
- if (input != static_cast<unibrow::uchar>(match)) { |
- return false; |
- } |
- state_ = new_state; |
- return true; |
- } |
- |
- inline bool MatchKeyword(unibrow::uchar input, |
- char match, |
- State new_state, |
- Token::Value keyword_token) { |
- if (input != static_cast<unibrow::uchar>(match)) { |
- return false; |
- } |
- state_ = new_state; |
- token_ = keyword_token; |
- return true; |
- } |
- |
- void Step(unibrow::uchar input); |
- |
- // Current state. |
- State state_; |
- // Token for currently added characters. |
- Token::Value token_; |
- |
- // Matching a specific keyword string (there is only one possible valid |
- // keyword with the current prefix). |
- const char* keyword_; |
- int counter_; |
- Token::Value keyword_token_; |
-}; |
- |
- |
} } // namespace v8::internal |
#endif // V8_SCANNER_BASE_H_ |