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