155682Smarkm//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===//
2233294Sstas//
3233294Sstas//                     The LLVM Compiler Infrastructure
4233294Sstas//
555682Smarkm// This file is distributed under the University of Illinois Open Source
6233294Sstas// License. See LICENSE.TXT for details.
7233294Sstas//
8233294Sstas//===----------------------------------------------------------------------===//
955682Smarkm//
10233294Sstas//  This file implements the TokenKind enum and support functions.
11233294Sstas//
1255682Smarkm//===----------------------------------------------------------------------===//
13233294Sstas
14233294Sstas#include "clang/Basic/TokenKinds.h"
15233294Sstas#include <cassert>
1655682Smarkmusing namespace clang;
17233294Sstas
18233294Sstasstatic const char * const TokNames[] = {
19233294Sstas#define TOK(X) #X,
2055682Smarkm#define KEYWORD(X,Y) #X,
21233294Sstas#include "clang/Basic/TokenKinds.def"
22233294Sstas  0
23233294Sstas};
24233294Sstas
25233294Sstasconst char *tok::getTokenName(enum TokenKind Kind) {
26233294Sstas  assert(Kind < tok::NUM_TOKENS);
27233294Sstas  return TokNames[Kind];
28233294Sstas}
29233294Sstas
30233294Sstasconst char *tok::getTokenSimpleSpelling(enum TokenKind Kind) {
31233294Sstas  switch (Kind) {
3255682Smarkm#define PUNCTUATOR(X,Y) case X: return Y;
3355682Smarkm#include "clang/Basic/TokenKinds.def"
3455682Smarkm  default: break;
3555682Smarkm  }
36233294Sstas
3755682Smarkm  return 0;
3855682Smarkm}
39233294Sstas