小编gab*_*aca的帖子

获取:警告,规则无法匹配

我正在构建一个词法和语法分析器.当我尝试将flex与我的.l文件一起使用时,我收到以下警告.

littleDuck.l:26: warning, rule cannot be matched
Run Code Online (Sandbox Code Playgroud)

规则26是以{cteI}开头的规则,我的规则部分如下:

[ \t\n]     ;
{RW}        {return RESERVED;}
{id}        {return ID;}
{ops}       {return OPERATOR;}
{seps}      {return SEPARATOR;}
{cteI}      {yylval.ival = atoi(yytext); return INT;}
{cteF}      {yylval.fval = atof(yytext); return FLOAT;}
{ctestring} {yylval.sval = strdup(yytext); return STRING;}
.       ;
Run Code Online (Sandbox Code Playgroud)

另外,我的定义部分是这样的:

RW      program|var|int|float|print|else|if
id      ([a-z]|[A-Z)([a-z]|[A-Z]|[0-9])*
ops     "="|"<"|">"|"<>"|"+"|"-"|"/"|"*"
seps    ":"|","|";"|"{"|"}"|"("|")"
cteI    [0-9]+
cteF    {cteI}(\.{cteI}((e|E)("+"|"-")?{cteI})?)?
ctestring   (\".*\")
Run Code Online (Sandbox Code Playgroud)

为什么会出现此警告,如何修改我的文件以使其不显示?

yacc lex bison flex-lexer

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

bison ×1

flex-lexer ×1

lex ×1

yacc ×1