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