psgkiki | 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 :
- codeJHP: BO REP_IMG param BF {
- insert_ligne_prg(TYPECDE_IMG, "repertoire_image", $3, "" );
- }
- | BO REP_GENE param BF {
- insert_ligne_prg(TYPECDE_GEN, "repertoire_generation", $3, "" );
- }
- | BO EXT_GENE param BF{
- insert_ligne_prg(TYPECDE_EXT, "extension_generation", $3, "" );
- }
- | BO FIC_SUI param BF{
- insert_ligne_prg(TYPECDE_SUI, "fichier_suivi", $3, "" );
- }
- | BO NOUV_FIC param BF{
- insert_ligne_prg(TYPECDE_NF, "nouveau_fichier", $3, "" );
- }
- | BO FERM_FIC param BF{
- insert_ligne_prg(TYPECDE_FF, "fermeture_fichier", $3, "" );
- }
- | BO variable BF {
- insert_ligne_prg(TYPECDE_VAR, "variable", $2, "" );
- }
- | BO CONNECT param BF {
- insert_ligne_prg(TYPECDE_CONNECT, "connexion bdd", $3, "" );
- }
- ;
- param: PO QSTRING PF { strcpy($$,$2);}
- |variable {strcpy($$, $1);}
- ;
- variable: PO IDF POINT IDF PF {
- strcpy($$, $2);
- strcat($$, "." );
- strcat($$, $4);
- }
- | IDF POINT IDF {
- strcpy($$, $1);
- strcat($$, "." );
- strcat($$, $3);
- }
- | PO IDF VIRG IDF PF {
- strcpy($$, $2);
- strcat($$, "," );
- strcat($$, $4);
- }
- | IDF VIRG IDF {
- strcpy($$, $1);
- strcat($$, "," );
- strcat($$, $3);
- }
|
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 |