30 #ifndef MLIR_TOOLS_MLIRQUERY_MATCHER_PARSER_H 
   31 #define MLIR_TOOLS_MLIRQUERY_MATCHER_PARSER_H 
   35 #include "llvm/ADT/ArrayRef.h" 
   36 #include "llvm/ADT/StringMap.h" 
   37 #include "llvm/ADT/StringRef.h" 
   75     virtual std::optional<MatcherCtor>
 
   83     virtual std::vector<MatcherCompletion>
 
   92         : matcherRegistry(matcherRegistry) {}
 
   95     std::optional<MatcherCtor>
 
  100                                           StringRef functionName,
 
  105         llvm::ArrayRef<std::pair<MatcherCtor, unsigned>> context) 
override;
 
  107     std::vector<MatcherCompletion>
 
  118   static std::optional<DynMatcher>
 
  122   static std::optional<DynMatcher>
 
  141   static std::vector<MatcherCompletion>
 
  145   static std::vector<MatcherCompletion>
 
  153   struct ScopedContextEntry;
 
  159   bool parseChainedExpression(std::string &argument);
 
  163   bool parseMatcherArgs(std::vector<ParserValue> &args, 
MatcherCtor ctor,
 
  164                         const TokenInfo &nameToken, TokenInfo &endToken);
 
  166   bool parseMatcherExpressionImpl(
const TokenInfo &nameToken,
 
  167                                   const TokenInfo &openToken,
 
  168                                   std::optional<MatcherCtor> ctor,
 
  173   void addCompletion(
const TokenInfo &compToken,
 
  175   void addExpressionCompletions();
 
  177   std::vector<MatcherCompletion>
 
  180   CodeTokenizer *
const tokenizer;
 
  181   std::unique_ptr<RegistrySema> sema;
 
  185   using ContextStackTy = std::vector<std::pair<MatcherCtor, unsigned>>;
 
  187   ContextStackTy contextStack;
 
  188   std::vector<MatcherCompletion> completions;
 
RegistrySema(const Registry &matcherRegistry)
std::optional< MatcherCtor > lookupMatcherCtor(llvm::StringRef matcherName) override
std::vector< MatcherCompletion > getMatcherCompletions(llvm::ArrayRef< ArgKind > acceptedTypes) override
std::vector< ArgKind > getAcceptedCompletionTypes(llvm::ArrayRef< std::pair< MatcherCtor, unsigned >> context) override
VariantMatcher actOnMatcherExpression(MatcherCtor Ctor, SourceRange NameRange, StringRef functionName, ArrayRef< ParserValue > Args, Diagnostics *Error) override
virtual std::vector< MatcherCompletion > getMatcherCompletions(llvm::ArrayRef< ArgKind > acceptedTypes)
virtual std::optional< MatcherCtor > lookupMatcherCtor(llvm::StringRef matcherName)=0
virtual std::vector< ArgKind > getAcceptedCompletionTypes(llvm::ArrayRef< std::pair< MatcherCtor, unsigned >> Context)
virtual VariantMatcher actOnMatcherExpression(MatcherCtor ctor, SourceRange nameRange, llvm::StringRef functionName, llvm::ArrayRef< ParserValue > args, Diagnostics *error)=0
static bool parseExpression(llvm::StringRef &code, const Registry &matcherRegistry, const NamedValueMap *namedValues, VariantValue *value, Diagnostics *error)
static std::vector< MatcherCompletion > completeExpression(llvm::StringRef &code, unsigned completionOffset, const Registry &matcherRegistry)
llvm::StringMap< VariantValue > NamedValueMap
static bool parseExpression(llvm::StringRef &code, const Registry &matcherRegistry, VariantValue *value, Diagnostics *error)
static std::optional< DynMatcher > parseMatcherExpression(llvm::StringRef &matcherCode, const Registry &matcherRegistry, Diagnostics *error)
static std::vector< MatcherCompletion > completeExpression(llvm::StringRef &code, unsigned completionOffset, const Registry &matcherRegistry, const NamedValueMap *namedValues)
static std::optional< DynMatcher > parseMatcherExpression(llvm::StringRef &matcherCode, const Registry &matcherRegistry, const NamedValueMap *namedValues, Diagnostics *error)