| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef V8_TOKEN_H_ | 5 #ifndef V8_TOKEN_H_ |
| 6 #define V8_TOKEN_H_ | 6 #define V8_TOKEN_H_ |
| 7 | 7 |
| 8 #include "src/base/logging.h" | 8 #include "src/base/logging.h" |
| 9 #include "src/globals.h" |
| 9 | 10 |
| 10 namespace v8 { | 11 namespace v8 { |
| 11 namespace internal { | 12 namespace internal { |
| 12 | 13 |
| 13 // TOKEN_LIST takes a list of 3 macros M, all of which satisfy the | 14 // TOKEN_LIST takes a list of 3 macros M, all of which satisfy the |
| 14 // same signature M(name, string, precedence), where name is the | 15 // same signature M(name, string, precedence), where name is the |
| 15 // symbolic token name, string is the corresponding syntactic symbol | 16 // symbolic token name, string is the corresponding syntactic symbol |
| 16 // (or NULL, for literals), and precedence is the precedence (or 0). | 17 // (or NULL, for literals), and precedence is the precedence (or 0). |
| 17 // The parameters are invoked for token categories as follows: | 18 // The parameters are invoked for token categories as follows: |
| 18 // | 19 // |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 static const char* Name(Value tok) { | 181 static const char* Name(Value tok) { |
| 181 DCHECK(tok < NUM_TOKENS); // tok is unsigned | 182 DCHECK(tok < NUM_TOKENS); // tok is unsigned |
| 182 return name_[tok]; | 183 return name_[tok]; |
| 183 } | 184 } |
| 184 | 185 |
| 185 // Predicates | 186 // Predicates |
| 186 static bool IsKeyword(Value tok) { | 187 static bool IsKeyword(Value tok) { |
| 187 return token_type[tok] == 'K'; | 188 return token_type[tok] == 'K'; |
| 188 } | 189 } |
| 189 | 190 |
| 191 static bool IsIdentifier(Value tok, StrictMode strict_mode, |
| 192 bool is_generator) { |
| 193 switch (tok) { |
| 194 case IDENTIFIER: |
| 195 return true; |
| 196 case FUTURE_STRICT_RESERVED_WORD: |
| 197 case LET: |
| 198 case STATIC: |
| 199 return strict_mode == SLOPPY; |
| 200 case YIELD: |
| 201 return !is_generator && strict_mode == SLOPPY; |
| 202 default: |
| 203 return false; |
| 204 } |
| 205 UNREACHABLE(); |
| 206 return false; |
| 207 } |
| 208 |
| 190 static bool IsAssignmentOp(Value tok) { | 209 static bool IsAssignmentOp(Value tok) { |
| 191 return INIT_VAR <= tok && tok <= ASSIGN_MOD; | 210 return INIT_VAR <= tok && tok <= ASSIGN_MOD; |
| 192 } | 211 } |
| 193 | 212 |
| 194 static bool IsBinaryOp(Value op) { | 213 static bool IsBinaryOp(Value op) { |
| 195 return COMMA <= op && op <= MOD; | 214 return COMMA <= op && op <= MOD; |
| 196 } | 215 } |
| 197 | 216 |
| 198 static bool IsTruncatingBinaryOp(Value op) { | 217 static bool IsTruncatingBinaryOp(Value op) { |
| 199 return BIT_OR <= op && op <= ROR; | 218 return BIT_OR <= op && op <= ROR; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 private: | 307 private: |
| 289 static const char* const name_[NUM_TOKENS]; | 308 static const char* const name_[NUM_TOKENS]; |
| 290 static const char* const string_[NUM_TOKENS]; | 309 static const char* const string_[NUM_TOKENS]; |
| 291 static const int8_t precedence_[NUM_TOKENS]; | 310 static const int8_t precedence_[NUM_TOKENS]; |
| 292 static const char token_type[NUM_TOKENS]; | 311 static const char token_type[NUM_TOKENS]; |
| 293 }; | 312 }; |
| 294 | 313 |
| 295 } } // namespace v8::internal | 314 } } // namespace v8::internal |
| 296 | 315 |
| 297 #endif // V8_TOKEN_H_ | 316 #endif // V8_TOKEN_H_ |
| OLD | NEW |