ensuite je fais cette commande : lex toto.lex puis gcc -c yy.lex.c et la compilation me donne ceci :
Citation :
regates-MAN#gcc -c lex.yy.c gascon.lex: Dans la fonction « yylex »: gascon.lex:17: « EGUAL » non déclaré (première utilisation dans cette fonction) gascon.lex:17: (Chaque identificateur non déclaré est rapporté une seule fois gascon.lex:17: pour chaque fonction dans laquelle il apparaît.) gascon.lex:18: « DIFF » non déclaré (première utilisation dans cette fonction) gascon.lex:19: « INF » non déclaré (première utilisation dans cette fonction) gascon.lex:20: « SUP » non déclaré (première utilisation dans cette fonction) gascon.lex:21: « INFEGUAL » non déclaré (première utilisation dans cette fonction) gascon.lex:22: « SUPEGUAL » non déclaré (première utilisation dans cette fonction) gascon.lex:23: « PLUS » non déclaré (première utilisation dans cette fonction) gascon.lex:24: « MOINS » non déclaré (première utilisation dans cette fonction) gascon.lex:25: « DIV » non déclaré (première utilisation dans cette fonction) gascon.lex:26: « MULT » non déclaré (première utilisation dans cette fonction)
etc...
je vois pas du tout le probleme. Pouvez vous m aider ? merci
Message édité par sbucci2 le 28-05-2004 à 14:07:50
Marsh Posté le 28-05-2004 à 12:02:16
Je precise, je debute en lex
Mon code Lex :
%{
#include "global.h"
#include <stdlib.h>
%}
chiffre10 [0-9]
chiffre16 [0-9A-Fa-f]
exposant [eE] [+-]?{entier}+
lettre [A-Za-z]
entier {chiffre10}+
reel {entier}{"."{entier}}?{exposant}?
%%
"=" return EGUAL;
"<>" return DIFF;
"<" return INF;
">" return SUP;
"<=" return INFEGUAL;
">=" return SUPEGUAL;
"+" return PLUS;
"-" return MOINS;
"/" return DIV;
"*" return MULT;
"(" return PAREN_DROITE;
" )" return PAREN_GAUCHE;
":=" return AFFECT;
"OU" return OU;
"ET" return ET;
"&" return DEB_CODEC;
"REGLE" return REGLE;
"APPEL" return APPEL;
"ANIM" return ANIM;
"AFFIC" return AFFIC;
"MESSAG" return MESSAGE;
"PREPTA" return PREPTA;
"EMITA" return EMITA;
"OPERA" return OPERA;
"RESULT" return RESULT;
"TEMPO" return TEMPO;
"POSTBIT" return POSTBIT;
"POSTVAL" return POSTVAL;
"POSCAR" return POSCAR;
"AFFTS" return AFFTS;
"**" return JECPAS;
"SI" return SI;
"ALORS" return ALORS;
"SINON" return SINON;
"FINSI" return FINSI;
"TANTQUE" return TANTQUE;
"FAIRE" return FAIRE;
"FINFAIRE" return FINFAIRE;
reel { yylval=atof(yytext); return NOMBRE;}
\n {nextline();}
\t {;}
"#" { nextline(); }
. {yyerror("prob point" );}
<<EOF>> {return FIN;}
%%
ensuite je fais cette commande :
lex toto.lex
puis
gcc -c yy.lex.c
et la compilation me donne ceci :
regates-MAN#gcc -c lex.yy.c
gascon.lex: Dans la fonction « yylex »:
gascon.lex:17: « EGUAL » non déclaré (première utilisation dans cette fonction)
gascon.lex:17: (Chaque identificateur non déclaré est rapporté une seule fois
gascon.lex:17: pour chaque fonction dans laquelle il apparaît.)
gascon.lex:18: « DIFF » non déclaré (première utilisation dans cette fonction)
gascon.lex:19: « INF » non déclaré (première utilisation dans cette fonction)
gascon.lex:20: « SUP » non déclaré (première utilisation dans cette fonction)
gascon.lex:21: « INFEGUAL » non déclaré (première utilisation dans cette fonction)
gascon.lex:22: « SUPEGUAL » non déclaré (première utilisation dans cette fonction)
gascon.lex:23: « PLUS » non déclaré (première utilisation dans cette fonction)
gascon.lex:24: « MOINS » non déclaré (première utilisation dans cette fonction)
gascon.lex:25: « DIV » non déclaré (première utilisation dans cette fonction)
gascon.lex:26: « MULT » non déclaré (première utilisation dans cette fonction)
etc...
je vois pas du tout le probleme.
Pouvez vous m aider ?
merci
Message édité par sbucci2 le 28-05-2004 à 14:07:50