4
我正在建立一個詞法和語法分析器。當我嘗試對我的.l文件使用flex時,出現以下警告。正在獲取:warning,rule can not be matched
littleDuck.l:26: warning, rule cannot be matched
第26條是與{正大企業}開始的一個,我的規則段如下:
[ \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;}
. ;
而且,我的定義部分是這樣的:
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 (\".*\")
爲什麼此警告出現,以及如何修改我的文件,使其不會出現?
非常感謝您!我剛剛開始學習,現在我沒有可以使用|那樣。它絕對更清晰。另外,我沒有注意到缺少的方括號,我改變了很多東西,但沒想到會成爲問題。 – gabrielbaca 2013-02-24 23:01:02