brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · e9c30ec Raw
60 lines · c
1//===--- QueryParser.h - ----------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef MLIR_TOOLS_MLIRQUERY_QUERYPARSER_H10#define MLIR_TOOLS_MLIRQUERY_QUERYPARSER_H11 12#include "Matcher/Parser.h"13#include "mlir/Query/Query.h"14#include "mlir/Query/QuerySession.h"15 16#include "llvm/ADT/StringRef.h"17#include "llvm/LineEditor/LineEditor.h"18 19namespace mlir::query {20 21class QuerySession;22 23class QueryParser {24public:25  // Parse line as a query and return a QueryRef representing the query, which26  // may be an InvalidQuery.27  static QueryRef parse(llvm::StringRef line, const QuerySession &qs);28 29  static std::vector<llvm::LineEditor::Completion>30  complete(llvm::StringRef line, size_t pos, const QuerySession &qs);31 32private:33  QueryParser(llvm::StringRef line, const QuerySession &qs)34      : line(line), completionPos(nullptr), qs(qs) {}35 36  llvm::StringRef lexWord();37 38  template <typename T>39  struct LexOrCompleteWord;40 41  QueryRef completeMatcherExpression();42 43  QueryRef endQuery(QueryRef queryRef);44 45  // Parse [begin, end) and returns a reference to the parsed query object,46  // which may be an InvalidQuery if a parse error occurs.47  QueryRef doParse();48 49  llvm::StringRef line;50 51  const char *completionPos;52  std::vector<llvm::LineEditor::Completion> completions;53 54  const QuerySession &qs;55};56 57} // namespace mlir::query58 59#endif // MLIR_TOOLS_MLIRQUERY_QUERYPARSER_H60