grammaire yacc lex simili C
voici un morceau de notre grammaire
Code:
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
sachant que IDF est déclarer en tant que token dans le yacc comme ceci
Code:
1 2 3 4
|
%union { char* chaine ;}
%token IDF
%token <chaine> IDF |
cela donne
Dans notre lex on a
Code:
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