%{ int t1=0, t1_old=0; int t2=0; char line1[80], line2[80]; %} %% ^\{[0-9]+/\} { t1_old=t1; t1=atoi(yytext+1); return 1; } \{[0-9]+/\} { t2=atoi(yytext+1); return 2; } [^}{|\n][^|\n]+ { strcpy(line1,yytext); return 3; } \|[^|\n]+ { strcpy(line2, yytext+1); return 4; } . {} %% main (int argc, char *argv[]){ int t3=atoi(argv[1]); int token=0; while ((token=yylex())!=0) { switch (token) { case 1 : { usleep((t2-t1_old)*t3*1000000/24); system("clear"); usleep((t1-t2)*t3*1000000/24); printf("t1:%d ; ", t1);//optionnel break; } case 2 :{ printf("t2:%d ; ", t2);//optionnel printf("t3:%d \n",t3);//optionnel break; } case 3 :{ printf("%s\n", line1); break; } case 4 :{ printf("%s\n", line2); break; } } } }