annotate clang-tools-extra/clang-query/QueryParser.h @ 259:011663b4a808

remove duplicate setjmp in return continuation
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 12 Oct 2023 15:52:37 +0900
parents 2e18cbf3894f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===--- QueryParser.h - clang-query ----------------------------*- C++ -*-===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_QUERY_QUERY_PARSER_H
anatofuz
parents:
diff changeset
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_QUERY_QUERY_PARSER_H
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 #include "Query.h"
anatofuz
parents:
diff changeset
13 #include "QuerySession.h"
anatofuz
parents:
diff changeset
14 #include "llvm/LineEditor/LineEditor.h"
anatofuz
parents:
diff changeset
15 #include <cstddef>
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 namespace clang {
anatofuz
parents:
diff changeset
18 namespace query {
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 class QuerySession;
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 class QueryParser {
anatofuz
parents:
diff changeset
23 public:
anatofuz
parents:
diff changeset
24 /// Parse \a Line as a query.
anatofuz
parents:
diff changeset
25 ///
anatofuz
parents:
diff changeset
26 /// \return A QueryRef representing the query, which may be an InvalidQuery.
anatofuz
parents:
diff changeset
27 static QueryRef parse(StringRef Line, const QuerySession &QS);
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 /// Compute a list of completions for \a Line assuming a cursor at
anatofuz
parents:
diff changeset
30 /// \param Pos characters past the start of \a Line, ordered from most
anatofuz
parents:
diff changeset
31 /// likely to least likely.
anatofuz
parents:
diff changeset
32 ///
anatofuz
parents:
diff changeset
33 /// \return A vector of completions for \a Line.
anatofuz
parents:
diff changeset
34 static std::vector<llvm::LineEditor::Completion>
anatofuz
parents:
diff changeset
35 complete(StringRef Line, size_t Pos, const QuerySession &QS);
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 private:
anatofuz
parents:
diff changeset
38 QueryParser(StringRef Line, const QuerySession &QS)
anatofuz
parents:
diff changeset
39 : Line(Line), CompletionPos(nullptr), QS(QS) {}
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 StringRef lexWord();
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 template <typename T> struct LexOrCompleteWord;
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 QueryRef parseSetBool(bool QuerySession::*Var);
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
46 QueryRef parseSetTraversalKind(TraversalKind QuerySession::*Var);
150
anatofuz
parents:
diff changeset
47 template <typename QueryType> QueryRef parseSetOutputKind();
anatofuz
parents:
diff changeset
48 QueryRef completeMatcherExpression();
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 QueryRef endQuery(QueryRef Q);
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 /// Parse [\p Begin,\p End).
anatofuz
parents:
diff changeset
53 ///
anatofuz
parents:
diff changeset
54 /// \return A reference to the parsed query object, which may be an
anatofuz
parents:
diff changeset
55 /// \c InvalidQuery if a parse error occurs.
anatofuz
parents:
diff changeset
56 QueryRef doParse();
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 StringRef Line;
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 const char *CompletionPos;
anatofuz
parents:
diff changeset
61 std::vector<llvm::LineEditor::Completion> Completions;
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 const QuerySession &QS;
anatofuz
parents:
diff changeset
64 };
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 } // namespace query
anatofuz
parents:
diff changeset
67 } // namespace clang
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_QUERY_QUERY_PARSER_H