// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #include "vm/token.h" #include "vm/object.h" namespace dart { #define TOKEN_NAME(t, s, p, a) #t, const char* Token::name_[] = { DART_TOKEN_LIST(TOKEN_NAME) DART_KEYWORD_LIST(TOKEN_NAME) }; #undef TOKEN_NAME #define TOKEN_STRING(t, s, p, a) s, const char* Token::tok_str_[] = { DART_TOKEN_LIST(TOKEN_STRING) DART_KEYWORD_LIST(TOKEN_STRING) }; #undef TOKEN_STRING #define TOKEN_PRECEDENCE(t, s, p, a) p, const uint8_t Token::precedence_[] = { DART_TOKEN_LIST(TOKEN_PRECEDENCE) DART_KEYWORD_LIST(TOKEN_PRECEDENCE) }; #undef TOKEN_PRECEDENCE #define TOKEN_ATTRIBUTE(t, s, p, a) a, const Token::Attribute Token::attributes_[] = { DART_TOKEN_LIST(TOKEN_ATTRIBUTE) DART_KEYWORD_LIST(TOKEN_ATTRIBUTE) }; #undef TOKEN_ATTRIBUTE bool Token::IsBinaryOperator(Token::Kind token) { switch (token) { case Token::kADD: case Token::kSUB: case Token::kMUL: case Token::kDIV: case Token::kTRUNCDIV: case Token::kMOD: case Token::kBIT_OR: case Token::kBIT_XOR: case Token::kBIT_AND: case Token::kOR: case Token::kAND: case Token::kSHL: case Token::kSHR: return true; default: return false; } } bool Token::IsPrefixOperator(Token::Kind token) { return (token == kNOT) || (token == kBIT_NOT) || (token == kNEGATE); } } // namespace dart