From 036292ae469eb5106d5b5c0bbbbf5b9d77d83638 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sat, 12 Oct 2013 18:46:34 +0200 Subject: Bug 709706 - Terminating C comments within markdown files breaks aliases --- src/commentcnv.l | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/commentcnv.l b/src/commentcnv.l index 09230eb..948d6e2 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -78,6 +78,7 @@ static int g_blockCount; static bool g_lastEscaped; static int g_lastBlockContext; static bool g_pythonDocString; +static int g_nestingCount; static SrcLangExt g_lang; static bool isFixedForm; // For Fortran @@ -251,6 +252,7 @@ void replaceComment(int offset); else { g_pythonDocString = TRUE; + g_nestingCount=0; copyToOutput(yytext,(int)yyleng); BEGIN(CComment); } @@ -263,6 +265,7 @@ void replaceComment(int offset); else { copyToOutput(yytext,(int)yyleng); + g_nestingCount=0; BEGIN(CComment); } } @@ -277,6 +280,7 @@ void replaceComment(int offset); if (isFixedForm && (g_col == 0)) { copyToOutput(yytext,(int)yyleng); + g_nestingCount=0; BEGIN(CComment); } else @@ -367,6 +371,7 @@ void replaceComment(int offset); } "/*"[*!]? { /* start of a C comment */ g_specialComment=(int)yyleng==3; + g_nestingCount=0; copyToOutput(yytext,(int)yyleng); BEGIN(CComment); } @@ -378,6 +383,7 @@ void replaceComment(int offset); else { copyToOutput(yytext,(int)yyleng); + g_nestingCount=0; BEGIN(CComment); } } @@ -389,6 +395,7 @@ void replaceComment(int offset); else { copyToOutput(yytext,(int)yyleng); + g_nestingCount=0; BEGIN(CComment); } } @@ -400,6 +407,7 @@ void replaceComment(int offset); else { copyToOutput(yytext,(int)yyleng); + g_nestingCount=0; BEGIN(CComment); } } @@ -564,7 +572,7 @@ void replaceComment(int offset); copyToOutput(yytext,(int)yyleng); } -[^\\!@*\n{\"]* { /* anything that is not a '*' or command */ +[^\\!@*\n{\"\/]* { /* anything that is not a '*' or command */ copyToOutput(yytext,(int)yyleng); } "*"+[^*/\\@\n{\"]* { /* stars without slashes */ @@ -590,6 +598,10 @@ void replaceComment(int offset); BEGIN(Scan); } } +"/"+"*" { /* nested C comment */ + g_nestingCount++; + copyToOutput(yytext,(int)yyleng); + } "*"+"/" { /* end of C comment */ if (g_lang==SrcLangExt_Python) { @@ -597,8 +609,15 @@ void replaceComment(int offset); } else { - copyToOutput(yytext,(int)yyleng); - BEGIN(Scan); + if (g_nestingCount<=0) + { + copyToOutput(yytext,(int)yyleng); + BEGIN(Scan); + } + else + { + g_nestingCount--; + } } } "\n"/[ \t]*[^#] { /* end of Python comment */ @@ -935,6 +954,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName) if (g_lang==SrcLangExt_Markdown) { + g_nestingCount=0; BEGIN(CComment); } else -- cgit v0.12