clang 20.0.0git
|
Provides the Expression parsing implementation. More...
#include "clang/AST/ASTContext.h"
#include "clang/AST/Availability.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/LocInfoType.h"
#include "clang/Basic/PrettyStackTrace.h"
#include "clang/Lex/LiteralSupport.h"
#include "clang/Parse/Parser.h"
#include "clang/Parse/RAIIObjectsForParser.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/EnterExpressionEvaluationContext.h"
#include "clang/Sema/ParsedTemplate.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/SemaCUDA.h"
#include "clang/Sema/SemaCodeCompletion.h"
#include "clang/Sema/SemaObjC.h"
#include "clang/Sema/SemaOpenACC.h"
#include "clang/Sema/SemaOpenMP.h"
#include "clang/Sema/SemaSYCL.h"
#include "clang/Sema/TypoCorrection.h"
#include "llvm/ADT/SmallVector.h"
#include <optional>
#include "clang/Basic/TransformTypeTraits.def"
#include "clang/Basic/OpenCLImageTypes.def"
#include "clang/Basic/HLSLIntangibleTypes.def"
#include "clang/Basic/TokenKinds.def"
Go to the source code of this file.
Macros | |
#define | RTT_JOIN(X, Y) X##Y |
#define | REVERTIBLE_TYPE_TRAIT(Name) RevertibleTypeTraits[PP.getIdentifierInfo(#Name)] = RTT_JOIN(tok::kw_, Name) |
#define | TRANSFORM_TYPE_TRAIT_DEF(_, Trait) REVERTIBLE_TYPE_TRAIT(RTT_JOIN(__, Trait)); |
#define | GENERIC_IMAGE_TYPE(ImgType, Id) case tok::kw_##ImgType##_t: |
#define | HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case tok::kw_##Name: |
#define | TYPE_TRAIT(N, Spelling, K) case tok::kw_##Spelling: |
#define | TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait: |
Functions | |
static bool | CheckAvailabilitySpecList (Parser &P, ArrayRef< AvailabilitySpec > AvailSpecs) |
Validate availability spec list, emitting diagnostics if necessary. | |
Provides the Expression parsing implementation.
Expressions in C99 basically consist of a bunch of binary operators with unary operators and other random stuff at the leaves.
In the C99 grammar, these unary operators bind tightest and are represented as the 'cast-expression' production. Everything else is either a binary operator (e.g. '/') or a ternary operator ("?:"). The unary leaves are handled by ParseCastExpression, the higher level pieces are handled by ParseBinaryExpression.
Definition in file ParseExpr.cpp.
#define GENERIC_IMAGE_TYPE | ( | ImgType, | |
Id | |||
) | case tok::kw_##ImgType##_t: |
#define HLSL_INTANGIBLE_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) | case tok::kw_##Name: |
#define REVERTIBLE_TYPE_TRAIT | ( | Name | ) | RevertibleTypeTraits[PP.getIdentifierInfo(#Name)] = RTT_JOIN(tok::kw_, Name) |
#define TRANSFORM_TYPE_TRAIT_DEF | ( | _, | |
Trait | |||
) | REVERTIBLE_TYPE_TRAIT(RTT_JOIN(__, Trait)); |
#define TRANSFORM_TYPE_TRAIT_DEF | ( | _, | |
Trait | |||
) | case tok::kw___##Trait: |
#define TYPE_TRAIT | ( | N, | |
Spelling, | |||
K | |||
) | case tok::kw_##Spelling: |
|
static |
Validate availability spec list, emitting diagnostics if necessary.
Returns true if invalid.
Definition at line 3901 of file ParseExpr.cpp.
References clang::FixItHint::CreateInsertion(), and P.