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

📄 wc.lex

📁 flex
💻 LEX
字号:
%{/* * wc.lex : A simple example of using FLEX *          to create a wc-like utility. * *	    See MISC/fastwc/ in the flex distribution for examples *	    of how to write this scanner for maximum performance. */   int  numchars = 0;int  numwords = 0;int  numlines = 0;int  totchars = 0;int  totwords = 0;int  totlines = 0;/* * rules start from here */%}%%[\n]        { numchars++;  numlines++;         }[\r]        { numchars++;                      }[^ \t\n]+   { numwords++;  numchars += yyleng; }.           { numchars++;                      }%%/* * additional C code start from here. This supplies * all the argument processing etc. */int main(int argc, char *argv[]){  int  loop,first=1;  int  lflag = 0; /* 1 if we count # of lines      */  int  wflag = 0; /* 1 if we count # of words      */  int  cflag = 0; /* 1 if we count # of characters */  int  fflag = 0; /* 1 if we have a file name      */  for(loop=1; loop<argc; loop++){     if(argv[loop][0] == '-'){	switch(argv[loop][1]){	case 'l':	   lflag = 1;	   break;	case 'w':	   wflag = 1;	   break;	case 'c':	   cflag = 1;	   break;	default:	   fprintf(stderr,"unknown option -%c\n",                   argv[loop][1]);	}     }  }  if(lflag == 0 && wflag == 0 && cflag == 0){    lflag = wflag = cflag = 1; /* default to all on */  }  for(loop=1; loop<argc; loop++){    if(argv[loop][0] != '-'){      fflag = 1;      numlines = numchars = numwords = 0;        if((yyin = fopen(argv[loop],"rb")) != NULL){        if(first){          first = 0;	} else {          YY_NEW_FILE;	}        (void) yylex();        fclose(yyin);        totwords += numwords;        totchars += numchars;        totlines += numlines;        printf("file  : %25s :",argv[loop]) ;        if(lflag){          fprintf(stdout,"lines %5d ",numlines);         }        if(cflag){          fprintf(stdout,"characters %5d ",numchars);         }        if(wflag){          fprintf(stdout,"words %5d ",numwords);         }        fprintf(stdout,"\n");      }else{        fprintf(stderr,"wc : file not found %s\n",argv[loop]);      }     }  }  if(!fflag){    fprintf(stderr,"usage : wc [-l -w -c] file [file...]\n");    fprintf(stderr,"-l = count lines\n");    fprintf(stderr,"-c = count characters\n");    fprintf(stderr,"-w = count words\n");    exit(1);  }  for(loop=0;loop<79; loop++){    fprintf(stdout,"-");  }  fprintf(stdout,"\n");  fprintf(stdout,"total : %25s  ","") ;  if(lflag){    fprintf(stdout,"lines %5d ",totlines);   }  if(cflag){    fprintf(stdout,"characters %5d ",totchars);   }  if(wflag){     fprintf(stdout,"words %5d ",totwords);   }  fprintf(stdout,"\n");  return(0);}

⌨️ 快捷键说明

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