%option nounput noinput %{ void echo(char *lex_cat) { fprintf(stderr,"[%s:%s]", lex_cat, yytext); } void echonl() { fprintf(stderr,"[\\n]\n"); } %} %option 7bit ASCII7 [\x00-\x7F] /* ou flex 7bit : ASCII7 .|\n */ HEADCAR [\x21-\x39\x3B-\x7E] /* == printable - " "(\x20) - ":"(\x3A) */ /* HEADCAR [[:print:]]{-}[ :] possible avec flex version 2.5.37 */ HNAME {HEADCAR}+ /* titre de header */ HLINE .* /*contenu de header jusqu'a la fin de ligne*/ HCONT \n[ \t] /*continuation de header multiligne*/ %% ^{HNAME}:{HLINE}({HCONT}{HLINE})* echo("CHAMPS-ENTETE"); /* final \n not in "Head" */ \n\n{ASCII7}+ {echonl(); echo("CORPS"); echonl();} /* NB: le corps inclu la ligne vide \n\n */ \n echonl(); /* next Header */ .|\n echo("INVALID"); %% int yywrap (void) {return 1;} int main(int argc, char *argv[]) { while (yylex()!=0) ; return 0; }