%option nounput noinput %{ #ifdef FLEXALONE /* Mode flex seul */ enum Return_Token_Values { VRAI=1000, FAUX, ET, OU, NON, OUX, IMP, EQU, AFF, VAR}; #else /* couplage flex/bison */ #include "yyparse.h" #endif void echo(char *lex_cat) { fprintf(stdout,"[%s:%s]", lex_cat, yytext); } void echonl() { fprintf(stdout,"[\\n]\n"); } %} COMM "#"[^\n]* SPACE " "|\t %% 1|true|vrai {echo("VRAI"); return VRAI;} 0|false|faux {echo("FAUX"); return FAUX;} &|et|and {echo("ET"); return ET;} "|"|or|ou {echo("OU"); return OU;} "!"|not|non {echo("NON"); return NON;} "^" {echo("OUX"); return OUX;} "=>" {echo("IMP"); return IMP;} "<=>" {echo("EQU"); return EQU;} "=" {echo("AFF"); return AFF;} [a-z]{1} {echo("VAR"); yylval.index = yytext[0]-'a'; return VAR; } "("|")" return yytext[0]; {COMM} echo("COM"); {SPACE} ; \n return yytext[0]; . echo("Invalid"); /* ajouter remonté erreur lex vers parser ! */ %% int yywrap (void) {return 1;} #ifdef FLEXALONE int main(int argc, char *argv[]) { while (yylex()!=0) ; return 0; } #endif