flex-lexer – Flex yylineno设置为1

前端之家收集整理的这篇文章主要介绍了flex-lexer – Flex yylineno设置为1前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为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 { }

猜你在找的Flex相关文章