clang: lib/Basic/IdentifierTable.cpp File Reference (original) (raw)
#include "[clang/Basic/IdentifierTable.h](IdentifierTable%5F8h%5Fsource.html)"#include "[clang/Basic/CharInfo.h](CharInfo%5F8h%5Fsource.html)"#include "[clang/Basic/DiagnosticLex.h](DiagnosticLex%5F8h%5Fsource.html)"#include "[clang/Basic/LangOptions.h](LangOptions%5F8h%5Fsource.html)"#include "[clang/Basic/OperatorKinds.h](OperatorKinds%5F8h%5Fsource.html)"#include "[clang/Basic/Specifiers.h](Specifiers%5F8h%5Fsource.html)"#include "[clang/Basic/TargetBuiltins.h](TargetBuiltins%5F8h%5Fsource.html)"#include "[clang/Basic/TokenKinds.h](TokenKinds%5F8h%5Fsource.html)"#include "llvm/ADT/DenseMapInfo.h"#include "llvm/ADT/FoldingSet.h"#include "llvm/ADT/StringMap.h"#include "llvm/ADT/StringRef.h"#include "llvm/Support/Allocator.h"#include "llvm/Support/raw_ostream.h"#include <cassert>#include <cstdio>#include <cstring>#include <string>#include "clang/Basic/TokenKinds.def"#include "clang/Basic/OperatorKinds.def"
Go to the source code of this file.
| Macros | |
|---|---|
| #define | KEYWORD(NAME, FLAGS) |
| #define | ALIAS(NAME, TOK, FLAGS) |
| #define | CXX_KEYWORD_OPERATOR(NAME, ALIAS) |
| #define | OBJC_AT_KEYWORD(NAME) |
| #define | NOTABLE_IDENTIFIER(NAME) |
| #define | TESTING_KEYWORD(NAME, FLAGS) |
| #define | KEYWORD(NAME, FLAGS) |
| #define | HASH(LEN, FIRST, THIRD) |
| #define | CASE(LEN, FIRST, THIRD, NAME) |
| #define | OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) |
| #define | KEYWORD(NAME, FLAGS) |
| Functions | |
|---|---|
| static KeywordStatus | getKeywordStatusHelper (const LangOptions &LangOpts, TokenKey Flag) |
| static bool | IsKeywordInCpp (unsigned Flags) |
| static void | MarkIdentifierAsKeywordInCpp (IdentifierTable &Table, StringRef Name) |
| static void | AddKeyword (StringRef Keyword, tok::TokenKind TokenCode, unsigned Flags, const LangOptions &LangOpts, IdentifierTable &Table) |
| AddKeyword - This method is used to associate a token ID with specific identifiers because they are language keywords. | |
| static void | AddCXXOperatorKeyword (StringRef Keyword, tok::TokenKind TokenCode, IdentifierTable &Table) |
| AddCXXOperatorKeyword - Register a C++ operator keyword alternative representations. | |
| static void | AddObjCKeyword (StringRef Name, tok::ObjCKeywordKind ObjCID, IdentifierTable &Table) |
| AddObjCKeyword - Register an Objective-C @keyword like "class" "selector" or "property". | |
| static void | AddNotableIdentifier (StringRef Name, tok::NotableIdentifierKind BTID, IdentifierTable &Table) |
| static KeywordStatus | getTokenKwStatus (const LangOptions &LangOpts, tok::TokenKind K) |
| Checks if the specified token kind represents a keyword in the specified language. | |
| static bool | startsWithWord (StringRef name, StringRef word) |
| Interpreting the given string using the normal CamelCase conventions, determine whether the given string starts with the given "word", which is assumed to end in a lowercase letter. | |
| static SelectorTableImpl & | getSelectorTableImpl (void *P) |
◆ ALIAS
| #define ALIAS | ( | NAME, |
|---|---|---|
| TOK, | ||
| FLAGS ) |
Value:
AddKeyword(StringRef(NAME), tok::kw_ ## TOK, \
FLAGS, LangOpts, *this);
static void AddKeyword(StringRef Keyword, tok::TokenKind TokenCode, unsigned Flags, const LangOptions &LangOpts, IdentifierTable &Table)
AddKeyword - This method is used to associate a token ID with specific identifiers because they are l...
Referenced by sanitizeFilenameAsIdentifier().
◆ CASE
| #define CASE | ( | LEN, |
|---|---|---|
| FIRST, | ||
| THIRD, | ||
| NAME ) |
◆ CXX_KEYWORD_OPERATOR
| #define CXX_KEYWORD_OPERATOR | ( | NAME, |
|---|---|---|
| ALIAS ) |
Value:
if (LangOpts.CXXOperatorNames) \
AddCXXOperatorKeyword(StringRef(#NAME), tok::ALIAS, *this); \
else \
MarkIdentifierAsKeywordInCpp(*this, StringRef(#NAME));
◆ HASH
| #define HASH | ( | LEN, |
|---|---|---|
| FIRST, | ||
| THIRD ) |
◆ KEYWORD [1/3]
| #define KEYWORD | ( | NAME, |
|---|---|---|
| FLAGS ) |
◆ KEYWORD [2/3]
| #define KEYWORD | ( | NAME, |
|---|---|---|
| FLAGS ) |
Value:
KeywordStatus getKeywordStatus(const LangOptions &LangOpts, unsigned Flags)
Translates flags as specified in TokenKinds.def into keyword status in the given language standard.
◆ KEYWORD [3/3]
| #define KEYWORD | ( | NAME, |
|---|---|---|
| FLAGS ) |
◆ NOTABLE_IDENTIFIER
| #define NOTABLE_IDENTIFIER | ( | NAME | ) |
|---|
Value:
AddNotableIdentifier(StringRef(#NAME), tok::NAME, *this);
static void AddNotableIdentifier(StringRef Name, tok::NotableIdentifierKind BTID, IdentifierTable &Table)
◆ OBJC_AT_KEYWORD
| #define OBJC_AT_KEYWORD | ( | NAME | ) |
|---|
Value:
if (LangOpts.ObjC) \
AddObjCKeyword(StringRef(#NAME), tok::objc_##NAME, *this);
◆ OVERLOADED_OPERATOR
| #define OVERLOADED_OPERATOR | ( | Name, |
|---|---|---|
| Spelling, | ||
| Token, | ||
| Unary, | ||
| Binary, | ||
| MemberOnly ) |
Value:
case OO_##Name: return Spelling;
◆ TESTING_KEYWORD
| #define TESTING_KEYWORD | ( | NAME, |
|---|---|---|
| FLAGS ) |
◆ AddCXXOperatorKeyword()
◆ AddKeyword()
◆ AddNotableIdentifier()
◆ AddObjCKeyword()
◆ getKeywordStatusHelper()
Definition at line 86 of file IdentifierTable.cpp.
References clang::BOOLSUPPORT, clang::CHAR8SUPPORT, clang::HALFSUPPORT, clang::LangOptions::isSYCL(), clang::KEYALTIVEC, clang::KEYBORLAND, clang::KEYC23, clang::KEYC99, clang::KEYCOROUTINES, clang::KEYCUDA, clang::KEYCXX, clang::KEYCXX11, clang::KEYCXX20, clang::KEYDEFERTS, clang::KEYFIXEDPOINT, clang::KEYGNU, clang::KEYHLSL, clang::KEYMODULES, clang::KEYMS, clang::KEYMSCOMPAT, clang::KEYNOCXX, clang::KEYNOMS18, clang::KEYNOOPENCL, clang::KEYNOZOS, clang::KEYOBJC, clang::KEYOPENCLC, clang::KEYOPENCLCXX, clang::KEYSYCL, clang::KEYZOS, clang::KEYZVECTOR, clang::KS_Disabled, clang::KS_Enabled, clang::KS_Extension, clang::KS_Future, clang::KS_Unknown, and clang::WCHARSUPPORT.
Referenced by clang::getKeywordStatus().
◆ getSelectorTableImpl()
| SelectorTableImpl & getSelectorTableImpl ( void * P) | static |
|---|
◆ getTokenKwStatus()
◆ IsKeywordInCpp()
◆ MarkIdentifierAsKeywordInCpp()
| void MarkIdentifierAsKeywordInCpp ( IdentifierTable & Table, StringRef Name ) | static |
|---|
◆ startsWithWord()
| bool startsWithWord ( StringRef name, StringRef word ) | static |
|---|