我收到警告
warning, -s option given but default rule can be matched
如果你用谷歌搜索“选项给定但默认规则可以匹配”,你会 在诊断部分的旧 Flex 手册页中找到Flex 手册中关于诊断的章节和此条目:
警告,'-s option given but default rule can be match' 意味着默认规则(匹配任何单个字符)有可能(可能仅在特定的开始条件下)是唯一匹配特定输入的规则。既然
-s
给出了,大概这不是故意的。
我的构建文件没有-s
选项。我写
bison -y -d calc1.y
flex calc1.l
gcc code...
如何解决此警告?
这是我的 lex 文件的一个小版本。此文件还会触发警告
%{
#include "y.tab.h"
%}
%option noyywrap nodefault yylineno
%%
[0-9]+ {
return INTEGER;
}
[-+()=/*{},;\n] { return *yytext; }
[ \t] /* skip whitespace */
[a-zA-Z0-9_]* { printf("lex Unknown character = '%s'", yytext); yyerror("lex Unknown character"); }
%%