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

Algorithmes et structures de données Discussion :

evaluation d'une chaine de caractere (2+3)*4/5%8


Sujet :

Algorithmes et structures de données

  1. #21
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Voici une proposition de grammaire normalisée sous forme de Greibash.
    Elle prend en compte un certain nombre d'éléments tels que les fonctions.

    Exemple: F(sqrt(int(e^(a+b))+sum(x)),sqrt(int(ln(a-b)+prod(y))))

    Expression ::= Expr
    Expr ::= Trm ExprSeq
    ExprSeq ::= OpAdd Trm ExprSeq | Vide
    OpAdd ::= '+' | '-'
    Trm ::= Fctr TrmSeq
    TrmSeq ::= OpMul Fctr TrmSeq | Vide
    OpMul ::= '*' | '/'
    Fctr ::= Sc FctrSeq
    FctrSeq ::= '^' Fctr | Vide
    Sc ::= Atome | Tfunc | '(' Expr ')' | '[' Expr ']' | '{' Expr '}'
    Atome ::= Var | Number
    Tfunc ::= Var '(' Seqc ')'
    Seqc ::= Vide | ESeqc
    ESeqc ::= Expr (Vide |, E)
    Number ::= Signe NDecimal NVirgule NExposant
    Signe ::= opAdd | Vide
    NDecimal ::= CDecimal NDecimal'
    NDecimal' ::= CDecimal NDecimal' | Vide
    CDecimal ::= '0' | ... | '9'
    NVirgule ::= ('.'|',') NDecimal | Vide
    NExposant ::= 'E' Number | Vide
    Il suffit ensuite de générer un postfix par applatissement de l'arbre des données. J'ai le code en Haskell s'il faut.

    EDIT: Var pour variable, en ensemble de lettres tq. COS ou F
    Ludo
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  2. #22
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ludo>> Il manque la définition de RMath et de Var
    Pas compris ça
    ESeqc ::= Expr (Vide |, E)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #23
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Merci Trap D pour la remarque, j'ai réédité la grammaire. Par contre, je recherche encore ce que j'ai voulu écrire par la déf. de ESeqc

    A priori, ESeqc ::= Expr (Vide | ',' ESeqc) puisque mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    seqc = (eseqc >>= \e -> return e) # return Vide
     
    eseqc = expr >>= \e -> esecqcc e >>= \f -> return f
     
    esecqcc e = (lit Comma >> eseqc >>= \f -> return (Noeud (C ",") e f)) #
    	    return e
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  4. #24
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui, j'en étais arrivé à cette conclusion en réfléchissant à tête reposée.
    Pour lire des choses du style "f(x,y,z)"
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    bon finalement j'ai fait des fonctions d'evalution pour chaque operateurs en commencant par le prioritaire (ie les parenthese) suivi de la multiplication....
    j'aurais bien aimer le faire en utilisant des piles mais il me rester trop peu de temps pour le realiser de la sorte
    merci a tous pour votre reflexion...
    vince

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Evaluer la valeur d'une variable à partir d'une chaine de caracteres
    Par batseb dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/11/2013, 09h43
  2. Evaluation d'une chaine de caractere
    Par kiwikiwi1 dans le forum Général Java
    Réponses: 2
    Dernier message: 18/04/2008, 10h46
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. evaluation d'une chaine de caracteres
    Par nath8050 dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2007, 14h49
  5. Controler une chaine de caracteres ou d'entiers?
    Par Le druide dans le forum C
    Réponses: 6
    Dernier message: 25/09/2003, 08h48

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