编译器DIY之———统计英文文本中的单词数,字符数和行数
2014-06-10 09:31
621 查看
咳咳,这一章节应该是连载编译器的DIY的,可是在做DIY之前先用flex 来练练手,对于后面的理解有帮助作用。
在word 中我经常看到有一个单词统计的功能,那么是怎么来实现的了,当然第一个念头就是遍历整个文本依据换行和空格对字符串进行分析,那么这是可行的。可是能不能简单点了,其实对文本做单词分析,大家都知道怎么做,难得地方可能就是代码的实现了,那么现在如果使用正则表达式来实现的话,那么一切问题就Over 了。
环境:ubuntu(当然装了flex的windows和mac也可以)
原码:
那么解释第一个正则式[a-zA-Z]+ 表示一个或者多个由大小写字母组成的单词
[a-z\-A-z]+ 对于特殊的中间加"-"的单词
[0-9]+ 数字集合
[.|,|\b| |\t|\r] 特殊符号集合
在编写完上述代码之后,那么直接用flex 进行编译,将得到一个.c文件,接着对C文件编译生成二进制代码运行即可。
测试文本:
my name is te-name
%%%
测试结果:
统计一个英文文件中字符、单词、行数。
请输入要计算的文件名:test.txt
开始进行统计...
未定义的字符:%%%
字符数:20
单词数:4
行数 :2
在word 中我经常看到有一个单词统计的功能,那么是怎么来实现的了,当然第一个念头就是遍历整个文本依据换行和空格对字符串进行分析,那么这是可行的。可是能不能简单点了,其实对文本做单词分析,大家都知道怎么做,难得地方可能就是代码的实现了,那么现在如果使用正则表达式来实现的话,那么一切问题就Over 了。
环境:ubuntu(当然装了flex的windows和mac也可以)
原码:
%{ unsigned long chars=0; unsigned long words=0; unsigned long lines=0; %} %% [a-zA-Z]+ {words++;chars+=strlen(yytext);} [a-z\-A-z]+ {words++;chars+=strlen(yytext);} [0-9]+ {words++;chars+=strlen(yytext);} [.|,|\b| |\t|\r] {chars++;} [\n] {lines++;chars++;} %% int main() { char filename[100]; printf("统计一个英文文件中字符、单词、行数。\n"); printf("请输入要计算的文件名:"); scanf("%s",filename); yyin=fopen(filename,"r"); printf("开始进行统计...\n"); printf("未定义的字符:"); yylex(); printf("\n字符数:%ld\n", chars); printf("单词数:%ld\n", words); printf("行数 :%ld\n", lines); return 1; } int yywrap() { return 1; }
那么解释第一个正则式[a-zA-Z]+ 表示一个或者多个由大小写字母组成的单词
[a-z\-A-z]+ 对于特殊的中间加"-"的单词
[0-9]+ 数字集合
[.|,|\b| |\t|\r] 特殊符号集合
在编写完上述代码之后,那么直接用flex 进行编译,将得到一个.c文件,接着对C文件编译生成二进制代码运行即可。
测试文本:
my name is te-name
%%%
测试结果:
统计一个英文文件中字符、单词、行数。
请输入要计算的文件名:test.txt
开始进行统计...
未定义的字符:%%%
字符数:20
单词数:4
行数 :2
相关文章推荐
- 翻译器DIY它———算在英文文本中的单词数,字符和行数
- Java 文件统计:编写程序,统计英文文本文件中的字符数目和单词数目。程序运行时,输入要统计的文件的名称,程序处理后输出字符数目和单词数目
- 第7周 C语言程序设计(新2版) 例题1.5.4 统计行数、单词数及字符数
- Java读本地英文txt文本,显示行数、字数、单词出现频率
- 统计输入的行数,单词数和字符数
- [原创]c++,自己写的一个统计输入的单词个数,行数和字符总数的小程序
- 【代码】统计文件中,不同字符出现的次数(可排序,没有处理英文单词、数字和大小写)
- C语言统计输入行数、单词数、字符数
- 《c程序设计语言》读书笔记--统计 行数、单词数、字符数
- 2.统计输入的行数,单词数和字符数
- linux wc 的用法-linux 下统计行数、单词数、字符个数
- 统计一段文字的单词数、字符数和行数
- 从终端输入中统计字符数、单词数、行数,并输出单词
- 统计文件中的行数、单词数、字符数
- 统计英文文本文档中前十个出现频率最多的单词
- 统计字符个数,单词个数,行数
- 统计一个英文文本的单词出现的频率(有标点符号的)
- 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
- C语言统计输入行数、单词数、字符数