class Parser

Declaration

class Parser { /* full declaration omitted */ };

Description

Matcher expression parser.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:55

Member Variables

private clang::ast_matchers::dynamic::Parser:: CodeTokenizer* const Tokenizer
private clang::ast_matchers::dynamic::Parser::Sema* const S
private const clang::ast_matchers::dynamic::Parser:: NamedValueMap* const NamedValues
private clang::ast_matchers::dynamic::Diagnostics* const Error
private clang::ast_matchers::dynamic::Parser:: ContextStackTy ContextStack
private std::vector<MatcherCompletion> Completions

Method Overview

  • private Parser(clang::ast_matchers::dynamic::Parser::CodeTokenizer * Tokenizer, clang::ast_matchers::dynamic::Parser::Sema * S, const clang::ast_matchers::dynamic::Parser::NamedValueMap * NamedValues, clang::ast_matchers::dynamic::Diagnostics * Error)
  • private void addCompletion(const clang::ast_matchers::dynamic::Parser::TokenInfo & CompToken, const clang::ast_matchers::dynamic::MatcherCompletion & Completion)
  • private void addExpressionCompletions()
  • public static std::vector<MatcherCompletion> completeExpression(llvm::StringRef & Code, unsigned int CompletionOffset)
  • public static std::vector<MatcherCompletion> completeExpression(llvm::StringRef & Code, unsigned int CompletionOffset, clang::ast_matchers::dynamic::Parser::Sema * S)
  • public static std::vector<MatcherCompletion> completeExpression(llvm::StringRef & Code, unsigned int CompletionOffset, clang::ast_matchers::dynamic::Parser::Sema * S, const clang::ast_matchers::dynamic::Parser::NamedValueMap * NamedValues)
  • private std::vector<MatcherCompletion> getNamedValueCompletions(ArrayRef<clang::ast_matchers::dynamic::ArgKind> AcceptedTypes)
  • private bool parseBindID(std::string & BindID)
  • public static bool parseExpression(llvm::StringRef & Code, clang::ast_matchers::dynamic::VariantValue * Value, clang::ast_matchers::dynamic::Diagnostics * Error)
  • public static bool parseExpression(llvm::StringRef & Code, clang::ast_matchers::dynamic::Parser::Sema * S, clang::ast_matchers::dynamic::VariantValue * Value, clang::ast_matchers::dynamic::Diagnostics * Error)
  • public static bool parseExpression(llvm::StringRef & Code, clang::ast_matchers::dynamic::Parser::Sema * S, const clang::ast_matchers::dynamic::Parser::NamedValueMap * NamedValues, clang::ast_matchers::dynamic::VariantValue * Value, clang::ast_matchers::dynamic::Diagnostics * Error)
  • private bool parseExpressionImpl(clang::ast_matchers::dynamic::VariantValue * Value)
  • private bool parseIdentifierPrefixImpl(clang::ast_matchers::dynamic::VariantValue * Value)
  • private bool parseMatcherBuilder(clang::ast_matchers::dynamic::MatcherCtor Ctor, const clang::ast_matchers::dynamic::Parser::TokenInfo & NameToken, const clang::ast_matchers::dynamic::Parser::TokenInfo & OpenToken, clang::ast_matchers::dynamic::VariantValue * Value)
  • public static llvm::Optional<DynTypedMatcher> parseMatcherExpression(llvm::StringRef & MatcherCode, clang::ast_matchers::dynamic::Diagnostics * Error)
  • public static llvm::Optional<DynTypedMatcher> parseMatcherExpression(llvm::StringRef & MatcherCode, clang::ast_matchers::dynamic::Parser::Sema * S, clang::ast_matchers::dynamic::Diagnostics * Error)
  • public static llvm::Optional<DynTypedMatcher> parseMatcherExpression(llvm::StringRef & MatcherCode, clang::ast_matchers::dynamic::Parser::Sema * S, const clang::ast_matchers::dynamic::Parser::NamedValueMap * NamedValues, clang::ast_matchers::dynamic::Diagnostics * Error)
  • private bool parseMatcherExpressionImpl(const clang::ast_matchers::dynamic::Parser::TokenInfo & NameToken, const clang::ast_matchers::dynamic::Parser::TokenInfo & OpenToken, llvm::Optional<MatcherCtor> Ctor, clang::ast_matchers::dynamic::VariantValue * Value)

