词法分析程序统计字符和行数

利用lex的工具进行词法分析程序统计字符和行数,首先我们要先去写一个lex描述文件,设置辅助定义部分,规则部分和用户子程序部分,其中lex工具是一个词法分析程序的自动构造工具

lex描述文件部分如下所示

%{
    int num_lines=0,num_chars=0;
%}
%%
\n {++num_lines;++num_chars;}
. {++num_chars;}
%%
main(){
    yylex();
    printf("# of lines=%d,#of chars=%d\n",num_lines,num_chars);
}
  • 然后我们打算用命令行输入lex count.l命令,其中count.l是lex的描述文件名,然后会生成一个lex.yy.c文件
  • 然后我们输入cc -o count lex.yy.c -ll命令,其实这里就是再去利用编译器clang(只是终端命令使用了cc,但其实这只是一个链接指向的是clang编译器)去对lex.yy.c进行编译,选项-o count指令了可执行文件名为count,不指定默认为a.out,-ll是lex库文件的选项,其中,-ll表示链接lex的相关库文件,要想编译时不带-ll选项,就必须实现main函数和yywrap函数(return 1即可)。
  • 之后我们就去指向这个可执行文件,使用./count < count.l 其中输入的参数就是count.l的文本,执行结果是输出文件count.l中文本的行数和字符数

执行结果如下所示

这里写图片描述

如果我们自己去创建了一个abc.c文件,然后我们通过这个构造的词法分析程序去分析其的字符数和换行数的话结果如下所示

首先我们看下我们abc.c文件的内容

这里写图片描述

输出结果如下所示

这里写图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值