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 { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |