TP de compilation : une solution de l'exercice 2 du TP 3
%{
int nmaj=0;
int nmin=0;
%}
%s tiret
%s anomalie
%%
^\n
{return 0;}
<INITIAL>"-"
{ BEGIN(tiret); nmaj=0; nmin=0; }
<INITIAL>[A-Za-z] ;
<INITIAL>.
{BEGIN(anomalie);}
<tiret>"-"
{if ((nmin%2!=0) || (nmaj%2!=0)) BEGIN(anomalie);
nmaj=0; nmin=0;}
<tiret>[A-Z] {nmaj++;}
<tiret>[a-z] {nmin++;}
<tiret>.
{BEGIN(anomalie);}
<anomalie>. ;
<INITIAL,tiret>\n
{ BEGIN(INITIAL); nmaj=0; nmin=0; printf("mot accepté\n"); }
<anomalie>\n
{BEGIN(INITIAL); nmaj=0; nmin=0; printf("mot refusé\n"); }
© 2000, 2017 – A. Sigayret