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

Linux Discussion :

Arbre syntaxique d'une expression arithmétique avec l'outil bison/flex


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Arbre syntaxique d'une expression arithmétique avec l'outil bison/flex
    Bonjour à tous, je suis un débutant dans l'utilisation des outils bison/flex ou yacc/lex, et j'ai besoin de votre aide pour pouvoir génerer l'arbre syntaxique d'une expression arithmétique. voici mon fichier bison et flex:

    <arith.y>

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    %{
    #define YYSTYPE double
    #include <math.h>
    #include <stdio.h>
    void yyerror (char const *);
    %}
                       /* Bison declarations.  */
    %token NUM
    %token PLUS 
    %token MINUS 
    %token TIMES 
    %token DIV 
    %token MOD 
    %token LPAR LPAR
     
    %% /* The grammar follows.  */
     
    input   : /* empty */
            | input line
    ;
     
    line    : '\n'
            | arithExpr '\n' 
    ;
     
    /* expression arithmetique*/
     
    arithExpr:arithExpr PLUS terme       
    	 |arithExpr MINUS terme     
             |terme                                      
    ;
     
    terme : terme TIMES facteur     
          | terme DIV facteur                  
          | terme MOD facteur	            
          | facteur                                       
    ;
     
    facteur : LPAR arithExpr RPAR  
            | expr                                        
    ;
     
     
    expr:NUM          
    ;
     
    %% 
     
    void yyerror (char const *s)
    {
      fprintf (stderr, "%s\n", s);
    }
     
    int main (int argc, char * argV[])
    {
      if(argc > 1)
    	yyin = fopen(argV[1],"r");
     return yyparse ();
    }

    <arith.l>

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    %{
    #define YYSTYPE int
    #include <stdio.h>
    #include <math.h>
    #include "arith.tab.h"
    extern int yyval;
     
    %}
     
    %%
     
     
    "+"              {return PLUS;}
    "-"              {return MINUS;}
    "/"              {return DIV;}
    "*"              {return TIMES;}
    "%"              {return MOD;}
    \(               {return LPAR;}
    \)               {return RPAR;}
    [0-9][0-9]*      {
    	yylval.Reel = atof(yytext);
     	return Num;}
     
    %%

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    oui et alors ?
    c'est quoi la question ?
    quel probleme rencontres tu ?

Discussions similaires

  1. Transformer une expression arithmétique bien parenthésée en un arbre binaire
    Par mohsenuss91 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 04/02/2012, 11h06
  2. [RegEx] Une expression régulière avec un peu de tout
    Par JackBeauregard dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 10h50
  3. Réponses: 1
    Dernier message: 03/01/2007, 16h07
  4. utiliser une expression régulliere avec la methode getelementbyid
    Par rootdaoud dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/05/2006, 19h25
  5. Evaluation d'une expression arithmétique
    Par MysticKhal_0 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 10/03/2006, 19h25

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