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

📄 code.l

📁 doxygen(一个自动从源代码生成文档的工具)的源代码
💻 L
📖 第 1 页 / 共 4 页
字号:
%x      SkipInits%x      ClassName%x      ClassVar%x      Bases%x      SkipSharp%x      ReadInclude%x      TemplDecl%%<*>\x0d<Body>^([ \t]*"#"[ \t]*"include"[ \t]*)("<"|"\"") {  					  startFontClass("preprocessor");					  g_code->codify(yytext);  					  BEGIN( ReadInclude ); 					}<Body>("class"|"struct"|"union"|"namespace")[ \t\n]+ {   					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();					  //g_code->codify(yytext);  					  if (!g_insideTemplate) 					    BEGIN( ClassName ); 					}<ReadInclude>[^\n\"\>]+/(">"|"\"")  	{					  //FileInfo *f;					  bool ambig;                                          FileDef *fd;					  if ((fd=findFileDef(Doxygen::inputNameDict,yytext,ambig)) &&					      fd->isLinkable())					  {					    g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext);					  }					  else					  {					    g_code->codify(yytext);					  }					  char c=yyinput();					  QCString text;					  text+=c;					  g_code->codify(text);					  endFontClass();					  BEGIN( Body );  					}<Body>^[ \t]*"#"			{   					  startFontClass("preprocessor");  					  g_code->codify(yytext);  					  BEGIN( SkipCPP ) ; 					}<SkipCPP>.				{   					  g_code->codify(yytext);					}<SkipCPP>\\[\r]?\n			{   					  codifyLines(yytext);					}<SkipCPP>\n/.*\n			{   					  codifyLines(yytext);					  endFontClass();					  BEGIN( Body ) ;					}<SkipCPP>"//"				{   					  g_code->codify(yytext);					}<Body>"{"				{                                           g_theVarContext.pushScope();  					  g_scopeStack.push(INNERBLOCK);  					  if (g_searchingForBody)					  {					    g_searchingForBody=FALSE;					    g_insideBody=TRUE;					  }  					  g_code->codify(yytext);  					  g_curlyCount++;					  if (g_insideBody) 					  {					    g_bodyCurlyCount++;					  }  					  g_type.resize(0); 					  g_name.resize(0);					}<Body>"}"				{                                           g_theVarContext.popScope();  					  if (g_scopeStack.pop()==SCOPEBLOCK) 					  {					    popScope();					  }  					  g_code->codify(yytext);					  // TODO: remove  					  g_inClass=FALSE; 					  if (--g_curlyCount<=0) 					  {					    //g_classScope.resize(0);					    //g_codeParmList.clear();					  }					  if (--g_bodyCurlyCount<=0)					  {					    g_insideBody=FALSE;					  }					}<ClassName,ClassVar>";"			{   					  g_code->codify(yytext);					  g_searchingForBody=FALSE;   					  BEGIN( Body ); 					}<ClassName,ClassVar>[*&]+       	{					  addType();					  g_code->codify(yytext);					}<ClassName>{ID}			        {					  //g_ccd.name=yytext;                                          g_curClassName=yytext;					  addType();					  generateClassOrGlobalLink(*g_code,yytext);					  BEGIN( ClassVar );					}<ClassVar>"="				{					  g_code->codify(yytext);					  unput(*yytext);					  BEGIN( Body );  					}<ClassVar>{ID}				{  					  g_type = g_curClassName.copy();					  g_name = yytext;					  g_theVarContext.addVariable(g_type,g_name);					  generateClassOrGlobalLink(*g_code,yytext);  					}<ClassName,ClassVar>[ \t\n]*":"[ \t\n]*		{  					  codifyLines(yytext);					  g_curClassBases.clear();  					  BEGIN( Bases ); 					}<Bases,ClassName,ClassVar>[ \t]*"{"[ \t]*	{                                          g_theVarContext.pushScope();  					  g_code->codify(yytext);					  g_curlyCount++;					  g_inClass=TRUE;  					  if (g_searchingForBody)					  {					    g_searchingForBody=FALSE;					    g_insideBody=TRUE;					  }					  if (g_insideBody) g_bodyCurlyCount++;					  if (!g_curClassName.isEmpty()) // valid class name					  {  					    g_scopeStack.push(SCOPEBLOCK);					    pushScope(g_curClassName);					    //CodeClassDef *cd=new CodeClassDef(g_ccd);					    //g_codeClassDict.insert(cd->name,cd);					    if (getResolvedClass(g_currentDefinition,g_curClassName)==0)					    {					      g_curClassDef=new ClassDef("<code>",1,				 		  g_curClassName,ClassDef::Class);					      g_codeClassSDict.append(g_curClassName,g_curClassDef);					      // insert base classes.					      char *s=g_curClassBases.first();					      while (s)					      {						ClassDef *bcd;						bcd=g_codeClassSDict[s];						if (bcd==0) bcd=getResolvedClass(g_currentDefinition,s);						if (bcd)						{						  g_curClassDef->insertBaseClass(bcd,s,Public,Normal);						}						s=g_curClassBases.next();					      }					    }					    //printf("g_codeClassList.count()=%d\n",g_codeClassList.count());					  }					  else // not a class name -> assume inner block					  {  					    g_scopeStack.push(INNERBLOCK);					  }					  g_curClassName.resize(0);					  g_curClassBases.clear();					  BEGIN( Body ); 					}<Bases>"virtual"|"public"|"protected"|"private" {   					  startFontClass("keyword");  					  g_code->codify(yytext);					  endFontClass();					}<Bases>{ID}	                        { 					  //printf("%s:addBase(%s)\n",g_ccd.name.data(),yytext);  					  g_curClassBases.inSort(yytext); 					  generateClassOrGlobalLink(*g_code,yytext);					}<Bases>"<"                              {   					  g_code->codify(yytext);  					  g_sharpCount=1;					  BEGIN ( SkipSharp );					}<SkipSharp>"<"                          {  					  g_code->codify(yytext);  					  ++g_sharpCount; 					}<SkipSharp>">"                          {   					  g_code->codify(yytext);  					  if (--g_sharpCount<=0)					  BEGIN ( Bases );					}<Bases>","                              {   					  g_code->codify(yytext);					}  					<Body>{SCOPEPREFIX}?"operator"{B}*"()"{B}*/"(" {  					  addType();					  generateFunctionLink(*g_code,yytext);  					  g_bracketCount=0;					  g_args.resize(0);  					  g_name+=yytext;   					  BEGIN( FuncCall );					}<Body>{SCOPEPREFIX}?"operator"{B}*[^\(\n]+/"(" {  					  addType();					  generateFunctionLink(*g_code,yytext);  					  g_bracketCount=0;					  g_args.resize(0);  					  g_name+=yytext;   					  BEGIN( FuncCall );					}<Body,TemplDecl>"template"/([^a-zA-Z0-9])		{  					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();					  g_insideTemplate=TRUE;					  g_sharpCount=0;					}<Body>{KEYWORD}/([^a-z_A-Z0-9]) 	{  					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();  					}<Body>{KEYWORD}/{B}* 			{  					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();  					}<Body>{KEYWORD}/{B}*"(" 		{  					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();  				          g_name.resize(0);g_type.resize(0);  					}<Body>{FLOWKW}/([^a-z_A-Z0-9]) 	{  					  startFontClass("keywordflow");  					  codifyLines(yytext);					  endFontClass();  					}<Body>{FLOWKW}/{B}* 			{  					  startFontClass("keywordflow");  					  codifyLines(yytext);					  endFontClass();  					}<Body>{FLOWKW}/{B}*"(" 		{  					  startFontClass("keywordflow");  					  codifyLines(yytext);					  endFontClass();  				          g_name.resize(0);g_type.resize(0);  					}<Body>[\\|\)\+\-\/\%\~\!]		{  					  g_code->codify(yytext);  				          g_name.resize(0);g_type.resize(0);					  if (*yytext==')')					  {					    g_theCallContext.popScope();					  }  					}<Body,TemplDecl>{TYPEKW}/{B}* {  					  startFontClass("keywordtype");					  g_code->codify(yytext);					  endFontClass();					  addType();  					  g_name+=yytext;   					}<Body>"template"/{B}*"<"[^\n\/\-\.\{\"\>]*">"{B}* { // template<...>  					  startFontClass("keyword");					  g_code->codify(yytext);					  endFontClass();					  g_sharpCount=0;					  BEGIN(TemplDecl);                                        }<TemplDecl>"class"|"typename"		{  					  startFontClass("keyword");  					  codifyLines(yytext);					  endFontClass();  					}<TemplDecl>"<"				{                                          g_code->codify(yytext);                                          g_sharpCount++;  					}<TemplDecl>">"				{                                          g_code->codify(yytext);                                          g_sharpCount--;					  if (g_sharpCount<=0)					  {					    BEGIN(Body);					  }  					}<Body>{SCOPENAME}{B}*"<"[^\n\/\-\.\{\"\>]*">"/{B}* { // A<T> *pt;					  generateClassOrGlobalLink(*g_code,yytext);					  addType();  					  g_name+=yytext; 					}<Body>{SCOPENAME}/{B}* 			{ // p->func()					  generateClassOrGlobalLink(*g_code,yytext);					  addType();  					  g_name+=yytext; 					}<Body>"("{B}*("*"{B}*)*{SCOPENAME}*{B}*")"/{B}*	{  // (*p)->func()					  g_code->codify(yytext);					  int s=0;while (!isId(yytext[s])) s++;                                          int e=yyleng-1;while (!isId(yytext[e])) e--;					  QCString varname = ((QCString)yytext).mid(s,e-s+1); 					  addType();  					  g_name=varname; 					}<Body>{SCOPETNAME}/{B}*"("		{ // a() or c::a() or t<A,B>::a()  					  addType();					  generateFunctionLink(*g_code,yytext);					  g_theVarContext.addVariable(g_type,yytext);  					  g_bracketCount=0;					  g_args.resize(0);  					  g_name+=yytext;   					  BEGIN( FuncCall );					}<FuncCall,Body,MemberCall,MemberCall2>\"	{					  startFontClass("stringliteral");  					  g_code->codify(yytext);  					  g_lastStringContext=YY_START;  					  BEGIN( SkipString );  					}<SkipString>[^\"\\\r\n]*		{   					  g_code->codify(yytext);					}<SkipString>"//"|"/*"			{  					  g_code->codify(yytext);  					}<SkipString>\"				{  					  g_code->codify(yytext);					  endFontClass();  					  BEGIN( g_lastStringContext );  					}<SkipString>\\.				{  					  g_code->codify(yytext);					}<Body>":"				{  					  g_code->codify(yytext);  					  g_name.resize(0);g_type.resize(0);  					}<Body>"<"				{  					  if (g_insideTemplate)					  {					    g_sharpCount++;					  }  					  g_code->codify(yytext);  					}<Body>">"				{  					  if (g_insideTemplate)					  {					    if (--g_sharpCount<=0)					    {					      g_insideTemplate=FALSE;					    }					  }  					  g_code->codify(yytext);  					}<Body,MemberCall,MemberCall2,FuncCall>"'"((\\0[Xx0-9]+)|(\\.)|(.))"'"	{  					  startFontClass("charliteral");   					  g_code->codify(yytext);					  endFontClass();  					}<Body>"this->"				{ g_code->codify(yytext); }<Body>"."|"->"				{   					  g_code->codify(yytext);					  g_memCallContext = YY_START;  					  BEGIN( MemberCall ); 					}<MemberCall>{SCOPETNAME}/{B}*"(" 	{					  if (g_theCallContext.getClass())					  {					    if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),yytext))					    {					      g_code->codify(yytext);					    }  					    g_name.resize(0);					  }					  else					  {  					    g_code->codify(yytext);  					    g_name.resize(0);					  }					  g_type.resize(0);					  g_bracketCount=0;					  if (g_memCallContext==Body)					  {					    BEGIN(FuncCall);					  }					  else					  {					    BEGIN(g_memCallContext);					  }  					}<MemberCall>{SCOPENAME}/{B}*		{					  if (g_theCallContext.getClass())					  {					    if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),yytext))					    {					      g_code->codify(yytext);					    }  					    g_name.resize(0);					  }					  else					  {  					    g_code->codify(yytext);  					    g_name.resize(0);					  }					  g_type.resize(0);  					  BEGIN(g_memCallContext);  					}<MemberCall>[^a-z_A-Z0-9(\n]		{   					  g_code->codify(yytext);    					  g_type.resize(0);					  g_name.resize(0);					  BEGIN(g_memCallContext); 					}<Body>[,=;\[]				{  					  g_code->codify(yytext);					  g_saveName = g_name.copy();					  g_saveType = g_type.copy();  					  if (!g_type.isEmpty()) 					  {					    g_theVarContext.addVariable(g_type,g_name);					    g_name.resize(0);					  }					  if (*yytext==';') 					  {					    g_type.resize(0);					    g_name.resize(0);					  }					  g_args.resize(0);  					}<Body>"]"				{  					  g_code->codify(yytext);					  // TODO: nested arrays like: a[b[0]->func()]->func()					  g_name = g_saveName.copy();					  g_type = g_saveType.copy();					}<Body>[0-9]+				{					  g_code->codify(yytext);					}<Body>[0-9]+[xX][0-9A-Fa-f]+		{					  g_code->codify(yytext);					}<MemberCall2,FuncCall>{KEYWORD}/([^a-z_A-Z0-9]) {					  addParmType();					  g_parmName=yytext;   					  startFontClass("keyword");  					  g_code->codify(yytext);					  endFontClass();					}<MemberCall2,FuncCall>{TYPEKW}/([^a-z_A-Z0-9]) {					  addParmType();					  g_parmName=yytext;   					  startFontClass("keywordtype");  					  g_code->codify(yytext);					  endFontClass();					}<MemberCall2,FuncCall>{FLOWKW}/([^a-z_A-Z0-9]) {					  addParmType();					  g_parmName=yytext;   					  startFontClass("keywordflow");  					  g_code->codify(yytext);					  endFontClass();					}<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]*({B}*"<"[^\n\<\>]*">")? {					  addParmType();					  g_parmName=yytext; 					  generateClassOrGlobalLink(*g_code,yytext);					}<MemberCall2,FuncCall>,			{  					  g_code->codify(yytext);					  g_theVarContext.addVariable(g_parmType,g_parmName);					  g_parmType.resize(0);g_parmName.resize(0);					}<MemberCall2,FuncCall>"("		{  					  g_code->codify(yytext);  					  g_bracketCount++; 					  g_theCallContext.pushScope();

⌨️ 快捷键说明

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