besoin d'aide yacc/bison

besoin d'aide yacc/bison - C - Programmation

Marsh Posté le 23-03-2004 à 10:24:12    

Voila g une petite calculette a programmer via un analyseur lexical que g crée et le gros probleme que g est que je n'arrive pas a differencier les types a utiliser. bah oui ma calculette doit savoir gerer les réels, entiers complexe rationnel  mai je ne peut pas additionner un reel avec un entier par exemple.  
 
Voila mon soucis donc si quelqu'un pouvait m'aider en me  donnant un site m'expliquant bien tout ca  
 
merci  
 
 
 
 
 

Reply

Marsh Posté le 23-03-2004 à 10:24:12   

Reply

Marsh Posté le 23-03-2004 à 10:39:22    

bah dans ton flex, y a une valeur a retournée, justement pour dire ce que tu as trouvé comme type

Reply

Marsh Posté le 23-03-2004 à 10:51:11    

oui c le token mais kan je veu faire une addition fo ke je verifie c type et je ne c pas ou les stokés et aussi kan g un truc du style x+3 komment faire comprendre a ma grammaire ke 3 est un entier par exemple.

Reply

Marsh Posté le 23-03-2004 à 10:57:30    

ben tu flex te dis le type du token et te fais déjà la convertion char* -> int si tu tombe sur ton 3

Reply

Marsh Posté le 23-03-2004 à 11:02:59    

héhé ok mais ca marche pas pour 3.2 par exemple. mais mon prob se situe autour de yylval et de la grammaire!
tu connais pas des adresses de sites pour m'orienter.
sinon merci pour ton aide!!!

Reply

Marsh Posté le 23-03-2004 à 11:04:32    

si ça marche pas pour 3.2 c'est parce quie flex te détecte pas  3.2 comme un flottant ...

Reply

Marsh Posté le 23-03-2004 à 11:19:02    

ahh si sur!!!! les tests sont faits et il le detecte bien!!! mais pense avoir trouvé koment gerer tout ca avec une structure union dans le .y qui a une structure Tval contenant le type de l'objet et tout les champs de chacun des types (c pas si je m'exprime bien lol )

Reply

Marsh Posté le 23-03-2004 à 11:35:41    

voilà : une enum + une union

Reply

Marsh Posté le 23-03-2004 à 11:36:46    

floxibus76 a écrit :

ahh si sur!!!! les tests sont faits et il le detecte bien!!! mais pense avoir trouvé koment gerer tout ca avec une structure union dans le .y qui a une structure Tval contenant le type de l'objet et tout les champs de chacun des types (c pas si je m'exprime bien lol )


 
C'est ce que j'allais te proposer.
 
En fait, tu fais un truc du genre :

Code :
  1. //Dans un .h :
  2. struct val{
  3.   enum {ENTIER,REEL} type;
  4.   union{
  5.     int valEntier;
  6.     double valReel;
  7.   }
  8. }
  9. // Dans le .l
  10. %union{
  11.   struct val valeur;
  12.   char *variable;
  13.   .....
  14. }
  15. // Ensuite tu as des trucs genre
  16. [0-9]+ { yylval.val.type=ENTIER; yylval.val.valEntier=atoi(yytext); return VALEUR;}
  17. // Et dans le .y
  18. expr : expr PLUS expr {
  19.     if( $1.type != $3.type ){
  20.         printf("Erreur type blablabla)
  21.     }else{
  22.        $$.type = $1.type;
  23.        switch( $1.type ){
  24.          case ENTIER : $$.valEntier = $1.valEntier + $3.valEntier; break;
  25.          case REEL : $$.valReel = $1.valReel + $3.valReel; break;
  26.          ...
  27.        }
  28.     }
  29. }


 
Le seul hic, c'est que c'est bien lourd...
 

Reply

Marsh Posté le 23-03-2004 à 11:37:37    

ben snif je pleure kan meme!! :-)

Reply

Marsh Posté le 23-03-2004 à 11:37:37   

Reply

Marsh Posté le 23-03-2004 à 11:38:36    

a pardon le code ct pas affiché merci bcp!!!! ca va bien m'aidé ca!!

Reply

Marsh Posté le 24-03-2004 à 15:07:31    

j'ai l'impression de reconnaitre le projet que j'ai donné a mes etudiants, serait ce un hasard complet ????


Message édité par dgeniet le 24-03-2004 à 15:08:24
Reply

Marsh Posté le 24-03-2004 à 15:16:04    

dgeniet a écrit :

j'ai l'impression de reconnaitre le projet que j'ai donné a mes etudiants, serait ce un hasard complet ????


 
c'est des choses qui arrivent  :o

Reply

Marsh Posté le 24-03-2004 à 15:16:25    

dgeniet a écrit :

j'ai l'impression de reconnaitre le projet que j'ai donné a mes etudiants, serait ce un hasard complet ????

 :ouch:   :pt1cable:   :lol:  
 :pfff:

Reply

Marsh Posté le 24-03-2004 à 15:41:41    

dgeniet a écrit :

j'ai l'impression de reconnaitre le projet que j'ai donné a mes etudiants, serait ce un hasard complet ????

Vu que vous postez (toi et le createur du topic) depuis la meme IP (sp2mi.univ-poitiers.fr), il y a peu de chances que ce soit du au hasard... :whistle:
A+,


Message édité par gilou le 24-03-2004 à 15:42:50
Reply

Marsh Posté le 24-03-2004 à 15:56:44    

gilou a écrit :

Vu que vous postez (toi et le createur du topic) depuis la meme IP (sp2mi.univ-poitiers.fr), il y a peu de chances que ce soit du au hasard... :whistle:
A+,


Excellent :lol:

Reply

Marsh Posté le 24-03-2004 à 16:08:51    

oui c des potes ki me font une blague. le pire c ke jarrive a la salle info et ils me collent le nez devant l'écran en me disant "ohhhhhhhhhhh regarde on t'as repondu"
alors pour ces ptits farceurs messieurs kelkes applaudissement svp
clap clap clap

Reply

Marsh Posté le 24-03-2004 à 16:46:22    

gilou a écrit :

Vu que vous postez (toi et le createur du topic) depuis la meme IP (sp2mi.univ-poitiers.fr), il y a peu de chances que ce soit du au hasard... :whistle:
A+,


 
Hum, ça pourrait se monnayer ça  [:meganne] ....
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed