xref: /llvm-project/clang/include/clang/Tooling/Transformer/Parsing.h (revision b4682816bc6e35fb4e207227f73b88b2603d4363)
19ca50e88SYitzhak Mandelbaum //===--- Parsing.h - Parsing library for Transformer ------------*- C++ -*-===//
29ca50e88SYitzhak Mandelbaum //
39ca50e88SYitzhak Mandelbaum // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
49ca50e88SYitzhak Mandelbaum // See https://llvm.org/LICENSE.txt for license information.
59ca50e88SYitzhak Mandelbaum // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
69ca50e88SYitzhak Mandelbaum //
79ca50e88SYitzhak Mandelbaum //===----------------------------------------------------------------------===//
89ca50e88SYitzhak Mandelbaum ///
99ca50e88SYitzhak Mandelbaum ///  \file
109ca50e88SYitzhak Mandelbaum ///  Defines parsing functions for Transformer types.
119ca50e88SYitzhak Mandelbaum ///  FIXME: Currently, only supports `RangeSelectors` but parsers for other
129ca50e88SYitzhak Mandelbaum ///  Transformer types are under development.
139ca50e88SYitzhak Mandelbaum ///
149ca50e88SYitzhak Mandelbaum //===----------------------------------------------------------------------===//
159ca50e88SYitzhak Mandelbaum 
16*b4682816SKazu Hirata #ifndef LLVM_CLANG_TOOLING_TRANSFORMER_PARSING_H
17*b4682816SKazu Hirata #define LLVM_CLANG_TOOLING_TRANSFORMER_PARSING_H
189ca50e88SYitzhak Mandelbaum 
199ca50e88SYitzhak Mandelbaum #include "clang/ASTMatchers/ASTMatchFinder.h"
209ca50e88SYitzhak Mandelbaum #include "clang/Basic/SourceLocation.h"
219ca50e88SYitzhak Mandelbaum #include "clang/Tooling/Transformer/RangeSelector.h"
229ca50e88SYitzhak Mandelbaum #include "llvm/Support/Error.h"
239ca50e88SYitzhak Mandelbaum #include <functional>
249ca50e88SYitzhak Mandelbaum 
259ca50e88SYitzhak Mandelbaum namespace clang {
269ca50e88SYitzhak Mandelbaum namespace transformer {
279ca50e88SYitzhak Mandelbaum 
289ca50e88SYitzhak Mandelbaum /// Parses a string representation of a \c RangeSelector. The grammar of these
299ca50e88SYitzhak Mandelbaum /// strings is closely based on the (sub)grammar of \c RangeSelectors as they'd
309ca50e88SYitzhak Mandelbaum /// appear in C++ code. However, this language constrains the set of permissible
319ca50e88SYitzhak Mandelbaum /// strings (for node ids) -- it does not support escapes in the
329ca50e88SYitzhak Mandelbaum /// string. Additionally, the \c charRange combinator is not supported, because
339ca50e88SYitzhak Mandelbaum /// there is no representation of values of type \c CharSourceRange in this
349ca50e88SYitzhak Mandelbaum /// (little) language.
359ca50e88SYitzhak Mandelbaum llvm::Expected<RangeSelector> parseRangeSelector(llvm::StringRef Input);
369ca50e88SYitzhak Mandelbaum 
379ca50e88SYitzhak Mandelbaum } // namespace transformer
389ca50e88SYitzhak Mandelbaum } // namespace clang
399ca50e88SYitzhak Mandelbaum 
40*b4682816SKazu Hirata #endif // LLVM_CLANG_TOOLING_TRANSFORMER_PARSING_H
41