加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex-lexer – Flex yylineno设置为1

发布时间:2020-12-15 02:16:22 所属栏目:百科 来源:网络整理
导读:我正在为tcpdump日志编写一个简单的解析器,你能不能告诉我为什么我得不到正确的行号? %{char str[80];%}%option yylineno...%%^{HOURS}:{MINUTES}:{MINUTES} if(input()=='.') { strcpy(str,yytext); BEGIN(A); } else {printf("Wrong hour %d",yylineno);
我正在为tcpdump日志编写一个简单的解析器,你能不能告诉我为什么我得不到正确的行号?
%{
char str[80];
%}
%option yylineno

...
%%

^{HOURS}:{MINUTES}:{MINUTES} if(input()=='.') { strcpy(str,yytext);  BEGIN(A); } else {printf("Wrong hour %d",yylineno); }
<A>({NDPS}|{DPS}).({NDPS}|{DPS}).({NDPS}|{DPS})|.{NDPS} printf("Wrong IP!,%d",yylineno);
<A>[ ]{DPS}.{DPS}.{DPS}.{DPS} strcat(str," from "); strcat(str,yytext+1); BEGIN(B);
...

解决方法

当我尝试这个时,事实证明我必须有一个规则,实际上匹配yylineno的换行符进行更新.使用以下规则它是有效的,没有它yylineno永远不会改变:
n { }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读