%option nounput noinput %{ #include #ifdef FLEXALONE /* Mode flex seul */ enum Return_Token_Values { UNION=1000, INTER, COMP, DIFF, ELEM, VAR}; #else /* couplage flex/bison */ #include "set.h" //Requis avant yyparse.h a cause "union"... #include "yyparse.h" #endif %} ELEM [0-9]+ // element = entier , range non checké en lexical VAR S_[0-9]{1,2} // nom de variable de S_0 a S_99 SPACE [ \t]* COMM "#"[^\n]* %% union return UNION; inter return INTER; comp return COMP; diff return DIFF; [=(){},] return yytext[0]; \n return yytext[0]; {ELEM} { yylval.elem=atoi(yytext); return(ELEM);} {VAR} { yylval.index=atoi(yytext+2); return(VAR);} {COMM} ; {SPACE} ; . printf("Invalid Char : %c",yytext[0]); %% int yywrap (void) {return 1;} #ifdef FLEXALONE int main(int argc, char *argv[]) { while (yylex()!=0) ; return 0; } #endif