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