Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1105 connectés 

  FORUM HardWare.fr
  Programmation
  C

  flex et multi tokens

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

flex et multi tokens

n°996783
peyrouz
Posté le 01-03-2005 à 09:20:25  profilanswer
 

Bonjour,
 
J'ai déjà posté hier pour des problemes sur une liste chainée.
Aujourd"hui mes problemes viennent de Flex.
 
Je dois tokenizer des pages html.
Voici mon code :

Code :
  1. %{
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "pile.h"
  5. pile *tags;
  6. int i =0;
  7. char *chaine;
  8. %}
  9. %s TAGS
  10. %%
  11. <INITIAL>"<!--"((.|\n)*)?"-->"|"<script"((.|\n)*)?"script>"|"&nbsp;"|"\n"|"\t"|[" "]+|"</"[^>]+">"  {putchar(' ');}
  12. <INITIAL,TAGS>"<"(\"[^\"]*\"|\'[^\']*\'|[^\'\"\>])*">" {
  13.   chaine = malloc(sizeof(char)*(strlen(yytext)+1));
  14.   strcpy(chaine, yytext);
  15.   insererElement(&tags, chaine);
  16. }
  17. <INITIAL><<EOF>> {
  18.   afficherElements(tags);
  19.   return 1;}
  20. %%
  21. main( argc, argv )
  22. int argc;
  23. char **argv;
  24. {
  25.   ++argv, --argc;
  26.   if ( argc > 0 )
  27.     yyin = fopen( argv[0], "r" );
  28.   else
  29.     yyin = stdin;
  30.  
  31.   yyout = fopen("words.txt", "w" );
  32.   tags=NULL;
  33.   yylex();
  34. }


 
Je peux ainsi récupérer d'un coté tous les tags dans une liste chainée (en ayant supprimer tous ceux dont je ne veux pas).
Je récupère également tout le reste qui n'a pas été reconnu (c'est à dire les mots ou le texte) dans la sortie du lexer que j'ai redirigée vers le fichier words.txt.
 
Mon problème est que je dois encore découper les tags afin de les découper en petits morceaux (suivant les espaces,",/,. etc) ainsi que récupérer les urls (qui peuvent etre aussi bien dans les tags que dans le texte) et transformer les majuscules en minuscules.
Je dois également découper le texte en mots.
 
Je voudrai savoir si le meilleur moyen (le plus rapide) est de relancer un yylex() avec un yy_scan_string() pour les tags et en redirigeant yyin sur words.txt autant de fois que necessaire pour obtenir tous mes tokens, sachant qu'ensuite je devrais faire ce travail sur un repertoire contenant 2000, voir plus, fichiers html.
 
Mes autres solutions sont d'utiliser la libpcre qui permet de faire des regexp de style python (mais je prefere eviter cette solution), ou strtok pour decouper mes chaines (mais je ne pourrais pas tout avoir).
 
Y a t il une autre solution sous flex m'évitant de stoker temporairement mes resultats pour les retokenizer derriere, c-a-d tout faire d'un seul coup ?
 
Je vous remercie d'avance de vos reponses.

mood
Publicité
Posté le 01-03-2005 à 09:20:25  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  flex et multi tokens

 

Sujets relatifs
Multi-CSS, code PHP pour en changer, et le conserver[htacces] aide multi sous domaine
[EDIT] Question license : code multi architecture vectoriellejava JADE (multi agent), question sur les behaviours en parrallèle
Multi pop-up ???[MYSQL] Requete multi base de données
[MinGW/Boost.Thread] Segfault multi-threading[php/mysql]Creation multi table
OpenGL : opaque derriere multi blending...ca part en sucettemulti-compilation avec gcc sous VisualC++ 6
Plus de sujets relatifs à : flex et multi tokens


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR