标签归档:flex

使用flex进行代码统计

linux下的代码统计通常都依托于wc -l,网上能搜到的统计方法无外乎这种,不过通常最后都会加一句:如果需要统计去除注释的代码行数修改即可。这一句让本人大为恼火。好在有前人栽树,后人乘凉,修正和改进前人的用flex统计代码的方法,终于得到这篇博文。

加入繁琐注释和混用,设计测试文件

结果分析

总行数 纯代码行数 代码注释混合行数 纯注释行数 空行数
calc-code 25 6 4 12 3
sourcecounter 25 6 4 12 3
stat 25 14(实为6+4 = 10) 16 3

分析错误原因分析

1) 单纯的//行注释统计,默认被换算成了代码行
2) 对于怪异的/**/和//注释以及代码的混排没有进行区分

修改和增强

1.修改和增强后支持/**/和//注释以及代码的混排
2.统计的显示参考了SourceConunter的方式将代码注释混排行与纯代码行数,纯注释行数分开

用法

1)编译
flex calc-code.l
cc lex.yy.c -o calc-code
2)使用
./calc-code 文件名 …
cat 文件 | ./calc-code
./calc-code ls 目录
ls 目录 | xargs ./calc-code
注意:运行./calc-code将进入终端输入模式,按Ctrl + D结束输入

效果截图

统计的实际效果

参考文章 用flex写的一个简单代码统计工具
源代码下载 calc-code.l

用flex和bison解析配置文件

阅读Boa代码的时候,发现其配置文件使用flex/bison来进行解析,正好一直有简化项目中配置文件解析库的想法,于是将其提取出来修改并简化。

【配置文件格式】
1)元素分类
item {string}
value {string, integer, unity}

2)分隔符
空格,TAB
注释符# 仅行首有效

【用法】
1)修改conf.h中的struct conf结构体,设定自己需要的配置参数列表
2)添加conf.c,conf.h,conf_parse.l,conf_parse.y到项目源代码目录即可
3)在需要引用struct conf结构的地方加上extern struct conf sys_conf;即可
4)test.c仅仅是测试文件,实际使用时不需要这样
5)test.conf是配置文件

-*-进入代码目录
-*-输入make
-*-执行./conf_parse

【下载链接】
http://115.com/file/dpvcozxc#conf-boa.zip