Discussion:CIDE (2011) Chartron
De CIDE
Cet article sert à la mise au point d'un programme lex pour les biblio CIDE
cat <<... >biblioCideNum.lex
int reste;
int tolower();
%START Z1
%START A1
%START A2
%START A3
%START A4
%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>")"/[A-Z][a-z]+[ ]+[A-Z][A-Z]+ {printf ("\n |auteur="); BEGIN A2;}
<Z1>")"/[ \t]+[A-Z][a-z]+[ ]+[A-Z][A-Z]+ {printf ("\n |auteur="); BEGIN A1;}
<Z1>")" {printf ("\n |texte="); BEGIN 0;}
<A1>[ \t]+ {printf(" "); BEGIN A2;}
<A1>. ECHO;
<A2>[ \t]+ {printf(" "); BEGIN A3;}
<A2>. ECHO;
<A3>. {ECHO; BEGIN A4;}
<A4>[A-Z] putchar(tolower(*yytext));
<A4>. {printf ("\n |texte="); BEGIN 0;}
%%
main ()
{
reste=0;
yylex();
if (reste>0) printf("}}\n");
}
...
lex biblioCideNum.lex
gcc lex.yy.c -ll -o biblioCideNum
./biblioCideNum <<...
...