word_count_functor.flex
来自「Boost provides free peer-reviewed portab」· FLEX 代码 · 共 60 行
FLEX
60 行
%{// Copyright (c) 2001-2008 Hartmut Kaiser// // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#include <boost/timer.hpp>#if defined(_WIN32) #include <io.h>#endif #define ID_WORD 1000 #define ID_EOL 1001 #define ID_CHAR 1002%}%%[^ \t\n]+ { return ID_WORD; }\n { return ID_EOL; }. { return ID_CHAR; }%%bool count(int tok, int* c, int* w, int* l){ switch (tok) { case ID_WORD: ++*w; *c += yyleng; break; case ID_EOL: ++*l; ++*c; break; case ID_CHAR: ++*c; break; default: return false; } return true;}int main(int argc, char* argv[]){ int tok = EOF; int c = 0, w = 0, l = 0; yyin = fopen(1 == argc ? "word_count.input" : argv[1], "r"); if (NULL == yyin) { fprintf(stderr, "Couldn't open input file!\n"); exit(-1); } boost::timer tim; do { tok = yylex(); if (!count(tok, &c, &w, &l)) break; } while (EOF != tok); printf("lines: %d, words: %d, characters: %d\n", l, w, c); fclose(yyin); return 0;}extern "C" int yywrap() { return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?