1*67e74705SXin Li //===--- TokenKinds.cpp - Token Kinds Support -----------------------------===// 2*67e74705SXin Li // 3*67e74705SXin Li // The LLVM Compiler Infrastructure 4*67e74705SXin Li // 5*67e74705SXin Li // This file is distributed under the University of Illinois Open Source 6*67e74705SXin Li // License. See LICENSE.TXT for details. 7*67e74705SXin Li // 8*67e74705SXin Li //===----------------------------------------------------------------------===// 9*67e74705SXin Li // 10*67e74705SXin Li // This file implements the TokenKind enum and support functions. 11*67e74705SXin Li // 12*67e74705SXin Li //===----------------------------------------------------------------------===// 13*67e74705SXin Li 14*67e74705SXin Li #include "clang/Basic/TokenKinds.h" 15*67e74705SXin Li #include "llvm/Support/ErrorHandling.h" 16*67e74705SXin Li using namespace clang; 17*67e74705SXin Li 18*67e74705SXin Li static const char * const TokNames[] = { 19*67e74705SXin Li #define TOK(X) #X, 20*67e74705SXin Li #define KEYWORD(X,Y) #X, 21*67e74705SXin Li #include "clang/Basic/TokenKinds.def" 22*67e74705SXin Li nullptr 23*67e74705SXin Li }; 24*67e74705SXin Li getTokenName(TokenKind Kind)25*67e74705SXin Liconst char *tok::getTokenName(TokenKind Kind) { 26*67e74705SXin Li if (Kind < tok::NUM_TOKENS) 27*67e74705SXin Li return TokNames[Kind]; 28*67e74705SXin Li llvm_unreachable("unknown TokenKind"); 29*67e74705SXin Li return nullptr; 30*67e74705SXin Li } 31*67e74705SXin Li getPunctuatorSpelling(TokenKind Kind)32*67e74705SXin Liconst char *tok::getPunctuatorSpelling(TokenKind Kind) { 33*67e74705SXin Li switch (Kind) { 34*67e74705SXin Li #define PUNCTUATOR(X,Y) case X: return Y; 35*67e74705SXin Li #include "clang/Basic/TokenKinds.def" 36*67e74705SXin Li default: break; 37*67e74705SXin Li } 38*67e74705SXin Li return nullptr; 39*67e74705SXin Li } 40*67e74705SXin Li getKeywordSpelling(TokenKind Kind)41*67e74705SXin Liconst char *tok::getKeywordSpelling(TokenKind Kind) { 42*67e74705SXin Li switch (Kind) { 43*67e74705SXin Li #define KEYWORD(X,Y) case kw_ ## X: return #X; 44*67e74705SXin Li #include "clang/Basic/TokenKinds.def" 45*67e74705SXin Li default: break; 46*67e74705SXin Li } 47*67e74705SXin Li return nullptr; 48*67e74705SXin Li } 49