%option nounput noinput MOTv1 [^ \n\t,.!?\'():]+ MOTv2 [^ \n\t[:punct:]]+ MOTv3 (-|[^ \n\t[:punct:]])+ MOTv4 {MOTv2}(-{MOTv2})* /* MOTv1 liste empirique de ponctuations francaises */ /* MOTv2 utilisation de "ponctuations" POSIX */ /* contient '-' et donc "peut-etre" == 2 mots */ /* MOTv3 idem v2 en reincluant le '-' des mots composés */ /* MOTv4 définition plus rigoureuse des mots composés */ %% {MOTv4} printf("%c", yytext[0]); [ \n\t:]* printf(" "); . %% int yywrap(void) { printf("\n"); return 1; } int main(int argc, char *argv[]) { while (yylex()!=0) ; return 0;}