34 #ifndef LLVM_CLANG_ASTMATCHERS_DYNAMIC_PARSER_H
35 #define LLVM_CLANG_ASTMATCHERS_DYNAMIC_PARSER_H
41 #include "llvm/ADT/ArrayRef.h"
42 #include "llvm/ADT/Optional.h"
43 #include "llvm/ADT/StringRef.h"
46 namespace ast_matchers {
118 virtual std::vector<MatcherCompletion>
140 std::vector<MatcherCompletion>
210 static std::vector<MatcherCompletion>
213 static std::vector<MatcherCompletion>
217 static std::vector<MatcherCompletion>
224 struct ScopedContextEntry;
232 bool parseMatcherExpressionImpl(
const TokenInfo &NameToken,
236 void addCompletion(
const TokenInfo &CompToken,
238 void addExpressionCompletions();
240 std::vector<MatcherCompletion>
243 CodeTokenizer *
const Tokenizer;
248 typedef std::vector<std::pair<MatcherCtor, unsigned> > ContextStackTy;
249 ContextStackTy ContextStack;
250 std::vector<MatcherCompletion> Completions;
257 #endif // LLVM_CLANG_AST_MATCHERS_DYNAMIC_PARSER_H
static std::vector< MatcherCompletion > completeExpression(StringRef Code, unsigned CompletionOffset, Sema *S, const NamedValueMap *NamedValues)
Complete an expression at the given offset.
static bool parseExpression(StringRef Code, Sema *S, const NamedValueMap *NamedValues, VariantValue *Value, Diagnostics *Error)
Parse an expression.
static bool parseExpression(StringRef Code, VariantValue *Value, Diagnostics *Error)
Registry of all known matchers.
virtual llvm::Optional< MatcherCtor > lookupMatcherCtor(StringRef MatcherName)=0
Look up a matcher by name.
Matcher descriptor interface.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
llvm::Optional< MatcherCtor > lookupMatcherCtor(StringRef MatcherName) override
Look up a matcher by name.
Sema - This implements semantic analysis and AST building for C.
static llvm::Optional< DynTypedMatcher > parseMatcherExpression(StringRef MatcherCode, Sema *S, Diagnostics *Error)
Matcher expression parser.
Sema implementation that uses the matcher registry to process the tokens.
static std::vector< MatcherCompletion > completeExpression(StringRef Code, unsigned CompletionOffset, Sema *S)
virtual VariantMatcher actOnMatcherExpression(MatcherCtor Ctor, SourceRange NameRange, StringRef BindID, ArrayRef< ParserValue > Args, Diagnostics *Error)=0
Process a matcher expression.
static std::vector< MatcherCompletion > completeExpression(StringRef Code, unsigned CompletionOffset)
Diagnostics class to manage error messages.
static llvm::Optional< DynTypedMatcher > parseMatcherExpression(StringRef MatcherCode, Diagnostics *Error)
VariantMatcher actOnMatcherExpression(MatcherCtor Ctor, SourceRange NameRange, StringRef BindID, ArrayRef< ParserValue > Args, Diagnostics *Error) override
Process a matcher expression.
Helper class to manage error messages.
std::vector< ArgKind > getAcceptedCompletionTypes(llvm::ArrayRef< std::pair< MatcherCtor, unsigned >> Context) override
Compute the list of completion types for Context.
static llvm::Optional< DynTypedMatcher > parseMatcherExpression(StringRef MatcherCode, Sema *S, const NamedValueMap *NamedValues, Diagnostics *Error)
Parse a matcher expression.
static bool parseExpression(StringRef Code, Sema *S, VariantValue *Value, Diagnostics *Error)
Interface to connect the parser with the registry and more.
virtual std::vector< ArgKind > getAcceptedCompletionTypes(llvm::ArrayRef< std::pair< MatcherCtor, unsigned >> Context)
Compute the list of completion types for Context.
A variant matcher object.
std::vector< MatcherCompletion > getMatcherCompletions(llvm::ArrayRef< ArgKind > AcceptedTypes) override
Compute the list of completions that match any of AcceptedTypes.
virtual std::vector< MatcherCompletion > getMatcherCompletions(llvm::ArrayRef< ArgKind > AcceptedTypes)
Compute the list of completions that match any of AcceptedTypes.
llvm::StringMap< VariantValue > NamedValueMap