/* les identificateurs d'un programme java */ %option noyywrap %{ int niveauComment = 0; %} %x COMMENTLIGNE COMMENTIMBRIQUE KEYWORDS abstract|boolean|break|byte|case|catch|char|class|continue|default|do|double|else|extends|false|final|finally|float|for|if|implements|import|instanceof|int|interface|long|native|new|null|package|private|protected|public|return|short|static|super|switch|synchronized|this|throw|throws|transient|true|try|void|volatile|while NEWLINE "\n" IDENT [a-zA-Z$]([a-zA-Z$_0-9]*".")*[a-zA-Z$_0-9]+ COMMENTLIGNEDEBUT "//" COMMENTIMBRIQUEDEBUT "/*" COMMENTIMBRIQUEFIN "*/" %% {KEYWORDS}|{NEWLINE} {} {IDENT} {printf("%s\n",yytext);} {COMMENTLIGNEDEBUT} {BEGIN(COMMENTLIGNE);} {COMMENTIMBRIQUEDEBUT} {niveauComment++;BEGIN(COMMENTIMBRIQUE);} {NEWLINE} {BEGIN(INITIAL);} {COMMENTIMBRIQUEDEBUT} {niveauComment++;} {NEWLINE} {} {COMMENTIMBRIQUEFIN} { niveauComment--; if (niveauComment==0){ BEGIN(INITIAL); } } <*>. {} %% main () { yylex(); }