zoukankan      html  css  js  c++  java
  • flex & bison学习(二)

    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/fb2-2.l,v 2.1 2009/11/08 02:53:18 johnl Exp $
     */

    /* 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;
    }

  • 相关阅读:
    GridView怪问题,更新时读取不到编辑后的值
    又过了一周
    虚惊一场
    [Joomla] 利用configuration.php存储简单数据
    [Joomla] Phoca Gallery 2.7去版权的方法
    SL还能做什么?
    [Joomla] Joomla 1.5不支持PHP 5.3
    [ecshop] 库项目的添加过程
    [Joomla] 著名CMS系统Joomla的后台图文解说
    了解Joomla
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2250184.html
Copyright © 2011-2022 走看看