%{
int na=0;
int nb=0;
%}
%s anomalie
%%
^\n
{return 0;}
a
{na++;}
b
{nb++;}
<INITIAL>.
{BEGIN(anomalie);}
<anomalie>. ;
<INITIAL>\n {if (na==nb) printf("mot accepté\n");
else printf("mot refusé : pas autant de 'a' que de 'b'\n");
nb=0; na=0;}
<anomalie>\n
{ nb=0; na=0; BEGIN(INITIAL);
printf("mot refusé : caractère inattendu\n"); }