我收到警告
warning, -s option given but default rule can be matched
Run Code Online (Sandbox Code Playgroud)
如果您在 google 上搜索“给出的选项,但可以匹配默认规则”,您将在“诊断”部分的旧 Flex 联机帮助页中找到 Flex 手册关于诊断的章节和此条目:
警告,“-s 选项给出,但可以匹配默认规则”意味着默认规则(匹配任何单个字符)可能(可能仅在特定开始条件下)是唯一匹配特定输入的规则。既然
-s给出了,大概这不是故意的。
我的构建文件没有-s选项。我写
bison -y -d calc1.y
flex calc1.l
gcc code...
Run Code Online (Sandbox Code Playgroud)
如何修复此警告?
这是我的 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"); }
%%
Run Code Online (Sandbox Code Playgroud)