class Parser::Sema

Declaration

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

Description

Interface to connect the parser with the registry and more. The parser uses the Sema instance passed into parseMatcherExpression() to handle all matcher tokens. The simplest processor implementation would simply call into the registry to create the matchers. However, a more complex processor might decide to intercept the matcher creation and do some extra work. For example, it could apply some transformation to the matcher by adding some id() nodes, or could detect specific matcher nodes for more efficient lookup.

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

Method Overview

  • public virtual clang::ast_matchers::dynamic::VariantMatcher actOnMatcherExpression(clang::ast_matchers::dynamic::MatcherCtor Ctor, clang::ast_matchers::dynamic::SourceRange NameRange, llvm::StringRef BindID, ArrayRef<clang::ast_matchers::dynamic::ParserValue> Args, clang::ast_matchers::dynamic::Diagnostics * Error)
  • public virtual internal::MatcherDescriptorPtr buildMatcherCtor(clang::ast_matchers::dynamic::MatcherCtor, clang::ast_matchers::dynamic::SourceRange NameRange, ArrayRef<clang::ast_matchers::dynamic::ParserValue> Args, clang::ast_matchers::dynamic::Diagnostics * Error) const
  • public virtual std::vector<ArgKind> getAcceptedCompletionTypes(llvm::ArrayRef<std::pair<MatcherCtor, unsigned int>> Context)
  • public virtual std::vector<MatcherCompletion> getMatcherCompletions(llvm::ArrayRef<ArgKind> AcceptedTypes)
  • public virtual bool isBuilderMatcher(clang::ast_matchers::dynamic::MatcherCtor) const
  • public virtual llvm::Optional<MatcherCtor> lookupMatcherCtor(llvm::StringRef MatcherName)
  • public virtual clang::ASTNodeKind nodeMatcherType(clang::ast_matchers::dynamic::MatcherCtor) const
  • public virtual ~Sema()

Methods

virtual clang::ast_matchers::dynamic::
    VariantMatcher
    actOnMatcherExpression(
        clang::ast_matchers::dynamic::MatcherCtor
            Ctor,
        clang::ast_matchers::dynamic::SourceRange
            NameRange,
        llvm::StringRef BindID,
        ArrayRef<clang::ast_matchers::dynamic::
                     ParserValue> Args,
        clang::ast_matchers::dynamic::Diagnostics*
            Error)

Description

Process a matcher expression. All the arguments passed here have already been processed.

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

Parameters

clang::ast_matchers::dynamic::MatcherCtor Ctor
A matcher constructor looked up by lookupMatcherCtor.
clang::ast_matchers::dynamic::SourceRange NameRange
The location of the name in the matcher source. Useful for error reporting.
llvm::StringRef BindID
The ID to use to bind the matcher, or a null \c StringRef if no ID is specified.
ArrayRef< clang::ast_matchers::dynamic::ParserValue> Args
The argument list for the matcher.
clang::ast_matchers::dynamic::Diagnostics* Error

Returns

The matcher objects constructed by the processor, or a null matcher if an error occurred. In that case, \c Error will contain a description of the error.

virtual internal::MatcherDescriptorPtr
buildMatcherCtor(
    clang::ast_matchers::dynamic::MatcherCtor,
    clang::ast_matchers::dynamic::SourceRange
        NameRange,
    ArrayRef<
        clang::ast_matchers::dynamic::ParserValue>
        Args,
    clang::ast_matchers::dynamic::Diagnostics*
        Error) const

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

Parameters

clang::ast_matchers::dynamic::MatcherCtor
clang::ast_matchers::dynamic::SourceRange NameRange
ArrayRef< clang::ast_matchers::dynamic::ParserValue> Args
clang::ast_matchers::dynamic::Diagnostics* Error

virtual std::vector<ArgKind>
getAcceptedCompletionTypes(
    llvm::ArrayRef<
        std::pair<MatcherCtor, unsigned int>>
        Context)

Description

Compute the list of completion types for \p Context. Each element of \p Context represents a matcher invocation, going from outermost to innermost. Elements are pairs consisting of a reference to the matcher constructor and the index of the next element in the argument list of that matcher (or for the last element, the index of the completion point in the argument list). An empty list requests completion for the root matcher.

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

Parameters

llvm::ArrayRef< std::pair<MatcherCtor, unsigned int>> Context

virtual std::vector<MatcherCompletion>
getMatcherCompletions(
    llvm::ArrayRef<ArgKind> AcceptedTypes)

Description

Compute the list of completions that match any of\p AcceptedTypes.

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

Parameters

llvm::ArrayRef<ArgKind> AcceptedTypes
All types accepted for this completion.

Returns

All completions for the specified types. Completions should be valid when used in \c lookupMatcherCtor(). The matcher constructed from the return of \c lookupMatcherCtor() should be convertible to some type in \p AcceptedTypes.

virtual bool isBuilderMatcher(
    clang::ast_matchers::dynamic::MatcherCtor)
    const

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

Parameters

clang::ast_matchers::dynamic::MatcherCtor

virtual llvm::Optional<MatcherCtor>
lookupMatcherCtor(llvm::StringRef MatcherName)

Description

Look up a matcher by name.

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

Parameters

llvm::StringRef MatcherName
The matcher name found by the parser.

Returns

The matcher constructor, or Optional <MatcherCtor >() if not found.

virtual clang::ASTNodeKind nodeMatcherType(
    clang::ast_matchers::dynamic::MatcherCtor)
    const

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

Parameters

clang::ast_matchers::dynamic::MatcherCtor

virtual ~Sema()

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