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

Langage Perl Discussion :

[EXPRESSIONS REGULIERES] et automates à pile


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut [EXPRESSIONS REGULIERES] et automates à pile
    Bonjour,

    je sais qu'il est impossible de reprèseanter les automates à piles avec une regexp mais, en perl, est-il possible de le faire quand même grasse à une fonctionalitée spéciale ?

    En claire je cherche à reconaitre une fontion (avec un nombre d'argument variable) dans un code, mais celle-ci peut contenir d'autre fonctions, ce qui complique les choses...

    Exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maFonction (arg1, arg2, arg3)
    Exemple qui nécessite de compter les parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maFonction (arg1,
    maFonction (1, 2), 
    arg3, 
    TOTO(truc, bidule, 
    TATA (1, 2, 3)))
    merci de vos réponses,
    ++floanne.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Nous avons eu un bon thread là-dessus plus tôt, il est effectivement possible d'utiliser les regex de Perl pour ce genre de chose (les regex de Perl n'étant pas de véritables expressions régulières dans le sens théorique du terme), lis donc ce sujet.

    --
    Jedaï

  3. #3
    Membre confirmé Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    merci pour ta réponse rapide, c'est exactement ce que je voulais...

    Je n'avais pas du taper les bons mots clefs...

    ++floanne.

  4. #4
    Membre confirmé Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    En cherchant sur internet, j'ai trouvé d'autre exemples mais pas du tout comanté, j'ai fait tout un tas de supositions et de copier-coller et j'en suis arrivé à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	our $expr;
    	$expr = qr{
                 \(			# on rencontre une parenthèse ouvrante
                 (?:
                    (?> [^()]* )	# on matche tous les caractères saufe les parenthèses
                  |			# OU
                    (??{ $expr })	# on fait un appel recurcif de $expr
                 )*			# là je sais pas très bien pourquoi on fait ça lol
                 \)			# on rencontre une parenthèse fermante
    	}xm;
    j'ai deux problème :
    je suis pas sûr de moi, en particulier sur le ")*" (cf commentaires)
    je ne sais pas du tout comment récupérer toutes les occurance de ce que je match...

    De plus il manque le nom de ma fonction TOTO à matcher (par exemple TOTO (arg1, arg2...) ) dans mon expression régulière...

    Si quelqu'un pouvait me donner un petit coup de pouce ce serai top

    ++floanne

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Mon exemple final ne te convient pas ? Que veux tu faire exactement avec cette fonction une fois que tu l'as reconnu ?

    --
    Jedaï

  6. #6
    Membre confirmé Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    Pour l'expression régulière je pense avoir compris...

    Par contre je ne vois pas bien comme récupérer ce que l'on match...

    j'ai l'abitude de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ($txt =~ /(ma regex)/g)
    {
       # traitement de $1
    }

    Une dernière chose (qui m'embête plus que ce qui précède) je ne sait pas comment transformer l'esxpression que j'ai posté dans mon dernier message pour reconaitre le nom de ma fonction suivit des parenthèse et de argument (j'ai pas envie de matcher tout ce qui est entre patrethèse...

    Merci, floanne.

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

Discussions similaires

  1. [langage] [Expression][Régulière] motif
    Par Cyspak dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2003, 14h24
  2. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45
  3. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  4. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  5. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14

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