Bonsoir,

du à des problèmes rencontrés avec %union, je suis tombé sur ce site http://www.dil.univ-mrs.fr/~jfp/tp_l...c_casalta.html
J'ai pris les deux derniers bouts de code (lex puis yacc).
Puis j'ai fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
[jerome@localhost test]$ yacc (-d) essai.y //pas de chgt, sauf création de .h
[jerome@localhost test]$ lex essai.l
[jerome@localhost test]$ gcc lex.yy.c -o essai -lfl
essai.l: In function ‘yylex’:
essai.l:7: error: ‘yylval’ undeclared (first use in this function)
essai.l:7: error: (Each undeclared identifier is reported only once
essai.l:7: error: for each function it appears in.)
essai.l:7: error: ‘Tid’ undeclared (first use in this function)
essai.l:8: error: ‘Tnb’ undeclared (first use in this function)
Comme vous pouvez le constater, cela ne fonctionne pas.
Je me suis donc dit d'ajouter y.tab.h dans le fichier lex.
fichier lex modifié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    /* -- evalv3.lex --
       Evaluation d'une expression
       Partie analyseur lexical.
     */
 #include "y.tab.h"
BLANC [ \n\t]
%%
[a-zA-Z_]+  strcpy(yylval.chaine, yytext);  return Tid;
[0-9]+      yylval.valeur = atoi(yytext);   return Tnb;
[-+*/()=]   return yytext[0];   /* caracteres unites lexicales */
{BLANC}+    ;
.           printf("Caractere (%c) non reconnu\n", yytext[0]);
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
jerome@localhost test]$ yacc -d essai.y
[jerome@localhost test]$ lex essai.l
[jerome@localhost test]$ gcc lex.yy.c -o essai -lfl
/tmp/cc4VrMOJ.o: In function `yylex':
lex.yy.c:(.text+0x235): undefined reference to `yylval'
lex.yy.c:(.text+0x258): undefined reference to `yylval'
collect2: ld returned 1 exit status
Quelqu'un saurait-il où se trouve le problème ?