Partage
  • Partager sur Facebook
  • Partager sur Twitter

analysateur d'expression

numérique.

Anonyme
    30 septembre 2006 à 20:48:23

    J'aimerais votre aide pour créer un analyseur d'expression numérique.
    exemple :
    je rentre : 5+2*3+7
    j'obtiendrais par exemple :
    Expression exp = Addition(5,Multiplication(2,Addition(3,7)))
    Et si je fait :
    exp.voir() // j'obtient la chaine 5+2*3+7
    exp.calc() // j'obtient en réel de valeur 25

    merc de votre aide pour la mise en place de ceci...
    • Partager sur Facebook
    • Partager sur Twitter
      30 septembre 2006 à 21:35:37

      Les outils qui te permettront de faire ça de façon efficace sont lex et yacc. Je te conseille leurs équivalents OCaml (un langage de choix pour faire ce genre de choses), ocamllex et ocamlyacc.
      J'ai fait un programme de ton genre pour mon TPE, et ça a été vraiment simple, grâce à ces outils, en 150 lignes tu peux avoir un truc qui marche.

      Si tu veux ne pas te servir d'un programme auxiliaire, et apprendre directement les algorithmes qui les permettent de parser de cette manière (beaucoup plus compliqué, mais ça t'intéresse peut-être plus) :
      http://en.wikipedia.org/wiki/Parsing
      http://en.wikipedia.org/wiki/LL_parser
      http://en.wikipedia.org/wiki/LR_parser
      (les articles français ne sont pas actuellement assez complets)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        30 septembre 2006 à 21:57:30

        je vais prendre tes liens.
        Je doit réaliser ceci dans le langage JAVA ou C/C++ au choix.
        Je pense donc le faire en JAVA pour la simplicite de manipulation des objets...

        merci
        • Partager sur Facebook
        • Partager sur Twitter
          30 septembre 2006 à 21:59:48

          Citation

          Je doit réaliser ceci dans le langage JAVA ou C/C++ au choix.
          Je pense donc le faire en JAVA pour la simplicite de manipulation des objets...



          Tout à fait honnêtement, je ne pense pas que les objets te servent à quoi que ce soit ici. Je ne connais pas ton sujet dans le détail, c'est peut-être un peu moins basique que ce que tu dis pour l'instant, mais à priori la POO ne sert absolument à rien pour ce genre de choses.
          • Partager sur Facebook
          • Partager sur Twitter
            30 septembre 2006 à 22:03:40

            Si il utilise des arbres pourquoi pas
            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2006 à 0:50:41

              Oh oui oh oui, viens nous définir des arbres polymorphiques efficaces par composition, qu'on compare avec des arbres en OCaml et qu'on se marre un peu :p
              • Partager sur Facebook
              • Partager sur Twitter
                1 octobre 2006 à 11:31:54

                C'est vrai que OCaml semble tout désigné pour cela, mais vu qu'on a le choix entre Java et C/C++ ...

                En Java il y a des outils pour les regex, je ne sais pas si ça existe en C++ ni même s'il vaut mieux s'en servir.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  1 octobre 2006 à 12:06:52

                  je ne comprend pas l'anglais mais d'après ce que je comprend si je veux ne pas utiliser les objets, le devrais faire definir la priorité des opérateurs ?
                  exemple lui dire :
                  en 1er de calcule les * et / .
                  Ensuite si tu ne trouve plus de * et / du calcul les + et -.
                  ce qui donnerais si je rentre 5+7*8/2
                  = 5+7*4
                  = 5+28
                  = 33

                  C'est bien comme ca qu'il faudrais faire ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 octobre 2006 à 12:24:02

                    Tu comprends pas l'anglais ? T'es dans la merde :D

                    Tu peux toujours essayer de lire ça :
                    http://fr.wikipedia.org/wiki/Analyse_syntaxique
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      1 octobre 2006 à 12:34:21

                      mon niveau d'anglais est très bas donc voilà...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 octobre 2006 à 15:19:27

                        En francais, et toujours sur wikipedia, il y a un article sur la notation polonaise inversée qui est pas mal de memoire (avec des bouts d'algo). Amuse toi bieng.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        analysateur d'expression

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown