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" 16using namespace clang; 17 18static 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 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 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 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