FPM, Chanson de Roland (1869) F. Michel, aspects techniques
De Wicri Chanson de Roland
Outils d'aide à la mise en ligne
Un programme lex est utilisé pour transformer le fichier xml en brouillon de lignes wiki.
- Fichier testFPM_41.xml
<?xml version="1.0" encoding="UTF-8"?>
<text nbWords="410">
<word left="111" top="149" height="41" width="61" rate="90" language="" endline="false">183.)</word>
<word left="448" top="142" height="32" width="55" rate="100" language="French" endline="false">DE</word>
<word left="529" top="142" height="32" width="187" rate="100" language="French" endline="false">ROLAND.</word>
<word left="54" top="223" height="37" width="26" rate="100" language="French" endline="false">Si</word>
<word left="94" top="223" height="37" width="137" rate="100" language="French" endline="false">receverat</word>
<word left="243" top="223" height="37" width="24" rate="100" language="French" endline="false">la</word>
<word left="279" top="223" height="37" width="92" rate="100" language="French" endline="false">nostre</word>
...
<word left="935" top="1962" height="30" width="213" rate="97" language="French" endline="false">celavousmande,</word>
</text>
- Résultat souhaité
La page FPM, Chanson de Roland (1869) F. Michel, page 7 contient un texte wiki dont un extrait du contenu est :
{{FPM, CR, début texte}}
{{FPM, CR, vers |Si receverat la nostre lei plus salve* ;}}
{{FPM, CR, aster |propice au salut.}}
{{FPM, CR, vers |Chrestiens ert, de mei tendrat ses marches*, }}
{{FPM, CR, aster |Sera, de moi tiendra ses frontières.}}
- Programme lex
- (testFPM.lex)
%START JUMP
%START WORD
%START PRINT
%START NUM
int top, top1, flag;
%%
<JUMP>. ;
<JUMP>\n ;
<JUMP>"<word" BEGIN WORD;
<WORD>">"[A-Z][a-z] {if (flag==1) printf("{{FPM, CR, vers |"); printf("%s", yytext+1); BEGIN PRINT;}
<WORD>">*" {if (flag==1) printf("{{FPM, CR, aster |"); else printf("%s", yytext+1); BEGIN PRINT;}
<WORD>">" BEGIN PRINT;
<WORD>. ;
<WORD>"top=" BEGIN NUM;
<NUM>[0-9]+ {top=atoi(yytext);
if(top1!=top)
{top1=top; printf("}}\n"); flag=1;}
else {printf (" "); flag=0;}
BEGIN WORD;}
<NUM>. ;
<PRINT>"</" BEGIN JUMP;
<PRINT>. ECHO;
%%
main()
{
top1=0;
BEGIN JUMP;
yylex();
}
Mise en oeuvre :
lex testFPM.lex
gcc lex.yy.c -ll -o testFPM
./testFPM < testFPM_41.xml
Résultat :
}}
183.)}}
DE ROLAND.}}
{{FPM, CR, vers |Si receverat la nostre lei plus salve* ;}}