@@ -184,6 +184,8 @@ struct fortranscannerYY_state
184184 bool docBlockInBody = false;
185185 bool docBlockJavaStyle;
186186 QCString docBlockName;
187+ QCString blockString;
188+ int blockLineNr=-1;
187189 QCString debugStr;
188190 size_t fencedSize = 0;
189191// Argument *parameter; // element of parameter list
@@ -1436,6 +1438,8 @@ private {
14361438 yyextra->docBlockName.at(1)=')';
14371439 }
14381440 yyextra->fencedSize=0;
1441+ yyextra->blockString=yytext;
1442+ yyextra->blockLineNr=yyextra->lineNr;
14391443 BEGIN(DocCopyBlock);
14401444 }
14411445<DocBlock>{CMD}"ifile"{B}+"\""[^\n\"]+"\"" {
@@ -1467,31 +1471,41 @@ private {
14671471 yyextra->docBlock += yytext;
14681472 yyextra->docBlockName="<pre>";
14691473 yyextra->fencedSize=0;
1474+ yyextra->blockString=yytext;
1475+ yyextra->blockLineNr=yyextra->lineNr;
14701476 BEGIN(DocCopyBlock);
14711477 }
14721478<DocBlock>{B}*"<"<CODE>">" {
14731479 yyextra->docBlock += yytext;
14741480 yyextra->docBlockName="<code>";
14751481 yyextra->fencedSize=0;
1482+ yyextra->blockString=yytext;
1483+ yyextra->blockLineNr=yyextra->lineNr;
14761484 BEGIN(DocCopyBlock);
14771485 }
14781486<DocBlock>{CMD}"startuml"/[^a-z_A-Z0-9\-] { // verbatim command
14791487 yyextra->docBlock += yytext;
14801488 yyextra->docBlockName="uml";
14811489 yyextra->fencedSize=0;
1490+ yyextra->blockString=yytext;
1491+ yyextra->blockLineNr=yyextra->lineNr;
14821492 BEGIN(DocCopyBlock);
14831493 }
14841494<DocBlock>{CMD}("verbatim"|"iliteral"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"rtfonly"|"docbookonly"|"dot"|"msc"|"code")/[^a-z_A-Z0-9\-] { // verbatim command
14851495 yyextra->docBlock += yytext;
14861496 yyextra->docBlockName=&yytext[1];
14871497 yyextra->fencedSize=0;
1498+ yyextra->blockString=yytext;
1499+ yyextra->blockLineNr=yyextra->lineNr;
14881500 BEGIN(DocCopyBlock);
14891501 }
14901502<DocBlock>"~~~"[~]* {
14911503 QCString pat = yytext;
14921504 yyextra->docBlock += pat;
14931505 yyextra->docBlockName="~~~";
14941506 yyextra->fencedSize=pat.length();
1507+ yyextra->blockString=yytext;
1508+ yyextra->blockLineNr=yyextra->lineNr;
14951509 BEGIN(DocCopyBlock);
14961510 }
14971511<DocBlock>"```"[`]*/(".")?[a-zA-Z0-9#_-]+ |
@@ -1501,6 +1515,8 @@ private {
15011515 yyextra->docBlock += pat;
15021516 yyextra->docBlockName="```";
15031517 yyextra->fencedSize=pat.length();
1518+ yyextra->blockString=yytext;
1519+ yyextra->blockLineNr=yyextra->lineNr;
15041520 BEGIN(DocCopyBlock);
15051521 }
15061522<DocBlock>[^@*`~\/\\\n]+ { // any character that isn't special
@@ -1528,6 +1544,8 @@ private {
15281544 if (yyextra->docBlockName=="<pre>")
15291545 {
15301546 yyextra->docBlockName="";
1547+ yyextra->blockString.clear();
1548+ yyextra->blockLineNr=-1;
15311549 BEGIN(DocBlock);
15321550 }
15331551 }
@@ -1536,6 +1554,8 @@ private {
15361554 if (yyextra->docBlockName=="<code>")
15371555 {
15381556 yyextra->docBlockName="";
1557+ yyextra->blockString.clear();
1558+ yyextra->blockLineNr=-1;
15391559 BEGIN(DocBlock);
15401560 }
15411561 }
@@ -1544,6 +1564,8 @@ private {
15441564 if (yyextra->docBlockName==&yytext[1])
15451565 {
15461566 yyextra->docBlockName="";
1567+ yyextra->blockString.clear();
1568+ yyextra->blockLineNr=-1;
15471569 BEGIN(DocBlock);
15481570 }
15491571 }
@@ -1552,6 +1574,8 @@ private {
15521574 if (&yytext[4]==yyextra->docBlockName)
15531575 {
15541576 yyextra->docBlockName="";
1577+ yyextra->blockString.clear();
1578+ yyextra->blockLineNr=-1;
15551579 BEGIN(DocBlock);
15561580 }
15571581 }
@@ -1573,6 +1597,8 @@ private {
15731597 yyextra->docBlock += pat;
15741598 if (yyextra->docBlockName == "~~~" && yyextra->fencedSize==pat.length())
15751599 {
1600+ yyextra->blockString.clear();
1601+ yyextra->blockLineNr=-1;
15761602 BEGIN(DocBlock);
15771603 }
15781604 }
@@ -1581,6 +1607,8 @@ private {
15811607 yyextra->docBlock += pat;
15821608 if (yyextra->docBlockName == "```" && yyextra->fencedSize==pat.length())
15831609 {
1610+ yyextra->blockString.clear();
1611+ yyextra->blockLineNr=-1;
15841612 BEGIN(DocBlock);
15851613 }
15861614 }
@@ -3343,7 +3371,16 @@ static void scanner_abort(yyscan_t yyscanner)
33433371{
33443372 struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
33453373 fprintf(stderr,"********************************************************************\n");
3346- fprintf(stderr,"Error in file %s line: %d, state: %d(%s)\n",qPrint(yyextra->fileName),yyextra->lineNr,YY_START,stateToString(YY_START));
3374+ if (yyextra->blockLineNr == -1)
3375+ {
3376+ fprintf(stderr,"Error in file %s line: %d, state: %d(%s)\n",
3377+ qPrint(yyextra->fileName),yyextra->lineNr,YY_START,stateToString(YY_START));
3378+ }
3379+ else
3380+ {
3381+ fprintf(stderr,"Error in file %s line: %d, state: %d(%s), starting command: '%s' probable line reference: %d\n",
3382+ qPrint(yyextra->fileName),yyextra->lineNr,YY_START,stateToString(YY_START),qPrint(yyextra->blockString),yyextra->blockLineNr);
3383+ }
33473384 fprintf(stderr,"********************************************************************\n");
33483385
33493386 bool start=FALSE;
0 commit comments