Partage
  • Partager sur Facebook
  • Partager sur Twitter

[flex/bison]

analyse LR d'une grammaire arithmetique

    2 janvier 2008 à 13:48:59

    slt,
    je viens d'apprendre qlq notion de flex/bison, mon probléme se que je viens d'implementer une partie d'une grammaire arithmetique sous flex/bison et j'amerais que lors de l'insertion d'un mots, l'affichage, si il est de la bonne forme accepté ou erreur s'il ne l'est pas. ex: '1+2-1' accepté, '1+0/7' faut.

    syntaxique.y
    1. #include <ctype.h>
    2. #include <stdio.h>
    3. void yyerror (char const * s);
    4. %}
    5. %start S
    6. %token NOMBRE OP_ANS OP_DIFF OP_OR
    7. %left OP_ANS OP_DIFF
    8. %left OP_OR
    9. %%
    10. S :Exp;
    11. Exp :Exp OP_ANS Exp | Exp OP_DIFF Exp | Exp OP_OR Exp | X;
    12. X:NOMBRE;
    13. %%
    14. void yyerror(char const * s)
    15. {
    16.         printf("Erreur syntaxique : %s\n",s);
    17. }
    18. int main(int argc, char ** argv)
    19. {
    20.         yyparse();
    21.         return 0;
    22. }


    et dans le lexical:
    NOMBRE [0-9]
    "+" {return OP_ANS;}
    "-" {return OP_DIFF;}
    "*" {return OP_OR;}

    merci d avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 janvier 2008 à 14:44:07

      Utilise les balises code pour colorer ton code. (Et en éditant, profites-en pour soigner un peu ton écriture :) )
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2008 à 15:42:55

        je me demande est ce que je dois faire des modifications au niveau de yyerror() pour affichager l'erreur? et comment afficher accepté si c'est le cas? (au niveau de yacc)
        • Partager sur Facebook
        • Partager sur Twitter

        [flex/bison]

        × 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