diff options
author | Chris Hansen <hansec@uw.edu> | 2014-05-19 01:21:59 (GMT) |
---|---|---|
committer | Chris Hansen <hansec@uw.edu> | 2014-05-19 01:21:59 (GMT) |
commit | be0986e9ab7c1788e3650f1df7e7af70b68f28d8 (patch) | |
tree | 1a42ae1bce5b79606004d0100c3233e43d3c54db /src/fortrancode.l | |
parent | 1e6323e5bb04f49df9d00e82e5db3e8f301dbfc4 (diff) | |
download | Doxygen-be0986e9ab7c1788e3650f1df7e7af70b68f28d8.zip Doxygen-be0986e9ab7c1788e3650f1df7e7af70b68f28d8.tar.gz Doxygen-be0986e9ab7c1788e3650f1df7e7af70b68f28d8.tar.bz2 |
Fix highlighting issues
- Fixed highlighting defined type in variable declarations
- Corrected parser state following docBlock closure
Diffstat (limited to 'src/fortrancode.l')
-rw-r--r-- | src/fortrancode.l | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/fortrancode.l b/src/fortrancode.l index a658030..699b320 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -150,7 +150,9 @@ static bool g_includeCodeFragment; static char stringStartSymbol; // single or double quote // count in variable declaration to filter out // declared from referenced names -static int bracketCount = 0; +static int bracketCount = 0; + +static bool g_endComment; // simplified way to know if this is fixed form // duplicate in fortranscanner.l @@ -255,6 +257,7 @@ static void startCodeLine() g_currentDefinition = d; g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr); g_insideBody = FALSE; + g_endComment = FALSE; g_parmType.resize(0); g_parmName.resize(0); QCString lineAnchor; @@ -929,7 +932,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I endFontClass(); } <Declaration>{ID} { // local var - if (g_currentMemberDef && !g_currentMemberDef->isFunction()) + if (g_currentMemberDef && !g_currentMemberDef->isFunction() && bracketCount==0) { g_code->codify(yytext); addLocalVar(yytext); @@ -961,7 +964,14 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I YY_FTN_RESET } <Declaration>"\n" { // end declaration line - codifyLines(yytext); + if (g_endComment) + { + g_endComment=FALSE; + } + else + { + codifyLines(yytext); + } bracketCount = 0; yy_pop_state(); YY_FTN_RESET @@ -1018,16 +1028,17 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I docBlock+=yytext; } <DocBlock>"\n" { // comment block ends at the end of this line - docBlock+=yytext; // remove special comment (default config) if (Config_getBool("STRIP_CODE_COMMENTS")) { g_yyLineNr+=((QCString)docBlock).contains('\n'); + g_yyLineNr+=1; endCodeLine(); - if (g_yyLineNr<g_inputLines) + if (g_yyLineNr<g_inputLines) { startCodeLine(); } + g_endComment=TRUE; } else // do not remove comment { @@ -1035,6 +1046,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I codifyLines(docBlock); endFontClass(); } + unput(*yytext); yy_pop_state(); YY_FTN_RESET } @@ -1106,7 +1118,14 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I /*-----------------------------------------------------------------------------*/ <*>\n { - codifyLines(yytext); + if (g_endComment) + { + g_endComment=FALSE; + } + else + { + codifyLines(yytext); + } YY_FTN_RESET } <*>. { |