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 :

Réaliser un parser


Sujet :

Python

Vue hybride

DrTank Réaliser un parser 20/07/2008, 20h49
Garulfo C'est normal que les lignes... 20/07/2008, 20h55
DrTank Le problème est qu'il n'y a... 20/07/2008, 21h35
DrTank je pense avoir trouvé, il... 20/07/2008, 21h58
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Par défaut Réaliser un parser
    Hello,

    Je suis en train de concevoir un paser de fichier .map (fichier issu d'une compilation) en python. J'utilise PLY qui est une implémentation des outils Lex et Yacc pour python.

    J'ai donc créé une grammaire et développé le code correspondant pour filtrer les lignes qui m'intéressent dans un fichier .map . Cependant les lignes qui ne correspondent pas à la syntaxe décrite semblent parasiter le fonctionnement.
    J'entends par la que si ces lignes sont présentent je n'obtiens pas un résultat satisfaisant, certaines lignes dont la syntaxe est bonne n'apparaissent pas. En revanche si j'enleve ces lignes parasites du fichier .map et que je le parse, j'obtiens un résultat correct.

    D'ou ma question, comment ignorer les lignes qui ne correspondent pas à la syntaxe décrite, c'est normalement le but d'une grammaire non ?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par DrTank Voir le message
    [...]Cependant les lignes qui ne correspondent pas à la syntaxe décrite semblent parasiter le fonctionnement. [...]
    D'ou ma question, comment ignorer les lignes qui ne correspondent pas à la syntaxe décrite, c'est normalement le but d'une grammaire non ?
    C'est normal que les lignes qui ne sont pas prévues dans la syntaxe pose problème. Il faut que tu modifies ta grammaire pour en tenir compte.

    Maintenant tu as peut-être un moyen simple de les caractériser (genre: elles commencent toujours par \\) et c'est beaucoup plus simple bien sûr.

    Tu devrais aller poster dans le forum Python. Il y a peut-être des particularités propres à ton parser qui pourrait être exploitée.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Par défaut
    Le problème est qu'il n'y a pas moyen de caractériser ces lignes "lexicalement".

    Par exemple c'est comme si j'avais une grammaire du type :
    phrase : sujet verbe complément

    et que dans mon fichier j'ai :

    1. sujet verbe complément
    2. verbe
    3. sujet verbe complément


    ainsi la 2e ligne ne devrait pas être retenue par le parser, pourtant celui m'affiche 'erreur de syntaxe'

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Par défaut
    je pense avoir trouvé, il faut utiliser la fonction yacc.errok()

    yacc.errok(). This resets the parser state so it doesn't think it's in error-recovery mode. This will prevent an error token from being generated and will reset the internal error counters so that the next syntax error will call p_error() again.
    ainsi lorsqu il rencontre un token qui ne correspond pas à la grammaire, il l'ignore


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JAXP] com.sun.xml.parser.ValidatingParser
    Par yolepro dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 05/11/2008, 15h36
  2. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  3. [Radio fréquence] réalisation d'une application
    Par WriteLN dans le forum Développement
    Réponses: 14
    Dernier message: 05/06/2003, 14h36
  4. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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