1193326Sed//===--- TokenKinds.def - C Family Token Kind Database ----------*- C++ -*-===// 2193326Sed// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6193326Sed// 7193326Sed//===----------------------------------------------------------------------===// 8193326Sed// 9193326Sed// This file defines the TokenKind database. This includes normal tokens like 10193326Sed// tok::ampamp (corresponding to the && token) as well as keywords for various 11193326Sed// languages. Users of this file must optionally #define the TOK, KEYWORD, 12288943Sdim// CXX11_KEYWORD, CONCEPTS_KEYWORD, ALIAS, or PPKEYWORD macros to make use of 13288943Sdim// this file. 14193326Sed// 15193326Sed//===----------------------------------------------------------------------===// 16193326Sed 17193326Sed#ifndef TOK 18193326Sed#define TOK(X) 19193326Sed#endif 20199990Srdivacky#ifndef PUNCTUATOR 21199990Srdivacky#define PUNCTUATOR(X,Y) TOK(X) 22199990Srdivacky#endif 23193326Sed#ifndef KEYWORD 24193326Sed#define KEYWORD(X,Y) TOK(kw_ ## X) 25193326Sed#endif 26288943Sdim#ifndef CXX11_KEYWORD 27288943Sdim#define CXX11_KEYWORD(X,Y) KEYWORD(X,KEYCXX11|(Y)) 28288943Sdim#endif 29327952Sdim#ifndef CXX2A_KEYWORD 30327952Sdim#define CXX2A_KEYWORD(X,Y) KEYWORD(X,KEYCXX2A|(Y)) 31327952Sdim#endif 32288943Sdim#ifndef CONCEPTS_KEYWORD 33327952Sdim#define CONCEPTS_KEYWORD(X) CXX2A_KEYWORD(X,KEYCONCEPTS) 34288943Sdim#endif 35353358Sdim#ifndef COROUTINES_KEYWORD 36353358Sdim#define COROUTINES_KEYWORD(X) CXX2A_KEYWORD(X,KEYCOROUTINES) 37353358Sdim#endif 38314564Sdim#ifndef MODULES_KEYWORD 39314564Sdim#define MODULES_KEYWORD(X) KEYWORD(X,KEYMODULES) 40314564Sdim#endif 41276479Sdim#ifndef TYPE_TRAIT 42276479Sdim#define TYPE_TRAIT(N,I,K) KEYWORD(I,K) 43276479Sdim#endif 44276479Sdim#ifndef TYPE_TRAIT_1 45276479Sdim#define TYPE_TRAIT_1(I,E,K) TYPE_TRAIT(1,I,K) 46276479Sdim#endif 47276479Sdim#ifndef TYPE_TRAIT_2 48276479Sdim#define TYPE_TRAIT_2(I,E,K) TYPE_TRAIT(2,I,K) 49276479Sdim#endif 50276479Sdim#ifndef TYPE_TRAIT_N 51276479Sdim#define TYPE_TRAIT_N(I,E,K) TYPE_TRAIT(0,I,K) 52276479Sdim#endif 53193326Sed#ifndef ALIAS 54193326Sed#define ALIAS(X,Y,Z) 55193326Sed#endif 56193326Sed#ifndef PPKEYWORD 57193326Sed#define PPKEYWORD(X) 58193326Sed#endif 59193326Sed#ifndef CXX_KEYWORD_OPERATOR 60193326Sed#define CXX_KEYWORD_OPERATOR(X,Y) 61193326Sed#endif 62344779Sdim#ifndef OBJC_AT_KEYWORD 63344779Sdim#define OBJC_AT_KEYWORD(X) 64193326Sed#endif 65221345Sdim#ifndef TESTING_KEYWORD 66221345Sdim#define TESTING_KEYWORD(X, L) KEYWORD(X, L) 67221345Sdim#endif 68193326Sed#ifndef ANNOTATION 69193326Sed#define ANNOTATION(X) TOK(annot_ ## X) 70193326Sed#endif 71360784Sdim#ifndef PRAGMA_ANNOTATION 72360784Sdim#define PRAGMA_ANNOTATION(X) ANNOTATION(X) 73360784Sdim#endif 74193326Sed 75193326Sed//===----------------------------------------------------------------------===// 76193326Sed// Preprocessor keywords. 77193326Sed//===----------------------------------------------------------------------===// 78193326Sed 79193326Sed// These have meaning after a '#' at the start of a line. These define enums in 80193326Sed// the tok::pp_* namespace. Note that IdentifierInfo::getPPKeywordID must be 81193326Sed// manually updated if something is added here. 82193326SedPPKEYWORD(not_keyword) 83193326Sed 84193326Sed// C99 6.10.1 - Conditional Inclusion. 85193326SedPPKEYWORD(if) 86193326SedPPKEYWORD(ifdef) 87193326SedPPKEYWORD(ifndef) 88193326SedPPKEYWORD(elif) 89193326SedPPKEYWORD(else) 90193326SedPPKEYWORD(endif) 91193326SedPPKEYWORD(defined) 92193326Sed 93193326Sed// C99 6.10.2 - Source File Inclusion. 94193326SedPPKEYWORD(include) 95193326SedPPKEYWORD(__include_macros) 96193326Sed 97193326Sed// C99 6.10.3 - Macro Replacement. 98193326SedPPKEYWORD(define) 99193326SedPPKEYWORD(undef) 100193326Sed 101193326Sed// C99 6.10.4 - Line Control. 102193326SedPPKEYWORD(line) 103193326Sed 104193326Sed// C99 6.10.5 - Error Directive. 105193326SedPPKEYWORD(error) 106193326Sed 107193326Sed// C99 6.10.6 - Pragma Directive. 108193326SedPPKEYWORD(pragma) 109193326Sed 110193326Sed// GNU Extensions. 111193326SedPPKEYWORD(import) 112193326SedPPKEYWORD(include_next) 113193326SedPPKEYWORD(warning) 114193326SedPPKEYWORD(ident) 115193326SedPPKEYWORD(sccs) 116193326SedPPKEYWORD(assert) 117193326SedPPKEYWORD(unassert) 118193326Sed 119226633Sdim// Clang extensions 120234353SdimPPKEYWORD(__public_macro) 121234353SdimPPKEYWORD(__private_macro) 122226633Sdim 123193326Sed//===----------------------------------------------------------------------===// 124193326Sed// Language keywords. 125193326Sed//===----------------------------------------------------------------------===// 126193326Sed 127193326Sed// These define members of the tok::* namespace. 128193326Sed 129193326SedTOK(unknown) // Not a token. 130193326SedTOK(eof) // End of file. 131221345SdimTOK(eod) // End of preprocessing directive (end of line inside a 132221345Sdim // directive). 133198092SrdivackyTOK(code_completion) // Code completion marker 134193326Sed 135193326Sed// C99 6.4.9: Comments. 136193326SedTOK(comment) // Comment (only in -E -C[C] mode) 137193326Sed 138193326Sed// C99 6.4.2: Identifiers. 139193326SedTOK(identifier) // abcde123 140218893SdimTOK(raw_identifier) // Used only in raw lexing mode. 141193326Sed 142193326Sed// C99 6.4.4.1: Integer Constants 143193326Sed// C99 6.4.4.2: Floating Constants 144193326SedTOK(numeric_constant) // 0x123 145193326Sed 146193326Sed// C99 6.4.4: Character Constants 147226633SdimTOK(char_constant) // 'a' 148226633SdimTOK(wide_char_constant) // L'b' 149193326Sed 150327952Sdim// C++17 Character Constants 151280031SdimTOK(utf8_char_constant) // u8'a' 152280031Sdim 153249423Sdim// C++11 Character Constants 154226633SdimTOK(utf16_char_constant) // u'a' 155226633SdimTOK(utf32_char_constant) // U'a' 156226633Sdim 157193326Sed// C99 6.4.5: String Literals. 158193326SedTOK(string_literal) // "foo" 159193326SedTOK(wide_string_literal) // L"foo" 160193326Sed 161353358Sdim// C11 6.4.7: Header Names 162353358SdimTOK(header_name) // <foo>, or "foo" lexed as a header-name 163353358Sdim 164249423Sdim// C++11 String Literals. 165226633SdimTOK(utf8_string_literal) // u8"foo" 166226633SdimTOK(utf16_string_literal)// u"foo" 167226633SdimTOK(utf32_string_literal)// U"foo" 168226633Sdim 169193326Sed// C99 6.4.6: Punctuators. 170199990SrdivackyPUNCTUATOR(l_square, "[") 171199990SrdivackyPUNCTUATOR(r_square, "]") 172199990SrdivackyPUNCTUATOR(l_paren, "(") 173199990SrdivackyPUNCTUATOR(r_paren, ")") 174199990SrdivackyPUNCTUATOR(l_brace, "{") 175199990SrdivackyPUNCTUATOR(r_brace, "}") 176199990SrdivackyPUNCTUATOR(period, ".") 177199990SrdivackyPUNCTUATOR(ellipsis, "...") 178199990SrdivackyPUNCTUATOR(amp, "&") 179199990SrdivackyPUNCTUATOR(ampamp, "&&") 180199990SrdivackyPUNCTUATOR(ampequal, "&=") 181199990SrdivackyPUNCTUATOR(star, "*") 182199990SrdivackyPUNCTUATOR(starequal, "*=") 183199990SrdivackyPUNCTUATOR(plus, "+") 184199990SrdivackyPUNCTUATOR(plusplus, "++") 185199990SrdivackyPUNCTUATOR(plusequal, "+=") 186199990SrdivackyPUNCTUATOR(minus, "-") 187199990SrdivackyPUNCTUATOR(arrow, "->") 188199990SrdivackyPUNCTUATOR(minusminus, "--") 189199990SrdivackyPUNCTUATOR(minusequal, "-=") 190199990SrdivackyPUNCTUATOR(tilde, "~") 191199990SrdivackyPUNCTUATOR(exclaim, "!") 192199990SrdivackyPUNCTUATOR(exclaimequal, "!=") 193199990SrdivackyPUNCTUATOR(slash, "/") 194199990SrdivackyPUNCTUATOR(slashequal, "/=") 195199990SrdivackyPUNCTUATOR(percent, "%") 196199990SrdivackyPUNCTUATOR(percentequal, "%=") 197199990SrdivackyPUNCTUATOR(less, "<") 198199990SrdivackyPUNCTUATOR(lessless, "<<") 199199990SrdivackyPUNCTUATOR(lessequal, "<=") 200199990SrdivackyPUNCTUATOR(lesslessequal, "<<=") 201327952SdimPUNCTUATOR(spaceship, "<=>") 202199990SrdivackyPUNCTUATOR(greater, ">") 203199990SrdivackyPUNCTUATOR(greatergreater, ">>") 204199990SrdivackyPUNCTUATOR(greaterequal, ">=") 205199990SrdivackyPUNCTUATOR(greatergreaterequal, ">>=") 206199990SrdivackyPUNCTUATOR(caret, "^") 207199990SrdivackyPUNCTUATOR(caretequal, "^=") 208199990SrdivackyPUNCTUATOR(pipe, "|") 209199990SrdivackyPUNCTUATOR(pipepipe, "||") 210199990SrdivackyPUNCTUATOR(pipeequal, "|=") 211199990SrdivackyPUNCTUATOR(question, "?") 212199990SrdivackyPUNCTUATOR(colon, ":") 213199990SrdivackyPUNCTUATOR(semi, ";") 214199990SrdivackyPUNCTUATOR(equal, "=") 215199990SrdivackyPUNCTUATOR(equalequal, "==") 216199990SrdivackyPUNCTUATOR(comma, ",") 217199990SrdivackyPUNCTUATOR(hash, "#") 218199990SrdivackyPUNCTUATOR(hashhash, "##") 219199990SrdivackyPUNCTUATOR(hashat, "#@") 220193326Sed 221193326Sed// C++ Support 222199990SrdivackyPUNCTUATOR(periodstar, ".*") 223199990SrdivackyPUNCTUATOR(arrowstar, "->*") 224199990SrdivackyPUNCTUATOR(coloncolon, "::") 225193326Sed 226193326Sed// Objective C support. 227199990SrdivackyPUNCTUATOR(at, "@") 228193326Sed 229218893Sdim// CUDA support. 230218893SdimPUNCTUATOR(lesslessless, "<<<") 231218893SdimPUNCTUATOR(greatergreatergreater, ">>>") 232218893Sdim 233309124Sdim// CL support 234309124SdimPUNCTUATOR(caretcaret, "^^") 235309124Sdim 236193326Sed// C99 6.4.1: Keywords. These turn into kw_* tokens. 237193326Sed// Flags allowed: 238193326Sed// KEYALL - This is a keyword in all variants of C and C++, or it 239193326Sed// is a keyword in the implementation namespace that should 240193326Sed// always be treated as a keyword 241193326Sed// KEYC99 - This is a keyword introduced to C in C99 242234353Sdim// KEYC11 - This is a keyword introduced to C in C11 243193326Sed// KEYCXX - This is a C++ keyword, or a C++-specific keyword in the 244193326Sed// implementation namespace 245218893Sdim// KEYNOCXX - This is a keyword in every non-C++ dialect. 246249423Sdim// KEYCXX11 - This is a C++ keyword introduced to C++ in C++11 247327952Sdim// KEYCXX2A - This is a C++ keyword introduced to C++ in C++2a 248288943Sdim// KEYCONCEPTS - This is a keyword if the C++ extensions for concepts 249288943Sdim// are enabled. 250314564Sdim// KEYMODULES - This is a keyword if the C++ extensions for modules 251314564Sdim// are enabled. 252193326Sed// KEYGNU - This is a keyword if GNU extensions are enabled 253193326Sed// KEYMS - This is a keyword if Microsoft extensions are enabled 254353358Sdim// KEYMSCOMPAT - This is a keyword if Microsoft compatibility mode is enabled 255288943Sdim// KEYNOMS18 - This is a keyword that must never be enabled under 256288943Sdim// MSVC <= v18. 257341825Sdim// KEYOPENCLC - This is a keyword in OpenCL C 258353358Sdim// KEYOPENCLCXX - This is a keyword in C++ for OpenCL 259353358Sdim// KEYNOOPENCL - This is a keyword that is not supported in OpenCL 260218893Sdim// KEYALTIVEC - This is a keyword in AltiVec 261288943Sdim// KEYZVECTOR - This is a keyword for the System z vector extensions, 262288943Sdim// which are heavily based on AltiVec 263212904Sdim// KEYBORLAND - This is a keyword if Borland extensions are enabled 264353358Sdim// KEYCOROUTINES - This is a keyword if support for C++ coroutines is enabled 265221345Sdim// BOOLSUPPORT - This is a keyword if 'bool' is a built-in type 266276479Sdim// HALFSUPPORT - This is a keyword if 'half' is a built-in type 267243830Sdim// WCHARSUPPORT - This is a keyword if 'wchar_t' is a built-in type 268341825Sdim// CHAR8SUPPORT - This is a keyword if 'char8_t' is a built-in type 269193326Sed// 270193326SedKEYWORD(auto , KEYALL) 271193326SedKEYWORD(break , KEYALL) 272193326SedKEYWORD(case , KEYALL) 273193326SedKEYWORD(char , KEYALL) 274193326SedKEYWORD(const , KEYALL) 275193326SedKEYWORD(continue , KEYALL) 276193326SedKEYWORD(default , KEYALL) 277193326SedKEYWORD(do , KEYALL) 278193326SedKEYWORD(double , KEYALL) 279193326SedKEYWORD(else , KEYALL) 280193326SedKEYWORD(enum , KEYALL) 281193326SedKEYWORD(extern , KEYALL) 282193326SedKEYWORD(float , KEYALL) 283193326SedKEYWORD(for , KEYALL) 284193326SedKEYWORD(goto , KEYALL) 285193326SedKEYWORD(if , KEYALL) 286193326SedKEYWORD(inline , KEYC99|KEYCXX|KEYGNU) 287193326SedKEYWORD(int , KEYALL) 288193326SedKEYWORD(long , KEYALL) 289193326SedKEYWORD(register , KEYALL) 290193326SedKEYWORD(restrict , KEYC99) 291193326SedKEYWORD(return , KEYALL) 292193326SedKEYWORD(short , KEYALL) 293193326SedKEYWORD(signed , KEYALL) 294193326SedKEYWORD(sizeof , KEYALL) 295193326SedKEYWORD(static , KEYALL) 296193326SedKEYWORD(struct , KEYALL) 297193326SedKEYWORD(switch , KEYALL) 298193326SedKEYWORD(typedef , KEYALL) 299193326SedKEYWORD(union , KEYALL) 300193326SedKEYWORD(unsigned , KEYALL) 301193326SedKEYWORD(void , KEYALL) 302193326SedKEYWORD(volatile , KEYALL) 303193326SedKEYWORD(while , KEYALL) 304226633SdimKEYWORD(_Alignas , KEYALL) 305239462SdimKEYWORD(_Alignof , KEYALL) 306296417SdimKEYWORD(_Atomic , KEYALL|KEYNOOPENCL) 307218893SdimKEYWORD(_Bool , KEYNOCXX) 308193326SedKEYWORD(_Complex , KEYALL) 309221345SdimKEYWORD(_Generic , KEYALL) 310193326SedKEYWORD(_Imaginary , KEYALL) 311249423SdimKEYWORD(_Noreturn , KEYALL) 312221345SdimKEYWORD(_Static_assert , KEYALL) 313251662SdimKEYWORD(_Thread_local , KEYALL) 314193326SedKEYWORD(__func__ , KEYALL) 315234353SdimKEYWORD(__objc_yes , KEYALL) 316234353SdimKEYWORD(__objc_no , KEYALL) 317193326Sed 318234353Sdim 319193326Sed// C++ 2.11p1: Keywords. 320193326SedKEYWORD(asm , KEYCXX|KEYGNU) 321261991SdimKEYWORD(bool , BOOLSUPPORT) 322193326SedKEYWORD(catch , KEYCXX) 323193326SedKEYWORD(class , KEYCXX) 324193326SedKEYWORD(const_cast , KEYCXX) 325193326SedKEYWORD(delete , KEYCXX) 326193326SedKEYWORD(dynamic_cast , KEYCXX) 327193326SedKEYWORD(explicit , KEYCXX) 328193326SedKEYWORD(export , KEYCXX) 329261991SdimKEYWORD(false , BOOLSUPPORT) 330193326SedKEYWORD(friend , KEYCXX) 331193326SedKEYWORD(mutable , KEYCXX) 332193326SedKEYWORD(namespace , KEYCXX) 333193326SedKEYWORD(new , KEYCXX) 334193326SedKEYWORD(operator , KEYCXX) 335276479SdimKEYWORD(private , KEYCXX) 336193326SedKEYWORD(protected , KEYCXX) 337193326SedKEYWORD(public , KEYCXX) 338193326SedKEYWORD(reinterpret_cast , KEYCXX) 339193326SedKEYWORD(static_cast , KEYCXX) 340193326SedKEYWORD(template , KEYCXX) 341193326SedKEYWORD(this , KEYCXX) 342193326SedKEYWORD(throw , KEYCXX) 343261991SdimKEYWORD(true , BOOLSUPPORT) 344193326SedKEYWORD(try , KEYCXX) 345193326SedKEYWORD(typename , KEYCXX) 346193326SedKEYWORD(typeid , KEYCXX) 347193326SedKEYWORD(using , KEYCXX) 348193326SedKEYWORD(virtual , KEYCXX) 349243830SdimKEYWORD(wchar_t , WCHARSUPPORT) 350193326Sed 351193326Sed// C++ 2.5p2: Alternative Representations. 352193326SedCXX_KEYWORD_OPERATOR(and , ampamp) 353193326SedCXX_KEYWORD_OPERATOR(and_eq , ampequal) 354193326SedCXX_KEYWORD_OPERATOR(bitand , amp) 355193326SedCXX_KEYWORD_OPERATOR(bitor , pipe) 356193326SedCXX_KEYWORD_OPERATOR(compl , tilde) 357193326SedCXX_KEYWORD_OPERATOR(not , exclaim) 358193326SedCXX_KEYWORD_OPERATOR(not_eq , exclaimequal) 359193326SedCXX_KEYWORD_OPERATOR(or , pipepipe) 360193326SedCXX_KEYWORD_OPERATOR(or_eq , pipeequal) 361193326SedCXX_KEYWORD_OPERATOR(xor , caret) 362193326SedCXX_KEYWORD_OPERATOR(xor_eq , caretequal) 363193326Sed 364249423Sdim// C++11 keywords 365288943SdimCXX11_KEYWORD(alignas , 0) 366288943SdimCXX11_KEYWORD(alignof , 0) 367288943SdimCXX11_KEYWORD(char16_t , KEYNOMS18) 368288943SdimCXX11_KEYWORD(char32_t , KEYNOMS18) 369288943SdimCXX11_KEYWORD(constexpr , 0) 370288943SdimCXX11_KEYWORD(decltype , 0) 371288943SdimCXX11_KEYWORD(noexcept , 0) 372288943SdimCXX11_KEYWORD(nullptr , 0) 373353358SdimCXX11_KEYWORD(static_assert , KEYMSCOMPAT) 374288943SdimCXX11_KEYWORD(thread_local , 0) 375193326Sed 376360784Sdim// C++2a keywords 377288943SdimCONCEPTS_KEYWORD(concept) 378288943SdimCONCEPTS_KEYWORD(requires) 379288943Sdim 380353358Sdim// C++2a / coroutines TS keywords 381353358SdimCOROUTINES_KEYWORD(co_await) 382353358SdimCOROUTINES_KEYWORD(co_return) 383353358SdimCOROUTINES_KEYWORD(co_yield) 384296417Sdim 385314564Sdim// C++ modules TS keywords 386314564SdimMODULES_KEYWORD(module) 387314564SdimMODULES_KEYWORD(import) 388314564Sdim 389353358Sdim// C++20 keywords. 390353358SdimCXX2A_KEYWORD(char8_t , CHAR8SUPPORT) 391353358SdimCXX2A_KEYWORD(consteval , 0) 392360784SdimCXX2A_KEYWORD(constinit , 0) 393341825Sdim 394327952Sdim// C11 Extension 395327952SdimKEYWORD(_Float16 , KEYALL) 396327952Sdim 397341825Sdim// ISO/IEC JTC1 SC22 WG14 N1169 Extension 398341825SdimKEYWORD(_Accum , KEYNOCXX) 399341825SdimKEYWORD(_Fract , KEYNOCXX) 400341825SdimKEYWORD(_Sat , KEYNOCXX) 401341825Sdim 402193326Sed// GNU Extensions (in impl-reserved namespace) 403193326SedKEYWORD(_Decimal32 , KEYALL) 404193326SedKEYWORD(_Decimal64 , KEYALL) 405193326SedKEYWORD(_Decimal128 , KEYALL) 406193326SedKEYWORD(__null , KEYCXX) 407193326SedKEYWORD(__alignof , KEYALL) 408193326SedKEYWORD(__attribute , KEYALL) 409193326SedKEYWORD(__builtin_choose_expr , KEYALL) 410193326SedKEYWORD(__builtin_offsetof , KEYALL) 411353358SdimKEYWORD(__builtin_FILE , KEYALL) 412353358SdimKEYWORD(__builtin_FUNCTION , KEYALL) 413353358SdimKEYWORD(__builtin_LINE , KEYALL) 414353358SdimKEYWORD(__builtin_COLUMN , KEYALL) 415353358Sdim 416276479Sdim// __builtin_types_compatible_p is a GNU C extension that we handle like a C++ 417276479Sdim// type trait. 418276479SdimTYPE_TRAIT_2(__builtin_types_compatible_p, TypeCompatible, KEYNOCXX) 419193326SedKEYWORD(__builtin_va_arg , KEYALL) 420193326SedKEYWORD(__extension__ , KEYALL) 421309124SdimKEYWORD(__float128 , KEYALL) 422193326SedKEYWORD(__imag , KEYALL) 423234353SdimKEYWORD(__int128 , KEYALL) 424193326SedKEYWORD(__label__ , KEYALL) 425193326SedKEYWORD(__real , KEYALL) 426193326SedKEYWORD(__thread , KEYALL) 427193326SedKEYWORD(__FUNCTION__ , KEYALL) 428193326SedKEYWORD(__PRETTY_FUNCTION__ , KEYALL) 429296417SdimKEYWORD(__auto_type , KEYALL) 430193326Sed 431193326Sed// GNU Extensions (outside impl-reserved namespace) 432193326SedKEYWORD(typeof , KEYGNU) 433193326Sed 434239462Sdim// MS Extensions 435261991SdimKEYWORD(__FUNCDNAME__ , KEYMS) 436276479SdimKEYWORD(__FUNCSIG__ , KEYMS) 437239462SdimKEYWORD(L__FUNCTION__ , KEYMS) 438341825SdimKEYWORD(L__FUNCSIG__ , KEYMS) 439276479SdimTYPE_TRAIT_1(__is_interface_class, IsInterfaceClass, KEYMS) 440276479SdimTYPE_TRAIT_1(__is_sealed, IsSealed, KEYMS) 441239462Sdim 442276479Sdim// MSVC12.0 / VS2013 Type Traits 443276479SdimTYPE_TRAIT_1(__is_destructible, IsDestructible, KEYMS) 444321369SdimTYPE_TRAIT_1(__is_trivially_destructible, IsTriviallyDestructible, KEYCXX) 445276479SdimTYPE_TRAIT_1(__is_nothrow_destructible, IsNothrowDestructible, KEYMS) 446276479SdimTYPE_TRAIT_2(__is_nothrow_assignable, IsNothrowAssignable, KEYCXX) 447276479SdimTYPE_TRAIT_N(__is_constructible, IsConstructible, KEYCXX) 448276479SdimTYPE_TRAIT_N(__is_nothrow_constructible, IsNothrowConstructible, KEYCXX) 449276479Sdim 450309124Sdim// MSVC14.0 / VS2015 Type Traits 451309124SdimTYPE_TRAIT_2(__is_assignable, IsAssignable, KEYCXX) 452309124Sdim 453360784Sdim// MSVC Type Traits of unknown vintage 454360784SdimTYPE_TRAIT_1(__has_nothrow_move_assign, HasNothrowMoveAssign, KEYCXX) 455360784SdimTYPE_TRAIT_1(__has_trivial_move_assign, HasTrivialMoveAssign, KEYCXX) 456360784SdimTYPE_TRAIT_1(__has_trivial_move_constructor, HasTrivialMoveConstructor, KEYCXX) 457360784Sdim 458193326Sed// GNU and MS Type Traits 459276479SdimTYPE_TRAIT_1(__has_nothrow_assign, HasNothrowAssign, KEYCXX) 460276479SdimTYPE_TRAIT_1(__has_nothrow_copy, HasNothrowCopy, KEYCXX) 461276479SdimTYPE_TRAIT_1(__has_nothrow_constructor, HasNothrowConstructor, KEYCXX) 462276479SdimTYPE_TRAIT_1(__has_trivial_assign, HasTrivialAssign, KEYCXX) 463276479SdimTYPE_TRAIT_1(__has_trivial_copy, HasTrivialCopy, KEYCXX) 464276479SdimTYPE_TRAIT_1(__has_trivial_constructor, HasTrivialDefaultConstructor, KEYCXX) 465276479SdimTYPE_TRAIT_1(__has_trivial_destructor, HasTrivialDestructor, KEYCXX) 466276479SdimTYPE_TRAIT_1(__has_virtual_destructor, HasVirtualDestructor, KEYCXX) 467276479SdimTYPE_TRAIT_1(__is_abstract, IsAbstract, KEYCXX) 468321369SdimTYPE_TRAIT_1(__is_aggregate, IsAggregate, KEYCXX) 469276479SdimTYPE_TRAIT_2(__is_base_of, IsBaseOf, KEYCXX) 470276479SdimTYPE_TRAIT_1(__is_class, IsClass, KEYCXX) 471276479SdimTYPE_TRAIT_2(__is_convertible_to, IsConvertibleTo, KEYCXX) 472276479SdimTYPE_TRAIT_1(__is_empty, IsEmpty, KEYCXX) 473276479SdimTYPE_TRAIT_1(__is_enum, IsEnum, KEYCXX) 474276479SdimTYPE_TRAIT_1(__is_final, IsFinal, KEYCXX) 475276479SdimTYPE_TRAIT_1(__is_literal, IsLiteral, KEYCXX) 476221345Sdim// Name for GCC 4.6 compatibility - people have already written libraries using 477221345Sdim// this name unfortunately. 478276479SdimALIAS("__is_literal_type", __is_literal, KEYCXX) 479276479SdimTYPE_TRAIT_1(__is_pod, IsPOD, KEYCXX) 480276479SdimTYPE_TRAIT_1(__is_polymorphic, IsPolymorphic, KEYCXX) 481360784SdimTYPE_TRAIT_1(__is_standard_layout, IsStandardLayout, KEYCXX) 482276479SdimTYPE_TRAIT_1(__is_trivial, IsTrivial, KEYCXX) 483360784SdimTYPE_TRAIT_2(__is_trivially_assignable, IsTriviallyAssignable, KEYCXX) 484360784SdimTYPE_TRAIT_N(__is_trivially_constructible, IsTriviallyConstructible, KEYCXX) 485360784SdimTYPE_TRAIT_1(__is_trivially_copyable, IsTriviallyCopyable, KEYCXX) 486276479SdimTYPE_TRAIT_1(__is_union, IsUnion, KEYCXX) 487327952SdimTYPE_TRAIT_1(__has_unique_object_representations, 488327952Sdim HasUniqueObjectRepresentations, KEYCXX) 489360784SdimKEYWORD(__underlying_type , KEYCXX) 490193326Sed 491223017Sdim// Clang-only C++ Type Traits 492341825SdimTYPE_TRAIT_2(__reference_binds_to_temporary, ReferenceBindsToTemporary, KEYCXX) 493223017Sdim 494221345Sdim// Embarcadero Expression Traits 495221345SdimKEYWORD(__is_lvalue_expr , KEYCXX) 496221345SdimKEYWORD(__is_rvalue_expr , KEYCXX) 497221345Sdim 498221345Sdim// Embarcadero Unary Type Traits 499276479SdimTYPE_TRAIT_1(__is_arithmetic, IsArithmetic, KEYCXX) 500276479SdimTYPE_TRAIT_1(__is_floating_point, IsFloatingPoint, KEYCXX) 501276479SdimTYPE_TRAIT_1(__is_integral, IsIntegral, KEYCXX) 502276479SdimTYPE_TRAIT_1(__is_complete_type, IsCompleteType, KEYCXX) 503276479SdimTYPE_TRAIT_1(__is_void, IsVoid, KEYCXX) 504276479SdimTYPE_TRAIT_1(__is_array, IsArray, KEYCXX) 505276479SdimTYPE_TRAIT_1(__is_function, IsFunction, KEYCXX) 506276479SdimTYPE_TRAIT_1(__is_reference, IsReference, KEYCXX) 507276479SdimTYPE_TRAIT_1(__is_lvalue_reference, IsLvalueReference, KEYCXX) 508276479SdimTYPE_TRAIT_1(__is_rvalue_reference, IsRvalueReference, KEYCXX) 509276479SdimTYPE_TRAIT_1(__is_fundamental, IsFundamental, KEYCXX) 510276479SdimTYPE_TRAIT_1(__is_object, IsObject, KEYCXX) 511276479SdimTYPE_TRAIT_1(__is_scalar, IsScalar, KEYCXX) 512276479SdimTYPE_TRAIT_1(__is_compound, IsCompound, KEYCXX) 513276479SdimTYPE_TRAIT_1(__is_pointer, IsPointer, KEYCXX) 514276479SdimTYPE_TRAIT_1(__is_member_object_pointer, IsMemberObjectPointer, KEYCXX) 515276479SdimTYPE_TRAIT_1(__is_member_function_pointer, IsMemberFunctionPointer, KEYCXX) 516276479SdimTYPE_TRAIT_1(__is_member_pointer, IsMemberPointer, KEYCXX) 517276479SdimTYPE_TRAIT_1(__is_const, IsConst, KEYCXX) 518276479SdimTYPE_TRAIT_1(__is_volatile, IsVolatile, KEYCXX) 519276479SdimTYPE_TRAIT_1(__is_signed, IsSigned, KEYCXX) 520276479SdimTYPE_TRAIT_1(__is_unsigned, IsUnsigned, KEYCXX) 521221345Sdim 522221345Sdim// Embarcadero Binary Type Traits 523276479SdimTYPE_TRAIT_2(__is_same, IsSame, KEYCXX) 524276479SdimTYPE_TRAIT_2(__is_convertible, IsConvertible, KEYCXX) 525221345SdimKEYWORD(__array_rank , KEYCXX) 526221345SdimKEYWORD(__array_extent , KEYCXX) 527360784Sdim// Name for GCC 6 compatibility. 528360784SdimALIAS("__is_same_as", __is_same, KEYCXX) 529221345Sdim 530193326Sed// Apple Extension. 531193326SedKEYWORD(__private_extern__ , KEYALL) 532226633SdimKEYWORD(__module_private__ , KEYALL) 533193326Sed 534296417Sdim// Extension that will be enabled for Microsoft, Borland and PS4, but can be 535296417Sdim// disabled via '-fno-declspec'. 536296417SdimKEYWORD(__declspec , 0) 537296417Sdim 538193326Sed// Microsoft Extension. 539193326SedKEYWORD(__cdecl , KEYALL) 540193326SedKEYWORD(__stdcall , KEYALL) 541193326SedKEYWORD(__fastcall , KEYALL) 542208600SrdivackyKEYWORD(__thiscall , KEYALL) 543314564SdimKEYWORD(__regcall , KEYALL) 544280031SdimKEYWORD(__vectorcall , KEYALL) 545276479SdimKEYWORD(__forceinline , KEYMS) 546226633SdimKEYWORD(__unaligned , KEYMS) 547280031SdimKEYWORD(__super , KEYMS) 548193326Sed 549276479Sdim// OpenCL address space qualifiers 550341825SdimKEYWORD(__global , KEYOPENCLC | KEYOPENCLCXX) 551341825SdimKEYWORD(__local , KEYOPENCLC | KEYOPENCLCXX) 552341825SdimKEYWORD(__constant , KEYOPENCLC | KEYOPENCLCXX) 553341825SdimKEYWORD(__private , KEYOPENCLC | KEYOPENCLCXX) 554341825SdimKEYWORD(__generic , KEYOPENCLC | KEYOPENCLCXX) 555353358SdimALIAS("global", __global , KEYOPENCLC | KEYOPENCLCXX) 556353358SdimALIAS("local", __local , KEYOPENCLC | KEYOPENCLCXX) 557353358SdimALIAS("constant", __constant , KEYOPENCLC | KEYOPENCLCXX) 558341825SdimALIAS("private", __private , KEYOPENCLC) 559353358SdimALIAS("generic", __generic , KEYOPENCLC | KEYOPENCLCXX) 560276479Sdim// OpenCL function qualifiers 561341825SdimKEYWORD(__kernel , KEYOPENCLC | KEYOPENCLCXX) 562341825SdimALIAS("kernel", __kernel , KEYOPENCLC | KEYOPENCLCXX) 563276479Sdim// OpenCL access qualifiers 564341825SdimKEYWORD(__read_only , KEYOPENCLC | KEYOPENCLCXX) 565341825SdimKEYWORD(__write_only , KEYOPENCLC | KEYOPENCLCXX) 566341825SdimKEYWORD(__read_write , KEYOPENCLC | KEYOPENCLCXX) 567341825SdimALIAS("read_only", __read_only , KEYOPENCLC | KEYOPENCLCXX) 568341825SdimALIAS("write_only", __write_only , KEYOPENCLC | KEYOPENCLCXX) 569341825SdimALIAS("read_write", __read_write , KEYOPENCLC | KEYOPENCLCXX) 570276479Sdim// OpenCL builtins 571353358SdimKEYWORD(__builtin_astype , KEYOPENCLC | KEYOPENCLCXX) 572341825SdimKEYWORD(vec_step , KEYOPENCLC | KEYALTIVEC | KEYZVECTOR) 573353358Sdim#define GENERIC_IMAGE_TYPE(ImgType, Id) KEYWORD(ImgType##_t, KEYOPENCLC | KEYOPENCLCXX) 574309124Sdim#include "clang/Basic/OpenCLImageTypes.def" 575218893Sdim 576288943Sdim// OpenMP Type Traits 577288943SdimKEYWORD(__builtin_omp_required_simd_align, KEYALL) 578288943Sdim 579353358SdimKEYWORD(pipe , KEYOPENCLC | KEYOPENCLCXX) 580296417Sdim 581218893Sdim// Borland Extensions. 582212904SdimKEYWORD(__pascal , KEYALL) 583212904Sdim 584203955Srdivacky// Altivec Extension. 585288943SdimKEYWORD(__vector , KEYALTIVEC|KEYZVECTOR) 586203955SrdivackyKEYWORD(__pixel , KEYALTIVEC) 587288943SdimKEYWORD(__bool , KEYALTIVEC|KEYZVECTOR) 588203955Srdivacky 589226633Sdim// ARM NEON extensions. 590226633SdimALIAS("__fp16", half , KEYALL) 591226633Sdim 592226633Sdim// OpenCL Extension. 593276479SdimKEYWORD(half , HALFSUPPORT) 594226633Sdim 595224145Sdim// Objective-C ARC keywords. 596344779SdimKEYWORD(__bridge , KEYOBJC) 597344779SdimKEYWORD(__bridge_transfer , KEYOBJC) 598344779SdimKEYWORD(__bridge_retained , KEYOBJC) 599344779SdimKEYWORD(__bridge_retain , KEYOBJC) 600224145Sdim 601288943Sdim// Objective-C keywords. 602344779SdimKEYWORD(__covariant , KEYOBJC) 603344779SdimKEYWORD(__contravariant , KEYOBJC) 604344779SdimKEYWORD(__kindof , KEYOBJC) 605288943Sdim 606193326Sed// Alternate spelling for various tokens. There are GCC extensions in all 607193326Sed// languages, but should not be disabled in strict conformance mode. 608193326SedALIAS("__alignof__" , __alignof , KEYALL) 609193326SedALIAS("__asm" , asm , KEYALL) 610193326SedALIAS("__asm__" , asm , KEYALL) 611221345SdimALIAS("__attribute__", __attribute, KEYALL) 612193326SedALIAS("__complex" , _Complex , KEYALL) 613193326SedALIAS("__complex__" , _Complex , KEYALL) 614221345SdimALIAS("__const" , const , KEYALL) 615221345SdimALIAS("__const__" , const , KEYALL) 616221345SdimALIAS("__decltype" , decltype , KEYCXX) 617193326SedALIAS("__imag__" , __imag , KEYALL) 618193326SedALIAS("__inline" , inline , KEYALL) 619193326SedALIAS("__inline__" , inline , KEYALL) 620221345SdimALIAS("__nullptr" , nullptr , KEYCXX) 621193326SedALIAS("__real__" , __real , KEYALL) 622193326SedALIAS("__restrict" , restrict , KEYALL) 623193326SedALIAS("__restrict__" , restrict , KEYALL) 624193326SedALIAS("__signed" , signed , KEYALL) 625193326SedALIAS("__signed__" , signed , KEYALL) 626193326SedALIAS("__typeof" , typeof , KEYALL) 627193326SedALIAS("__typeof__" , typeof , KEYALL) 628193326SedALIAS("__volatile" , volatile , KEYALL) 629193326SedALIAS("__volatile__" , volatile , KEYALL) 630193326Sed 631288943Sdim// Type nullability. 632288943SdimKEYWORD(_Nonnull , KEYALL) 633288943SdimKEYWORD(_Nullable , KEYALL) 634288943SdimKEYWORD(_Null_unspecified , KEYALL) 635288943Sdim 636193725Sed// Microsoft extensions which should be disabled in strict conformance mode 637239462SdimKEYWORD(__ptr64 , KEYMS) 638239462SdimKEYWORD(__ptr32 , KEYMS) 639261991SdimKEYWORD(__sptr , KEYMS) 640261991SdimKEYWORD(__uptr , KEYMS) 641239462SdimKEYWORD(__w64 , KEYMS) 642239462SdimKEYWORD(__uuidof , KEYMS | KEYBORLAND) 643239462SdimKEYWORD(__try , KEYMS | KEYBORLAND) 644239462SdimKEYWORD(__finally , KEYMS | KEYBORLAND) 645239462SdimKEYWORD(__leave , KEYMS | KEYBORLAND) 646239462SdimKEYWORD(__int64 , KEYMS) 647239462SdimKEYWORD(__if_exists , KEYMS) 648239462SdimKEYWORD(__if_not_exists , KEYMS) 649239462SdimKEYWORD(__single_inheritance , KEYMS) 650239462SdimKEYWORD(__multiple_inheritance , KEYMS) 651239462SdimKEYWORD(__virtual_inheritance , KEYMS) 652243830SdimKEYWORD(__interface , KEYMS) 653239462SdimALIAS("__int8" , char , KEYMS) 654280031SdimALIAS("_int8" , char , KEYMS) 655239462SdimALIAS("__int16" , short , KEYMS) 656280031SdimALIAS("_int16" , short , KEYMS) 657239462SdimALIAS("__int32" , int , KEYMS) 658280031SdimALIAS("_int32" , int , KEYMS) 659280031SdimALIAS("_int64" , __int64 , KEYMS) 660261991SdimALIAS("__wchar_t" , wchar_t , KEYMS) 661239462SdimALIAS("_asm" , asm , KEYMS) 662239462SdimALIAS("_alignof" , __alignof , KEYMS) 663239462SdimALIAS("__builtin_alignof", __alignof , KEYMS) 664239462SdimALIAS("_cdecl" , __cdecl , KEYMS | KEYBORLAND) 665239462SdimALIAS("_fastcall" , __fastcall , KEYMS | KEYBORLAND) 666239462SdimALIAS("_stdcall" , __stdcall , KEYMS | KEYBORLAND) 667239462SdimALIAS("_thiscall" , __thiscall , KEYMS) 668280031SdimALIAS("_vectorcall" , __vectorcall, KEYMS) 669239462SdimALIAS("_uuidof" , __uuidof , KEYMS | KEYBORLAND) 670239462SdimALIAS("_inline" , inline , KEYMS) 671239462SdimALIAS("_declspec" , __declspec , KEYMS) 672193326Sed 673212904Sdim// Borland Extensions which should be disabled in strict conformance mode. 674212904SdimALIAS("_pascal" , __pascal , KEYBORLAND) 675212904Sdim 676218893Sdim// Clang Extensions. 677261991SdimKEYWORD(__builtin_convertvector , KEYALL) 678218893SdimALIAS("__char16_t" , char16_t , KEYCXX) 679218893SdimALIAS("__char32_t" , char32_t , KEYCXX) 680353358SdimKEYWORD(__builtin_bit_cast , KEYALL) 681309124SdimKEYWORD(__builtin_available , KEYALL) 682309124Sdim 683221345Sdim// Clang-specific keywords enabled only in testing. 684221345SdimTESTING_KEYWORD(__unknown_anytype , KEYALL) 685218893Sdim 686221345Sdim 687193326Sed//===----------------------------------------------------------------------===// 688221345Sdim// Objective-C @-preceded keywords. 689193326Sed//===----------------------------------------------------------------------===// 690193326Sed 691193326Sed// These have meaning after an '@' in Objective-C mode. These define enums in 692193326Sed// the tok::objc_* namespace. 693193326Sed 694344779SdimOBJC_AT_KEYWORD(not_keyword) 695344779SdimOBJC_AT_KEYWORD(class) 696344779SdimOBJC_AT_KEYWORD(compatibility_alias) 697344779SdimOBJC_AT_KEYWORD(defs) 698344779SdimOBJC_AT_KEYWORD(encode) 699344779SdimOBJC_AT_KEYWORD(end) 700344779SdimOBJC_AT_KEYWORD(implementation) 701344779SdimOBJC_AT_KEYWORD(interface) 702344779SdimOBJC_AT_KEYWORD(private) 703344779SdimOBJC_AT_KEYWORD(protected) 704344779SdimOBJC_AT_KEYWORD(protocol) 705344779SdimOBJC_AT_KEYWORD(public) 706344779SdimOBJC_AT_KEYWORD(selector) 707344779SdimOBJC_AT_KEYWORD(throw) 708344779SdimOBJC_AT_KEYWORD(try) 709344779SdimOBJC_AT_KEYWORD(catch) 710344779SdimOBJC_AT_KEYWORD(finally) 711344779SdimOBJC_AT_KEYWORD(synchronized) 712344779SdimOBJC_AT_KEYWORD(autoreleasepool) 713193326Sed 714344779SdimOBJC_AT_KEYWORD(property) 715344779SdimOBJC_AT_KEYWORD(package) 716344779SdimOBJC_AT_KEYWORD(required) 717344779SdimOBJC_AT_KEYWORD(optional) 718344779SdimOBJC_AT_KEYWORD(synthesize) 719344779SdimOBJC_AT_KEYWORD(dynamic) 720344779SdimOBJC_AT_KEYWORD(import) 721344779SdimOBJC_AT_KEYWORD(available) 722193326Sed 723193326Sed// TODO: What to do about context-sensitive keywords like: 724193326Sed// bycopy/byref/in/inout/oneway/out? 725193326Sed 726193326SedANNOTATION(cxxscope) // annotation for a C++ scope spec, e.g. "::foo::bar::" 727193326SedANNOTATION(typename) // annotation for a C typedef name, a C++ (possibly 728193326Sed // qualified) typename, e.g. "foo::MyClass", or 729193326Sed // template-id that names a type ("std::vector<int>") 730193326SedANNOTATION(template_id) // annotation for a C++ template-id that names a 731193326Sed // function template specialization (not a type), 732360784Sdim // e.g., "std::swap<int>", or a type-constraint (which 733360784Sdim // might not have explicit template arguments), 734360784Sdim // e.g. "C", "C<int>". 735360784SdimANNOTATION(non_type) // annotation for a single non-type declaration 736360784SdimANNOTATION(non_type_undeclared) // annotation for an undeclared identifier that 737360784Sdim // was assumed to be an ADL-only function name 738360784SdimANNOTATION(non_type_dependent) // annotation for an assumed non-type member of 739360784Sdim // a dependent base class 740221345SdimANNOTATION(primary_expr) // annotation for a primary expression 741234353SdimANNOTATION(decltype) // annotation for a decltype expression, 742234353Sdim // e.g., "decltype(foo.bar())" 743218893Sdim 744218893Sdim// Annotation for #pragma unused(...) 745218893Sdim// For each argument inside the parentheses the pragma handler will produce 746218893Sdim// one 'pragma_unused' annotation token followed by the argument token. 747360784SdimPRAGMA_ANNOTATION(pragma_unused) 748218893Sdim 749234353Sdim// Annotation for #pragma GCC visibility... 750234353Sdim// The lexer produces these so that they only take effect when the parser 751234353Sdim// handles them. 752360784SdimPRAGMA_ANNOTATION(pragma_vis) 753234353Sdim 754234353Sdim// Annotation for #pragma pack... 755234353Sdim// The lexer produces these so that they only take effect when the parser 756234353Sdim// handles them. 757360784SdimPRAGMA_ANNOTATION(pragma_pack) 758234353Sdim 759239462Sdim// Annotation for #pragma clang __debug parser_crash... 760239462Sdim// The lexer produces these so that they only take effect when the parser 761239462Sdim// handles them. 762360784SdimPRAGMA_ANNOTATION(pragma_parser_crash) 763239462Sdim 764251662Sdim// Annotation for #pragma clang __debug captured... 765251662Sdim// The lexer produces these so that they only take effect when the parser 766251662Sdim// handles them. 767360784SdimPRAGMA_ANNOTATION(pragma_captured) 768251662Sdim 769296417Sdim// Annotation for #pragma clang __debug dump... 770296417Sdim// The lexer produces these so that the parser and semantic analysis can 771296417Sdim// look up and dump the operand. 772360784SdimPRAGMA_ANNOTATION(pragma_dump) 773296417Sdim 774243830Sdim// Annotation for #pragma ms_struct... 775243830Sdim// The lexer produces these so that they only take effect when the parser 776243830Sdim// handles them. 777360784SdimPRAGMA_ANNOTATION(pragma_msstruct) 778243830Sdim 779243830Sdim// Annotation for #pragma align... 780243830Sdim// The lexer produces these so that they only take effect when the parser 781243830Sdim// handles them. 782360784SdimPRAGMA_ANNOTATION(pragma_align) 783243830Sdim 784243830Sdim// Annotation for #pragma weak id 785243830Sdim// The lexer produces these so that they only take effect when the parser 786243830Sdim// handles them. 787360784SdimPRAGMA_ANNOTATION(pragma_weak) 788243830Sdim 789243830Sdim// Annotation for #pragma weak id = id 790243830Sdim// The lexer produces these so that they only take effect when the parser 791243830Sdim// handles them. 792360784SdimPRAGMA_ANNOTATION(pragma_weakalias) 793243830Sdim 794243830Sdim// Annotation for #pragma redefine_extname... 795243830Sdim// The lexer produces these so that they only take effect when the parser 796243830Sdim// handles them. 797360784SdimPRAGMA_ANNOTATION(pragma_redefine_extname) 798243830Sdim 799243830Sdim// Annotation for #pragma STDC FP_CONTRACT... 800243830Sdim// The lexer produces these so that they only take effect when the parser 801243830Sdim// handles them. 802360784SdimPRAGMA_ANNOTATION(pragma_fp_contract) 803243830Sdim 804344779Sdim// Annotation for #pragma STDC FENV_ACCESS 805344779Sdim// The lexer produces these so that they only take effect when the parser 806344779Sdim// handles them. 807360784SdimPRAGMA_ANNOTATION(pragma_fenv_access) 808344779Sdim 809276479Sdim// Annotation for #pragma pointers_to_members... 810276479Sdim// The lexer produces these so that they only take effect when the parser 811276479Sdim// handles them. 812360784SdimPRAGMA_ANNOTATION(pragma_ms_pointers_to_members) 813276479Sdim 814276479Sdim// Annotation for #pragma vtordisp... 815276479Sdim// The lexer produces these so that they only take effect when the parser 816276479Sdim// handles them. 817360784SdimPRAGMA_ANNOTATION(pragma_ms_vtordisp) 818276479Sdim 819276479Sdim// Annotation for all microsoft #pragmas... 820276479Sdim// The lexer produces these so that they only take effect when the parser 821276479Sdim// handles them. 822360784SdimPRAGMA_ANNOTATION(pragma_ms_pragma) 823276479Sdim 824243830Sdim// Annotation for #pragma OPENCL EXTENSION... 825243830Sdim// The lexer produces these so that they only take effect when the parser 826243830Sdim// handles them. 827360784SdimPRAGMA_ANNOTATION(pragma_opencl_extension) 828243830Sdim 829249423Sdim// Annotations for OpenMP pragma directives - #pragma omp ... 830249423Sdim// The lexer produces these so that they only take effect when the parser 831249423Sdim// handles #pragma omp ... directives. 832360784SdimPRAGMA_ANNOTATION(pragma_openmp) 833360784SdimPRAGMA_ANNOTATION(pragma_openmp_end) 834249423Sdim 835276479Sdim// Annotations for loop pragma directives #pragma clang loop ... 836276479Sdim// The lexer produces these so that they only take effect when the parser 837276479Sdim// handles #pragma loop ... directives. 838360784SdimPRAGMA_ANNOTATION(pragma_loop_hint) 839276479Sdim 840360784SdimPRAGMA_ANNOTATION(pragma_fp) 841321369Sdim 842321369Sdim// Annotation for the attribute pragma directives - #pragma clang attribute ... 843360784SdimPRAGMA_ANNOTATION(pragma_attribute) 844321369Sdim 845276479Sdim// Annotations for module import translated from #include etc. 846261991SdimANNOTATION(module_include) 847276479SdimANNOTATION(module_begin) 848276479SdimANNOTATION(module_end) 849261991Sdim 850353358Sdim// Annotation for a header_name token that has been looked up and transformed 851353358Sdim// into the name of a header unit. 852353358SdimANNOTATION(header_unit) 853353358Sdim 854360784Sdim#undef PRAGMA_ANNOTATION 855193326Sed#undef ANNOTATION 856221345Sdim#undef TESTING_KEYWORD 857344779Sdim#undef OBJC_AT_KEYWORD 858193326Sed#undef CXX_KEYWORD_OPERATOR 859193326Sed#undef PPKEYWORD 860193326Sed#undef ALIAS 861276479Sdim#undef TYPE_TRAIT_N 862276479Sdim#undef TYPE_TRAIT_2 863276479Sdim#undef TYPE_TRAIT_1 864276479Sdim#undef TYPE_TRAIT 865288943Sdim#undef CONCEPTS_KEYWORD 866327952Sdim#undef CXX2A_KEYWORD 867288943Sdim#undef CXX11_KEYWORD 868193326Sed#undef KEYWORD 869199990Srdivacky#undef PUNCTUATOR 870193326Sed#undef TOK 871