----- Mail original ----- > De: "Frédéric" <frederic.mantegazza@???>
> À: guilde@???
> Envoyé: Jeudi 21 Mars 2013 12:56:58
> Objet: Parser stl et regexp
>
> Ça fait un moment que je m'arrache les cheveux ; visiblement, je
> n'arrive
> pas à gérer les retours à la ligne.
Si tu essayes de parser les retours à la ligne au sein de tes regexps, je pense que c'est mal barré.
A ta place je ferais un automate, avec à vue de nez 6 etats:
cherche_solid
cherche_facet
cherche_outer_loop
cherche_endloop
cherche_endfacet
cherche_endsolid
Dans ta main loop, tu lis une ligne de ton fichier stl, puis selon ton etat actuel, tu traite la ligne differemment.
Ton etat initial est cherche_solid, où tu cherches une ligne qui matche '^ *solid '
Quand tu as trouver une ligne qui matche, tu passes dans l'état cherche_facet.
...etc...
Dans l'etat cherche_endloop, tu regardes si la ligne actuelle matche '^ *endloop'. Si ce n'est pas le cas, tu regardes si elle matche ' *vertex', et si oui tu la stocke.
En mettant des groupes dans les regexps qui permemttent de detecter les lignes, tu peux recuperer les identifiants du solid, etc...