1239313Sdim//===--- CommentBriefParser.h - Dumb comment parser -------------*- C++ -*-===//
2239313Sdim//
3239313Sdim//                     The LLVM Compiler Infrastructure
4239313Sdim//
5239313Sdim// This file is distributed under the University of Illinois Open Source
6239313Sdim// License. See LICENSE.TXT for details.
7239313Sdim//
8239313Sdim//===----------------------------------------------------------------------===//
9239313Sdim//
10239313Sdim//  This file defines a very simple Doxygen comment parser.
11239313Sdim//
12239313Sdim//===----------------------------------------------------------------------===//
13239313Sdim
14239313Sdim
15239313Sdim#ifndef LLVM_CLANG_AST_BRIEF_COMMENT_PARSER_H
16239313Sdim#define LLVM_CLANG_AST_BRIEF_COMMENT_PARSER_H
17239313Sdim
18239313Sdim#include "clang/AST/CommentLexer.h"
19239313Sdim
20239313Sdimnamespace clang {
21239313Sdimnamespace comments {
22239313Sdim
23239313Sdim/// A very simple comment parser that extracts "a brief description".
24239313Sdim///
25239313Sdim/// Due to a variety of comment styles, it considers the following as "a brief
26239313Sdim/// description", in order of priority:
27239313Sdim/// \li a \\brief or \\short command,
28239313Sdim/// \li the first paragraph,
29239313Sdim/// \li a \\result or \\return or \\returns paragraph.
30239313Sdimclass BriefParser {
31239313Sdim  Lexer &L;
32239313Sdim
33239313Sdim  const CommandTraits &Traits;
34239313Sdim
35239313Sdim  /// Current lookahead token.
36239313Sdim  Token Tok;
37239313Sdim
38239313Sdim  SourceLocation ConsumeToken() {
39239313Sdim    SourceLocation Loc = Tok.getLocation();
40239313Sdim    L.lex(Tok);
41239313Sdim    return Loc;
42239313Sdim  }
43239313Sdim
44239313Sdimpublic:
45239313Sdim  BriefParser(Lexer &L, const CommandTraits &Traits);
46239313Sdim
47243830Sdim  /// Return the best "brief description" we can find.
48239313Sdim  std::string Parse();
49239313Sdim};
50239313Sdim
51239313Sdim} // end namespace comments
52239313Sdim} // end namespace clang
53239313Sdim
54239313Sdim#endif
55239313Sdim
56