xref: /llvm-project/flang/lib/Parser/debug-parser.h (revision 64ab3302d5a130c00b66a6957b2e7f0c9b9c537d)
1*64ab3302SCarolineConcatto //===-- lib/Parser/debug-parser.h -------------------------------*- C++ -*-===//
2*64ab3302SCarolineConcatto //
3*64ab3302SCarolineConcatto // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*64ab3302SCarolineConcatto // See https://llvm.org/LICENSE.txt for license information.
5*64ab3302SCarolineConcatto // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*64ab3302SCarolineConcatto //
7*64ab3302SCarolineConcatto //===----------------------------------------------------------------------===//
8*64ab3302SCarolineConcatto 
9*64ab3302SCarolineConcatto #ifndef FORTRAN_PARSER_DEBUG_PARSER_H_
10*64ab3302SCarolineConcatto #define FORTRAN_PARSER_DEBUG_PARSER_H_
11*64ab3302SCarolineConcatto 
12*64ab3302SCarolineConcatto // Implements the parser with syntax "(YOUR MESSAGE HERE)"_debug for use
13*64ab3302SCarolineConcatto // in temporary modifications to the grammar intended for tracing the
14*64ab3302SCarolineConcatto // flow of the parsers.  Not to be used in production.
15*64ab3302SCarolineConcatto 
16*64ab3302SCarolineConcatto #include "basic-parsers.h"
17*64ab3302SCarolineConcatto #include "flang/Parser/parse-state.h"
18*64ab3302SCarolineConcatto #include <cstddef>
19*64ab3302SCarolineConcatto #include <optional>
20*64ab3302SCarolineConcatto 
21*64ab3302SCarolineConcatto namespace Fortran::parser {
22*64ab3302SCarolineConcatto 
23*64ab3302SCarolineConcatto class DebugParser {
24*64ab3302SCarolineConcatto public:
25*64ab3302SCarolineConcatto   using resultType = Success;
26*64ab3302SCarolineConcatto   constexpr DebugParser(const DebugParser &) = default;
27*64ab3302SCarolineConcatto   constexpr DebugParser(const char *str, std::size_t n)
28*64ab3302SCarolineConcatto     : str_{str}, length_{n} {}
29*64ab3302SCarolineConcatto   std::optional<Success> Parse(ParseState &) const;
30*64ab3302SCarolineConcatto 
31*64ab3302SCarolineConcatto private:
32*64ab3302SCarolineConcatto   const char *const str_;
33*64ab3302SCarolineConcatto   const std::size_t length_;
34*64ab3302SCarolineConcatto };
35*64ab3302SCarolineConcatto 
36*64ab3302SCarolineConcatto constexpr DebugParser operator""_debug(const char str[], std::size_t n) {
37*64ab3302SCarolineConcatto   return DebugParser{str, n};
38*64ab3302SCarolineConcatto }
39*64ab3302SCarolineConcatto }
40*64ab3302SCarolineConcatto #endif  // FORTRAN_PARSER_DEBUG_PARSER_H_
41