Bonjour, j'ai un problème avec l'exercice suivant:
Extraction des references d'un chier html. Dans un chier html, les references distantes sont
les valeurs des attributs href des balises <a ...> et les valeurs des attributs src des balise <img ...>. Notons
d'abord qu'une balise peut avoir plusieurs attributs, separes par des (suites d') espaces. Un espace pouvant
^etre, un espace, un saut a la ligne ou m^eme une tabulation... Ensuite, les attributs qui nous interessent sont
de la forme NOM ATTR=arg, ou arg est normalement n'importe quoi (ou presque !) entre doubles quotes " ou
simples quotes '. Le presque veut dire que l'on peut mettre des simples quotes dans un argument cite entre
doubles quotes et des doubles quotes dans dans un argument cite entre simples quotes (ouf !).
Question 1 : Ecrire le chier de description url.lex permettant de recuperer l'ensemble des references
distantes d'un chier html, et uniquement elles.
Par exemple, a partir d'un chier dont le contenu serait :
votre chier doit aboutir au resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <html xmlns =" http :// www.w3.org /1999/ xhtml " xml: lang =" fr"> <head ><title > Enseignements </title ></ head > <body >< div id =" entete "> <img src ="../ photo .jpg" alt =" photo " width ="131" height ="121" /> <a HREF =" http :// www .lif .univ -mrs .fr"> <img id =" lif" SRC ="../ shared /lif .gif " alt =" Logo LIF " /> </a> </div ><h1 > Teaching </h1 ><div id =" corps "> <h2 > 3<sup >ieme </ sup > annee de licence </h2 > <p> <A href =" https :// tele . ctes .univ - provence .fr/ moodle / course / view .php ?id =179" Compilation </A> </p> <a href =" http :// www. lif.univ -mrs .fr /~ reyraud /"> Retours </a> </div > </body > </html >
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ./ photo .jpg http :// www.lif.univ -mrs.fr ../ shared /lif.gif https :// tele . ctes .univ - provence .fr/ moodle / course / view .php?id =179 http :// www .lif .univ -mrs .fr /~ reyraud /
J'ai donc essayé de créer mon fichier lex contenant mes expressions régulières :
Ce sont mes expresions regulières qui posent problème.Si vous pouviez m'aider,merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /*Section definitions */ %option noyywrap balise_ouverte \<a|\<A|\<img|\<IMG nom_attribut href|HREF|src|SRC blancs (\s)* references (\"[^"]\")*|(\'[^']\')* attribut {nom_attribut}{blancs}={blancs}{references}\> %% {nom_attribut} {printf("%s",yytext);} %% #include <stdio.h> int main(int argc, char* argv[]) { if ( argc > 1 ) { yyin = fopen( argv[1], "r" ); if(yyin == NULL) { fprintf(stderr,"Erreur : %s.\n",strerror(errno)); exit(EXIT_FAILURE); } yylex(); } fclose(yyin); exit(0); }
Partager