1 //===--- CommentBriefParser.h - Dumb comment parser -------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 //  This file defines a very simple Doxygen comment parser.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 
14 #ifndef LLVM_CLANG_AST_COMMENTBRIEFPARSER_H
15 #define LLVM_CLANG_AST_COMMENTBRIEFPARSER_H
16 
17 #include "clang/AST/CommentLexer.h"
18 
19 namespace clang {
20 namespace comments {
21 
22 /// A very simple comment parser that extracts "a brief description".
23 ///
24 /// Due to a variety of comment styles, it considers the following as "a brief
25 /// description", in order of priority:
26 /// \li a \or \\short command,
27 /// \li the first paragraph,
28 /// \li a \\result or \\return or \\returns paragraph.
29 class BriefParser {
30   Lexer &L;
31 
32   const CommandTraits &Traits;
33 
34   /// Current lookahead token.
35   Token Tok;
36 
37   SourceLocation ConsumeToken() {
38     SourceLocation Loc = Tok.getLocation();
39     L.lex(Tok);
40     return Loc;
41   }
42 
43 public:
44   BriefParser(Lexer &L, const CommandTraits &Traits);
45 
46   /// Return the best "brief description" we can find.
47   std::string Parse();
48 };
49 
50 } // end namespace comments
51 } // end namespace clang
52 
53 #endif
54 
55