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