Methods

Parser(
    clang::ast_matchers::dynamic::Parser::
        CodeTokenizer* Tokenizer,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    const clang::ast_matchers::dynamic::Parser::
        NamedValueMap* NamedValues,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:247

Parameters

clang::ast_matchers::dynamic::Parser:: CodeTokenizer* Tokenizer
clang::ast_matchers::dynamic::Parser::Sema* S
const clang::ast_matchers::dynamic::Parser:: NamedValueMap* NamedValues
clang::ast_matchers::dynamic::Diagnostics* Error

void addCompletion(
    const clang::ast_matchers::dynamic::Parser::
        TokenInfo& CompToken,
    const clang::ast_matchers::dynamic::
        MatcherCompletion& Completion)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:261

Parameters

const clang::ast_matchers::dynamic::Parser:: TokenInfo& CompToken
const clang::ast_matchers::dynamic:: MatcherCompletion& Completion

void addExpressionCompletions()

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:263

static std::vector<MatcherCompletion>
completeExpression(llvm::StringRef& Code,
                   unsigned int CompletionOffset)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:238

Parameters

llvm::StringRef& Code
unsigned int CompletionOffset

static std::vector<MatcherCompletion>
completeExpression(
    llvm::StringRef& Code,
    unsigned int CompletionOffset,
    clang::ast_matchers::dynamic::Parser::Sema* S)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:234

Parameters

llvm::StringRef& Code
unsigned int CompletionOffset
clang::ast_matchers::dynamic::Parser::Sema* S

static std::vector<MatcherCompletion>
completeExpression(
    llvm::StringRef& Code,
    unsigned int CompletionOffset,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    const clang::ast_matchers::dynamic::Parser::
        NamedValueMap* NamedValues)

Description

Complete an expression at the given offset.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:231

Parameters

llvm::StringRef& Code
unsigned int CompletionOffset
clang::ast_matchers::dynamic::Parser::Sema* S
The Sema instance that will help the parser construct the matchers. If null, it uses the default registry.
const clang::ast_matchers::dynamic::Parser:: NamedValueMap* NamedValues
A map of precomputed named values. This provides the dictionary for the <NamedValue > rule of the grammar. If null, it is ignored.

Returns

The list of completions, which may be empty if there are no available completions or if an error occurred.

std::vector<MatcherCompletion>
getNamedValueCompletions(
    ArrayRef<
        clang::ast_matchers::dynamic::ArgKind>
        AcceptedTypes)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:266

Parameters

ArrayRef<clang::ast_matchers::dynamic::ArgKind> AcceptedTypes

bool parseBindID(std::string& BindID)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:251

Parameters

std::string& BindID

static bool parseExpression(
    llvm::StringRef& Code,
    clang::ast_matchers::dynamic::VariantValue*
        Value,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:214

Parameters

llvm::StringRef& Code
clang::ast_matchers::dynamic::VariantValue* Value
clang::ast_matchers::dynamic::Diagnostics* Error

static bool parseExpression(
    llvm::StringRef& Code,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    clang::ast_matchers::dynamic::VariantValue*
        Value,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:210

Parameters

llvm::StringRef& Code
clang::ast_matchers::dynamic::Parser::Sema* S
clang::ast_matchers::dynamic::VariantValue* Value
clang::ast_matchers::dynamic::Diagnostics* Error

static bool parseExpression(
    llvm::StringRef& Code,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    const clang::ast_matchers::dynamic::Parser::
        NamedValueMap* NamedValues,
    clang::ast_matchers::dynamic::VariantValue*
        Value,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Description

Parse an expression. Parses any expression supported by this parser. In general, the\c parseMatcherExpression function is a better approach to get a matcher object.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:207

Parameters

llvm::StringRef& Code
clang::ast_matchers::dynamic::Parser::Sema* S
The Sema instance that will help the parser construct the matchers. If null, it uses the default registry.
const clang::ast_matchers::dynamic::Parser:: NamedValueMap* NamedValues
A map of precomputed named values. This provides the dictionary for the <NamedValue > rule of the grammar. If null, it is ignored.
clang::ast_matchers::dynamic::VariantValue* Value
clang::ast_matchers::dynamic::Diagnostics* Error

bool parseExpressionImpl(
    clang::ast_matchers::dynamic::VariantValue*
        Value)

Description

Parse an <Expression >

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:252

Parameters

clang::ast_matchers::dynamic::VariantValue* Value

bool parseIdentifierPrefixImpl(
    clang::ast_matchers::dynamic::VariantValue*
        Value)

Description

Parse expressions that start with an identifier. This function can parse named values and matchers. In case of failure it will try to determine the user's intent to give an appropriate error message.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:259

Parameters

clang::ast_matchers::dynamic::VariantValue* Value

bool parseMatcherBuilder(
    clang::ast_matchers::dynamic::MatcherCtor
        Ctor,
    const clang::ast_matchers::dynamic::Parser::
        TokenInfo& NameToken,
    const clang::ast_matchers::dynamic::Parser::
        TokenInfo& OpenToken,
    clang::ast_matchers::dynamic::VariantValue*
        Value)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:253

Parameters

clang::ast_matchers::dynamic::MatcherCtor Ctor
const clang::ast_matchers::dynamic::Parser:: TokenInfo& NameToken
const clang::ast_matchers::dynamic::Parser:: TokenInfo& OpenToken
clang::ast_matchers::dynamic::VariantValue* Value

static llvm::Optional<DynTypedMatcher>
parseMatcherExpression(
    llvm::StringRef& MatcherCode,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:191

Parameters

llvm::StringRef& MatcherCode
clang::ast_matchers::dynamic::Diagnostics* Error

static llvm::Optional<DynTypedMatcher>
parseMatcherExpression(
    llvm::StringRef& MatcherCode,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:187

Parameters

llvm::StringRef& MatcherCode
clang::ast_matchers::dynamic::Parser::Sema* S
clang::ast_matchers::dynamic::Diagnostics* Error

static llvm::Optional<DynTypedMatcher>
parseMatcherExpression(
    llvm::StringRef& MatcherCode,
    clang::ast_matchers::dynamic::Parser::Sema* S,
    const clang::ast_matchers::dynamic::Parser::
        NamedValueMap* NamedValues,
    clang::ast_matchers::dynamic::Diagnostics*
        Error)

Description

Parse a matcher expression.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:184

Parameters

llvm::StringRef& MatcherCode
The matcher expression to parse.
clang::ast_matchers::dynamic::Parser::Sema* S
The Sema instance that will help the parser construct the matchers. If null, it uses the default registry.
const clang::ast_matchers::dynamic::Parser:: NamedValueMap* NamedValues
A map of precomputed named values. This provides the dictionary for the <NamedValue > rule of the grammar. If null, it is ignored.
clang::ast_matchers::dynamic::Diagnostics* Error

Returns

The matcher object constructed by the processor, or an empty Optional if an error occurred. In that case, \c Error will contain a description of the error. The caller takes ownership of the DynTypedMatcher object returned.

bool parseMatcherExpressionImpl(
    const clang::ast_matchers::dynamic::Parser::
        TokenInfo& NameToken,
    const clang::ast_matchers::dynamic::Parser::
        TokenInfo& OpenToken,
    llvm::Optional<MatcherCtor> Ctor,
    clang::ast_matchers::dynamic::VariantValue*
        Value)

Description

Parse and validate a matcher expression.

Declared at: clang/include/clang/ASTMatchers/Dynamic/Parser.h:255

Parameters

const clang::ast_matchers::dynamic::Parser:: TokenInfo& NameToken
const clang::ast_matchers::dynamic::Parser:: TokenInfo& OpenToken
llvm::Optional<MatcherCtor> Ctor
clang::ast_matchers::dynamic::VariantValue* Value

Returns

\c true on success, in which case \c Value has the matcher parsed. If the input is malformed, or some argument has an error, it returns \c false.