⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanner.l

📁 doxygen(一个自动从源代码生成文档的工具)的源代码
💻 L
📖 第 1 页 / 共 5 页
字号:
					  //  current->mtArgList = 0;					  //}					  lineCount() ;					  BEGIN( CompoundName ) ;					}<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union{" |<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union"{BN}+ { 					  isTypedef=((QCString)yytext).find("typedef")!=-1;  					  current->section = Entry::UNION_SEC ;					  addType( current ) ;					  current->type += " union" ;					  current->fileName  = yyFileName;					  current->startLine = yyLineNr;					  current->bodyLine  = yyLineNr;					  lineCount() ;					  BEGIN( CompoundName ) ;					}<FindMembers>{B}*(("typedef"{BN}+)?)"enum{" | <FindMembers>{B}*(("typedef"{BN}+)?)"enum"{BN}+	{ 					  isTypedef=((QCString)yytext).find("typedef")!=-1;  					  current->section = Entry::ENUM_SEC ;					  addType( current ) ;					  current->type += " enum" ;					  current->fileName  = yyFileName;					  current->startLine = yyLineNr;					  current->bodyLine  = yyLineNr;					  lineCount() ;					  BEGIN( CompoundName ) ;					}<Operator>"("{BN}*")"{BN}*/"("		{  					  lineCount();    					  current->name += yytext ;					  current->name = current->name.simplifyWhiteSpace();					  BEGIN( FindMembers ) ;  					}<Operator>[^(]				{     					  lineCount();    					  current->name += *yytext ;					}<Operator>"<>"				{ /* skip guided templ specifiers */ }<Operator>"("				{					  current->name = current->name.simplifyWhiteSpace();					  unput(*yytext);					  BEGIN( FindMembers ) ;					}<FindMembers>"template"({BN}*)"<"/[>]?	{   					  lineCount();					  // class template specifier already found => member template specifier					  // already inside class => member template specifier					  //if (current->tArgList /*|| (current_root->section&Entry::COMPOUND_MASK)*/)					  //{					  //  printf("-------> member template \n");					  if (current->tArgLists==0)					  {					    current->tArgLists = new QList<ArgumentList>;					    current->tArgLists->setAutoDelete(TRUE);					  }					  ArgumentList *al = new ArgumentList;					  al->setAutoDelete(TRUE);					  current->tArgLists->append(al);					  currentArgumentList = al;					  //if (current->mtArgList)					  //  {					  //    if (current->tArgList)					  //    {					  //      delete current->tArgList;					  //    }					  //    current->tArgList = current->mtArgList;					  //    current->mtArgList = 0;                                          //  }					  //  current->mtArgList = new ArgumentList;					  //  current->mtArgList->setAutoDelete(TRUE);					  //  currentArgumentList = current->mtArgList;					  //}					  //else // class template specifier					  //{					  //  printf("-------> class template\n");					  //  if (current->tArgList)					  //  {					  //    current->tArgList->clear();                                          //  }					  //  else					  //  {					  //    current->tArgList = new ArgumentList;					  //    current->tArgList->setAutoDelete(TRUE);					  //  }					  //  currentArgumentList = current->tArgList;					  //}					  templateStr="<";					  fullArgString = templateStr.copy();					  copyArgString = &templateStr;					  currentArgumentContext = FindMembers;					  BEGIN( ReadTempArgs );  					}<FindMembers>"namespace"{BN}+/{ID}{BN}*"=" { // namespace alias                                          lineCount();   					  BEGIN( NSAliasName );					}<NSAliasName>{ID}			{  					  aliasName = yytext;					  BEGIN( NSAliasArg );  					}<NSAliasArg>({ID}"::")*{ID}		{  					  //printf("Inserting namespace alias %s::%s->%s\n",current_root->name.data(),aliasName.data(),yytext);					  if (current_root->name.isEmpty())					  {                                            Doxygen::namespaceAliasDict.insert(aliasName,new QCString(yytext));					  }					  else					  {                                            Doxygen::namespaceAliasDict.insert(current_root->name+"::"+aliasName,						new QCString(current_root->name+"::"+yytext));					  }  					}<NSAliasArg>";"				{  					  BEGIN( FindMembers );  					}<FindMembers>"using"{BN}+		{ 					  current->startLine=yyLineNr;                                           lineCount();                                           BEGIN(Using);                                         }<Using>"namespace"{BN}+			{ lineCount(); BEGIN(UsingDirective); }<Using>{ID}{BN}*"::"{BN}*{ID}({BN}*"::"{BN}*{ID})*	{  					  current->name=yytext;                                          current->fileName = yyFileName;   					  current->section=Entry::USINGDECL_SEC;					  //printf("Found using declaration %s\n",yytext);					  current_root->addSubEntry(current);					  current             = new Entry ;					  initEntry();					  BEGIN(Using);  					}<UsingDirective>{SCOPENAME}		{ current->name=yytext;                                          current->fileName = yyFileName;   					  current->section=Entry::USINGDIR_SEC;					  //printf("Found using directive %s\n",yytext);					  current_root->addSubEntry(current);					  current             = new Entry ;					  initEntry();					  BEGIN(Using);  					}<Using>";"				{ BEGIN(FindMembers); }<FindMembers>{SCOPENAME}{BN}*"<>"	{ // guided template decl					  QCString n=yytext;					  addType( current );					  current->name=n.left(n.length()-2);					}<FindMembers>{SCOPENAME}{BN}*/"<"	{ // Note: this could be a return type!  					  sharpCount=0;					  lineCount();					  addType( current );					  //if (current->mtArgList && current->tArgList==0)					  //{					  //  current->tArgList=current->mtArgList;					  //  current->mtArgList=0;					  //}  					  current->name=yytext;					  current->name=current->name.stripWhiteSpace();					  current->scopeSpec.resize(0);					  currentTemplateSpec = &current->scopeSpec;					  if (nameIsOperator(current->name))					    BEGIN( Operator );					  else					    BEGIN( EndTemplate );					}<FindMemberName>{SCOPENAME}{BN}*/"<"	{  					  sharpCount=0;					  lineCount();  					  current->name+=((QCString)yytext).stripWhiteSpace();					  current->memberSpec.resize(0);					  currentTemplateSpec = &current->memberSpec;					  if (nameIsOperator(current->name))					    BEGIN( Operator );					  else					    BEGIN( EndTemplate );  					}<EndTemplate>"<<"			{  					  current->name+=yytext;  					  *currentTemplateSpec+=yytext;   					}<EndTemplate>"<"			{   					  current->name+='<';  					  *currentTemplateSpec+='<'; 					  sharpCount++; 					}<EndTemplate>">>"			{  					  current->name+=yytext;  					  *currentTemplateSpec+=yytext;   					}<EndTemplate>">"			{  					  current->name+='>';					  *currentTemplateSpec+='>';					  if (--sharpCount<=0)					  {  					    //printf("Found %s\n",current->name.data());					    BEGIN(FindMembers);					  }					}<EndTemplate>">"{BN}*"("		{   					  lineCount();  					  current->name+='>';					  *currentTemplateSpec+='>';					  if (--sharpCount<=0)					  {					    current->args = "(";					    currentArgumentContext = FuncQual;					    fullArgString = current->args.copy();					    copyArgString = &current->args;					    //printf("Found %s\n",current->name.data());					    BEGIN( ReadFuncArgType ) ;					  }					}<EndTemplate>">"{BN}*/"::"		{  					  lineCount();  					  current->name+='>';  					  *currentTemplateSpec+='>';					  if (--sharpCount<=0)					  {					    BEGIN(FindMemberName);					  }  					}<EndTemplate>.				{   					  current->name+=*yytext;  					  *currentTemplateSpec+=*yytext; 					}<FindMembers,FindMemberName>{SCOPENAME}	{ 					  lineCount();                                          if (insideIDL && yyleng==9 && strcmp(yytext,"cpp_quote")==0)					  {					    BEGIN(CppQuote);					  }					  else if ((insideIDL || insideJava) && yyleng==6 && strcmp(yytext,"import")==0)					  {					    BEGIN(NextSemi);					  }					  else if (insideIDL && strcmp(yytext,"case")==0)					  {					    BEGIN(IDLUnionCase);					  }					  else if (insideTryBlock && strcmp(yytext,"catch")==0)					  {					    insideTryBlock=FALSE;					    BEGIN(TryFunctionBlock);					  }					  else					  {					    if (YY_START==FindMembers)					    {					      addType( current ) ;					    }					    if (insideJava && strcmp(yytext,"public")==0)					    {					      current->protection = Public;					    }					    else if (insideJava && strcmp(yytext,"protected")==0)					    {					      current->protection = Protected;					    }					    else if (insideJava && strcmp(yytext,"private")==0)					    {					      current->protection = Private;					    }					    else					    {					      if (YY_START==FindMembers)					        current->name  = yytext;					      else						current->name += yytext;					    }					    QCString tmp=yytext;					    if (nameIsOperator(tmp)) 					      BEGIN( Operator );					    else					      BEGIN(FindMembers);					  }					}<FindMembers>"."			{  					  if (insideJava)					  {					    current->name+=".";					  }  					}<FindMembers>"::"			{					  current->name+=yytext;  					}<CppQuote>"("{B}*"\""			{  					  insideCppQuote=TRUE;  					  BEGIN(FindMembers);  					}<IDLUnionCase>"::"<IDLUnionCase>":"			{ BEGIN(FindMembers); }<IDLUnionCase>\n			{ yyLineNr++; }<IDLUnionCase>.<TryFunctionBlock>\n			{ yyLineNr++; }<TryFunctionBlock>"{"			{ 					  curlyCount=0;					  lastCurlyContext = TryFunctionBlockEnd ;  					  BEGIN( SkipCurly );					}<TryFunctionBlock>.<TryFunctionBlockEnd>"catch"		{ BEGIN(TryFunctionBlock); }<TryFunctionBlockEnd>.			{ unput(*yytext);   					  BEGIN( FindMembers );					}<EndCppQuote>")"			{  					  insideCppQuote=FALSE;					  BEGIN(FindMembers);  					}<FindMembers>{B}*"#"			{ lastCPPContext = YY_START; 					  BEGIN( SkipCPP ) ; 					}<FindMembers>{B}*"#"{B}*"define"	{  					  current->bodyLine = yyLineNr;  					  BEGIN( Define );  					}<SkipCPP>.<SkipCPP>\\[\r]*"\n"[\r]*		{ yyLineNr++ ; }<SkipCPP>[\r]*\n[\r]*			{ yyLineNr++ ;					  BEGIN( lastCPPContext) ;					}<Define>{ID}/"("			{  					  current->bodyLine = yyLineNr;  					  current->name = yytext;					  BEGIN( DefineArg );  					}<DefineArg>")"				{  					  //printf("Define with args\n");  					  current->args += ')';  					  BEGIN( DefineEnd );  					}<DefineArg>.				{  					  current->args += *yytext;  					}<Define>{ID}				{  					  //printf("Define `%s' without args\n",yytext);  					  current->bodyLine = yyLineNr;  					  current->name = yytext;					  BEGIN(DefineEnd);  					}<DefineEnd>\n				{  					  //printf("End define\n");					  yyLineNr++;					  current->fileName   = yyFileName;					  current->startLine  = yyLineNr;					  current->type.resize(0);  					  current->args       = current->args.simplifyWhiteSpace();  					  current->name       = current->name.stripWhiteSpace();					  current->section    = Entry::DEFINE_SEC;					  current_root->addSubEntry(current);					  current             = new Entry ;					  initEntry();					  BEGIN(FindMembers);  					}<DefineEnd>\\[\r]?\n			{  					  yyLineNr++;  					}<DefineEnd>\"				{					  if (insideIDL && insideCppQuote)					  {					    BEGIN(EndCppQuote);					  }					  else					  {					    lastStringContext=DefineEnd;					    BEGIN(SkipString);					  }  					}<DefineEnd>.									<FindMembers>[*&]+			{ current->name += yytext ;   					  addType( current );					}<FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {  					  lineCount();					  if (current->bodyLine==-1)					    current->bodyLine=yyLineNr;					  lastAfterDocContext = YY_START;					  afterDocTerminator = ';';					  if (yytext[yyleng-3]=='/')					  {					    current->brief.resize(0);					    BEGIN(AfterDocLine);					  }					  else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))					  {					    current->brief.resize(0);					    BEGIN(AfterDocBrief);					  }					  else					  {					    current->doc.resize(0);					    BEGIN(AfterDoc);					  }  					}<MemberSpec,FindFields,FindMembers,NextSemi,BitFields,ReadInitializer>","{BN}*("/**"|"//!"|"/*!"|"///")"<" {  					  lineCount();					  lastAfterDocContext = YY_START;					  afterDocTerminator = ',';					  if (yytext[yyleng-3]=='/')					  {					    current->brief.resize(0);					    BEGIN(AfterDocLine);					  }					  else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))					  {					    current->brief.resize(0);					    BEGIN(AfterDocBrief);					  }					  else					  {					    current->doc.resize(0);					    BEGIN(AfterDoc);					  }  					}<DefineEnd,FindFields,FindFieldArg,ReadInitializer>{BN}*("/**"|"//!"|"/*!"|"///")"<" {  					  lineCount();					  lastAfterDocContext = YY_START;					  if (YY_START==DefineEnd)					  {					    afterDocTerminator = '\n';					    yyLineNr--;					  }					  else					    afterDocTerminator = 0;					  if (yytext[yyleng-3]=='/')					  {					    current->brief.resize(0);					    BEGIN(AfterDocLine);					  }					  else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))					  {					    current->brief.resize(0);					    BEGIN(AfterDocBrief);					  }					  else					  {					    current->doc.resize(0);					    BEGIN(AfterDoc);					  }  					}<FindMembers,FindFields>("//"([!/]?){B}*{CMD}"{")|("/*"([!*]?){B}*{CMD}"{")	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -