llvm-project/clang/lib/Basic/TokenKinds.cpp

91 lines
3.3 KiB
C++

//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file implements the TokenKind enum and support functions.
//
//===----------------------------------------------------------------------===//
#include "clang/Basic/TokenKinds.h"
#include <cassert>
using namespace clang;
static const char * const TokNames[] = {
#define TOK(X) #X,
#define KEYWORD(X,Y) #X,
#include "clang/Basic/TokenKinds.def"
0
};
const char *tok::getTokenName(enum TokenKind Kind) {
assert(Kind < tok::NUM_TOKENS);
return TokNames[Kind];
}
const char *tok::getTokenSimpleSpelling(enum TokenKind Kind) {
switch (Kind) {
case tok::l_square: return "[";
case tok::r_square: return "]";
case tok::l_paren: return "(";
case tok::r_paren: return ")";
case tok::l_brace: return "{";
case tok::r_brace: return "}";
case tok::period: return ".";
case tok::ellipsis: return "...";
case tok::amp: return "&";
case tok::ampamp: return "&&";
case tok::ampequal: return "&=";
case tok::star: return "*";
case tok::starequal: return "*=";
case tok::plus: return "+";
case tok::plusplus: return "++";
case tok::plusequal: return "+=";
case tok::minus: return "-";
case tok::arrow: return "->";
case tok::minusminus: return "--";
case tok::minusequal: return "-=";
case tok::tilde: return "~";
case tok::exclaim: return "!";
case tok::exclaimequal: return "!=";
case tok::slash: return "/";
case tok::slashequal: return "/=";
case tok::percent: return "%";
case tok::percentequal: return "%=";
case tok::less: return "<";
case tok::lessless: return "<<";
case tok::lessequal: return "<=";
case tok::lesslessequal: return "<<=";
case tok::greater: return ">";
case tok::greatergreater: return ">>";
case tok::greaterequal: return ">=";
case tok::greatergreaterequal: return ">>=";
case tok::caret: return "^";
case tok::caretequal: return "^=";
case tok::pipe: return "|";
case tok::pipepipe: return "||";
case tok::pipeequal: return "|=";
case tok::question: return "?";
case tok::colon: return ":";
case tok::semi: return ";";
case tok::equal: return "=";
case tok::equalequal: return "==";
case tok::comma: return ",";
case tok::hash: return "#";
case tok::hashhash: return "##";
case tok::hashat: return "#@";
case tok::periodstar: return ".*";
case tok::arrowstar: return "->*";
case tok::coloncolon: return "::";
case tok::at: return "@";
default: break;
}
return 0;
}