=============== INDICATIONS =================
1 - METHODE :
- progressive, avec tests au pas a pas
. ne pas hesiter a multiplier les versions intermediaires
. essayer chaque nouvelle definition sur un test separe
. si une expression complexe ne fonctionne pas, regresser en
une version provisoire qui teste chaque composant isolement
- eviter les ambiguites entre plusieurs macro-definitions
2 - CAS PARTICULIERS
a) SPECIFICATION DE '(' ')' '{' '}' '(' ')' DANS LEUR SENS USUEL
- des specifs comme '(' et ')' peuvent ne pas fonctionner.
- utiliser alors \( \) ou bien [(] [)]
- une definition encore plus indirecte peut s'averer necessaire, p.ex.
OSB \[
CSB \]
%%
{OSB}{CSB} { /* opening/closing square bracket pair */ }
b) UNITES A PLUSIEURS CHAMPS SEPARES PAR DES ESPACES :
on DOIT specifier ces espaces dans l'expression reguliere
3 - AIDE A LA MISE AU POINT : UNE FONCTION D'ECHO PLUS CLAIRE
On pourra utiliser la fonction titledEcho() definie comme ci-dessous
(attention, pour l'affichage web, un espace a ete ajoute apres le '<') :
- visualise le fragment entre deux delimiteurs, encadre par les header/trailer
- pour un meilleur debogage, elle force l'impression immediate
%{
#include < stdio.h>
void titledEcho( char *header, char * trailer )
{
printf( "[%s:%s]%s", header, yytext, trailer );
fflush(stdout);
}
%}
%%
yahdahyahdah { titledEcho("DOUCE MELODIE","\n"); }
...
%%
Resultat a la reconnaissance ==> [DOUCE MELODIE:yahdahyahdah]