1193326Sed//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===// 2193326Sed// 3193326Sed// The LLVM Compiler Infrastructure 4193326Sed// 5193326Sed// This file is distributed under the University of Illinois Open Source 6193326Sed// License. See LICENSE.TXT for details. 7193326Sed// 8193326Sed//===----------------------------------------------------------------------===// 9193326Sed// 10193326Sed// This file implements the TokenKind enum and support functions. 11193326Sed// 12193326Sed//===----------------------------------------------------------------------===// 13193326Sed 14193326Sed#include "clang/Basic/TokenKinds.h" 15276479Sdim#include "llvm/Support/ErrorHandling.h" 16193326Sedusing namespace clang; 17193326Sed 18193326Sedstatic const char * const TokNames[] = { 19193326Sed#define TOK(X) #X, 20193326Sed#define KEYWORD(X,Y) #X, 21193326Sed#include "clang/Basic/TokenKinds.def" 22276479Sdim nullptr 23193326Sed}; 24193326Sed 25276479Sdimconst char *tok::getTokenName(TokenKind Kind) { 26276479Sdim if (Kind < tok::NUM_TOKENS) 27276479Sdim return TokNames[Kind]; 28276479Sdim llvm_unreachable("unknown TokenKind"); 29276479Sdim return nullptr; 30193326Sed} 31193326Sed 32276479Sdimconst char *tok::getPunctuatorSpelling(TokenKind Kind) { 33193326Sed switch (Kind) { 34199990Srdivacky#define PUNCTUATOR(X,Y) case X: return Y; 35199990Srdivacky#include "clang/Basic/TokenKinds.def" 36193326Sed default: break; 37193326Sed } 38276479Sdim return nullptr; 39276479Sdim} 40193326Sed 41276479Sdimconst char *tok::getKeywordSpelling(TokenKind Kind) { 42276479Sdim switch (Kind) { 43276479Sdim#define KEYWORD(X,Y) case kw_ ## X: return #X; 44276479Sdim#include "clang/Basic/TokenKinds.def" 45276479Sdim default: break; 46276479Sdim } 47276479Sdim return nullptr; 48193326Sed} 49