flex & bison学习(二)

简介: flex也可以从外部文本文件中读入要解析的文本,用yyrestart(f),可以打开多个文件并循环打开。flex也可以从外部文本文件中读入要解析的文本,用yyrestart(f),可以打开多个文件并循环打开。

flex也可以从外部文本文件中读入要解析的文本,用yyrestart(f),可以打开多个文件
并循环打开。
flex也可以从外部文本文件中读入要解析的文本,用yyrestart(f),可以打开多个文件
并循环打开。
另外%option noyywrap,使用默认的flex设置(yywrap()在读完一个输入时调用)


/* Companion source code for "flex & bison", published by O'Reilly
 * Media, ISBN 978-0-596-15597-1
 * Copyright (c) 2009, Taughannock Networks. All rights reserved.
 * See the README file for license conditions and contact info.
 * Header:/home/johnl/flnb/code/RCS/fb22.l,v2.12009/11/0802:53:18johnlExp
 */

/* fb2-2 read several files */

%option noyywrap

%{
int chars = 0;
int words = 0;
int lines = 0;

int totchars = 0;
int totwords = 0;
int totlines = 0;
%}

%%

[a-zA-Z]+    { words++; chars += strlen(yytext); }
\n        { chars++; lines++; }
.        { chars++; }

%%

main(int argc, char **argv)
{
  int i;

  if(argc < 2) { /* just read stdin */
    yylex();
    printf("%8d%8d%8d\n", lines, words, chars);
    return 0;
  }

  for(i = 1; i < argc; i++) {
    FILE *f = fopen(argv[i], "r");
 
    if(!f) {
      perror(argv[1]);
      return (1);
    }
    yyrestart(f);
    yylex();
    fclose(f);
    printf("%8d%8d%8d %s\n", lines, words, chars, argv[i]);
    totchars += chars; chars = 0;
    totwords += words; words = 0;
    totlines += lines; lines = 0;
  }
  if(argc > 1)
    printf("%8d%8d%8d total\n", totlines, totwords, totchars);
  return 0;
}

目录
打赏
0
0
0
0
10
分享
相关文章
CSS - Flex 之最直观的方式学习 Flexbox 属性(一)
CSS - Flex 之最直观的方式学习 Flexbox 属性(一)
164 1
CSS - Flex 之最直观的方式学习 Flexbox 属性(一)
CSS - Flex 之最直观的方式学习 Flexbox 属性(四)
CSS - Flex 之最直观的方式学习 Flexbox 属性(四)
164 0
CSS - Flex 之最直观的方式学习 Flexbox 属性(四)
CSS - Flex 之最直观的方式学习 Flexbox 属性(三)
CSS - Flex 之最直观的方式学习 Flexbox 属性(三)
128 0
CSS - Flex 之最直观的方式学习 Flexbox 属性(三)
CSS - Flex 之最直观的方式学习 Flexbox 属性(二)
CSS - Flex 之最直观的方式学习 Flexbox 属性(二)
144 0
CSS - Flex 之最直观的方式学习 Flexbox 属性(二)
flex学习
早就想弄个flex的东西了...总是没有心情弄..有的时候项目让人心力憔悴...   最近,,想着是破罐子破摔..弄点别的东西...换个心情..然后在去弄下项目...(已经快接近尾声了)   总是在开发的第一线..技术上面什么都弄..公司里面还要应付其他同事的问题...   能帮助别人就帮助吧..本人也没有别的什么有点..就代码上面略有研究.(投入的时间多了自然就有所领悟了)   1,先弄个s
1324 0