From: Kovarththanan Rajaratnam Date: Sat, 28 Nov 2009 16:09:28 +0000 (+0000) Subject: This patch adds a PUNCTUATOR macro (specialization of TOK) in TokenKinds.def and... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=59c55e724945daa060a5f1aaecbfd4de04770e93;p=clang This patch adds a PUNCTUATOR macro (specialization of TOK) in TokenKinds.def and makes use of it in tok::getTokenSimpleSpelling. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90042 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def index 239712c08c..99422332a7 100644 --- a/include/clang/Basic/TokenKinds.def +++ b/include/clang/Basic/TokenKinds.def @@ -17,6 +17,9 @@ #ifndef TOK #define TOK(X) #endif +#ifndef PUNCTUATOR +#define PUNCTUATOR(X,Y) TOK(X) +#endif #ifndef KEYWORD #define KEYWORD(X,Y) TOK(kw_ ## X) #endif @@ -113,64 +116,63 @@ TOK(wide_string_literal) // L"foo" TOK(angle_string_literal)// // C99 6.4.6: Punctuators. -TOK(l_square) // [ -TOK(r_square) // ] -TOK(l_paren) // ( -TOK(r_paren) // ) -TOK(l_brace) // { -TOK(r_brace) // } -TOK(period) // . -TOK(ellipsis) // ... -TOK(amp) // & -TOK(ampamp) // && -TOK(ampequal) // &= -TOK(star) // * -TOK(starequal) // *= -TOK(plus) // + -TOK(plusplus) // ++ -TOK(plusequal) // += -TOK(minus) // - -TOK(arrow) // -> -TOK(minusminus) // -- -TOK(minusequal) // -= -TOK(tilde) // ~ -TOK(exclaim) // ! -TOK(exclaimequal) // != -TOK(slash) // / -TOK(slashequal) // /= -TOK(percent) // % -TOK(percentequal) // %= -TOK(less) // < -TOK(lessless) // << -TOK(lessequal) // <= -TOK(lesslessequal) // <<= -TOK(greater) // > -TOK(greatergreater) // >> -TOK(greaterequal) // >= -TOK(greatergreaterequal) // >>= -TOK(caret) // ^ -TOK(caretequal) // ^= -TOK(pipe) // | -TOK(pipepipe) // || -TOK(pipeequal) // |= -TOK(question) // ? -TOK(colon) // : -TOK(semi) // ; -TOK(equal) // = -TOK(equalequal) // == -TOK(comma) // , -TOK(hash) // # -TOK(hashhash) // ## -TOK(hashat) // #@ +PUNCTUATOR(l_square, "[") +PUNCTUATOR(r_square, "]") +PUNCTUATOR(l_paren, "(") +PUNCTUATOR(r_paren, ")") +PUNCTUATOR(l_brace, "{") +PUNCTUATOR(r_brace, "}") +PUNCTUATOR(period, ".") +PUNCTUATOR(ellipsis, "...") +PUNCTUATOR(amp, "&") +PUNCTUATOR(ampamp, "&&") +PUNCTUATOR(ampequal, "&=") +PUNCTUATOR(star, "*") +PUNCTUATOR(starequal, "*=") +PUNCTUATOR(plus, "+") +PUNCTUATOR(plusplus, "++") +PUNCTUATOR(plusequal, "+=") +PUNCTUATOR(minus, "-") +PUNCTUATOR(arrow, "->") +PUNCTUATOR(minusminus, "--") +PUNCTUATOR(minusequal, "-=") +PUNCTUATOR(tilde, "~") +PUNCTUATOR(exclaim, "!") +PUNCTUATOR(exclaimequal, "!=") +PUNCTUATOR(slash, "/") +PUNCTUATOR(slashequal, "/=") +PUNCTUATOR(percent, "%") +PUNCTUATOR(percentequal, "%=") +PUNCTUATOR(less, "<") +PUNCTUATOR(lessless, "<<") +PUNCTUATOR(lessequal, "<=") +PUNCTUATOR(lesslessequal, "<<=") +PUNCTUATOR(greater, ">") +PUNCTUATOR(greatergreater, ">>") +PUNCTUATOR(greaterequal, ">=") +PUNCTUATOR(greatergreaterequal, ">>=") +PUNCTUATOR(caret, "^") +PUNCTUATOR(caretequal, "^=") +PUNCTUATOR(pipe, "|") +PUNCTUATOR(pipepipe, "||") +PUNCTUATOR(pipeequal, "|=") +PUNCTUATOR(question, "?") +PUNCTUATOR(colon, ":") +PUNCTUATOR(semi, ";") +PUNCTUATOR(equal, "=") +PUNCTUATOR(equalequal, "==") +PUNCTUATOR(comma, ",") +PUNCTUATOR(hash, "#") +PUNCTUATOR(hashhash, "##") +PUNCTUATOR(hashat, "#@") // C++ Support -TOK(periodstar) // .* -TOK(arrowstar) // ->* -TOK(coloncolon) // :: +PUNCTUATOR(periodstar, ".*") +PUNCTUATOR(arrowstar, "->*") +PUNCTUATOR(coloncolon, "::") // Objective C support. -TOK(at) // @ - +PUNCTUATOR(at, "@") // C99 6.4.1: Keywords. These turn into kw_* tokens. // Flags allowed: @@ -415,4 +417,5 @@ ANNOTATION(template_id) // annotation for a C++ template-id that names a #undef PPKEYWORD #undef ALIAS #undef KEYWORD +#undef PUNCTUATOR #undef TOK diff --git a/lib/Basic/TokenKinds.cpp b/lib/Basic/TokenKinds.cpp index 4afeaf01b7..8cdc1e3195 100644 --- a/lib/Basic/TokenKinds.cpp +++ b/lib/Basic/TokenKinds.cpp @@ -30,59 +30,8 @@ const char *tok::getTokenName(enum TokenKind 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 "@"; +#define PUNCTUATOR(X,Y) case X: return Y; +#include "clang/Basic/TokenKinds.def" default: break; }