[lex/yacc] yyval non déclaré ?

yyval non déclaré ? [lex/yacc] - Divers - Programmation

Marsh Posté le 16-12-2004 à 20:46:03    

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 :sweat:  
 
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 :
  1. %{
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. %}
  5. %token NOMBRE %left '+' %left '*'
  6. %%
  7. X: S '\n' X {printf("%d\n",$1);}
  8. | S
  9. S: S '+' S {$$ = $1 + $3;}
  10. | S '*' S {$$ = $1 * $3;}
  11. | NOMBRE {$$ = $1;}
  12. %%


 
et le programme lex:

Code :
  1. %{
  2. #include "y.tab.h"
  3. %}
  4. NUM [0-9]+
  5. %%
  6. NUM { yyval = atoi(yytext); return NOMBRE;}
  7. .|\n { return yytext[0];}
  8. %%


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 16-12-2004 à 20:46:03   

Reply

Marsh 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 ?

Reply

Marsh Posté le 17-12-2004 à 13:20:13    

Heu, c'est pas yylval le nom de la variable?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed