title: Getting: warning, rule cannot be matched
body: <p>I am working on building a lexical and syntax analyzer. I am getting the following warning when I try to use flex with my .l file. </p>
  
  <pre><code>littleDuck.l:26: warning, rule cannot be matched
  </code></pre>
  
  <p>Rule 26 is the one that starts with {cteI}, my rules section is the following:</p>
  
  <pre><code>[ \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;}
  .       ;
  </code></pre>
  
  <p>Also, my definitions section is this:</p>
  
  <pre><code>RW      program|var|int|float|print|else|if
  id      ([a-z]|[A-Z)([a-z]|[A-Z]|[0-9])*
  ops     "="|"&lt;"|"&gt;"|"&lt;&gt;"|"+"|"-"|"/"|"*"
  seps    ":"|","|";"|"{"|"}"|"("|")"
  cteI    [0-9]+
  cteF    {cteI}(\.{cteI}((e|E)("+"|"-")?{cteI})?)?
  ctestring   (\".*\")
  </code></pre>
  
  <p>Why is this warning appearing, and how can I modify my file so it will not appear?</p>