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 :Comme vous pouvez le constater, cela ne fonctionne pas.
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)
Je me suis donc dit d'ajouter y.tab.h dans le fichier lex.
fichier lex modifié :J'obtiens :
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]);Quelqu'un saurait-il où se trouve le problème ?
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
Partager