Discussion:CIDE (2010) Dufrêne

De CIDE

Cet article sert à la mise au point d'un programme lex pour les biblio CIDE

cat <<... >biblioCideMaj.lex
 int reste;
%START Z1
%START Z2
%START Z3
%START Z4
%START URL
%%
^"["   { if (reste>0) printf("}}\n");
         reste=1;
         printf ("{{CIDE biblio\n  |id="); BEGIN Z1;}
^"<"    { if (reste>0) printf("}}\n");
          printf(":<small><nowiki>< </nowiki>");
          BEGIN URL;
         }
<URL>">" { printf("<nowiki> > </nowiki></small>"); reste=0;}
<URL>.   ECHO;
<Z1>"]"/[\t ]*[A-Z][A-Z]+[ ]+[A-Z]".," {printf ("\n  |auteur="); BEGIN Z2;}
<Z1>"]"   {printf ("\n  |texte="); BEGIN 0;}
<Z1>.   ECHO;
<Z4>".,"   {printf (".\n  |texte="); BEGIN 0;}
<Z2>[\t ] ;
<Z2>.   {ECHO; BEGIN Z3;}
<Z3>[A-Z]  putchar(tolower(*yytext));
<Z3>. {ECHO; BEGIN Z4;}
<Z4>. ECHO;
%%
main ()
{
  reste=0;
  yylex();
  if (reste>0) printf("}}\n");
}
...
lex biblioCideMaj.lex
gcc lex.yy.c -ll -o biblioCideMaj
./biblioCideMaj <<...
...