📄 doc.l
字号:
KBD [kK][bB][dD]LI [lL][iI]META [mM][eE][tT][aA]MULTICOL [mM][uU][lL][tT][iI][cC][oO][lL]NAME [nN][aA][mM][eE]OL [oO][lL]P [pP]PRE [pP][rR][eE]SMALL [sS][mM][aA][lL][lL]STRONG [sS][tT][rR][oO][nN][gG]SUB [sS][uU][bB]SUP [sS][uU][pP]SRC [sS][rR][cC]TABLE [tT][aA][bB][lL][eE]TITLE [tT][iI][tT][lL][eE]TD [tT][dD]TR [tT][rR]TT [tT][tT]UL [uU][lL]VAR [vV][aA][rR]BLOCKQUOTE [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE]DOCPARAM ("#")?([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")OPNEW {B}+"new"({B}*"[]")?OPDEL {B}+"delete"({B}*"[]")?OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")"OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"OPCAST {B}+[^(\r\n.,]+OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})%option noyywrap%x Text%x DocScan%x DocParam%x DocException%x DocHtmlScan%x DocLatexScan%x DocEmphasis%x DocBold%x DocCode%x DocCodeBlock%x DocInternal%x DocLink%x DocJavaLink%x DocLinkText%x DocJavaLinkText%x DocSkipWord%x DocInclude%x DocDontInclude%x DocHtmlLink%x DocHtmlAnchor%x DocHtmlHref%x DocSkiplineKey%x DocSkipKey%x DocLineKey%x DocUntilKey%x DocKeyEnd%x DocPar%x DocRefName%x DocVerbatim%x DocVerbInc%x DocHtmlInc%x DocIndexWord%x DocRefArg%x DocRefArgStart%x DocRefItem%x DocRefItemName%x DocInternalRef%x DocInternalRefText%x DocImage%x DocHtmlImageName%x DocHtmlImageOpt%x DocLatexImageName%x DocLatexImageOpt%x DocRtfImageName%x DocRtfImageOpt%x DocDotFile%x DocDotFileOpt%%<*>\x0d<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */ QCString text=yytext; int dashPos = text.findRev('-'); //printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1)); bool isEnumerated = text.at(dashPos+1)=='#'; addListItemMarker(yytext,dashPos+1,isEnumerated); }<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */ QCString text=yytext; int dashPos = text.findRev('-'); //printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1)); bool isEnumerated = text.at(dashPos+1)=='#'; addListItemMarker(yytext+1,dashPos,isEnumerated); }<DocScan,Text>"©" { outDoc->writeCopyright(); }<DocScan,Text>"<" { outDoc->docify("<"); }<DocScan,Text>">" { outDoc->docify(">"); }<DocScan,Text>"&" { outDoc->docify("&"); }<DocScan,Text>"'" { outDoc->docify("'"); }<DocScan,Text>""" { outDoc->docify("\""); }<DocScan,Text>"&"[AEIOUYaeiouy]"uml;" { outDoc->writeUmlaut(yytext[1]); }<DocScan,Text>"&"[AEIOUYaeiouy]"acute;" { outDoc->writeAcute(yytext[1]); }<DocScan,Text>"&"[AEIOUaeiou]"grave;" { outDoc->writeGrave(yytext[1]); }<DocScan,Text>"&"[AEIOUaeiou]"circ;" { outDoc->writeCirc(yytext[1]); }<DocScan,Text>"&"[ANOano]"tilde;" { outDoc->writeTilde(yytext[1]); }<DocScan,Text>"ß" { outDoc->writeSharpS(); }<DocScan,Text>"&"[cC]"cedil;" { outDoc->writeCCedil(yytext[1]); }<DocScan,Text>"&"[aA]"ring;" { outDoc->writeRing(yytext[1]); }<DocScan,Text>" " { outDoc->writeNonBreakableSpace(1); }<DocScan,DocHtmlScan,DocLatexScan>"$("[a-z_A-Z]+")" { QCString envvar=&yytext[2]; envvar=envvar.left(envvar.length()-1); outDoc->docify(getenv(envvar)); }<DocScan>{CMD}"htmlonly"/[^a-z_A-Z0-9] { outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); BEGIN(DocHtmlScan); }<DocHtmlScan>{CMD}"endhtmlonly"/[^a-z_A-Z0-9] { outDoc->popGeneratorState(); BEGIN(DocScan); }<DocScan>{CMD}"latexonly"/[^a-z_A-Z0-9] { outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); BEGIN(DocLatexScan); }<DocLatexScan>{CMD}"endlatexonly"/[^a-z_A-Z0-9] { outDoc->popGeneratorState(); BEGIN(DocScan); }<DocHtmlScan,DocLatexScan>"//"|"/*"|"*/" { outDoc->writeString(yytext); }<DocHtmlScan,DocLatexScan>.|\n { char c[2]; c[0]=*yytext;c[1]='\0'; outDoc->writeString(c); }<DocScan>"\\postheader"/{BN}<DocScan>"\\functionindex"/{BN} { /* writeMemberList(*outDoc,FALSE);*/ }<DocScan>"\\classhierarchy"/{BN} { /* writeClassHierarchy(*outDoc); */ }<DocScan>"\\annotatedclasslist"/{BN} { /* writeAnnotatedClassList(*outDoc); */ }<DocScan>"\\headerfilelist"/{BN} { /* writeHeaderFileList(*outDoc); */ }<DocScan>"\\header"/{BN} { BEGIN( DocSkipWord ); }<DocScan>"\\define"/{BN} { BEGIN( DocSkipWord ); }<DocScan>{CMD}"verbinclude"/{BN} { BEGIN( DocVerbInc ); }<DocVerbInc>{FILE} { verbIncludeFile(*outDoc,stripQuotes(yytext)); BEGIN( DocScan ); }<DocScan>{CMD}"htmlinclude"/{BN} { BEGIN( DocHtmlInc ); }<DocHtmlInc>{FILE} { outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); rawIncludeFile(*outDoc,stripQuotes(yytext)); outDoc->popGeneratorState(); BEGIN( DocScan ); }<DocScan>{CMD}"verbatim"/[^a-z_A-Z0-9] { outDoc->startCodeFragment(); insideVerbatim=TRUE; BEGIN(DocVerbatim); }<DocVerbatim>{CMD}"endverbatim"/[^a-z_A-Z0-9] { outDoc->endCodeFragment(); insideVerbatim=FALSE; BEGIN(DocScan); }<DocVerbatim>[^\n\\\@]*"\n" { //printf("docifying: %s\n",yytext); outDoc->codify(yytext); }<DocVerbatim>"\n"|"//"|"/*"|"*/" { outDoc->codify(yytext); }<DocVerbatim>. { //printf("char %c\n",*yytext); char c[2];c[0]=*yytext;c[1]='\0'; outDoc->codify(c); }<DocScan>{CMD}"internal"/{BN} { if (!Config_getBool("INTERNAL_DOCS")) { outDoc->newParagraph(); scanString(theTranslator->trForInternalUseOnly()+"\n"); //outDoc->writeString("For internal use only.\n"); BEGIN( DocInternal ); } }<DocScan>"\\reimp"/{BN} { outDoc->newParagraph(); scanString(theTranslator->trReimplementedForInternalReasons()+"\n"); }<DocScan>{CMD}"link"/{BN} { BEGIN( DocLink ); }<DocScan>"{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); }<DocSkipWord>[a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); }<DocLink>[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+ { // TODO: support operators as well! linkRef = stripKnownExtensions(yytext); linkText = ""; BEGIN( DocLinkText ); }<DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ }<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well! linkRef = yytext; linkText = ""; BEGIN( DocJavaLinkText ); }<DocJavaLinkText>"}" { //printf("Trying to link `%s'\n",linkRef.data()); if (!generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace())) { warn(yyFileName,yyLineNr,"Warning: link to unknown entity `%s' in the documentation of this entity!",linkRef.data()); } BEGIN( DocScan ); }<DocJavaLinkText,DocLinkText>. { linkText += *yytext; }<DocJavaLinkText,DocLinkText>"\n" { linkText += " "; }<DocLink,DocLinkText>{CMD}"endlink" { // <- needed for things like \endlink. //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", // className.data(),linkRef.data(),linkText.data()); if (!generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace())) { warn(yyFileName,yyLineNr,"Warning: link to unknown entity `%s' in the documentation of this entity!",linkRef.data()); } BEGIN( DocScan ); }<DocScan>{CMD}"endlink"/[^a-z_A-Z0-9] { warn(yyFileName,yyLineNr, "Warning: \\endlink without \\link " "in documentation of this entity." ); }<DocScan>{CMD}"addindex"{B}+ { BEGIN(DocIndexWord); }<DocScan>"\\form#"[0-9]+ { Formula *formula=Doxygen::formulaNameDict[yytext]; if (formula) { QCString formName; formName.sprintf("form_%d",formula->getId()); outDoc->writeFormula(formName,formula->getFormulaText()); } }<DocIndexWord>[^\n]+ { //printf("Adding %s to index\n",yytext); outDoc->addIndexItem(yytext,0); BEGIN(DocScan); }<DocScan>{CMD}("arg"|"li")/{BN} { if (insideArgumentList) { outDoc->writeListItem(); } else { outDoc->startItemList(); outDoc->writeListItem(); insideArgumentList=TRUE; } }<DocScan>(({B}*"\n"){2,}{B}*)?{CMD}"par"{B}* { QCString t=yytext; if (/*t.contains('\n')>1 &&*/ insideItemList) { forceEndItemList(); } BEGIN(DocPar); }<DocPar>[^\n]*{BSEP} { QCString title=QCString(yytext).stripWhiteSpace(); bool b = inBlock(); if (!title.isEmpty()) { endArgumentList(); if (b) endBlock(); inParBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Par); outDoc->docify(title); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->newParagraph(); } BEGIN(DocScan); }<DocScan>{CMD}"warning"{BSEP} { endArgumentList(); if (!inWarningBlock) { if (inBlock()) endBlock(); inWarningBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Warning); scanString(theTranslator->trWarning()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"remark"[s]?{BSEP} { endArgumentList(); if (!inRemarkBlock) { if (inBlock()) endBlock(); inRemarkBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Remark); scanString(theTranslator->trRemarks()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"attention"{BSEP} { endArgumentList(); if (!inAttentionBlock) { if (inBlock()) endBlock(); inAttentionBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Attention); scanString(theTranslator->trAttention()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"note"[s]?{BSEP} { endArgumentList(); if (!inNoteBlock) { if (inBlock()) endBlock(); inNoteBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Note); scanString(theTranslator->trNote()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"pre"{BSEP} { endArgumentList(); if (!inPreBlock) { if (inBlock()) endBlock(); inPreBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Pre); scanString(theTranslator->trPrecondition()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"post"{BSEP} { endArgumentList(); if (!inPostBlock) { if (inBlock()) endBlock(); inPostBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Post); scanString(theTranslator->trPostcondition()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"invariant"{BSEP} { endArgumentList(); if (!inInvarBlock) { if (inBlock()) endBlock(); inInvarBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Invar); scanString(theTranslator->trInvariant()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"version"{BSEP} { endArgumentList(); if (!inVersionBlock) { if (inBlock()) endBlock(); inVersionBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Version); scanString(theTranslator->trVersion()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"since"{BSEP} { endArgumentList(); if (!inSinceBlock) { if (inBlock()) endBlock(); inSinceBlock=TRUE; currentListIndent.push("D"); outDoc->startDescList(BaseOutputDocInterface::Since); scanString(theTranslator->trSince()+": "); outDoc->endDescTitle(); outDoc->writeDescItem(); } else { outDoc->writeDescItem(); } }<DocScan>{CMD}"date"{BSEP} { endArgumentList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -