Dans ce texte, en raison de l'interprètation des balises HTML,
un espace a du être ajouté apres chaque occurence du caractère '<'

Criteres generaux 
Q1
- utilisation d'une regle "balai" .|_n pour delimiter les autres fragments
- mise en evidence claire du fragment reconnu
Q2
- utilisation de macro-definitions

// ---------- lex1a.flex : ADRESSE IP ---------------------------------------

Nb	[0-9]+
%%
({N}\.){3}{N}					printf("< IPADR:%s>",yytext);
.|\n						ECHO;
%%

// ---------- lex1b.flex : CHAINES ENTRE DOUBLE QUOTES ----------------------

NonDQ		[^"]
DQString	\"{NonDQ}*\"

%%
{DQString}				       printf("< < DQSTRING:%s>>",yytext);
.|\n					       ECHO;
%%

// ---------- lex1c.flex : DATES --------------------------------------------

N	[0-9]
N2	{N}{2}
N4	{N}{4}
L	[A-Za-z]
L3	{L}{3}

%%
"["{N2}"/"{L3}"/"{N4}:{N2}:{N2}:{N2}" +"{N4}"]"	    printf("< DATE:%s>",yytext);
.|\n						    ECHO;
%%

// ---------- lex1d.flex : AUTHORITY ----------------------------------------

Nb		[0-9]+
Name		[-_A-Za-z]+
Names		{Name}(\.{Name})*

%%
^{Names}(:{Nb})?				  printf("< < AUTH:%s>>",yytext);
.|\n						  ECHO;
%%

// ---------- lex2a.flex : EXTRACTION Date + Requete ------------------------

N		[0-9]
N2		{N}{2}
N4		{N}{4}
Nb		[0-9]+
L		[A-Za-z]
L3		{L}{3}
Date		"["{N2}"/"{L3}"/"{N4}:{N2}:{N2}:{N2}" +"{N4}"]"

NonDQ		[^"]
DQString	\"{NonDQ}*\"

%{
  int lineNb = 1;	// pour numeroter les lignes
  int strNb  = 0;	// pour selectioner la 1ere chaine dans chaque ligne
%}

%%
{Date}  		  printf("%d:\t%s\n", lineNb, yytext);
\n			{ lineNb++; strNb = 0; }
{DQString}		{ if( strNb++==0 )
				fprintf(stderr,"%d:\t%s\n", lineNb, yytext); }
.			;  // on absorbe le reste, qui ne nous ininteresse pas
%%

// ---------- lex2b.flex : VERIFICATION DE FICHIER --------------------------

N		[0-9]
N2		{N}{2}
N4		{N}{4}
Nb		[0-9]+
L		[A-Za-z]
L3		{L}{3}
Name		[-_A-Za-z]+
Names		{Name}(\.{Name})*
Auth		^{Names}(:{Nb})?
NonDQ		[^"]
DQStr		\"{NonDQ}*\"
Date		"["{N2}"/"{L3}"/"{N4}:{N2}:{N2}:{N2}" +"{N4}"]"
IPAd		({Nb}\.){3}{Nb}

%{
// Les lignes OK ne sont pas affichees, seulement un message d'acceptation
// Les autres lignes, erronnees, sont affichees (par defaut tout ce qui n'est
// pas reconnu est affiche)
// Pour la commodite d'usage, on pourrait aussi afficher les nos de ligne. 
%}
%%
{Auth}" "{IPAd}" - - "{Date}" "{DQStr}" "{Nb}" "{Nb}" "{DQStr}" "{DQStr}"\n"	{
							printf("---OK !---\n");
							}
%%