咳咳。这部分应该是序列化编译器DIY的,然而,在这样做DIY第一次使用前flex 为了练练手,对于后者的理解是有帮助。

在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它———算在英文文本中的单词数,字符和行数的更多相关文章

  1. c语言统计一个文件中的单词,字符和行数

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  2. JS实现文本中查找并替换字符

    JS实现文本中查找并替换字符 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html> <head> <style type=" ...

  3. python统计英文文本中的回文单词数

    1. 要求: 给定一篇纯英文的文本,统计其中回文单词的比列,并输出其中的回文单词,文本数据如下: This is Everyday Grammar. I am Madam Lucija And I a ...

  4. 使用SQL除掉文本中特殊的ascll字符比如Enter,Tab,空格键

    一.在SQL查询的字段中如果包含tab.enter.空格键,可以使用ascii码进行替换: --替换了文本中含有tab键,Enter键,空格键的ascii码 select REPLACE(REPLAC ...

  5. SQL Server中关于基数估计如何计算预估行数的一些探讨

    关于SQL Server 2014中的基数估计,官方文档Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimat ...

  6. 在Vue中使用CodeMirror 格式显示错误 行数错乱 & 代码隐藏

    项目需要在线展示和编辑Json文件,所以需要找一个代码编辑器,因为我们的项目直接使用的 vueAdmin-template 这个模板 json编辑器也是直接从 vue-element-admin 项目 ...

  7. CodeIgniter2.0中sqlserver驱动返回受影响行数问题解决

    最近使用CI写项目时遇到的问题,当使用sqlserve链接操作时 修改和删除返回的受影响行数不对 解决办法如下: 找到ci框架目录中include\database\drivers\sqlsrv\sq ...

  8. python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数

    import os,re #代码所在位置 FILE_PATH = './' def analyze_code(codefilesource): ''' 打开一个py文件统计其中的代码行数,包括空格和注 ...

  9. DataGridView中的rows.Count比实际行数多1的原因以及解决办法

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

随机推荐

  1. 漂亮的表格样式(使用CSS样式表控制表格样式)

    根据WEB2.0风格,设计了几个表格样式,我希望你喜欢. WEB2.0推广使用div开放式布局.但并不是完全放弃使用形式,在数据表现形式而言是一个不错的选择. 本节将介绍如何使用现在CSS样式表来控制 ...

  2. 变化App.config其中值,并保存

    using System; using System.Collections.Generic; using System.Configuration; using System.IO; using S ...

  3. MDCC 2014移动开发者大会 小礼品展商活动

    MDCC 2014移动开发者大会 小礼品展商活动 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVzdGNzX2Ru/font/5a6L5L2T/fon ...

  4. Test SRM Level One: TemperatureScales

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=6038 因为TopCoder SRM比赛使用的编译器进行了升级, ...

  5. Lua语言在Wireshark中使用(转)

    1.       检查Wireshark的版本是否支持Lua 打开Wireshark,点击“HelpàAbout Wireshark”菜单,查看弹出的对话框,如果有“with Lua 5.1”表示支持 ...

  6. java序列化是什么和反序列化和hadoop序列化

    1.什么是序列化和系列化DE- 神马是序列化它,序列化是内存中的对象状态信息,兑换字节序列以便于存储(持久化)和网络传输.(网络传输和硬盘持久化,你没有一定的手段来进行辨别这些字节序列是什么东西,有什 ...

  7. 快速排序:升序+降序----java实现

    快速排序思路:先把第一个元素令为low下标,最后一个为high下标.并把第一个元素令为temp来作为标准元素.以标准元素来调整数组,使比标准元素小的都在标准元素前,比标准元素大的都在标准元素后.这样一 ...

  8. Andoird实现类似iphone AssistiveTouch的控件的demo

    类似Iphone Assistive Touch的控件的实现 网上也有些这方面的控件,不过貌似不怎么好用,或者是论坛需要积分下载,恰好自己在项目中有用到这种控件,就打算自己写一个,也成功实现了这种功能 ...

  9. sql基础之DDL(Data Definition Languages)

    好久没写SQL语句了,复习一下. DDL数据定义语言,DDL定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.经常使用的DDL语句包含create.drop.alter等等. 登录数据:my ...

  10. HDU 4915 Parenthese sequence _(:зゝ∠)_ 哈哈

    哦,我没做 #include <cstdio> #include <cstring> #include <algorithm> const int N = 1000 ...