Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1397 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [yacc] Probleme yacc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[yacc] Probleme yacc

n°754574
sbucci2
Posté le 07-06-2004 à 12:13:12  profilanswer
 

Bjr,
 
Dans mon fichier yacc j ai cette regle, la partie en gras pose probleme à la compilation  :??: , un idée pourquoi ca marche po ?
 
merci d avance
 

Citation :

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
mood
Publicité
Posté le 07-06-2004 à 12:13:12  profilanswer
 

n°754577
pascal_
Posté le 07-06-2004 à 12:16:22  profilanswer
 

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 ?
 

n°754583
sbucci2
Posté le 07-06-2004 à 12:24:39  profilanswer
 

exact, comment faire laors ?


Message édité par sbucci2 le 07-06-2004 à 12:25:31
n°754792
pascal_
Posté le 07-06-2004 à 14:00:36  profilanswer
 

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 :
 


exp : SI  PAREN_GAUCHE {printf(" si(" );}  entre_parenthese PAREN_DROITE ALORS fin_du_si { printf(" si \(" ); }
 
 
fin_du_si :  Input FINSI ;
          |  texte SINON texte FINSI ;


 
mais ça affiche les printf aux deux règles.

n°754827
sbucci2
Posté le 07-06-2004 à 14:14:42  profilanswer
 

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  {;}

n°754851
sbucci2
Posté le 07-06-2004 à 14:29:56  profilanswer
 

Merci ca marche, voila ce que ca donne
 

Citation :

structureIteratif:
 
 SI   PAREN_GAUCHE  { ecritureFichier("#SI(#" );  } entre_parenthese PAREN_DROITE ALORS { ecritureFichier("#ALORS#" );  } fin_si  
 
 ;
 
fin_si:
 Input FINSI { ecritureFichier("#FINSI#" ); }
 |Input SINON { ecritureFichier("#SINON#" ); } Input FINSI { ecritureFichier("#FINSI#" ); }
 ;

n°755105
gilou
Modérateur
Modzilla
Posté le 07-06-2004 à 16:58:13  profilanswer
 

sbucci2 a écrit :

Bjr,
 
Dans mon fichier yacc j ai cette regle, la partie en gras pose probleme à la compilation  :??: , un idée pourquoi ca marche po ?
 
merci d avance
 

Citation :

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  {;}
 ;




A la base ca ne marchait probablement pas parce que tu n'avait pas escapé une parenthese:
SI  PAREN_GAUCHE  {  printf(" si\(" );  }...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°755254
pascal_
Posté le 07-06-2004 à 18:59:37  profilanswer
 

gilou a écrit :

A la base ca ne marchait probablement pas parce que tu n'avait pas escapé une parenthese:
SI  PAREN_GAUCHE  {  printf(" si\(" );  }...
A+,


 
:??: entre les accolades, c'est du C, hein...
Donc printf( " si(" ); est valide....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [yacc] Probleme yacc

 

Sujets relatifs
[YACC] Problème de syntaxe[PHP] Problème sur une fonction, hébergé sur un serveur UNIX
Probleme d'affichage d'une video dans une iframeprobléme d'option de compilation
Probleme de class avec GDProbleme avec les headers mail
[divers] Probleme compil Lex/yaccCalculette Lex + Yacc | probleme avec des strutures | oK
[YACC] Problème de récursion à droite[YACC] probleme
Plus de sujets relatifs à : [yacc] Probleme yacc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR