clang API Documentation
#include "clang/Lex/Preprocessor.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/CodeCompletionHandler.h"
#include "clang/Lex/LexDiagnostic.h"
#include "clang/Lex/LiteralSupport.h"
#include "clang/Lex/MacroInfo.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SaveAndRestore.h"
Go to the source code of this file.
Classes | |
struct | DefinedTracker |
Functions | |
static bool | EvaluateDirectiveSubExpr (PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, Preprocessor &PP) |
static bool | EvaluateDefined (PPValue &Result, Token &PeekTok, DefinedTracker &DT, bool ValueLive, Preprocessor &PP) |
EvaluateDefined - Process a 'defined(sym)' expression. | |
static bool | EvaluateValue (PPValue &Result, Token &PeekTok, DefinedTracker &DT, bool ValueLive, Preprocessor &PP) |
static unsigned | getPrecedence (tok::TokenKind Kind) |
static bool EvaluateDefined | ( | PPValue & | Result, |
Token & | PeekTok, | ||
DefinedTracker & | DT, | ||
bool | ValueLive, | ||
Preprocessor & | PP | ||
) | [static] |
EvaluateDefined - Process a 'defined(sym)' expression.
Definition at line 82 of file PPExpressions.cpp.
References clang::Preprocessor::CheckMacroName(), clang::CodeCompletionHandler::CodeCompleteMacroName(), DefinedTracker::DefinedMacro, clang::Preprocessor::Diag(), clang::Preprocessor::getCodeCompletionHandler(), clang::Token::getIdentifierInfo(), clang::Token::getLocation(), clang::Preprocessor::getMacroDirective(), clang::MacroDirective::getMacroInfo(), clang::Preprocessor::getPPCallbacks(), clang::IdentifierInfo::hasMacroDefinition(), clang::Token::is(), clang::Token::isNot(), clang::SourceLocation::isValid(), clang::Preprocessor::LexNonComment(), clang::Preprocessor::LexUnexpandedNonComment(), clang::Preprocessor::markMacroAsUsed(), clang::MU_Other, clang::Preprocessor::setCodeCompletionReached(), DefinedTracker::State, and DefinedTracker::TheMacro.
Referenced by EvaluateValue().
static bool EvaluateDirectiveSubExpr | ( | PPValue & | LHS, |
unsigned | MinPrec, | ||
Token & | PeekTok, | ||
bool | ValueLive, | ||
Preprocessor & | PP | ||
) | [static] |
EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.
If ValueLive is false, then this value is being evaluated in a context where the result is not used. As such, avoid diagnostics that relate to evaluation, such as division by zero warnings.
Definition at line 460 of file PPExpressions.cpp.
References clang::Preprocessor::Diag(), EvaluateValue(), clang::Token::getKind(), clang::Preprocessor::getLangOpts(), clang::Token::getLocation(), getPrecedence(), clang::Token::isNot(), and clang::Preprocessor::LexNonComment().
Referenced by EvaluateValue().
static bool EvaluateValue | ( | PPValue & | Result, |
Token & | PeekTok, | ||
DefinedTracker & | DT, | ||
bool | ValueLive, | ||
Preprocessor & | PP | ||
) | [static] |
EvaluateValue - Evaluate the token PeekTok (and any others needed) and return the computed value in Result. Return true if there was an error parsing. This function also returns information about the form of the expression in DT. See above for information on what DT means.
If ValueLive is false, then this value is being evaluated in a context where the result is not used. As such, avoid diagnostics that relate to evaluation.
Definition at line 169 of file PPExpressions.cpp.
References clang::CodeCompletionHandler::CodeCompletePreprocessorExpression(), DefinedTracker::DefinedMacro, clang::Preprocessor::Diag(), EvaluateDefined(), EvaluateDirectiveSubExpr(), clang::TargetInfo::getChar16Width(), clang::TargetInfo::getChar32Width(), clang::TargetInfo::getCharWidth(), clang::Preprocessor::getCodeCompletionHandler(), clang::Token::getIdentifierInfo(), clang::TargetInfo::getIntWidth(), clang::Token::getKind(), clang::Preprocessor::getLangOpts(), clang::Token::getLocation(), clang::Preprocessor::getSpelling(), clang::Preprocessor::getTargetInfo(), clang::TargetInfo::getWCharWidth(), clang::Token::hasUDSuffix(), clang::Token::is(), clang::Token::isNot(), clang::Preprocessor::LexNonComment(), DefinedTracker::NotDefinedMacro, clang::Preprocessor::setCodeCompletionReached(), DefinedTracker::State, and Unknown.
Referenced by EvaluateDirectiveSubExpr().
static unsigned getPrecedence | ( | tok::TokenKind | Kind | ) | [static] |
getPrecedence - Return the precedence of the specified binary operator token. This returns: ~0 - Invalid token. 14 -> 3 - various operators. 0 - 'eod' or ')'
Definition at line 424 of file PPExpressions.cpp.
Referenced by EvaluateDirectiveSubExpr().