voici un morceau de notre grammaire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 pg : contpg {printf("analyse terminee")}
           ;
contpg : defVar contpg 
        | defFct contpg 
        | /*empty*/
        ;
defVar : type IDF {printf("defvar->%s",$2)} listeIdf  PV 
        ;
listeIdf : VIRG IDF {printf("listidf->%s",$2)} listIdf
        |  /* empty*/
        ;
avec PV correspondant au ";"
VIRG---->","
IDF ----->nom variable

notre probleme est que quand on affiche $2 l'idf est bien contenu dans $2 mais avec le point virgule ou la virgule qui est après
exemple avec ce fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int j,i,p;
int a;

sachant que IDF est déclarer en tant que token dans le yacc comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
%union { char* chaine ;}
%token IDF
%token <chaine> IDF
cela donne
Dans notre lex on a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
%{
#include "y.tab.h"
%}
alphanum [a-zA-Z]
alphanum [a-zA-Z0-9]
%%
"int" {return (INT);}
{alpha}({alphanum})* {yylval.chaine=yytext;return (IDF);}
%%
yywrap() {return (1);}
on sais que le sujet est pointu mais est ce que qq1 peut nous aidez SVP