voici un morceau de notre grammaire
avec PV correspondant au ";"
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*/ ;
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
cela donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 %union { char* chaine ;} %token IDF %token <chaine> IDF
Dans notre lex on a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 j, i, p;
on sais que le sujet est pointu mais est ce que qq1 peut nous aidez SVP
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);}
Partager