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 :

[re] récuperer les production d'une grammaire


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Par défaut [re] récuperer les production d'une grammaire
    bonjour tout le monde.
    je cherche une moyen d'extraire les productions d'une grammaire
    une grammaire est presenté comme suit ( un exemple )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    S->'aa'S | A ;
    A-> 'b'A | 'c'S ;
    j'explique :
    les terminaux doivent etre entre des ' '
    les variables sont représentés par des majuscules
    chaque production dois se terminer avec un ;
    les differents members droits d'une production sont séparés par des |


    pour mon programme je voudrais obtenir une liste de produtions
    j'ai penser a utiliser une expression réguliere mais j'arrive pas a obtenir des resultats satisfaisants
    voila mon code (l'expression reguliere que j'ai utiliser) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    x=re.compile("[A-Z]->['\w+'[A-Z]+|]+;")
    mais ça ne donne rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    a="""
    S->'aa'S|A;A->'b'A|'c'S;
    """
    >>> x.findall(a)
    ["S->'aa'S", "A->'b'A"]
    voila
    le resultat que j'attendais c'etais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ["S->'aa'S|A;", "A->'b'A|'c'S;"]
    j'esepre que j'ai bien expliqué mon probleme

    merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    "|" est un caractère spécial dans les regex
    De plus tu mélanges classes de caractères et groupes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=re.compile(r"[A-Z]->(?:'\w+'[A-Z]+\|)+;")

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Par défaut
    merci pour l'aide
    je crois que j'ai trouver ,j'utilise maintenant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x=re.compile("[A-Z]->(?:'\w+'|[A-Z]|\|)*;")
    c'est a dire apres le -> on trouve soit une variable soit un terminal soit un separateur
    et ça semble bien fonctionner
    merci encore

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

Discussions similaires

  1. Récuperer les infos d'une video (help)
    Par sunburn dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2006, 12h30
  2. Réponses: 3
    Dernier message: 15/05/2006, 16h09
  3. Réponses: 12
    Dernier message: 02/05/2006, 19h37
  4. requette pour récuperer les clefs d'une table
    Par mauroyb0 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 15/04/2006, 16h19
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

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