Path: blob/main/contrib/llvm-project/clang/lib/Basic/TokenKinds.cpp
35234 views
//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file implements the TokenKind enum and support functions.9//10//===----------------------------------------------------------------------===//1112#include "clang/Basic/TokenKinds.h"13#include "llvm/Support/ErrorHandling.h"14using namespace clang;1516static const char * const TokNames[] = {17#define TOK(X) #X,18#define KEYWORD(X,Y) #X,19#include "clang/Basic/TokenKinds.def"20nullptr21};2223const char *tok::getTokenName(TokenKind Kind) {24if (Kind < tok::NUM_TOKENS)25return TokNames[Kind];26llvm_unreachable("unknown TokenKind");27return nullptr;28}2930const char *tok::getPunctuatorSpelling(TokenKind Kind) {31switch (Kind) {32#define PUNCTUATOR(X,Y) case X: return Y;33#include "clang/Basic/TokenKinds.def"34default: break;35}36return nullptr;37}3839const char *tok::getKeywordSpelling(TokenKind Kind) {40switch (Kind) {41#define KEYWORD(X,Y) case kw_ ## X: return #X;42#include "clang/Basic/TokenKinds.def"43default: break;44}45return nullptr;46}4748const char *tok::getPPKeywordSpelling(tok::PPKeywordKind Kind) {49switch (Kind) {50#define PPKEYWORD(x) case tok::pp_##x: return #x;51#include "clang/Basic/TokenKinds.def"52default: break;53}54return nullptr;55}5657bool tok::isAnnotation(TokenKind Kind) {58switch (Kind) {59#define ANNOTATION(X) case annot_ ## X: return true;60#include "clang/Basic/TokenKinds.def"61default:62break;63}64return false;65}6667bool tok::isPragmaAnnotation(TokenKind Kind) {68switch (Kind) {69#define PRAGMA_ANNOTATION(X) case annot_ ## X: return true;70#include "clang/Basic/TokenKinds.def"71default:72break;73}74return false;75}767778