#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/Specifiers.h"
#include "clang/Basic/TokenKinds.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/ErrorHandling.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.
|
| clang |
| Dataflow Directional Tag Classes.
|
|
|
#define | KEYWORD(NAME, FLAGS) |
|
#define | ALIAS(NAME, TOK, FLAGS) |
|
#define | CXX_KEYWORD_OPERATOR(NAME, ALIAS) |
|
#define | OBJC_AT_KEYWORD(NAME) |
|
#define | TESTING_KEYWORD(NAME, FLAGS) |
|
#define | KEYWORD(NAME, FLAGS) case tok::kw_##NAME: return getKeywordStatus(LangOpts, FLAGS); |
|
#define | HASH(LEN, FIRST, THIRD) (LEN << 5) + (((FIRST-'a') + (THIRD-'a')) & 31) |
|
#define | CASE(LEN, FIRST, THIRD, NAME) |
|
#define | OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) case OO_##Name: return Spelling; |
|
|
static KeywordStatus | getKeywordStatus (const LangOptions &LangOpts, unsigned Flags) |
| Translates flags as specified in TokenKinds.def into keyword status in the given language standard. More...
|
|
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. More...
|
|
static void | AddCXXOperatorKeyword (StringRef Keyword, tok::TokenKind TokenCode, IdentifierTable &Table) |
| AddCXXOperatorKeyword - Register a C++ operator keyword alternative representations. More...
|
|
static void | AddObjCKeyword (StringRef Name, tok::ObjCKeywordKind ObjCID, IdentifierTable &Table) |
| AddObjCKeyword - Register an Objective-C @keyword like "class" "selector" or "property". More...
|
|
static KeywordStatus | getTokenKwStatus (const LangOptions &LangOpts, tok::TokenKind K) |
| Checks if the specified token kind represents a keyword in the specified language. More...
|
|
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. More...
|
|
static SelectorTableImpl & | getSelectorTableImpl (void *P) |
|
◆ ALIAS
#define ALIAS |
( |
|
NAME, |
|
|
|
TOK, |
|
|
|
FLAGS |
|
) |
| |
Value: 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...
◆ CASE
#define CASE |
( |
|
LEN, |
|
|
|
FIRST, |
|
|
|
THIRD, |
|
|
|
NAME |
|
) |
| |
Value:case HASH(LEN, FIRST, THIRD): \
return memcmp(Name, #NAME, LEN) ? tok::pp_not_keyword : tok::pp_ ## NAME
return(__x >> __y)|(__x<<(32 - __y))
#define HASH(LEN, FIRST, THIRD)
◆ CXX_KEYWORD_OPERATOR
#define CXX_KEYWORD_OPERATOR |
( |
|
NAME, |
|
|
|
ALIAS |
|
) |
| |
Value:if (LangOpts.CXXOperatorNames) \
AddCXXOperatorKeyword(StringRef(#NAME),
tok::ALIAS, *
this);
#define ALIAS(NAME, TOK, FLAGS)
◆ HASH
#define HASH |
( |
|
LEN, |
|
|
|
FIRST, |
|
|
|
THIRD |
|
) |
| (LEN << 5) + (((FIRST-'a') + (THIRD-'a')) & 31) |
◆ KEYWORD [1/2]
#define KEYWORD |
( |
|
NAME, |
|
|
|
FLAGS |
|
) |
| |
Value: 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...
◆ KEYWORD [2/2]
◆ 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 |
|
) |
| case OO_##Name: return Spelling; |
◆ TESTING_KEYWORD
#define TESTING_KEYWORD |
( |
|
NAME, |
|
|
|
FLAGS |
|
) |
| |
◆ anonymous enum
◆ KeywordStatus
◆ AddCXXOperatorKeyword()
◆ AddKeyword()
◆ AddObjCKeyword()
AddObjCKeyword - Register an Objective-C @keyword like "class" "selector" or "property".
Definition at line 189 of file IdentifierTable.cpp.
◆ getKeywordStatus()
Translates flags as specified in TokenKinds.def into keyword status in the given language standard.
Definition at line 120 of file IdentifierTable.cpp.
Referenced by AddKeyword().
◆ getSelectorTableImpl()
static SelectorTableImpl& getSelectorTableImpl |
( |
void * |
P | ) |
|
|
static |
◆ getTokenKwStatus()
◆ startsWithWord()
static bool startsWithWord |
( |
StringRef |
name, |
|
|
StringRef |
word |
|
) |
| |
|
static |
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.
Definition at line 501 of file IdentifierTable.cpp.
References clang::Selector::getIdentifierInfoForSlot(), clang::IdentifierInfo::getName(), clang::isLowercase(), clang::Selector::isUnarySelector(), clang::transformer::name(), clang::OMF_alloc, clang::OMF_autorelease, clang::OMF_copy, clang::OMF_dealloc, clang::OMF_finalize, clang::OMF_init, clang::OMF_initialize, clang::OMF_mutableCopy, clang::OMF_new, clang::OMF_None, clang::OMF_performSelector, clang::OMF_release, clang::OMF_retain, clang::OMF_retainCount, and clang::OMF_self.
Referenced by clang::Selector::getInstTypeMethodFamily().