IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

meilleur methode pour parser un document mse


Sujet :

C++

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Par défaut meilleur methode pour parser un document mse
    bonjour, je dois sortir des donnés d'un document mse qui a syntaxe du genre

    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
     
    (Moose.Model (entity 
    (FAMIX.Class 
    	(id: 136337)
    	(name 'MyTorrentsView$4')
    	(belongsTo (idref: 97160))
    	(isAbstract false)
    	(isInterface false)
    	(fileName 'FILE:/home/elekis/Desktop/Azureus_2.5.0.0_source.zip_FILES/org/gudy/azureus2/ui/swt/views/MyTorrentsView.java')
    	(startLine 0 )
    	(endLine 17 )
    	(WMC 7.0)
    	(TCC 0.0)
    	(WLOC 16.0)
    	(WNOS 14.0)
    	(WNOCond 4.0)
    	(WNOCmts 0.0)
    )
     
    (FAMIX.InheritanceDefinition 
    	(id: 344662)
    	(subclass (idref: 136337))
    	(superclass (idref: 43625))
    )
    ))
    et j'aimerais savoir quelle est la meilleur methode,
    le truc, c'est que le fichier fait 33 mega de parenthese ouvrante et fermente.
    et qu'il y a pas mal de chose dont je n'ai pas besoin , comme par exemple ici la superclasse.
    donc il peut passer (superclass (idref: 43625)), et a certain moment il peut carement passé tout un gros bloc du genre FAMIX.InheritanceDefinition.


    voila, qqn aurait il une idée.

    merci

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Personellement, si j'avais à faire cela, je le ferais en python.

    Mais, bon en C++, il y a la librairie STL.

    Voici le lien sur l'excellente FAQ de ce forum

    http://c.developpez.com/faq/cpp/?page=fichiers

    Bon courage

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ta grammaire me parait à la fois simple et complexe.
    Je n'ai pas vu des problèmes d'interprétations possibles. Mais j'ai vu une structure hiérarchique.

    Soit, je sortirais un outil adapté sans forcément partir sur lex/yacc
    Boost.spirit peut-être ? Eventuellement ANTLR ?

    A moins que tu voulais parler de générer le document ? (d'un coup j'a un doute)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Comme d'habitude quand il s'agit de parser un fichier, il y a quelques questions a se poser:
    * est-ce que le format est bien defini quelque part ou bien il faut le deduire d'exemple (auquel cas, a-t'on des exemples en nombre suffisant?)
    * est-ce qu'on peut supposer que le fichier a bien le format donne ou bien il faut valider en profondeur?
    * est-ce qu'il faut etre capable de reecrire les donnees non interpretees par la suite ou bien on peut les ignorer totalement?
    * est-ce qu'un traitement en ligne est possible ou bien il faut avoir tout charge (apres filtrage eventuel des donnees a priori non pertinentes)?

    Dans ton cas (parser des sexp), c'est tout bete, tant que tu te contentes de la structure hierarchique et que tu n'as pas a faire de validation (c'est meme plus simple que de parser du SGML ou de XML -- qui en premiere approximation n'est que du SGML bride a pour decrire des sexp). Tu vas te retrouver dans le meme genre de choix que pour les parseurs XML: en faire un specialise a ton probleme, en trouver ou en faire un plus generique qui fonctionne par callback, en trouver ou en faire un plus generique qui batit une structure de donnee equivalent au fichier qui est traitee apres. Je ne suis pas sur que chercher un parseur generique vaille la peine, il est probable que ta structure lexicale soit beaucoup plus simple que celle du XML dans toute sa splendeur. A noter que les frontieres entre les trois alternatives sont tres floues -- parser des sexp est tellement simple que les differences c'est plus une question de decoupe de code et de savoir ce qui est considere comme public et prive qu'autre chose.

    Autrement dit, a part recuperer la definition exacte du format, et d'un choix d'interface, je ne vois pas de problemes. Pose des questions plus precises si tu en as.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Par défaut
    bonjour, tout d'abord, merci pour tout.

    pour faire simple, en fait, j'en sais trop rien, je dois utiliser un logiciel qui n'a quasi pas de documentation(iplasma) et dont le seule moyen de sortir des données
    est dans le format mse http://smallwiki.unibe.ch/moose/mseformat/.

    Je n'ai aucune idée si c'est du lalr1 (mais ca en a l'air) , et effectivement, je ne dois absolument pas généré une sortie dans ce format (ouf!!!). mais je dois savoir exploité ces données . donc je dois parser un fichier de 33MG qui a ce format mse.

    j'avais dans un premier temps bien pensé a flex et yacc mais vu la simplicité de la grammaire j'aurais voulu savoir si y avait pas un truc moins lourd.

    Autre chose, tout est lineaire et en memoire cad une fois que j'ai parser le fichier je n'y revient plus dedans. donc je dois mettre toute la structure du fichiers (toutes les informations importantes ) en memoires. Les informations non importantes vont vers /dev/null.


    merci

Discussions similaires

  1. Quel est le meilleur langage pour parser un document
    Par Schnuffel dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 07/04/2011, 13h10
  2. Meilleure methode pour manipuler des images
    Par etranger dans le forum Modules
    Réponses: 2
    Dernier message: 16/02/2007, 13h06
  3. [Conception] Meilleur methode pour une opération lourde ?
    Par Death83 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/08/2006, 13h50
  4. Réponses: 5
    Dernier message: 17/08/2006, 10h10
  5. meilleur solution pour créer un document imprimable???
    Par martimacfly dans le forum XML/XSL et SOAP
    Réponses: 26
    Dernier message: 08/07/2004, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo