Home | History | Annotate | Download | only in parsing
      1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <stdint.h>
      6 
      7 #include "src/parsing/token.h"
      8 
      9 namespace v8 {
     10 namespace internal {
     11 
     12 #define T(name, string, precedence) #name,
     13 const char* const Token::name_[NUM_TOKENS] = {
     14   TOKEN_LIST(T, T)
     15 };
     16 #undef T
     17 
     18 
     19 #define T(name, string, precedence) string,
     20 const char* const Token::string_[NUM_TOKENS] = {
     21   TOKEN_LIST(T, T)
     22 };
     23 #undef T
     24 
     25 #if !V8_CC_MSVC
     26 // TODO(vogelheim): Remove #if once MSVC supports constexpr on functions.
     27 constexpr
     28 #endif
     29 uint8_t length(const char* str) {
     30   return str ? static_cast<uint8_t>(strlen(str)) : 0;
     31 }
     32 #define T(name, string, precedence) length(string),
     33 const uint8_t Token::string_length_[NUM_TOKENS] = {TOKEN_LIST(T, T)};
     34 #undef T
     35 
     36 #define T(name, string, precedence) precedence,
     37 const int8_t Token::precedence_[NUM_TOKENS] = {
     38   TOKEN_LIST(T, T)
     39 };
     40 #undef T
     41 
     42 
     43 #define KT(a, b, c) 'T',
     44 #define KK(a, b, c) 'K',
     45 const char Token::token_type[] = {
     46   TOKEN_LIST(KT, KK)
     47 };
     48 #undef KT
     49 #undef KK
     50 
     51 }  // namespace internal
     52 }  // namespace v8
     53