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