summaryrefslogtreecommitdiffstats
path: root/src/commentscan.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/commentscan.l')
-rw-r--r--src/commentscan.l24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/commentscan.l b/src/commentscan.l
index 8d0e340..2dd2323 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -807,7 +807,7 @@ LC "\\"{B}*"\n"
NW [^a-z_A-Z0-9]
FILESCHAR [a-z_A-Z0-9\x80-\xFF\\:\\\/\-\+]
FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+]
-FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+"\"")
+FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]*"\"")
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
@@ -920,6 +920,10 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
}
<Comment>"</remarks>" { // end of a brief or detailed description
}
+<Comment>{RCSTAG} { // RCS tag which end a brief description
+ setOutput(OutputDoc);
+ REJECT;
+ }
<Comment>"<!--" {
BEGIN(HtmlComment);
}
@@ -1192,8 +1196,8 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
<ClassDocArg1,CategoryDocArg1>. { // ignore other stuff
}
-<ClassDocArg2>{FILE} { // second argument; include file
- current->includeFile = stripQuotes(yytext);
+<ClassDocArg2>{FILE}|"<>" { // second argument; include file
+ current->includeFile = yytext;
BEGIN( ClassDocArg3 );
}
<ClassDocArg2>{LC} { // line continuation
@@ -1208,7 +1212,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
<ClassDocArg2>. { // ignore other stuff
}
-<ClassDocArg3>[<]?{FILE}[>]? { // third argument; include file name
+<ClassDocArg3>[<]?{FILE}?[>]? { // third argument; include file name
current->includeName = yytext;
BEGIN( Comment );
}
@@ -2515,9 +2519,10 @@ void groupEnterCompound(const char *fileName,int line,const char *name)
{
g_compoundName=fileName;
}
+ //printf("groupEnterCompound(%s)\n",name);
}
-void groupLeaveCompound(const char *,int,const char *)
+void groupLeaveCompound(const char *,int,const char * /*name*/)
{
//printf("groupLeaveCompound(%s)\n",name);
//if (g_memberGroupId!=DOX_NOGROUP)
@@ -2538,7 +2543,8 @@ static int findExistingGroup(int &groupId,const MemberGroupInfo *info)
for (di.toFirst();(mi=di.current());++di)
{
if (g_compoundName==mi->compoundName && // same file or scope
- stricmp(mi->header,info->header)==0 // same header
+ !mi->header.isEmpty() && // not a nameless group
+ stricmp(mi->header,info->header)==0 // same header name
)
{
//printf("Found it!\n");
@@ -2551,14 +2557,15 @@ static int findExistingGroup(int &groupId,const MemberGroupInfo *info)
void openGroup(Entry *e,const char *,int)
{
+ //printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
+ // e->name.data(),e->section,g_autoGroupStack.count());
if (e->section==Entry::GROUPDOC_SEC) // auto group
{
g_autoGroupStack.push(new Grouping(e->name,e->groupingPri()));
- //printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
- // e->name.data(),e->section,g_autoGroupStack.count());
}
else // start of a member group
{
+ //printf(" membergroup id=%d\n",g_memberGroupId);
if (g_memberGroupId==DOX_NOGROUP) // no group started yet
{
static int curGroupId=0;
@@ -2567,6 +2574,7 @@ void openGroup(Entry *e,const char *,int)
info->header = g_memberGroupHeader.stripWhiteSpace();
info->compoundName = g_compoundName;
g_memberGroupId = findExistingGroup(curGroupId,info);
+ //printf(" use membergroup %d\n",g_memberGroupId);
Doxygen::memGrpInfoDict.insert(g_memberGroupId,info);
g_memberGroupRelates = e->relates;