CommentBriefParser.h revision 59c91c8d0000af8f8a1022ee0f0eec46c397b347
18f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//===--- CommentBriefParser.h - Dumb comment parser -------------*- C++ -*-===//
28f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//
38f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//                     The LLVM Compiler Infrastructure
48f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//
58f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org// This file is distributed under the University of Illinois Open Source
68f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org// License. See LICENSE.TXT for details.
7ddf94cf108ae430877f009bd67b9070341426947commit-bot@chromium.org//
88f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//===----------------------------------------------------------------------===//
91f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com//
108f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//  This file defines a very simple Doxygen comment parser.
118f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//
128f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org//===----------------------------------------------------------------------===//
138f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
148f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
158f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org#ifndef LLVM_CLANG_AST_BRIEF_COMMENT_PARSER_H
168f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org#define LLVM_CLANG_AST_BRIEF_COMMENT_PARSER_H
178f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
188f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org#include "clang/AST/CommentLexer.h"
198f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org
208f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.orgnamespace clang {
211f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.comnamespace comments {
228f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
231f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com/// A very simple comment parser that extracts "a brief description".
248f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org///
257f1af501f206da48a7ff791af53432c9c1c89d08skia.committer@gmail.com/// Due to a variety of comment styles, it considers the following as "a brief
263e2ea2565d12e572a977fa04b4b1996c8eb3fefccommit-bot@chromium.org/// description", in order of priority:
278f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org/// \li a \\brief or \\short command,
281f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com/// \li the first paragraph,
298f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org/// \li a \\result or \\return or \\returns paragraph.
308f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.orgclass BriefParser {
318f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org  Lexer &L;
321f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com
331f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com  const CommandTraits &Traits;
341f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com
358f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org  /// Current lookahead token.
368f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org  Token Tok;
378f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
3874ba2f62dce1998bd6555291ab0a5330c276301dcommit-bot@chromium.org  SourceLocation ConsumeToken() {
398f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org    SourceLocation Loc = Tok.getLocation();
408f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org    L.lex(Tok);
418f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org    return Loc;
4274ba2f62dce1998bd6555291ab0a5330c276301dcommit-bot@chromium.org  }
438f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
448f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.orgpublic:
454b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org  BriefParser(Lexer &L, const CommandTraits &Traits);
468f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
4774ba2f62dce1998bd6555291ab0a5330c276301dcommit-bot@chromium.org  /// Return the best "brief description" we can find.
488f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org  std::string Parse();
498f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org};
508f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
518f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org} // end namespace comments
528f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org} // end namespace clang
5374ba2f62dce1998bd6555291ab0a5330c276301dcommit-bot@chromium.org
548f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org#endif
558f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org
568f838259ab65e44562902679fa88cb00575b99cecommit-bot@chromium.org