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

Python Discussion :

[Projet][Open source] parser ebnf vers du xml


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par défaut [Projet][Open source] parser ebnf vers du xml
    Bonjour,

    Je viens de mettre un ligne un bout de code qui permet de parser un fichier source d'après une grammaire de style EBNF et de le transformer en un fichier XML.

    Cela m'a pris un moment pour faire ces quelques lignes. Cependant je n'ai pas trouvé d'équivalent sur Internet.

    Ce bout de code n'est pas un produit final mais plutôt un brouillon.

    Je vous encourage à me faire part dans ce fil ou en MP de vos observations sur mon idée, et/ou si vous souhaitez participer à l'amélioration de ce code.

    https://github.com/sxf-labs/misc/tree/master/sebnf

    Pour le tester le plus simple est de lancer run.sh

    Merci.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut Page suspecte pour FireFox
    Salut, je ne répond pas au post, je ne connais pas l'EBNF.

    Juste pour signaler que FireFox bloque cette page sous prétexte qu'elle est suspecte d'installer des logiciels malveillants.

    Ce qui n'est pas le cas, bien sur.


    Edit: Quand j'ai cliqué 'Ce site n'est pas malveillant', j'ai eu droit à une grande page m'indiquant que c'est Google qui l'a blacklistée. ... comprenne qui pourra.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par défaut
    Bonjour,

    Moi aussi j'ai eu cette alerte, mais je pense que c'est pour tout developpez.

    NB: (J'espère ne pas en être la cause ).

    @Admin:
    • J'ai mis ce post dans la section python car le script est en python. Peut-être qu'un autre fil est plus adapté. Je vous laisse juge. Merci
    • Si comme je le pense, le problème de blacklistage du site par mozilla/google est général. Peut-être pourriez vous supprimer les posts qui n'ont pas de rapport avec le sujet de ce fil. Merci



    Merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Citation Envoyé par sxf-labs Voir le message
    Moi aussi j'ai eu cette alerte, mais je pense que c'est pour tout developpez.
    Je confirme car moi j'étais sur une autre page et j'ai eu aussi le "blocage"

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par défaut
    Bonjour,

    Soit mon premier post n'a pas été très vendeur, soit il présente d'intérêt que pour moi.

    J'ai enrichi le repertoire github d'un fichier README.md pour présenter de manière plus explicite en quoi consiste ces scripts.

    Je réitère donc mon premier post :

    Ce bout de code n'est pas un produit final mais plutôt un brouillon.

    Je vous encourage à me faire part dans ce fil ou en MP de vos observations sur mon idée, et/ou si vous souhaitez participer à l'amélioration de ce code.

    Je rappelle le lien vers le dépôt :
    https://github.com/sxf-labs/misc/tree/master/sebnf

    Merci.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Bonjour,

    je n'ai pas encore tout lu, mais je vois déjà une chose qui peut être simplifiée.

    Créer dynamiquement des méthodes dans la classe EBNF, c'est pas vraiment nécessaire. Je réécrirais plutôt la méthode parse comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      def parse(self, key):
        """
          Methodes generiques qui construits un dictionaire avec les tokens
          obtenus et la cle passe en parametres
        """
        def action(str, loc, toks):
            log.debug("%s -> %s"%(key,toks))
            return { key : list(toks) }
        return action
    Et donc, par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    meta_identfier = Word(alphas, alphanums + '_').setParseAction(self.parse_metaidentifier)
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    meta_identfier = Word(alphas, alphanums + '_').setParseAction(self.parse('metaidentifier'))
    Et du coup les méthodes add_builtin_parse_function et add_parse_idents deviennent inutiles.

    [EDIT:] et on dirait que l'attribut repo_keys ne sert à rien; il est mis à jour mais jamais lu

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par défaut
    Bonjour,

    J'ai pas encore testé ce que tu dis, mais cela me semble exacte.

    J'avais fait ceci dans le but d'homogénéiser. En effet, les fonctions action appelées par le programme pendant l'analyse du code source (pas de la grammaire) sont construites dynamiquement. Du coup j'ai de même pour la grammaire.

    Merci.

    [EDIT]

    C'est possible, comme je l'ai dit c'est un brouillon. Mon idée en postant ceci ici, était de savoir si vous connaissez des scripts qui font la même chose. Je sais qu'il est encore buggé. Mais pour les besoins que j'ai, ca me suffit. Je me suis pas encore décidé, si j'allais le maintenir et le faire vivre. Ca dépendra peut-être des retours que j'aurai.

    Merci.

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Citation Envoyé par sxf-labs Voir le message
    En effet, les fonctions action appelées par le programme pendant l'analyse du code source (pas de la grammaire) sont construites dynamiquement. Du coup j'ai de même pour la grammaire.
    Tu fais référence à la fin de la méthode grammar ? Ben là aussi, on peut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.repo[k].setParseAction(self.parse(k))
    Mon idée en postant ceci ici, était de savoir si vous connaissez des scripts qui font la même chose. Je sais qu'il est encore buggé. Mais pour les besoins que j'ai, ca me suffit. Je me suis pas encore décidé, si j'allais le maintenir et le faire vivre. Ca dépendra peut-être des retours que j'aurai.
    La même chose, non... Je suppose que tu as vu ceci: http://pyparsing.wikispaces.com/file/detail/ebnf.py ?
    Je connais pas bien l'EBNF, mais l'annotation des règles (@literal, @token, @rule), c'est qqch que tu as ajouté ? Est-ce que c'est vraiment nécessaire de faire cette distinction ?

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par défaut
    C'est vrai que je suis parti de l'exemple sur le site de pyparsing que tu cites.
    C'est vrai aussi que j 'ai ajouté les annotations (@...) .

    Mon idée de pouvoir créer un parseur et de contrôler le format de sorti (les balises XML) généré uniquement à partir du seul fichier de grammaire. Ce qui permettrait de parser des sources en écrivant que la grammaire et pas tout le moteur que j'ai essayé d'écrire.

    L'idée est de se simplifier la tâche : j'ai un format de fichier suffisament structuré. Je crée la grammaire qui va avec (un seul fichier dans l'idée) et j'obtiens l'équivalent XML.

    voilà.

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/12/2008, 00h57
  2. Réponses: 5
    Dernier message: 06/12/2007, 08h20
  3. [Débutant] Lancement d'un projet Open Source
    Par itanea dans le forum Général Java
    Réponses: 12
    Dernier message: 28/05/2006, 21h54
  4. Ou héberger un projet open source ?
    Par corwin dans le forum Linux
    Réponses: 11
    Dernier message: 05/05/2004, 16h33

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