xref: /llvm-project/flang/lib/Parser/debug-parser.h (revision b98ad941a40c96c841bceb171725c925500fce6c)
164ab3302SCarolineConcatto //===-- lib/Parser/debug-parser.h -------------------------------*- C++ -*-===//
264ab3302SCarolineConcatto //
364ab3302SCarolineConcatto // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
464ab3302SCarolineConcatto // See https://llvm.org/LICENSE.txt for license information.
564ab3302SCarolineConcatto // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
664ab3302SCarolineConcatto //
764ab3302SCarolineConcatto //===----------------------------------------------------------------------===//
864ab3302SCarolineConcatto 
964ab3302SCarolineConcatto #ifndef FORTRAN_PARSER_DEBUG_PARSER_H_
1064ab3302SCarolineConcatto #define FORTRAN_PARSER_DEBUG_PARSER_H_
1164ab3302SCarolineConcatto 
1264ab3302SCarolineConcatto // Implements the parser with syntax "(YOUR MESSAGE HERE)"_debug for use
1364ab3302SCarolineConcatto // in temporary modifications to the grammar intended for tracing the
1464ab3302SCarolineConcatto // flow of the parsers.  Not to be used in production.
1564ab3302SCarolineConcatto 
1664ab3302SCarolineConcatto #include "basic-parsers.h"
1764ab3302SCarolineConcatto #include "flang/Parser/parse-state.h"
1864ab3302SCarolineConcatto #include <cstddef>
1964ab3302SCarolineConcatto #include <optional>
2064ab3302SCarolineConcatto 
2164ab3302SCarolineConcatto namespace Fortran::parser {
2264ab3302SCarolineConcatto 
2364ab3302SCarolineConcatto class DebugParser {
2464ab3302SCarolineConcatto public:
2564ab3302SCarolineConcatto   using resultType = Success;
2664ab3302SCarolineConcatto   constexpr DebugParser(const DebugParser &) = default;
DebugParser(const char * str,std::size_t n)2764ab3302SCarolineConcatto   constexpr DebugParser(const char *str, std::size_t n)
2864ab3302SCarolineConcatto       : str_{str}, length_{n} {}
2964ab3302SCarolineConcatto   std::optional<Success> Parse(ParseState &) const;
3064ab3302SCarolineConcatto 
3164ab3302SCarolineConcatto private:
3264ab3302SCarolineConcatto   const char *const str_;
3364ab3302SCarolineConcatto   const std::size_t length_;
3464ab3302SCarolineConcatto };
3564ab3302SCarolineConcatto 
3664ab3302SCarolineConcatto constexpr DebugParser operator""_debug(const char str[], std::size_t n) {
3764ab3302SCarolineConcatto   return DebugParser{str, n};
3864ab3302SCarolineConcatto }
39*1f879005STim Keith } // namespace Fortran::parser
4064ab3302SCarolineConcatto #endif // FORTRAN_PARSER_DEBUG_PARSER_H_
41