@@ -186,6 +186,7 @@ struct scannerYY_state
186186 int docBlockContext = 0;
187187 TextStream docBlock;
188188 QCString docBlockName;
189+ bool isCodeBlock = false;
189190 bool docBlockInBody = false;
190191 bool docBlockAutoBrief = false;
191192 char docBlockTerm = '\0';
@@ -246,7 +247,7 @@ static void addKnRArgInfo(yyscan_t yyscanner,const QCString &type,const QCString
246247static int yyread(yyscan_t yyscanner,char *buf,int max_size);
247248static void setJavaProtection(yyscan_t yyscanner);
248249static void storeClangId(yyscan_t yyscanner,const char *id);
249- static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0);
250+ static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0,bool codeBlock=false );
250251static bool endVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0);
251252
252253
@@ -7148,22 +7149,27 @@ NONLopt [^\n]*
71487149 startVerbatimBlock(yyscanner,"uml");
71497150 BEGIN(DocCopyBlock);
71507151 }
7151- <DocBlock>{CMD}("verbatim"|"iliteral"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"rtfonly"|"docbookonly"|"dot"|"msc"|"code" )/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
7152+ <DocBlock>{CMD}("verbatim"|"iliteral"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"rtfonly"|"docbookonly"|"dot"|"msc")/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
71527153 yyextra->docBlock << yytext;
71537154 startVerbatimBlock(yyscanner,&yytext[1]);
71547155 BEGIN(DocCopyBlock);
71557156 }
7157+ <DocBlock>{CMD}("code")/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
7158+ yyextra->docBlock << yytext;
7159+ startVerbatimBlock(yyscanner,&yytext[1],0,true);
7160+ BEGIN(DocCopyBlock);
7161+ }
71567162<DocBlock>"\\ilinebr "({B}*"*"+)?{B}{0,3}"~~~"[~]* {
71577163 QCString pat = substitute(yytext+9,"*"," "); // skip over "\ilinebr " part
71587164 yyextra->docBlock << "\\ilinebr ";
71597165 yyextra->docBlock << pat;
7160- startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length());
7166+ startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length(),true );
71617167 BEGIN(DocCopyBlock);
71627168 }
71637169<DocBlock>^({B}*"*"+)?{B}{0,3}"~~~"[~]* {
71647170 QCString pat = substitute(yytext,"*"," ");
71657171 yyextra->docBlock << pat;
7166- startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length());
7172+ startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length(),true );
71677173 BEGIN(DocCopyBlock);
71687174 }
71697175<DocBlock>"\\ilinebr "({B}*"*"+)?{B}{0,3}"```"[`]*/(".")?[a-zA-Z0-9#_-]+ |
@@ -7172,22 +7178,22 @@ NONLopt [^\n]*
71727178 QCString pat = substitute(yytext+9,"*"," "); // skip over "\ilinebr " part
71737179 yyextra->docBlock << "\\ilinebr ";
71747180 yyextra->docBlock << pat;
7175- startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length());
7181+ startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length(),true );
71767182 BEGIN(DocCopyBlock);
71777183 }
71787184<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*/(".")?[a-zA-Z0-9#_-]+ |
71797185<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*/"{"[^}]+"}" |
71807186<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]* {
71817187 QCString pat = substitute(yytext,"*"," ");
71827188 yyextra->docBlock << pat;
7183- startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length());
7189+ startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length(),true );
71847190 BEGIN(DocCopyBlock);
71857191 }
71867192<DocBlock>{B}*"<"{CODE}">" {
71877193 if (yyextra->insideCS)
71887194 {
71897195 yyextra->docBlock << yytext;
7190- startVerbatimBlock(yyscanner,"<code>");
7196+ startVerbatimBlock(yyscanner,"<code>",0,true );
71917197 BEGIN(DocCopyBlock);
71927198 }
71937199 else
@@ -7332,7 +7338,7 @@ NONLopt [^\n]*
73327338 {
73337339 yyextra->nestedComment--;
73347340 }
7335- else if (yytext[0]=='*' && yyextra->nestedComment==0) // end comment without start
7341+ else if (yytext[0]=='*' && yyextra->nestedComment==0 && yyextra->isCodeBlock ) // end comment without start
73367342 {
73377343 warn(yyextra->fileName,yyextra->yyLineNr,
73387344 "Found end of C comment inside a '{}' block without matching start of the comment!"
@@ -7718,7 +7724,7 @@ static QCString stripFuncPtr(const QCString &type)
77187724}
77197725
77207726//-----------------------------------------------------------------
7721- static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize)
7727+ static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize,bool codeBlock )
77227728{
77237729 struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
77247730 if (Config_getBool(MARKDOWN_SUPPORT))
@@ -7727,6 +7733,7 @@ static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size
77277733 }
77287734 yyextra->docBlockName=blockName;
77297735 yyextra->fencedSize=fencedSize;
7736+ yyextra->isCodeBlock=codeBlock;
77307737 yyextra->nestedComment=0;
77317738}
77327739
0 commit comments