Partage
  • Partager sur Facebook
  • Partager sur Twitter

Travailler avec un analyseur lexical

    10 décembre 2019 à 15:11:10

    Bonsoir a tous,

    Donc mon probleme est un peu compliqué voici mon fichier text :

    J'ai un analyseur lexical qui lit un fichier text et qui renvoie ca :

    Et je dois avoir ce resultat tout en utilisant l'analysateur lexical :

    J'ai pensé a comparer les 3 dernieres lignes et ainsi fusionné les 2 lignes identiques mais je ne sais pas comment le faire en utilisant l'analysateur lexical.

    Avez-vous des idées svp ? (le code de l'analysateur est beaucoup compliqué c'est pour ca que je ne l'ai pas mis)

    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2019 à 17:00:29

      Il y a une chose qui vous ne donnez pas et qui est fondamentale, c'est la sémantique (le sens) des actions que vous voulez faire.

      Votre analyseur lexical me semble perfectible car mettre "IN" ou "STATE" au même niveau que "v1" ou "a", il est clairement sous-optimal.

      J'ai du mal à comprendre pourquoi pendre la grosse Berta (un analyseur syntaxique) pour faire cela alors que des parseurs de fichier "plat" ferait aussi bien l'affaire, voir l'utilisation de XSLT pour faire les transformations directement.

      Si vous êtes sur une implémentation type "optimiseur", vous stockez les informations renvoyées par l'analyseur lexical dans des structures adaptées à votre tâche d'optimisation.

      Vous implémentez l'optimisation et vous générez le résultat dans le fichier de sortie.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        10 décembre 2019 à 19:48:58

        bacelar a écrit:

        Il y a une chose qui vous ne donnez pas et qui est fondamentale, c'est la sémantique (le sens) des actions que vous voulez faire.

        Votre analyseur lexical me semble perfectible car mettre "IN" ou "STATE" au même niveau que "v1" ou "a", il est clairement sous-optimal.

        J'ai du mal à comprendre pourquoi pendre la grosse Berta (un analyseur syntaxique) pour faire cela alors que des parseurs de fichier "plat" ferait aussi bien l'affaire, voir l'utilisation de XSLT pour faire les transformations directement.

        Si vous êtes sur une implémentation type "optimiseur", vous stockez les informations renvoyées par l'analyseur lexical dans des structures adaptées à votre tâche d'optimisation.

        Vous implémentez l'optimisation et vous générez le résultat dans le fichier de sortie.

        Le code de l'analyseur est donné par mon professeur de l'université. Ce n'est pas mon choix, je dois juste m'adapter à son code et faire une fusion des lignes de STATE similaires.

        Merci pour votre aide :)



        • Partager sur Facebook
        • Partager sur Twitter
          11 décembre 2019 à 9:57:08

          Ok, c'est bon, vous voyez un peu plus ce qu'il vous reste à faire ?

          (Stocker les informations dans des structures adaptées)

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            11 décembre 2019 à 11:10:11

            Pour info, lorsque un std::string contient plusieurs mots/nombres séparés par des espaces on peut utiliser le type std::istringstream par exemple avec le code suivant:

            std::string intLine{"INTEGER 0"};
            
            std::istringstream lineStream{intLine};
            
            struct IntegerStruct
            {
                std::string index;
                unsigned value
            };
            
            IntegerStruct integerStruct;
            
            if( lineStream >> integerStruct.index >> integerStruct.value )
            {
                std::cout << "Loading index and value was successful << std::endl;
            }

            On peut stocker les différentes valeurs de l'analyseur lexical dans des structures de son choix.

            Pour le type std::istringstream il faut l'include : #include <sstream>   (avec deux 's')

            • Partager sur Facebook
            • Partager sur Twitter

            Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

            Travailler avec un analyseur lexical

            × 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