TP de compilation : une solution de l'exercice 1 du TP 3
 
%{
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"); }

© 2000, 2017 – A. Sigayret