| //===-- lib/Parser/debug-parser.h -------------------------------*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef FORTRAN_PARSER_DEBUG_PARSER_H_ | |
| #define FORTRAN_PARSER_DEBUG_PARSER_H_ | |
| // Implements the parser with syntax "(YOUR MESSAGE HERE)"_debug for use | |
| // in temporary modifications to the grammar intended for tracing the | |
| // flow of the parsers. Not to be used in production. | |
| #include "basic-parsers.h" | |
| #include "flang/Parser/parse-state.h" | |
| #include <cstddef> | |
| #include <optional> | |
| namespace Fortran::parser { | |
| class DebugParser { | |
| public: | |
| using resultType = Success; | |
| constexpr DebugParser(const DebugParser &) = default; | |
| constexpr DebugParser(const char *str, std::size_t n) | |
| : str_{str}, length_{n} {} | |
| std::optional<Success> Parse(ParseState &) const; | |
| private: | |
| const char *const str_; | |
| const std::size_t length_; | |
| }; | |
| constexpr DebugParser operator""_debug(const char str[], std::size_t n) { | |
| return DebugParser{str, n}; | |
| } | |
| } // namespace Fortran::parser | |
| #endif // FORTRAN_PARSER_DEBUG_PARSER_H_ |