xref: /minix3/external/bsd/llvm/dist/clang/lib/Basic/TokenKinds.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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 Sambuc const 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 Sambuc const 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 Sambuc const 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