《Flex&Bison》例2-2代码
2014-06-18 17:04
267 查看
该示例统计一个或多个输入文件中的行数、单词数及字符数。最后汇总的所有文件的行数、单词数及字符数。
如果没有提供输入文件,则从标准输入获取输入。
CMakeLists.txt
fb2-2.txt
如果没有提供输入文件,则从标准输入获取输入。
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(PROJ_NAME fb2-2) PROJECT(${PROJ_NAME}) find_package(Flex) FLEX_TARGET(MyScanner ${PROJ_NAME}.txt ${CMAKE_CURRENT_BINARY_DIR}/lexer.c) ADD_EXECUTABLE(${PROJ_NAME} ${FLEX_MyScanner_OUTPUTS})
fb2-2.txt
%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 += yyleng; } \n { ++lines; ++chars; } . { ++chars; } %% int main(int argc, char ** argv) { int i; if (argc<2) { 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[i]); 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; }
相关文章推荐
- FLEX&BISON:去除C代码注释和其中的多余空行
- 《Flex & Bison》例2-1代码
- flex、bison代码在visual studio 编译
- Flex&Bison Tips(2010-08-27) 如何在VC中更好的断点调试flex&bison词法和语法分析器
- Flex&Bison Tips - 如何改善 flex & bison 在VC下的编辑环境
- 使用 flex & bison 生成科学计算器
- 创建一门新的编程语言-Flex&Bison&libjit-(5)-流行jit工具之一-libjit
- Flex &amp; Bison 计算器性能
- [Flex&Bison]正则表达式简介以及简单的Flex程序
- 创建一门新的编程语言-Flex&Bison教程-(3)-更实用的小计算器
- 创建一门新的编程语言-Flex&Bison教程-(2)-加减乘除
- flex&bison 1
- Flex&Bison Tips (2010-08-27) 应用auto_ptr避免内存泄露
- bison & flex
- flex & bison学习(三)
- 最简单的flex & bison例子
- Flex&Bison Tips(2010-08-26)如何改善 flex & bison 在VC下的编辑环境
- flex & bison学习(二)
- Fms3和Flex打造在线多人视频会议和视频聊天(附原代码)<视频聊天,会议开发实例3>
- [flex & bison]编译器杂谈