Probleme yacc [yacc] - Divers - Programmation
Marsh Posté le 07-06-2004 à 12:16:22
C'est normal. 
Quand yacc va détecter un  SI  suivit d'un PAREN_GAUCHE que doit-il faire ? Faire ton printf ou passer à la deuxième règle ? Il sait pas donc il doit te sortir un avertissement shift/reduce, non ? 
 
Marsh Posté le 07-06-2004 à 12:24:39
exact, comment faire laors ?
Marsh Posté le 07-06-2004 à 14:00:36
| sbucci2 a écrit : exact, comment faire laors ?  | 
 
 
A mon avis, tu es coincé car les deux règles sont trop proches. 
Il te faut réécrire la grammaire. Un truc du style : 
 
|   | 
 
 
mais ça affiche les printf aux deux règles. 
Marsh Posté le 07-06-2004 à 14:14:42
j avais pas corrigé mais ca change quelque chose avec la deucieme comme ca : 
|SI PAREN_GAUCHE entre_parenthese PAREN_DROITE ALORS Input SINON Input FINSI  {;}
Marsh Posté le 07-06-2004 à 14:29:56
Merci ca marche, voila ce que ca donne 
 
| Citation : structureIteratif:  | 
Marsh Posté le 07-06-2004 à 16:58:13
| sbucci2 a écrit : Bjr,  
   | 
 
A la base ca ne marchait probablement pas parce que tu n'avait pas escapé une parenthese: 
SI  PAREN_GAUCHE  {  printf(" si\(" );  }... 
A+, 
Marsh Posté le 07-06-2004 à 18:59:37
| gilou a écrit : A la base ca ne marchait probablement pas parce que tu n'avait pas escapé une parenthese:  | 
 
  entre les accolades, c'est du C, hein...
 entre les accolades, c'est du C, hein... 
Donc printf( " si(" ); est valide.... 
Marsh Posté le 07-06-2004 à 12:13:12
Bjr,
 , un idée pourquoi ca marche po ?
 , un idée pourquoi ca marche po ? 
Dans mon fichier yacc j ai cette regle, la partie en gras pose probleme à la compilation
merci d avance
structureIteratif:
SI PAREN_GAUCHE { printf(" si(" ); } entre_parenthese PAREN_DROITE ALORS Input FINSI { printf(" si \(" ); }
|SI PAREN_GAUCHE entre_parenthese PAREN_DROITE ALORS texte SINON texte FINSI {;}
;
Message édité par sbucci2 le 07-06-2004 à 12:13:51