Je suis en train de faire une petit calculatrice à l'aide le lex et yacc malheuresement je me retrouve avec une petite erreur bête mais méchante. Il semblerait que yyval ne soit pas déclaré ce qui m'étonne beaucoup
l'erreur:
$ gcc -o calc lex.yy.c -ll
calc.l: In function `yylex':
calc.l:9: erreur: « yyval » non déclaré (première utilisation dans cette fonction)
calc.l:9: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
calc.l:9: erreur: pour chaque fonction dans laquelle il apparaît.)
le programme yacc:
Code :
%{
#include <stdio.h>
#include <stdlib.h>
%}
%token NOMBRE %left '+' %left '*'
%%
X: S '\n' X {printf("%d\n",$1);}
| S
S: S '+' S {$$ = $1 + $3;}
| S '*' S {$$ = $1 * $3;}
| NOMBRE {$$ = $1;}
%%
et le programme lex:
Code :
%{
#include "y.tab.h"
%}
NUM [0-9]+
%%
NUM { yyval = atoi(yytext); return NOMBRE;}
.|\n { return yytext[0];}
%%
---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Publicité
Posté le 16-12-2004 à 20:46:03
chrisbk
-
Posté le 17-12-2004 à 12:16:24
jla trouve bizarement fagotté, ta grammaire ?
sinon faut pas definir yyval dans ton .lex, genre extern YYLVAL yyval ?