Skip to content

Commit d6b3785

Browse files
committed
issue #8649 doxygen with php make ugly array parameter output
In php square brackets are also possible but were not handled. Added handling for square brackets.
1 parent 9a64073 commit d6b3785

File tree

2 files changed

+64
-10
lines changed

2 files changed

+64
-10
lines changed

src/defargs.l

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ struct defargsYY_state
8989
QCString curTypeConstraint;
9090
QCString extraTypeChars;
9191
int argRoundCount = 0;
92+
int argSquareCount = 0;
9293
int argSharpCount = 0;
9394
int argCurlyCount = 0;
9495
int readArgContext = 0;
@@ -132,6 +133,7 @@ CPPC "/\/"
132133
%x CopyRawString
133134
%x CopyArgRound
134135
%x CopyArgRound2
136+
%x CopyArgSquare
135137
%x CopyArgSharp
136138
%x CopyArgCurly
137139
%x ReadFuncArgType
@@ -209,7 +211,7 @@ CPPC "/\/"
209211
<ReadFuncArgType>"<="|">="|"->"|">>"|"<<" { // handle operators in defargs
210212
yyextra->curArgTypeName+=yytext;
211213
}
212-
<ReadFuncArgType,ReadFuncArgDef>[({<] {
214+
<ReadFuncArgType,ReadFuncArgDef>[({<\[] {
213215
if (YY_START==ReadFuncArgType)
214216
{
215217
yyextra->curArgTypeName+=*yytext;
@@ -226,6 +228,11 @@ CPPC "/\/"
226228
yyextra->argRoundCount=0;
227229
BEGIN( CopyArgRound );
228230
}
231+
else if (*yytext=='[')
232+
{
233+
yyextra->argSquareCount=0;
234+
BEGIN( CopyArgSquare );
235+
}
229236
else if (*yytext=='{')
230237
{
231238
yyextra->argCurlyCount=0;
@@ -262,6 +269,26 @@ CPPC "/\/"
262269
if (yyextra->argRoundCount>0) yyextra->argRoundCount--;
263270
else BEGIN( yyextra->readArgContext );
264271
}
272+
<CCopyArgSquare>"[" {
273+
yyextra->argSquareCount++;
274+
*yyextra->copyArgValue += *yytext;
275+
}
276+
<CopyArgSquare>"]"({B}*{ID})* {
277+
*yyextra->copyArgValue += yytext;
278+
if (yyextra->argSquareCount>0)
279+
{
280+
yyextra->argRoundCount--;
281+
}
282+
else
283+
{
284+
BEGIN( yyextra->readArgContext );
285+
}
286+
}
287+
<CopyArgSquare>"]"/{B}* {
288+
*yyextra->copyArgValue += *yytext;
289+
if (yyextra->argSquareCount>0) yyextra->argSquareCount--;
290+
else BEGIN( yyextra->readArgContext );
291+
}
265292
<CopyArgSharp>"<<" {
266293
if (yyextra->argRoundCount>0)
267294
{
@@ -494,10 +521,10 @@ CPPC "/\/"
494521
<ReadFuncArgDef,CopyArgString,CopyRawString>. {
495522
yyextra->curArgDefValue+=*yytext;
496523
}
497-
<CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>{ID} {
524+
<CopyArgRound,CopyArgRound2,CopyArgSquare,CopyArgSharp,CopyArgCurly>{ID} {
498525
*yyextra->copyArgValue+=yytext;
499526
}
500-
<CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>. {
527+
<CopyArgRound,CopyArgRound2,CopyArgSquare,CopyArgSharp,CopyArgCurly>. {
501528
*yyextra->copyArgValue += *yytext;
502529
}
503530
<ReadTypeConstraint>[,)>] {

src/scanner.l

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ struct scannerYY_state
136136
bool insideProtocolList = false;
137137

138138
int argRoundCount = 0;
139+
int argSquareCount = 0;
139140
int argSharpCount = 0;
140141
int currentArgumentContext = 0;
141142
int lastCopyArgStringContext = 0;
@@ -403,6 +404,7 @@ NONLopt [^\n]*
403404
%x CopyArgString
404405
%x CopyArgPHPString
405406
%x CopyArgRound
407+
%x CopyArgSquare
406408
%x CopyArgSharp
407409
%x CopyArgComment
408410
%x CopyArgCommentLine
@@ -4382,7 +4384,7 @@ NONLopt [^\n]*
43824384
43834385
/*- Function argument reading rules ---------------------------------------*/
43844386
4385-
<ReadFuncArgType>[^ \/\r\t\n\)\(\"\'#]+ { *yyextra->copyArgString+=yytext;
4387+
<ReadFuncArgType>[^ \/\r\t\n\[\]\)\(\"\'#]+ { *yyextra->copyArgString+=yytext;
43864388
yyextra->fullArgString+=yytext;
43874389
}
43884390
<CopyArgString,CopyArgPHPString>[^\n\\\"\']+ { *yyextra->copyArgString+=yytext;
@@ -4392,12 +4394,16 @@ NONLopt [^\n]*
43924394
*yyextra->copyArgString+=yytext;
43934395
yyextra->fullArgString+=yytext;
43944396
}
4397+
<CopyArgSquare>[^\/\n\]\[\"\']+ {
4398+
*yyextra->copyArgString+=yytext;
4399+
yyextra->fullArgString+=yytext;
4400+
}
43954401
<ReadFuncArgType,ReadTempArgs>{BN}* {
43964402
*yyextra->copyArgString+=" ";
43974403
yyextra->fullArgString+=" ";
43984404
lineCount(yyscanner);
43994405
}
4400-
<ReadFuncArgType,CopyArgRound,CopyArgSharp,ReadTempArgs>{RAWBEGIN} {
4406+
<ReadFuncArgType,CopyArgRound,CopyArgSquare,CopyArgSharp,ReadTempArgs>{RAWBEGIN} {
44014407
yyextra->delimiter = yytext+2;
44024408
yyextra->delimiter=yyextra->delimiter.left(yyextra->delimiter.length()-1);
44034409
yyextra->lastRawStringContext = YY_START;
@@ -4406,12 +4412,20 @@ NONLopt [^\n]*
44064412
yyextra->fullArgString+=yytext;
44074413
BEGIN(RawString);
44084414
}
4409-
<ReadFuncArgType,CopyArgRound,CopyArgSharp,ReadTempArgs>\" {
4415+
<ReadFuncArgType,CopyArgRound,CopyArgSquare,CopyArgSharp,ReadTempArgs>\" {
44104416
*yyextra->copyArgString+=*yytext;
44114417
yyextra->fullArgString+=*yytext;
44124418
yyextra->lastCopyArgStringContext = YY_START;
44134419
BEGIN( CopyArgString );
44144420
}
4421+
<ReadFuncArgType>"[" {
4422+
if (!yyextra->insidePHP) REJECT;
4423+
*yyextra->copyArgString+=*yytext;
4424+
yyextra->fullArgString+=*yytext;
4425+
yyextra->argSquareCount=0;
4426+
yyextra->lastCopyArgContext = YY_START;
4427+
BEGIN( CopyArgSquare );
4428+
}
44154429
<ReadFuncArgType,ReadTempArgs>"(" {
44164430
*yyextra->copyArgString+=*yytext;
44174431
yyextra->fullArgString+=*yytext;
@@ -4608,6 +4622,19 @@ NONLopt [^\n]*
46084622
else
46094623
BEGIN( yyextra->lastCopyArgContext );
46104624
}
4625+
<CopyArgSquare>"[" {
4626+
yyextra->argSquareCount++;
4627+
*yyextra->copyArgString+=*yytext;
4628+
yyextra->fullArgString+=*yytext;
4629+
}
4630+
<CopyArgSquare>"]" {
4631+
*yyextra->copyArgString+=*yytext;
4632+
yyextra->fullArgString+=*yytext;
4633+
if (yyextra->argSquareCount>0)
4634+
yyextra->argSquareCount--;
4635+
else
4636+
BEGIN( yyextra->lastCopyArgContext );
4637+
}
46114638
<CopyArgSharp>"(" {
46124639
*yyextra->copyArgString+=*yytext;
46134640
yyextra->fullArgString+=*yytext;
@@ -4649,7 +4676,7 @@ NONLopt [^\n]*
46494676
yyextra->fullArgString+=*yytext;
46504677
BEGIN( yyextra->lastCopyArgStringContext );
46514678
}
4652-
<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>{CHARLIT} {
4679+
<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSquare,CopyArgSharp>{CHARLIT} {
46534680
if (yyextra->insidePHP)
46544681
{
46554682
REJECT;
@@ -4660,7 +4687,7 @@ NONLopt [^\n]*
46604687
yyextra->fullArgString+=yytext;
46614688
}
46624689
}
4663-
<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>\' {
4690+
<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSquare,CopyArgSharp>\' {
46644691
*yyextra->copyArgString+=yytext;
46654692
yyextra->fullArgString+=yytext;
46664693
if (yyextra->insidePHP)
@@ -4669,12 +4696,12 @@ NONLopt [^\n]*
46694696
BEGIN(CopyArgPHPString);
46704697
}
46714698
}
4672-
<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgPHPString,CopyArgRound,CopyArgSharp>\n {
4699+
<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgPHPString,CopyArgRound,CopyArgSquare,CopyArgSharp>\n {
46734700
lineCount(yyscanner);
46744701
*yyextra->copyArgString+=*yytext;
46754702
yyextra->fullArgString+=*yytext;
46764703
}
4677-
<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgPHPString,CopyArgRound,CopyArgSharp>. {
4704+
<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgPHPString,CopyArgRound,CopyArgSquare,CopyArgSharp>. {
46784705
*yyextra->copyArgString+=*yytext;
46794706
yyextra->fullArgString+=*yytext;
46804707
}

0 commit comments

Comments
 (0)