%option nounput noinput %{ void echo(char *lex_cat) { fprintf(stderr,"[%s:%s]", lex_cat, yytext); } void echonl() { fprintf(stderr,"[\\n]\n"); } %} %s CORPS /* Etat INITIAL -> parsing des entetes RFC822 */ /* Etat CORPS -> Corps du message */ %option 7bit ASCII7 [\x00-\x7F] HEADCAR [\x21-\x39\x3B-\x7E] HNAME {HEADCAR}+ HLINE .* HCONT \n[ \t] %% ^{HNAME} {echo("CHAMPS-NAME"); printf("Champs = %s\n",yytext);} :{HLINE}({HCONT}{HLINE})* echo("CHAMPS-DUITE"); \n\n {BEGIN(CORPS); echonl();} \n {ASCII7}+ {echo("CORPS");printf("Taille du Corps: %d car.\n",yyleng);} .|\n echo("INVALID"); %% int yywrap (void) {return 1;} int main(int argc, char *argv[]) { while (yylex()!=0) ; return 0; }