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