TokenKinds.cpp revision 193326
1//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file implements the TokenKind enum and support functions. 11// 12//===----------------------------------------------------------------------===// 13 14#include "clang/Basic/TokenKinds.h" 15 16#include <cassert> 17using namespace clang; 18 19static const char * const TokNames[] = { 20#define TOK(X) #X, 21#define KEYWORD(X,Y) #X, 22#include "clang/Basic/TokenKinds.def" 23 0 24}; 25 26const char *tok::getTokenName(enum TokenKind Kind) { 27 assert(Kind < tok::NUM_TOKENS); 28 return TokNames[Kind]; 29} 30 31const char *tok::getTokenSimpleSpelling(enum TokenKind Kind) { 32 switch (Kind) { 33 case tok::l_square: return "["; 34 case tok::r_square: return "]"; 35 case tok::l_paren: return "("; 36 case tok::r_paren: return ")"; 37 case tok::l_brace: return "{"; 38 case tok::r_brace: return "}"; 39 case tok::period: return "."; 40 case tok::ellipsis: return "..."; 41 case tok::amp: return "&"; 42 case tok::ampamp: return "&&"; 43 case tok::ampequal: return "&="; 44 case tok::star: return "*"; 45 case tok::starequal: return "*="; 46 case tok::plus: return "+"; 47 case tok::plusplus: return "++"; 48 case tok::plusequal: return "+="; 49 case tok::minus: return "-"; 50 case tok::arrow: return "->"; 51 case tok::minusminus: return "--"; 52 case tok::minusequal: return "-="; 53 case tok::tilde: return "~"; 54 case tok::exclaim: return "!"; 55 case tok::exclaimequal: return "!="; 56 case tok::slash: return "/"; 57 case tok::slashequal: return "/="; 58 case tok::percent: return "%"; 59 case tok::percentequal: return "%="; 60 case tok::less: return "<"; 61 case tok::lessless: return "<<"; 62 case tok::lessequal: return "<="; 63 case tok::lesslessequal: return "<<="; 64 case tok::greater: return ">"; 65 case tok::greatergreater: return ">>"; 66 case tok::greaterequal: return ">="; 67 case tok::greatergreaterequal: return ">>="; 68 case tok::caret: return "^"; 69 case tok::caretequal: return "^="; 70 case tok::pipe: return "|"; 71 case tok::pipepipe: return "||"; 72 case tok::pipeequal: return "|="; 73 case tok::question: return "?"; 74 case tok::colon: return ":"; 75 case tok::semi: return ";"; 76 case tok::equal: return "="; 77 case tok::equalequal: return "=="; 78 case tok::comma: return ","; 79 case tok::hash: return "#"; 80 case tok::hashhash: return "##"; 81 case tok::hashat: return "#@"; 82 case tok::periodstar: return ".*"; 83 case tok::arrowstar: return "->*"; 84 case tok::coloncolon: return "::"; 85 case tok::at: return "@"; 86 default: break; 87 } 88 89 return 0; 90} 91