gérer une boucle en YACC

gérer une boucle en YACC - C - Programmation

Marsh Posté le 17-07-2008 à 16:27:17    

Bonjour à tous,
 
J'ai crée un mini-langage (JHP) que je souhaite parser à l'aide de Lex et Yacc.
 
Mon problème que je rencontre, c'est comment gérer une boucle.
 
Voici un extrait de mon yacc qui permet de gérer les variables, les appels de fonctions ...

Code :
  1. codeJHP:   BO REP_IMG param BF {
  2.     insert_ligne_prg(TYPECDE_IMG, "repertoire_image", $3, "" );
  3.                                }
  4.                       | BO REP_GENE param BF {
  5.     insert_ligne_prg(TYPECDE_GEN, "repertoire_generation", $3, "" );
  6.                                }
  7.                       | BO EXT_GENE param BF{
  8.     insert_ligne_prg(TYPECDE_EXT, "extension_generation", $3, "" );
  9.                                }
  10.                       | BO FIC_SUI param BF{
  11.     insert_ligne_prg(TYPECDE_SUI, "fichier_suivi", $3, "" );
  12.                                }
  13.                       | BO NOUV_FIC param BF{
  14.     insert_ligne_prg(TYPECDE_NF, "nouveau_fichier", $3, "" );
  15.                                }
  16.                       | BO FERM_FIC param BF{
  17.     insert_ligne_prg(TYPECDE_FF, "fermeture_fichier", $3, "" );
  18.                                }
  19.                       | BO variable BF {
  20.     insert_ligne_prg(TYPECDE_VAR, "variable", $2, "" );
  21.                                }
  22.                       | BO CONNECT param BF {
  23.   insert_ligne_prg(TYPECDE_CONNECT, "connexion bdd", $3, "" );
  24. }
  25. ;
  26. param:   PO QSTRING PF { strcpy($$,$2);}
  27.         |variable {strcpy($$, $1);}
  28.                        ;
  29. variable:              PO IDF POINT IDF PF {
  30.     strcpy($$, $2);
  31.     strcat($$, "." );
  32.     strcat($$, $4);
  33. }
  34.                        | IDF POINT IDF {
  35.    strcpy($$, $1);
  36.    strcat($$, "." );
  37.    strcat($$, $3);
  38. }
  39.                        | PO IDF VIRG IDF PF {
  40.     strcpy($$, $2);
  41.     strcat($$, "," );
  42.     strcat($$, $4);
  43. }
  44.                        | IDF VIRG IDF {
  45.    strcpy($$, $1);
  46.    strcat($$, "," );
  47.    strcat($$, $3);
  48.    }


 
 
Je ne sais pas comment gérer la boucle.
La synthaxe d'une boucle est : BO FOR variable OF variable WITH variable BF.
 
Exemple : <* FOR (id,titre) OF (bd.table) WITH (num, titre) *>
 
Je ne sais pas comment récupérer mes variables.
 
Merci pour votre aide

Reply

Marsh Posté le 17-07-2008 à 16:27:17   

Reply

Sujets relatifs:

Leave a Replay

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